4.1 KiB
Testing
Solo se detalla: Test Unitario Automático
Los test poseen una estructura interna común:
-
Anatomía de los Tests
-
Setup: Es donde se crean los objetos necesarios (el contexto) para el test.
-
Act: Acción a realizar o probar.
-
Assertions: Verificaciones sobre resultados obetnidos.
Los assertions son afirmaciones que gerealmente chequean el estado del sistema, comparando los resultados obtenidos con los esperados. Algunos métodos de la clase TestCase: - assertEqual - assertNotEqual - assertTrue - assertFalse - assertRises
-
-
Caracteristicas deseables de los test
- Ser de rápida ejecución.
- Ser reducidos en tamaño.
- Ser entendibles.
- Debe tener 1 test por caso.
- Debe tener control de todo.
- "misma cantidad de lineas de código q las del sistema".
- Nombres declarativos y resumir el: GIVEN / WHEN / THEN
-
Buenas practicas
- Testear un caso por test (no implica tener solo un assert) - Empezar siempre por el test mas sencillo. - Comenzar por la aserción, ayuda a entender qué se quiere hacer. - Siempre debe haber un assert en el test (o fail, etc). - Recordar testear casos "negativos" (posibles fallas), no solo "positivos". - Recordar que el test debe estar en cotrol de todo: *En el caso de testeo sobre secuencias: Verificar la longitud que debe tener y que estén unicamente los objs. que deben estar.
-
Clasificación de Test según funcionamiento
- Test Insoportables: Tardan mucho, posible uso de algún recurso lento (bd, conex, etc).
- Test Fragiles: Se "rompen" cuando se modifica la implementación interna de un objeto. Son test de "caja blanca".
- Test Erraticos: Aveces funcionan, otras no. Hay dependencias de "pictures" entre test o usan recursos externos.
Framework Xunit
Frameworks de desarrollo guiado por por pruebas
conocidos colectivamente como xUnit.
Disponibles para otros lenguajes y plataformas.
Librería Unittest
Framework de test unitarios unittest de la libreria estándar. Inspirado en JUnit.
Similar a la mayoria de los frameworks de otros lengajes. Soporta automatización de test, código compartido para setup y shutdown de test, agregar test en colecciones e independencia de tests respecto del framework de reporte.
Componentes Xunit
-
Test Fixture : Representa la preparación necesaria para correr uno o más test, y cualquier acción de limpieza asociada.
-
Test Case : Unidad de prueba individial.
Ademas de definir los metodos de Assertions, define también: - setUp: Llamado antes de ejecutar cada test del TestCase. Aqui va el código para preparar el contexto del test - tearDown: LLamado al finalizar cada ejecución de test del TestCase. Aquí va el código para limpiar el contexto que pudo haber modificado el test. - setUpClass: Ejecutado cuando se crea una instancia del TestCase. Utilizado para hacer un setup del contexto común entre todos los test del TestCase. - tearDownClass: Ejecutado cuando se destruye una instancia del TestCase. Utilizado para hacer limpieza del contexto. Evitando que afecte otros TestCase. - addCleanup: Agrega una función de limpieza que se ejecutará en el teardown del test. Al agregar "muchas" opciones, estas se ejecutarán en orden LIFO.
-
Test Suite : Colección de test cases, test suites o ambos.
-
Test Runner: Coordina la ejecución de test y provee el Output al usuario.