una sierra puede programación programacion permitir para origen mac lenguajes lenguaje instalar identificados identificado high desconocido desarrolladores desarrollador apple app aplicaciones aplicacion abrir objective-c xcode macos cocoa testing

objective c - sierra - ¿Cómo puedo crear pruebas de extremo a extremo para aplicaciones Mac(Cocoa)?



swift apple (4)

He estado leyendo mucho sobre el desarrollo basado en pruebas y he decidido que quiero probar un pequeño proyecto. Como referencia, actualmente estoy leyendo ''Crecimiento de software orientado a objetos, guiado por pruebas''.

Entiendo cómo probar mi unidad de manera unitaria y cómo probar algunas partes de la UI, pero estoy luchando para establecer pruebas de extremo a extremo. Por ejemplo, probar que una determinada ruta a través de toda mi aplicación produce el resultado correcto (esta es mi comprensión básica de una prueba de extremo a extremo).

No es necesario simular eventos de clic, pero es necesario tener algún tipo de conexión a la interfaz de usuario.

¿Estoy en lo cierto al pensar que necesito una combinación de pruebas "lógicas" (prueba sin iniciar la aplicación), pruebas de "aplicación" (prueba con el lanzamiento de la aplicación) y la funcionalidad asíncrona de algo así como GHUnit para lograr esto?

EDITAR:

Después de leer algunas de las respuestas a continuación, parece que estoy buscando pruebas funcionales de extremo a extremo, pero creo que debería dar un ejemplo de prueba tal como lo imagino.

  1. Comience la aplicación.
  2. Llame a la función de inicio de sesión con una prueba de credenciales de los usuarios. (Nota: no necesariamente necesita automatización de UI).
  3. Verifique que una etiqueta en la ventana diga "Iniciar sesión ...".
  4. Después de verificar con éxito al usuario, verifique que la etiqueta ahora diga "¡Bienvenido, Adam!".

KIF parece que podría funcionar, ya que tiene pasos para verificar los cambios en los elementos de la interfaz de usuario y parece que también hay una rama de Mac OSX. Estoy seguro de que también podría escribir una pequeña clase que constantemente sondee la IU para ver los cambios que espero y se agote después de cierto tiempo, pero me pregunto si esta es la forma correcta de hacerlo.

Sin embargo, tal vez estoy tratando de tomar lo que estoy leyendo en ''Growing Object-Oriented Software, Guided by Tests'' y tratar de aplicarlo literalmente a Cocoa.

Otra ACTUALIZACIÓN:

Así que he estado leyendo los consejos hasta el momento, he comprobado los diferentes lugares vinculados y he comenzado a implementar algo al mismo tiempo que sigo haciendo referencia al libro. Creo que lo que estoy tratando de entender es la parte de Desarrollo- Impulsado por Prueba. Lo que más resaltó en dicho libro fue que describieron primero lo que querían que ocurriera desde la perspectiva de los usuarios con las pruebas de aceptación.

Me doy cuenta de que será necesario realizar pruebas unitarias sólidas tan pronto como empiece a escribir métodos, pero antes quise escribir algunas pruebas de aceptación de alto nivel, utilizando parte de la IU. Empecé a escribir mi propia clase de "controlador" de aplicaciones, utilizando algunos métodos similares a las ideas de GHAsyncTestCase para ayudarme a lograr esto. ¿Esto suena correcto / útil / necesario?

Realmente aprecio todos los comentarios hasta ahora y definitivamente me han ayudado a resolver por mi cuenta lo que estoy tratando de hacer y las diversas áreas de prueba que existen. Terminaré pronto esta pregunta, ya que cada vez es más grande, ¡así que cualquier consejo final es bienvenido!


Creo que puede usar las funciones de accesibilidad para escribir la interfaz de usuario. Verificaría los videos de WWDC 2011 para uno titulado "Patrones de diseño para simplificar la accesibilidad de Mac". Hicieron algo similar en 2010.



Creo que la clave que obtuve de "Crecimiento de software orientado a objetos" fue desacoplar tanto como sea posible de la IU. Sin código para mirar es más difícil dar sugerencias, pero con su revisión, creo que separar el bit "verificar una etiqueta dice ..." de la interfaz de usuario. ¿Qué está configurando este mensaje? ¿Puedes probarlo?

Cuanto más se puede desacoplar de la interfaz de usuario, más puede probar la unidad (más rápido y más fácil) en lugar de integrar otros marcos o controladores de elementos de la interfaz de usuario.


En función de su respuesta a @Norman , supongo que está buscando recomendaciones que abarquen todo el tiempo de extremo a extremo funcional, así como de extremo a extremo basado en la interfaz de usuario, pero ¿quizás un marco de automatización de la interfaz de usuario podría cambiar de opinión? Algo intrusivo como FoneMonkey podría ser útil: http://www.gorillalogic.com/fonemonkey

Si eso no funciona para usted, me interesaría saber por qué y qué "brecha" percibe en dichas pruebas impulsadas por UI versus pruebas funcionales basadas en código.