2011-01-24 12 views
5

Estaba buscando en Google para encontrar una solución a mis problemas con la automatización de la interfaz de usuario. En su lugar me parece que publicar buen resumen de ellos:¿cómo puedo mejorar la Automatización de UI de iPhone?

No hay manera de ejecutar las pruebas desde la línea de comandos (...)

No hay manera de establecer o restablecer el estado.. (...)

Parte del problema anterior es que UI Automation no tiene concepto de pruebas discretas. (...)

No hay forma de recuperar mediante programación los resultados de la ejecución de prueba. (...)

fuente: http://pivotallabs.com/users/amilligan/blog/articles/1323-iphone-ui-automation-tests-a-decent-start

Problema no. 3 se puede resolver con jazmín (https://github.com/pivotal/jasmine-iphone)

¿qué hay de otros problemas? ¿Se han introducido mejoras desde esa publicación (20 de julio de 2010)?

Y un problema más es cierto que solo un método existente para seleccionar un elemento de IU particular es agregar etiquetas de accesibilidad en el código fuente de la aplicación?

Respuesta

5

Si bien la automatización de la interfaz de usuario ha mejorado desde que se realizó la publicación, las mejoras que he visto se han relacionado con la fiabilidad en lugar de la nueva funcionalidad.

Trae buenos puntos sobre algunos de los problemas con el uso de la automatización de la interfaz de usuario para realizar pruebas más serias. Si lees los comentarios más adelante, hay una gran cantidad de debate sobre formas de abordar estos problemas.

El tema de ejecutar pruebas desde la línea de comandos se trata en this question, donde se insinúa una posible solución en in the Apple Developer Forums. No lo he intentado yo mismo.

Puede exportar los resultados de una prueba después de su ejecución, que puede analizar sin conexión.

Finalmente, con respecto a su última pregunta, puede abordar los elementos de la interfaz de usuario sin asignarles una etiqueta de accesibilidad. Muchos controles comunes de UIKit son accesibles por defecto, por lo que ya puede orientarlos por su nombre. De lo contrario, usted puede seleccionar vistas desde su ubicación en la jerarquía de imágenes, como en el siguiente ejemplo:

var tableView = mainWindow.tableViews()[0]; 

Como siempre, si hay algo que falta de la herramienta de UI Automation que es importante para usted, file an enhancement request para que podría encontrar su camino en la próxima versión del SDK.

+0

Muchas gracias por la respuesta detallada. Leeré las páginas a las que se refiere más adelante, pero después de una mirada rápida, creo que podrían ayudarme. En cuanto a las "pruebas serias": este es mi caso, ya que voy a integrar este proceso con mi servidor de CI. –

+1

Lo sentimos, pero la integración de instrumentos en CI será dolorosa. Actualmente estoy usando Sikuli (sikuli.org) para hackear los problemas que estás señalando, pero aún así no pondría eso en CI. Para CI, usaría este enfoque http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html – yoosiba

+0

yoosiba: ¿Realmente prefiere usar un enfoque genérico como Sikuli? ¿Cómo compararía los esfuerzos de tiempo al escribir casos estándar de prueba gui para UIAutomation y Sikuli? –

0

Intente verificar la jerarquía de elementos, la tabla se puede colocar sobre un UIScrollView.

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell"); 

el guión anterior funcionará incluso el elemento está en la celda 12 (pero el nombre debe ser exactamente el mismo que se menciona en el interior de la célula)

0

Salida http://lemonjar.com/blog/?p=69 Habla de cómo ejecutar la UIA desde la línea de comando

+1

¡Bienvenido a Stack Overflow! Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. – Kev

+0

de acuerdo con Kev. pero es una buena noticia que la nueva SDK finalmente tenga soporte para cmd. gracias por buenas noticias! –

3

¿Has probado IMAT? https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu.Utiliza el JavaScript nativo sdk que proporciona Apple y puede activarse a través de la línea de comandos o los instrumentos.

En respuesta a cada una de sus preguntas:

No hay manera de ejecutar las pruebas desde la línea de comandos (...)

Apple ahora ofrece esto.. Con IMAT, puede iniciar las pruebas a través de la línea de comando o mediante instrumentos. Antes de que Apple proporcionara la interfaz de línea de comando, estábamos usando AppleScript para abrir Instrumentos y luego comenzar las pruebas: desagradable.

No hay forma de configurar o restablecer el estado. (...)

Control hacia fuera este diagrama de estado: https://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures

Parte del problema anterior es que la interfaz de usuario de automatización no tiene un concepto de pruebas discretas. (...)

De acuerdo. Tanto IMAT como tuneup.js (https://github.com/alexvollmer/tuneup_js#readme) permiten esto.

No hay manera de recuperar mediante programación los resultados de la ejecución de prueba. (...)

La lectura del archivo plist posterior no es trivial. IMAT proporciona un informe jUnit como después de una ejecución de prueba leyendo el archivo plist y lo recojo mi herramienta CI (Teamcity, Jenkins, CruiseControl)

+0

Hay un enlace a esto todavía disponible en mi página githhub. https://github.com/rdpfeffer/IMAT –

+1

por cierto, sería genial si pudiera aceptar una de las respuestas aquí ;-) @sogwiz parece haber respondido a todas sus inquietudes. –

Cuestiones relacionadas