testing , testing , testing

51
TESTING, TESTING, TESTING Gestión de pruebas de aplicaciones empresariales con Visual Studio 2005 [email protected] ttp://blogs.msdn.com/rido 061127

Upload: wing-mcknight

Post on 01-Jan-2016

143 views

Category:

Documents


1 download

DESCRIPTION

Testing , Testing , Testing. [email protected] http://blogs.msdn.com/rido. Gestión de pruebas de aplicaciones empresariales con Visual Studio 2005. 061127. Agenda. Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Testing ,  Testing ,  Testing

TESTING, TESTING, TESTING

Gestión de pruebas de aplicaciones empresariales con Visual Studio 2005

[email protected] http://blogs.msdn.com/rido

061127

Page 2: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 3: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 4: Testing ,  Testing ,  Testing

Metodologías Ágiles

El código es el entregable más importante Tiene que ejecutarse a menudo

Calidad del código Soportable / Insoportable Testeable / Detestable(*) Clean Code that Works (**)

Prácticas recomendadas Refactoring Pruebas Unitarias / TDD Pruebas Automatizadas Diseño bottom-up

*Fuente: Martin Fowler** Fuente: Kent Beck

Page 5: Testing ,  Testing ,  Testing

5

Relación entre las prácticas

Cliente disponible El plan de juego

Metáfora40 horas

RefactoringDiseño Simple

Parejas Pruebas

Versiones reducidas

Propiedad repartida

•Estándares

Integración Continua

Page 6: Testing ,  Testing ,  Testing

6

Relación entre las prácticas

Cliente disponible El plan de juego

Metáfora40 horas

RefactoringDiseño Simple

Parejas Pruebas

Versiones reducidas

Propiedad repartida

EstándaresIntegración Continua

Fuente: Kent Beck

Page 7: Testing ,  Testing ,  Testing

7

Mínimos MSF-Agile

RefactoringDiseño Simple

Pruebas

Estándares Integración Continua

Parejas *

Page 8: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 9: Testing ,  Testing ,  Testing

Tipos de Pruebas

Unitarias (Developer Tests) Integración Rendimiento (Carga, Fatiga..) Funcionales(Customer Tests)

Page 10: Testing ,  Testing ,  Testing

Pruebas Unitarias

Se realizan por y para los desarrolladores Nivel de clase/método Ayudan a resolver defectos Disminuyen el tiempo de desarrollo Desarrollo guiado por pruebas (TDD) Cobertura de código

Page 11: Testing ,  Testing ,  Testing

Pruebas de Integración

Aseguran que todos los componentes funcionan en conjunto

No sólo se prueba el código… Sólo atacan a los interfaces públicos Datos de prueba “suficientes”

Page 12: Testing ,  Testing ,  Testing

Pruebas Funcionales

Aseguran que se cumple la funcionalidad pactada

Escenarios de pruebas Escritas por testers para el cliente Dependen de un producto instalado Datos de prueba “reales” A veces no es rentable la automatización

Page 13: Testing ,  Testing ,  Testing

Pruebas de Rendimiento

Dependiendo del sistema Carga de usuarios Carga de datos Fatiga

Plan de capacidad Tamaño de Datos aproximado o superior Nunca ejecutar las pruebas al final !!

Page 14: Testing ,  Testing ,  Testing

Visual Studio Team System

Change Management

Work Item Tracking

Reporting

Project Site

Visual Studio

Team Foundation

Integration Services

Project Management

Pro

cess

an

d A

rch

itect

ure

Gu

idan

ce

Dynamic Code Analyzer

Visual Studio

Team Architect

Static Code Analyzer

Code Profiler

Unit Testing

Code Coverage

Visio and UML Modeling

Team Foundation Client (includes CAL)

Visual Studio Professional Edition

Load Testing

Manual Testing

Test Case Management

Application Designer

Logical Infra. Designer

Deployment Designer

Visual Studio

Team DeveloperVisual Studio

Team Test

Vis

ual S

tud

io In

du

stry

Part

ners

Big Build

Class Designer

Page 15: Testing ,  Testing ,  Testing

Pruebas en el ciclo de vida

Cada

Hora

Cada

Día

Cada

Itera

ción

Cada

Vers

ión

DesarrolloComponentes

CompilaciónEjecuciónPruebas Unitarias

UnitTest OK?

No

SíEjecuciónPruebas

Integración

IntegrationTest OK?

No

InstalaciónEntorno

Integración

InstalaciónEntorno

Preproducción

EjecuciónPruebas

Funcionales

FuncTest OK ?

EjecuciónPruebas

Rendimiento

PerformanceTest OK?

Versión Terminada

Resultados Pruebas Unitarias

Resultados Pruebas

Integración

Resultados Pruebas

Rendimiento

Resultados Pruebas

Fucnionales

Inicio Desarrollo

Page 16: Testing ,  Testing ,  Testing

Especificación

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServer Cifrar contraseñas

Validar CredencialesContraseñas Fuertes Validar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Page 17: Testing ,  Testing ,  Testing

Código::Esqueleto de la Solución

Crear Solución

TFS BBDD

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServer Cifrar contraseñas

Validar CredencialesContraseñas Fuertes Validar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Page 18: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 19: Testing ,  Testing ,  Testing

Características de las pruebas Unitarias

Prueban una única funcionalidad Son rápidas Se ejecutan en todas las máquinas Se ejecutan muchas veces (build+)

Page 20: Testing ,  Testing ,  Testing

¿Qué probar?

La lógica de negocio Código Frágil (xpath,regex …) ¿Bases de datos?

Patrones pruebas CRUD ¿Código Generado?

(DataSets, Web References)

Page 21: Testing ,  Testing ,  Testing

Anatomía de una prueba

El patrón de las 3 A

21

[TestMethod]public void CreateUser(){

string userName = “rido”;User u = new User(userName);Assert.AreEqual(“rido”, u.Name);

}

Page 22: Testing ,  Testing ,  Testing

Código::Visual Studio Test Projects Demos

VS TestProjectsTest Windows

TestRuns, TestResults Simpel Unit Test

RegEx

Page 23: Testing ,  Testing ,  Testing

23

Test Driven Development (I)

Problema Cambios en el código crean defectos Miedo a realizar cambios, diseño deteriorado Un buen diseño OO es difícil a la primera Más tiempo probando que escribiendo código

Solución Establecer un proceso que permita:

Modificar cambios con confianza Mejorar el diseño incrementalmente

Page 24: Testing ,  Testing ,  Testing

Test Driven Development (II) Los dos gorras

Añadir funcionalidad Mejorar el diseño

Secuencia TDD Escribir una prueba que falle Hacer que el código compile Ejecutar la prueba (falla) Añadir el código para que pase Mejorar el código (Refactoring)

Page 25: Testing ,  Testing ,  Testing

Test Driven Development (III)

Escribir las pruebas antes que el código a probar

Las pruebas unitarias hacen de “mini-spec”

Sirven como pruebas de regresión

Escribe una

prueba

Compila

Ejecuta (y

Falla)Arregla

el código

Ejecuta (y

Funciona)

Refactor

Page 26: Testing ,  Testing ,  Testing

Las 6 reglas

Escribir primero la prueba Nunca escribir una prueba que pasa la

primera vez Empezar con el caso “nulo” Realizar la “mínima” implementación

para pasar la prueba Pruebas repetibles Usar MockObjects cuando hay

dependencias

Page 27: Testing ,  Testing ,  Testing

Código::TDD en acción

Cifrado Validar

datos de entrada

Capa de acceso a datos

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServerCifrar contraseñas

Validar CredencialesContraseñas Fuertes Validar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Page 28: Testing ,  Testing ,  Testing

Beneficios

El código funciona(*) !! Facilidad para realizar cambios

Diseño Emergente( Refactoring ) Funcionales Defectos

Documentación Ejemplos

Cobertura de código Reducción de tiempo desarrollo Mantenimiento

Page 29: Testing ,  Testing ,  Testing

Código::Integrar

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServerCifrar contraseñas

Validar CredencialesContraseñas Fuertes Validar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Validar contraseña

Detallar problemas al registrar usuario

Page 30: Testing ,  Testing ,  Testing

Patrones de pruebas unitarias Objetivo

Aislarse de las dependencias Evitar código duplicado

Patrones Fake objects Stubs Inversion del Control (IoC)

MockObjects

Page 31: Testing ,  Testing ,  Testing

Código::MockObjects

Comprobar si existe un mail (usar WebService)

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServerCifrar contraseñas

Validar CredencialesContraseñas FuertesValidar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Page 32: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 33: Testing ,  Testing ,  Testing

Pruebas de Integración

Diferencias entre unitarias e integración Depende de la “altura a la que se mire” Entendibles por un analista

Ejecutar las pruebas en su contenedor ASPNet Host Configuración Servicios Externos Simuladores

Page 34: Testing ,  Testing ,  Testing

Gestión de casos de prueba

Configuración de las pruebas Casos de prueba == Datos de prueba

BBDD con datos de prueba DataBinding

Evolucionar con la funcionalidad Listas de pruebas

Page 35: Testing ,  Testing ,  Testing

Código::Última Integración

Integrar todos los componentes

Gestionar los usuarios de una aplicación web:Registro de usuarios (Nombre, contraseña, Email)

Almacén en SQLServerCifrar contraseñas

Validar CredencialesContraseñas FuertesValidar emailComprobar que el email existe

Si falla el registro indicar porqué

Validación de usuariosUsuario/Contraseña

Page 36: Testing ,  Testing ,  Testing

Herramientas

Cobertura de Código Trx2html NMock2 Integración con Team Build

Page 37: Testing ,  Testing ,  Testing

Break

15 minutos para un café

Page 38: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 39: Testing ,  Testing ,  Testing

Pruebas funcionales

Probar lo que va a ver (usar) el cliente Entorno de Preproducción Se prueba el código y además:

Configuración Red Seguridad Plataforma Interfaz de Usuario Se valida el diseño

Page 40: Testing ,  Testing ,  Testing

Pruebas Web

Simular el uso desde el punto de vista del usuario No se requiere el mismo detalle

Automatización más complicada Dependen de una instalación

Grabación desde IE Nivel HTTP

Otras plataformas de prueba se basan en automatizar el cliente Nivel JS

Page 41: Testing ,  Testing ,  Testing

Pruebas Manuales

Requieren rellenar un documento No se pueden automatizar!!

Pero están integradas en VS (TestRuns, TestResults)

Incluso se puede medir la cobertura

Page 42: Testing ,  Testing ,  Testing

Herramientas adicionales

Convertir las pruebas a código Fiddler

Page 43: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 44: Testing ,  Testing ,  Testing

Pruebas de Rendimiento

Asegurar tiempo de respuesta en situaciones críticas Volumen de datos Usuarios concurrentes Fatiga

Reutilizar otras pruebas Unitarias Integración Web

Page 45: Testing ,  Testing ,  Testing

Lab

(IIS)SWebTest

(TFS)GENSERVER

TestController

TestAgent1

Ridopc(VS)

Lab03(VS)

TestAgent2

Page 46: Testing ,  Testing ,  Testing

Almacén de los resultados

Base de datos (SQLExpress) Configurable

Desde VS Desde el Controller

Exportar los resultados

Page 47: Testing ,  Testing ,  Testing

Agenda

Introducción a las pruebas Tipos de Pruebas Pruebas Unitarias Pruebas de Integración Pruebas Funcionales Pruebas de Rendimiento Integración con Team Foundation

Page 48: Testing ,  Testing ,  Testing

Team Foundation

Integración con el ciclo de vida Gestión de casos de prueba

Integración con WorkItems Team Build

Ejecuta una lista de pruebas Process Template

Reports Indicadores de Calidad

Page 49: Testing ,  Testing ,  Testing

Conclusiones

Las pruebas afectan otras disciplinas No sólo a los testers Diseño Desarrollo Gestión de proyecto Relación con el cliente

VS no sólo para programadores Integración con VS Integración con TFS

Page 50: Testing ,  Testing ,  Testing

Tipos de prueba

Características

Unit Int Func Load

Cuándo?

Todo el rato

Cada día/semana

Cada Iteración/Versión

Cada Iteración/Versión

Donde? Devs, Build, Tests

Dev, Build, Tests

Lab, PRE Lab, PRE

Quién? Devs Devs, Testers

Testers,Clientes

Testers

Cómo? VSUnitFx VSUnitFx WebTests, Manual Tests

VS Load AgentsWebTests

Page 51: Testing ,  Testing ,  Testing

Preguntas y..

Respuestas (si las hay :-) Otros ejemplos

Suites de pruebas unitarias famosas Nunit EnterpriseLibrary Composite UI Application Block CCNet

Es sólo la primera versión !!