¿Cómo ejecuto pruebas funcionales contra mi juego Unity3D?

25

Contexto

Continúo algún código heredado para un juego en Unity3d, y quiero escribir algunas pruebas funcionales destinadas a la regresión, para asegurarme de no romper cosas al implementar cosas nuevas o al refactorizar.

Ya sé que existe el conjunto de 'Herramientas de prueba de unidad' para Unity3d disponible como un activo. Lo he usado como un conjunto de pruebas unitarias, por lo que pruebo mis modelos (clases).

Ejemplo de qué tipo de prueba estoy pensando

Para "prueba funcional" me refiero a cosas como esta:

  • Ejecuta el programa
  • Cuando esté en la escena del menú, afirme que hay un botón que dice "inicio"
  • Pinchalo
  • Luego afirme que se carga una nueva escena
  • Afirmar que el píxel XXX es rojo
  • Haga clic en la coordenada XXX
  • Afirma ahora que el píxel cambió a verde
  • etc.

Preguntas

P1: ¿Cómo escribo y ejecuto pruebas funcionales para mi juego? ¿Esto también se hace típicamente en las UnityTestTools (UTT)?

P2: Si UTT es más para pruebas unitarias, ¿hay un conjunto separado para pruebas funcionales? ¿Cúal?

Notas:

Estoy apuntando a Android y ejecuto Unity5.3.1f1

Xavi Montero
fuente
Por lo que puedo decir, el UTT incorporado es solo para pruebas unitarias. Puede haber una herramienta de prueba que se adapte a sus necesidades en la tienda de activos
user3797758
3
En realidad no. Las herramientas de prueba de Unity contienen un conjunto de herramientas para pruebas de integración y muchas afirmaciones desde la primera versión. Si no ve algo como esto en UTT incorporado, descargue UTT completo de la tienda de activos.
Maxim Kamalov
Eche un vistazo a la documentación de Test Running, Unity Test Runner Doc. Permite tanto el modo de reproducción como el modo de edición.
Racksay el

Respuestas:

1

Según tengo entendido, está buscando comprender las pruebas de automatización en Unity.

Herramientas de prueba de Unity

Este debería ser su método goto, pero antes de investigar cómo, examinaré el por qué.

La forma preferida de realizar cualquier forma de prueba de automatización es hacerlo en un entorno lo más cercano posible a la producción. Usar algo como las Herramientas de prueba de Unity (vivir dentro del Editor de Unity) suena como una mala idea para cualquiera que haya escrito pruebas de integración convencionales.

¿Por qué? Porque con cualquier prueba de integración, desea la menor cantidad de cosas adicionales que bloqueen su aplicación que no está allí cuando el usuario la abre. El Editor de Unity podría tener un rendimiento o comportamiento diferente en comparación con la versión de iOS (por ejemplo).

Entonces, ¿por qué usar las herramientas de prueba de Unity (UTT)?

La razón principal es la conveniencia. Tanto el Editor de la Unidad como UTT están diseñados para ser fáciles y visuales de usar. Te resultará fácil escribir pruebas, unirlas a tu juego específico y comprender cuándo fallan.

¿Qué pasa con la diferencia de comportamiento entre Unity Editor y producción?

Después de todo, Unity Editor es un contenedor alrededor de su aplicación. Eso significa que habrá algunas diferencias entre el Editor y la producción. Pero, dejando de lado las pruebas de integración, el Editor de la Unidad ha sido un contenedor durante mucho tiempo. Es una plataforma madura con miles de juegos incorporados. Los resultados que obtenga al ejecutar pruebas de integración dentro del Editor serán muy precisos.

En el escenario de ejemplo que proporcionó, todo menos el primer elemento puede afirmarse fácilmente utilizando las Herramientas de prueba de Unity. Puede abrir escenas y validar comportamientos como cualquier otra prueba de integración.

Sugiero escribir la mayoría (si no todas) de sus pruebas usando UTT. Para agregar compatibilidad con herramientas de integración continua (por ejemplo, Jenkins), es posible que desee ejecutarlas desde la consola utilizando argumentos de línea de comandos .

Inicio de la aplicación y prueba manual.

Iniciar la aplicación no es algo que tenga un control preciso mientras está en el Editor de Unity. Para validar ese aspecto de tu juego y más, puedes usar algunas pruebas manuales básicas.

Aquí se explica cómo abordar eso:

  1. Asegúrate de que tu juego emita algún tipo de señal cuando llegue a los hitos específicos que te interesan (o te pueden interesar). El inicio de sesión en un archivo es el enfoque más común (utilizando el registro incorporado automático o una versión de terceros ).
  2. Lea y analice periódicamente los registros. Esto puede suceder de forma manual o con secuencias de comandos utilizando su segundo lenguaje de secuencias de comandos favorito.

Alternativas

No es sorprendente, como todo lo relacionado con la Unidad, tenemos más que unas pocas alternativas. Aquí hay algunos que puede considerar:

Dependiendo de la escala y el alcance de su proyecto, es posible que desee emplear una o muchas de las opciones que describí anteriormente.

Jordan Georgiev
fuente