Pruebas de software - 1984.lsi.us.es
Transcript of Pruebas de software - 1984.lsi.us.es
![Page 1: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/1.jpg)
Departamento deLenguajes y Sistemas Informáticos
escuela técnica superiorde ingeniería informática
Evolución y gestión de la configuración
4º Grado en Ingeniería Informática -Ingeniería del Software
Pruebas de software
![Page 2: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/2.jpg)
Testing:max 2^26 testing posibles!!
¿Cómo diseño mi test set?
¿Cómo evalúo mi test set?
¿cómo genero datos de prueba?
![Page 3: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/3.jpg)
Las pruebas unitarias están diseñadas para ejercitar una parte pequeña y específica de funcionalidad
![Page 4: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/4.jpg)
La estructura de Django
![Page 5: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/5.jpg)
Proceso general de prueba
![Page 6: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/6.jpg)
Implementación de pruebas en
Un Ejemplo:
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.assertEqual(1 + 1, 2)
![Page 7: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/7.jpg)
Framework de testing unitario
(unnittest → Inspirado en JUnit)
Conceptos
- test fixture - Preparación necesaria para realizar las pruebas
- test case - Caso concreto e individual que se quiere probar
- test suite - Conjunto de casos de prueba.
- test runner - Componente que ejecuta los tests.
![Page 8: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/8.jpg)
Lugar de implementación y ejecución
● La aplicación crea un fichero tests.py por defecto.
● Si necesitamos más complejidad →
Crear nuevos scripts de formato test*.py
Una vez escritos, se ejecutan desde la terminal:
#Corre todos los tests disponibles
$./manage.py test
#Corre los tests dentro de “voting”
$./manage.py test voting
![Page 9: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/9.jpg)
● Nos permitirá saber qué partes de la aplicación no están probadas
#Analiza la “./manage.py test”
$coverage run --source . ./manage.py test
#Cuestra el reporte en consola
$coverage report -m
#Crea un reporte en html
$coverage report html
Análisis de Cobertura de Pruebas
![Page 10: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/10.jpg)
Probando modelos
● En Django, los tests referentes a la base de datos no usan la BBDD de producción.
● (No es necesario declararla en settings.py)
![Page 11: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/11.jpg)
def setUp(self):super().setUp()self.census = Census(voting_id=1, voter_id=1)self.census.save()
def tearDown(self):super().tearDown()self.census = None
def test_store_census(self):self.assertEqual(Census.objects.count(), 1)
Probando modelos
![Page 12: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/12.jpg)
Probando las vistas de API
def test_update_voting_400(self):v = self.create_voting()data = {} #El campo action es requerido en la requestself.login()response = self.client.put('/voting/{}'.format(v.pk),
data, format= 'json')self.assertEquals(response.status_code, 400)
● Cada módulo ofrece funcionalidad en las vistas (views.py) que habrá que probar
![Page 13: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/13.jpg)
Probando las vistas con navegación
![Page 14: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/14.jpg)
Probando la carga del sistema
![Page 15: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/15.jpg)
Probando la carga del sistema
![Page 16: Pruebas de software - 1984.lsi.us.es](https://reader036.fdocuments.mx/reader036/viewer/2022072902/62e22e31cacc18038373547a/html5/thumbnails/16.jpg)
Departamento deLenguajes y Sistemas Informáticos
escuela técnica superiorde ingeniería informática
Evolución y gestión de la configuración
4º Grado en Ingeniería Informática -Ingeniería del Software
Integración continua