Presentación para la RiojaDotNet sobre testing.
Enlaces de referencia:
--
Keep Calm And Unit Test Your Code
https://www.keepcalmandposters.com/poster/5829573_keep_calm_and_unit_test_your_code
--
TestPyramid
https://martinfowler.com/bliki/TestPyramid.html
--
The Practical Test Pyramid
https://martinfowler.com/articles/practical-test-pyramid.html
--
TestDouble
https://martinfowler.com/bliki/TestDouble.html
--
UnitTest
https://martinfowler.com/bliki/UnitTest.html
--
IntegrationTest
https://martinfowler.com/bliki/IntegrationTest.html
--
Unit Tests Are FIRST (Fast, Isolated, Repeatable, Self-Verifying, and Timely)
https://pragprog.com/magazines/2012-01/unit-tests-are-first
--
F.I.R.S.T Principles of Unit Testing
https://github.com/ghsukumar/SFDC_Best_Practices/wiki/F.I.R.S.T-Principles-of-Unit-Testing
--
Simulando las dependencias en las pruebas unitarias. Dummies vs Stubs vs Mocks vs Spies vs Fakes
http://www.javiergarzas.com/2015/09/dummies-vs-stubs-vs-mocks-vs-spies-vs-fakes.html
--
What's the difference between faking, mocking, and stubbing?
https://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing
--
Mocks Aren't Stubs
https://martinfowler.com/articles/mocksArentStubs.html
--
Java - How to use stubs in JUnit
https://stackoverflow.com/questions/31890991/java-how-to-use-stubs-in-junit
--
GivenWhenThen
https://martinfowler.com/bliki/GivenWhenThen.html
--
Conceptos básicos de prueba unitaria - Escribir las pruebas
https://msdn.microsoft.com/es-es/library/hh694602.aspx#Anchor_3
--
¿Qué es eso del testing exploratorio? ¿Y para qué me sirve?
http://www.javiergarzas.com/2015/01/testing-exploratorio-10-min.html
--
Naming Test Classes and Methods
https://codurance.com/2014/12/13/naming-test-classes-and-methods/
--
Rafa Gomez y Javier Ferrer - Clean Code, SOLID, CQRS... ¿Y qué hay de nuestros test? | BCN SWC 2017
https://www.youtube.com/watch?v=cw6Va1ZW7iI&list=PLKxa4AIfm4pXfHIuhB89H6TdUO8syJMui&index=3
--
Deconstruyendo la pirámide de los tests
http://blog.koalite.com/2014/05/deconstruyendo-la-piramide-de-los-tests/
--
No pierdas el tiempo escribiendo tests
http://blog.koalite.com/2017/11/no-pierdas-el-tiempo-escribiendo-tests/
--
NO automatices más Test de interfaz gráfica de usuario
http://www.javiergarzas.com/2016/06/14044.html
--
Just Say No to More End-to-End Tests
https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html
--
Commercial Fiat 500S – What bad boyS drive
https://www.youtube.com/watch?v=4ndyAlJN9Fk
15. Fast
• Cuando más rápido > más ejecuciones
• No evitar su ejecución porque cuesta
mucho
• En milisegundos se deberían ejecutar
miles de test
16. Isolated
• Solo debe existir un motivo por el que falla
un test
• Evitar comprobaciones en la carga de
datos
• Deben ejecutarse sin un orden
17. Repeteable
• Obtener los mismos resultados en las
mismas condiciones
• Un test no debe depender de las
condiciones del entorno
• Debe cargar sus propios datos
38. Estructura
• Estructura de un test
– Inicialización de los valores iniciales
– Llamada al método a testear
– Comprobación de los resultados esperados
49. Tipos
• Testean partes de la aplicación con vida
propia
– Test de integración con Base de datos
– Test de integración con Servicios
50. • Caso idóneo A
– Preparar un entorno
– Insertar datos necesarios para realizar el test
– Realizar el test
– Eliminar el entorno (Opcional)
Estructura
51. • Caso idóneo B
– Insertar datos necesarios para realizar el test
– Realizar el test
– Borrar los datos introducidos
Estructura
52.
53. Pasos
• Iniciar una transacción
• Insertar datos necesarios
• Pasar los test
• Cancelar la transacción
77. Clean test code
• El código de testing es tan importante
como el de producción
• Solo UNA condición por test
• Mantener el código de los test bien
estructurado (AAA, Given When Then…)
• Aplicar reglas de clean code (DRY, KISS,
…)
78. Consejos
• Porcentaje de pruebas por nivel
– Test unitarios: 70%
– Test integración: 20%
– Test de interfaz de usuario: 10%