La causa fue una fórmula manuscrita que se programó incorrectamente.
La causa: calculo incorrecto introducido en el software CAD utilizado para diseñar el coliseo.
Causa: número real de 64 bits (coma flotante) relacionado con la velocidad se convirtió en un entero de 16 bits
La causa, un programa calculaba la distancia en unidades inglesas (pulgadas, pies y libras), mientras que otro utilizó unidades métricas.
Un problema software que provocaba un retraso en el sistema anti-bloqueo de frenos
Causa: mucho software no había sido previsto para trabajar con el año 2000
* Algunos por error y otros por simplificar el desarrollo
En el desarrollo de software, la calidad de diseño acompaña a la calidad de los requisitos, especificaciones y diseño del sistema.
1. Las pruebas muestran la presencia de defectos
2. Las pruebas exhaustivas son imposibles
3. Pruebas tempranas.
4. Agrupamiento de Defectos
5. La paradoja del "Pesticida"
6. La prueba es dependiente del contexto
7. La falacia de ausencia de errores
El testing continuo es la única forma de garantizar avance continuo, por esto, el testing se realiza continuamente junto con el desarrollo de software y demás actividades.
Se proporciona retroalimentación continua, permitiendo corregir el rumbo continuamente durante el desarrollo de software.
En Agile Testing, los Analistas de negocio y Desarrolladores de software también ejecutan pruebas, no sólo los testers como en métodos convencionales.
En Agile Testing, los equipos del área de negocio (el cliente) están involucrados en cada iteración, no solo al final durante la fase de aceptación, como resultado, el tiempo de retroalimentación se reduce y el costo de correcciones también es menor.
Los defectos en el código se corrigen en la misma iteración, por lo que se mantiene el código limpio.
Los Agile Testers usan listas de chequeo reusables en lugar de documentación extensa, se enfocan en la esencia de la prueba en lugar de detalles
El Agile Testing, las pruebas se hacen “durante” el desarrollo y no después del desarrollo como en métodos convencionales.
✅ Evidencia empírica de que el software funciona como esperamos
👷♀️ Reproducir fácilmente casos complejos
🐛 Evitar bugs (Economía del software)
🙏 Refactorizar y añadir funcionalidades en paz
🚀 Automatización (habilita CI)
Explorar funcionalidades
prueban una funcionalidad única y se basan en el principio de responsabilidad única (la S de los principios de diseño SOLID)
prueban la conexión entre componentes, sería el siguiente paso a los test unitarios.
Las pruebas de integración determinan si las unidades de software desarrolladas de forma independiente funcionan correctamente cuando están conectadas entre sí.
ejercitar solo la parte del código en mi servicio que habla con un servicio separado
utiliza dobles de prueba de esos servicios, ya sea en proceso o de forma remota
por lo tanto, constan de muchas pruebas de alcance limitado, a menudo no más grandes que una prueba unitaria (y generalmente se ejecutan con el mismo marco de prueba que se usa para las pruebas unitarias)
requieren versiones en vivo de todos los servicios, lo que requiere un entorno de prueba sustancial y acceso a la red
ejercitar rutas de código a través de todos los servicios, no solo el código responsable de las interacciones
prueban la integración de todos los componentes que desarrollan una funcionalidad concreta (por ejemplo, la automatización de pruebas con Selenium serían test funcionales).
Pruebas definidas por el Product Owner basadas en ejemplos (BDD con Cucumber).
Prueban que los test unitarios y funcionales siguen funcionando a lo largo del tiempo (se pueden lanzar tanto de forma manual como en sistemas de Integración Continua).
Prueban la eficiencia del sitema.
DOC, or Depended On Component
DTO con unos valores concretos
registran información en función de las llamadas que se realizan
Tienen expectativas sobre las llamadas que se espera que reciban
Arrange: en esta fase se prepara el entorno para poder ejecutar la prueba.
Act: realizamos la prueba en cuestión.
Given: en esta fase se prepara el entorno para poder ejecutar la prueba.
When: realizamos la prueba en cuestión.
target: es el objeto que vamos a testear.
expected: es el estado objetivo del test.
actual: es el estado resultado del test.
optionsServiceStub: es un stub del servicio OptionsService.