unit tesing y el mito de los 0 bugs

Post on 07-Jul-2015

383 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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

Unit tesingY el mito de los 0 bugs

Fernando Escolar@fernandoescolarfernando.escolar@tokiota.com

www.programandonet.com

Indice

• Definicion de unit test

• Haciendo codigo testeable

• Estructura de un unit test

• Ventajas e inconvenientes

• Frameworks

Que es una prueba de software

Input Process Output

Que es una prueba de software

Input Process Output

Clasificación de las pruebas

White-Box testingBlack-box testingVisual testingGrey-box testing

Clasificación de las pruebas

Unit testingIntegration testingSystem testingAcceptance testing

White-Box testingBlack-box testingVisual testingGrey-box testing

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

Prueba unitaria

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.

Caracteristicas: FIRST

•Fast

•Repeatable

•Isolated

•Self-validating

•Timely

Caracteristicas: SECOND

•Profesional

•Automatizable

•Unitario

•No usa recursos

Estructura: Triple Cuadruple A

•Assume

•Act

•Arrange

•Assert

Codigo

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

vs.

¿Puedo escribir mejores unittests?

Puedes escribir mejor codigo

Desacoplar artefactos

Patrones•Inversion of Control

•Abstract Factory

Test doubles

Test doubles

•Dummies

•Stubs

•Fakes

•Spies

•MocksxUnit Test Patterns

Gerrard Meszaros – Hardcover

jMock

JSmockito

Evitar uso de estaticos o singletons

Simplifica los constructores•No uses `new`

•No uses `Initializer`

•No asignes algo que no sean atributos

•No uses condicionales o bucles

Test positivo y negativo

Ventajas de unit testing

•Encontrar bugs pronto

•Documentacion

•Red de seguridad

•Mejor diseno

Limitaciones de unit testing

•No detectan problemas de:

•No todo puede ser testeado con facilidad

Integracion, performance, …

Multi-threading, algoritmos no deterministas

Tecnicas•TDD

•BDD

•ATDD

Metricas de codigo•Code Coverage

•Cyclomatic Complexity

Ruegos y preguntas

Muchas gracias!!

@fernandoescolarfernando.escolar@tokiota.com

www.programandonet.com

top related