Unit tesing y el mito de los 0 bugs

36
Unit tesing Y el mito de los 0 bugs

description

Como desarrolladores tenemos que crear el mejor código posible, que sea eficiente y que realice correctamente las funciones para las que ha sido creado: calidad. Una buena forma de conseguir esta buena calidad es probando nuestro código. Creando unit tests (pruebas unitarias) para cada una de las diferentes funcionalidades e intentando acercarnos lo máximo posible a una cobertura completa. Pero de nada sirve obligar al equipo a cubrir un 80% de código, si las pruebas que realizan no aportan valor. A lo largo de esta charla estudiaremos la mejor forma de probar código: Diferenciaremos entre los diferentes tipos de pruebas, sentaremos las bases de un buen unit test, nos ayudaremos de herramientas de diagnóstico y métricas de código, y refactorizaremos para conseguir código "testeable".

Transcript of Unit tesing y el mito de los 0 bugs

Page 1: Unit tesing y el mito de los 0 bugs

Unit tesingY el mito de los 0 bugs

Page 2: Unit tesing y el mito de los 0 bugs

Fernando [email protected]@tokiota.com

www.programandonet.com

Page 3: Unit tesing y el mito de los 0 bugs
Page 4: Unit tesing y el mito de los 0 bugs

Indice

• Definicion de unit test

• Haciendo codigo testeable

• Estructura de un unit test

• Ventajas e inconvenientes

• Frameworks

Page 5: Unit tesing y el mito de los 0 bugs

Que es una prueba de software

Input Process Output

Page 6: Unit tesing y el mito de los 0 bugs

Que es una prueba de software

Input Process Output

Page 7: Unit tesing y el mito de los 0 bugs

Clasificación de las pruebas

White-Box testingBlack-box testingVisual testingGrey-box testing

Page 8: Unit tesing y el mito de los 0 bugs

Clasificación de las pruebas

Unit testingIntegration testingSystem testingAcceptance testing

White-Box testingBlack-box testingVisual testingGrey-box testing

Page 9: Unit tesing y el mito de los 0 bugs

Clasificación de las pruebas

Installation testingCompatibility testingSmoke and sanity testingRegression testingAcceptance testingAlpha testingBeta testingFunctional vs non-functionaltestingDestructive testingSoftware performance testingUsability testingAccessibility testingSecurity testingInternationalization and localizationDevelopment testingA/B testing

Unit testingIntegration testingSystem testingAcceptance testing

White-Box testingBlack-box testingVisual testingGrey-box testing

Page 10: Unit tesing y el mito de los 0 bugs

Prueba unitaria

Page 11: Unit tesing y el mito de los 0 bugs

Pruebas unitariasA unit test is a piece of a code (usually a method) that invokes another piece of code and checks the correctness of some assumptions afterward. If the assumptions turn out to be wrong, the unit test has failed.

A “unit” is a method or function.

Unit test definition – The art of unit testingRoy Osherove – Manning Publications co.

Page 12: Unit tesing y el mito de los 0 bugs

Caracteristicas: FIRST

•Fast

•Repeatable

•Isolated

•Self-validating

•Timely

Page 13: Unit tesing y el mito de los 0 bugs

Caracteristicas: SECOND

•Profesional

•Automatizable

•Unitario

•No usa recursos

Page 14: Unit tesing y el mito de los 0 bugs

Estructura: Triple Cuadruple A

•Assume

•Act

•Arrange

•Assert

Page 15: Unit tesing y el mito de los 0 bugs

Codigo

Page 16: Unit tesing y el mito de los 0 bugs

Si un metodo o funcion es una unidadtengo que desglosarlos al maximo

vs.

Page 17: Unit tesing y el mito de los 0 bugs
Page 18: Unit tesing y el mito de los 0 bugs

¿Puedo escribir mejores unittests?

Page 19: Unit tesing y el mito de los 0 bugs

Puedes escribir mejor codigo

Page 20: Unit tesing y el mito de los 0 bugs

Desacoplar artefactos

Page 21: Unit tesing y el mito de los 0 bugs
Page 22: Unit tesing y el mito de los 0 bugs

Patrones•Inversion of Control

•Abstract Factory

Page 23: Unit tesing y el mito de los 0 bugs

Test doubles

Page 24: Unit tesing y el mito de los 0 bugs

Test doubles

•Dummies

•Stubs

•Fakes

•Spies

•MocksxUnit Test Patterns

Gerrard Meszaros – Hardcover

Page 25: Unit tesing y el mito de los 0 bugs

jMock

Page 26: Unit tesing y el mito de los 0 bugs

JSmockito

Page 27: Unit tesing y el mito de los 0 bugs

Evitar uso de estaticos o singletons

Page 28: Unit tesing y el mito de los 0 bugs
Page 29: Unit tesing y el mito de los 0 bugs

Simplifica los constructores•No uses `new`

•No uses `Initializer`

•No asignes algo que no sean atributos

•No uses condicionales o bucles

Page 30: Unit tesing y el mito de los 0 bugs

Test positivo y negativo

Page 31: Unit tesing y el mito de los 0 bugs

Ventajas de unit testing

•Encontrar bugs pronto

•Documentacion

•Red de seguridad

•Mejor diseno

Page 32: Unit tesing y el mito de los 0 bugs

Limitaciones de unit testing

•No detectan problemas de:

•No todo puede ser testeado con facilidad

Integracion, performance, …

Multi-threading, algoritmos no deterministas

Page 33: Unit tesing y el mito de los 0 bugs

Tecnicas•TDD

•BDD

•ATDD

Page 34: Unit tesing y el mito de los 0 bugs

Metricas de codigo•Code Coverage

•Cyclomatic Complexity

Page 35: Unit tesing y el mito de los 0 bugs

Ruegos y preguntas

Page 36: Unit tesing y el mito de los 0 bugs

Muchas gracias!!

@[email protected]

www.programandonet.com