Herramientas para pruebas de Software

### Lista de herramientas investigadas con una descripción breve de sus características principales.

* Unity Test Framework(UTF): El UTF es una de las herramientas más importantes para garantizar la calidad. Se utiliza para ejecutar pruebas automáticas tanto en el Editor como en plataformas compatibles. Disponible para todos los usuarios de Unity.
* NUnit: Marco de pruebas unitarias basado en la plataforma .NET. Es una herramienta gratuita que permite escribir scripts de prueba manualmente pero no automáticamente. NUnit funciona de la misma manera que JUnit funciona para Java. Admite pruebas basadas en datos que se pueden ejecutar en paralelo. Utiliza Console Runner para cargar y ejecutar pruebas.
* Emma: Emma es un conjunto de herramientas de código abierto que mide la cobertura del código Java. Permite la cobertura de código para todos y cada uno de los desarrolladores del equipo rápidamente. Emma admite clases, líneas, métodos y cobertura de bloques básicos y tipos de informes como texto, HTML, XML, etc. Está completamente basado en Java sin dependencias de bibliotecas externas y acceso al código fuente
* Edredón HTTP: La colcha es una utilidad de software multiplataforma gratuita y una herramienta de desarrollo de software Java. Ayuda a medir la cobertura de los programas Java en las pruebas unitarias mediante la cobertura de declaraciones. Sin trabajar en el código fuente, solo manipula las clases y el código de máquina de JVM (máquina virtual de Java). Quilt proporciona interoperabilidad JUnit y métodos para controlar los gráficos de flujo y también facilita la generación de informes.
* HtmlUnit: HtmlUnit es una biblioteca Java de código abierto que contiene un navegador sin GUI para programas Java. Esta herramienta es compatible con JavaScript y proporciona funciones de GUI como formularios, enlaces, tablas, etc. Es un marco de pruebas unitarias de Java para probar aplicaciones web que se utilizan en marcos como JUnit, TestNG. HtmlUnit utiliza el motor de JavaScript denominado Mozilla Rhino. Admite protocolos como HTTP, HTTPS junto con una cookie, métodos de envío como GET, POST y servidor proxy.

### Selección de la mejor herramienta y sus razones

La herramienta seleccionada para realizar las pruebas unitarias o pruebas de automatización fue Unity Test Framework(UTF) esto debido a que es una herramienta que Unity tiene preinstalada; nos permite instalar de manera rápida y segura plugins que nos aseguran el desarrollo de pruebas en la misma plataforma, adaptándose a toda aquella programación que estemos desarrollando. Al ser multiplataforma, compatible con un sinfín de técnicas es muy preciso para este desarrollador del videojuego con el uso de la herramienta Oculus Quest 2. Otro beneficio importante de Unity Test Framework es que simplifica el proceso de depuración. Cuando se encuentran errores en el software, es necesario identificar la causa raíz para poder corregirlos. Las pruebas unitarias permiten aislar los componentes que fallan, lo que facilita la tarea de depuración y reduce el tiempo que se necesita para identificar y corregir los errores. Nosotros procederemos a compararla con otra herramienta que estuvimos cerca de escoger, JUnit, esto debido a su facilidad de uso para los Oculus. Pero esto fue desechado y cambiado de idea rápidamente debido a que La principal diferencia entre UTF y NUnit es que UTF está diseñado específicamente para trabajar con el motor de juego Unity, mientras que NUnit es un marco de pruebas de propósito general que se puede utilizar con cualquier aplicación de software escrita en C#. También, La sintaxis para escribir pruebas en UTF y NUnit es diferente. UTF utiliza un enfoque basado en atributos, mientras que NUnit utiliza un enfoque basado en clases. Esto significa que la forma en que se escriben las pruebas en cada marco es diferente, pero ambos enfoques son relativamente fáciles de aprender. Por lo que en ultima instancia nos fuimos de lado de UTF, lo que nos ha ahorrado gran parte del trabajo robusto del desarrollo del videojuego.

### Explicación paso a paso del diseño y ejecución de la prueba de software realizada con la mejor herramienta.

A continuación, se describe paso a paso cómo diseñar y ejecutar una prueba de software utilizando Unity Test Framework:

1. Crear un proyecto de Unity: lo primero que debemos hacer es crear un proyecto de Unity desde cero o abrir un proyecto existente. Es necesario asegurarse de que el proyecto tenga los elementos que se desean probar, como scripts, objetos y escenas.
2. Configurar Unity Test Framework: para configurar Unity Test Framework, hay que abrir el menú Editar (Edit) y seleccionar el submenú Proyecto (Project) y, luego, seleccionar la opción Pruebas (Tests). Se abrirá una ventana que permitirá activar Unity Test Framework para el proyecto.
3. Crear una prueba: en la ventana de Unity Test Framework, hacer clic en el botón Añadir (Add) para crear una nueva prueba. Se abrirá una ventana de diálogo para crear una nueva prueba. Escribir un nombre para la prueba y seleccionar la categoría de prueba correspondiente.
4. Diseñar la prueba: al crear una prueba, se crea automáticamente un archivo de script con un método de prueba vacío. El método de prueba debe contener un código que verifique si el software funciona correctamente. Por ejemplo, si se desea probar un script que mueve un objeto, se puede escribir un código que compruebe si el objeto se ha movido correctamente en la dirección deseada.
5. Ejecutar la prueba: para ejecutar una prueba, seleccionarla en la ventana de Unity Test Framework y hacer clic en el botón Ejecutar (Run). Unity ejecutará la prueba y mostrará los resultados en la ventana de Unity Test Framework.
6. Analizar los resultados: después de ejecutar la prueba, se mostrarán los resultados en la ventana de Unity Test Framework. Si la prueba ha pasado, se mostrará en verde. Si la prueba ha fallado, se mostrará en rojo. Es importante analizar los resultados de la prueba para identificar y corregir los errores que se hayan encontrado.
7. Repetir el proceso: después de corregir los errores encontrados, repetir el proceso de diseño y ejecución de la prueba hasta que se haya verificado que el software funciona correctamente.