Testing = Especificación + Programación

2,424 views

Published on

Primera Jornada de Calidad e Innovación en la Producción de software. Organizada por el Centro de Calidad e Innovación del Polo Tecnológico de Rosario y la Municipalidad de Rosario 12 Junio 2009
Disertante:
Maximiliano Cristiá, Jefe de cátedra de Ingeniería de Software de la UNR, Investigador de CIFASIS, Co-fundador de Flowgate Security Consulting

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,424
On SlideShare
0
From Embeds
0
Number of Embeds
152
Actions
Shares
0
Downloads
82
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testing = Especificación + Programación

  1. 1. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones Testing = Especificación + Programación Haciendo posible el testing Maximiliano Cristiá Flowgate Consulting mcristia@flowgate.net CIFASIS Universidad Nacional de Rosario cristia@cifasis-conicet.gov.ar Primera Jornada de Calidad e Innovación en la Producción de Software Maximiliano Cristiá Testing = Especificación + Programación
  2. 2. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones Audiencia ¿Para quiénes está destinada la charla? Para los que testean Porque quieren reducir los costos de testing. Porque quieren testear más por el mismo costo. Porque el trabajo manual y repetitivo los harta. Para los que no testean pero quieren testear Porque testear es muy caro. Porque testear es muy complejo. Porque testear es muy laborioso. Porque testear requiere profesionales que no tienen. Maximiliano Cristiá Testing = Especificación + Programación
  3. 3. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones Madurez Esta charla es para equipos con cierto nivel de madurez Es necesario tener los requerimientos escritos. Es necesario separar los roles de testing y programación. Es conveniente tener documentación del código fuente. Maximiliano Cristiá Testing = Especificación + Programación
  4. 4. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones El testing es muy caro Según Fred Brooks (The Mythical Man-Month) El testing de software de base ronda el 50 % del costo total. Según el Software Engineering Institute El testing ronda entre el 30 % y el 40 % del costo total. Según IBM y Gartner Si reparar un error durante la ingeniería de requerimientos cuesta $1, repararlo durante el testing cuesta $60 y repararlo después de la entrega $100. Maximiliano Cristiá Testing = Especificación + Programación
  5. 5. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones Calcular casos de prueba es lo más caro Retesting La fase más costosa del testing es el retesting. Con las metodologías clásicas esto puede implicar recalcular muchos casos de prueba. Calcular los casos de prueba Técnicamente, lo más costoso del testing es calcular todos y cada uno de los casos de prueba. En cierto sentido el retesting es costoso porque hay que recalcular casos de prueba. Maximiliano Cristiá Testing = Especificación + Programación
  6. 6. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones ¿Cómo reducir el costo de testing? Posibles soluciones No testear. Hacer programas correctos por construcción. Automatizar el testing. ¿Es posible? Sí, en gran medida es posible. Maximiliano Cristiá Testing = Especificación + Programación
  7. 7. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones ¿Cómo reducir el costo de testing? Posibles soluciones No testear. Hacer programas correctos por construcción. Automatizar el testing. ¿Es posible? Sí, en gran medida es posible. Maximiliano Cristiá Testing = Especificación + Programación
  8. 8. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones ¿Cómo reducir el costo de testing? Posibles soluciones No testear. Hacer programas correctos por construcción. Automatizar el testing. ¿Es posible? Sí, en gran medida es posible. Maximiliano Cristiá Testing = Especificación + Programación
  9. 9. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones ¿Cómo reducir el costo de testing? Posibles soluciones No testear. Hacer programas correctos por construcción. Automatizar el testing. ¿Es posible? Sí, en gran medida es posible. Maximiliano Cristiá Testing = Especificación + Programación
  10. 10. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones ¿Cómo reducir el costo de testing? Posibles soluciones No testear. Hacer programas correctos por construcción. Automatizar el testing. ¿Es posible? Sí, en gran medida es posible. Maximiliano Cristiá Testing = Especificación + Programación
  11. 11. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones Validación & Verificación (V&V) Validación ¿Implementamos el programa que quiere el usuario? Testing de aceptación → Tarde y caro (IBM & Gartner). Verificación ¿Implementamos el programa especificado? Testing de unidad, de integración y de sistema. Esta charla es sobre verificación y testing de unidad. verificación requerimientos especificación programa validación Maximiliano Cristiá Testing = Especificación + Programación
  12. 12. Introducción Aspectos económicos del testing Testing Basado en Modelos Los costos de testear Un Caso de Estudio Alcance de la charla Conclusiones Corrección de un programa Considerando sólo verificación: Definición Un programa es correcto si verifica su especificación. Por lo tanto, para poder testear es necesario tener una especificación. A la especificación también se la llama modelo. Maximiliano Cristiá Testing = Especificación + Programación
  13. 13. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones Model-Based Testing (MBT) El testing se realiza partiendo de Proceso de MBT un modelo del software. requerimientos Al inicio, el modelo se utiliza para generar casos de prueba. modelo ¿error? Al final, el modelo se utiliza como generar comprobar oráculo. test resultados Teniendo el modelo, el proceso es abstractos abstractos muy automático. refinar abstraer En esta charla sólo veremos ejecutar “generar”. tests resultados Maximiliano Cristiá Testing = Especificación + Programación
  14. 14. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones ¿Quiénes usan MBT? Empresas y sectores Microsoft – Sun – France Telecom – Cisco Control de tráfico aéreo. La industria automovilística europea. La industria de tarjetas inteligentes. El reporte IBM GOTCHA-TCBeans – FSM Testing de la implementación POSIX de fnctl. Testing de parte del garbage collector de JVM. IBM reporta un ahorro sustancial y mayor cubrimiento. Maximiliano Cristiá Testing = Especificación + Programación
  15. 15. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones MBT formal → Testing automático Modelos formales Para automatizar MBT se utilizan modelos formales. Un modelo formal es una descripción lógico-matemática (abreviada) de un programa: es una abstracción. Esta charla es sobre MBT formal. Notaciones formales Para escribir una especificación formal se utiliza una notación formal. Notaciones formales: Z, Statecharts, CSP, B, TLA+ . . . En esta charla se utilizarán especificaciones Z. Maximiliano Cristiá Testing = Especificación + Programación
  16. 16. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones ¿Es más barato el MBT formal? Maximiliano Cristiá Testing = Especificación + Programación
  17. 17. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Veamos un ejemplo concreto Los requerimientos Un banco tiene un cierto conjunto de cajas de ahorro en las cuales se puede depositar y extraer dinero. Cada caja de ahorro se identifica con un número de cuenta. Los montos a depositar y los saldos serán números enteros. Sólo se debe mantener el saldo de cada caja de ahorro. Sólo modelaremos la operación de depósito. Maximiliano Cristiá Testing = Especificación + Programación
  18. 18. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones La especificación Z Los tipos básicos [NCTA] Un tipo para los números de cuenta SALDO == N Un tipo para los saldos Comentarios No nos importa la estructura de un número de cuenta. Para simplificar consideramos que los saldos son números naturales. Maximiliano Cristiá Testing = Especificación + Programación
  19. 19. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones La especificación Z El conjunto de estados Banco cajas : NCTA → SALDO Comentarios Del banco sólo nos importan las cajas de ahorro. A cada número de cuenta le corresponde un único saldo. No nos importan: la persistencia, la performance, el lenguaje de programación, las estructuras de datos, etc. Maximiliano Cristiá Testing = Especificación + Programación
  20. 20. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones La especificación Z La operación de depósito DepositarOk ∆Banco Se cambia el estado num? : NCTA; monto? : Z Parámetros de entrada num? ∈ dom cajas ¿Existe la cuenta? monto? > 0 No se puede depositar 0 o menos cajas = cajas ⊕ {num? → cajas(num?) + monto?} Comentarios cajas representa la “base de datos” luego del depósito. El operador ⊕ se parece a update de SQL. Maximiliano Cristiá Testing = Especificación + Programación
  21. 21. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones La especificación Z La operación de depósito (cont.) DepositarE1 == [ΞBanco; num? : NCTA | num? ∈ dom cajas] / DepositarE2 == [ΞBanco; monto? : Z | monto? ≤ 0] Depositar == DepositarOk ∨ DepositarE1 ∨ DepositarE2 Comentarios DepositarE1 y DepositarE2 especifican posibles errores. La operación final se arma usando todos los esquemas. Depositar es la operación que vamos a testear. Maximiliano Cristiá Testing = Especificación + Programación
  22. 22. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Usamos el modelo para generar casos de prueba Proceso de MBT Detalle de “generar” modelo ¿error? tests VIS árbol de pruebas comprobar abstractos podar generar táctica táctica táctica test resultados partición VIS ... partición VIS abstractos abstractos refinar abstraer Siempre el costo ejecutar tests resultados El mayor costo de testing es calcular los casos de prueba. Maximiliano Cristiá Testing = Especificación + Programación
  23. 23. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Fastest: automatización de MBT El proyecto I+D conjunto entre Flowgate Consulting y CIFASIS. Parcialmente financiado por FONTAR. Prototipo disponible en www.flowgate.net. Características Procesamiento distribuido – Cliente-servidor. Extensible y configurable por el usuario – Tácticas. Multiplataforma – Java. Auto-documentación – Latex y PDF. Interfaz de texto muy simple – A mejorar. Maximiliano Cristiá Testing = Especificación + Programación
  24. 24. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones VIS y tácticas En teoría VIS == [cajas : NCTA → SALDO; num? : NCTA; monto? : Z] Dos tácticas de testing: DNF: considera cada uno de los esquemas por separado. Partición estándar sobre ⊕ considera valores representativos para cajas y {num? → cajas(num?) + monto?}. Con Fastest loadspec banco.tex selop Depositar addtactic Depositar SP oplus cajas oplus {num? map cajas(num?) + monto?} Maximiliano Cristiá Testing = Especificación + Programación
  25. 25. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones El árbol de pruebas En teoría Cada nodo del árbol es un objetivo de prueba. Cada objetivo es un conjunto de condiciones que tiene que cumplir un caso de prueba. Los objetivos se tornan más específicos a medida que se desciende por el árbol. Los casos de prueba se extraen de las hojas del árbol. Con Fastest genalltt showtt -p Depositar Maximiliano Cristiá Testing = Especificación + Programación
  26. 26. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones El árbol de pruebas de Depositar VIS DNF 1 DNF 2 DNF 3 SP1 ... SP8 SP9 ... SP16 SP17 . . . SP24 Ejemplos de objetivos de prueba DNF 1 == [VIS | num? ∈ dom cajas ∧ monto? > 0] SP4 == [VIS | num? ∈ dom cajas ∧ monto? > 0 ∧ cajas = {} ∧ dom cajas = dom{num? → cajas(num?) + monto?}] Maximiliano Cristiá Testing = Especificación + Programación
  27. 27. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Podando el árbol de pruebas En teoría Muchos de los objetivos pueden ser inalcanzables. Son situaciones imposibles de testear. Es conveniente eliminar esos objetivos. SP6 == [VIS | num? ∈ dom cajas ∧ monto? > 0 ∧ cajas = {} ∧ dom cajas ∩ dom{num? → cajas(num?) + monto?} = {}] Con Fastest – Automático en la próxima versión prunefrom SP_1, SP_2, SP_3, SP_6, SP_7, SP_8 prunefrom SP_9, SP_11, SP_12, SP_13, SP_15, SP_16 prunefrom SF_17, SP_19, SP_22, SP_23, SP_24 Maximiliano Cristiá Testing = Especificación + Programación
  28. 28. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones El árbol y los objetivos resultantes VIS 5 objetivos DNF 1 DNF 2 DNF 3 SP4 SP5 SP20 SP21 SP4 == [. . . ] SP5 == [VIS | num? ∈ dom cajas ∧ monto? > 0 ∧ cajas = {} ∧ dom{num? → cajas(num?) + monto?} ⊂ dom cajas] DNF 2 == [VIS | num? ∈ dom cajas] / SP20 == [. . . ] SP21 == [. . . ] Maximiliano Cristiá Testing = Especificación + Programación
  29. 29. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Generando casos de prueba En teoría Se deben buscar constantes que satisfagan cada uno de los objetivos de prueba. Esto no es automatizable en el 100 % de los casos. Con Fastest En promedio Fastest se acerca al 90 %, el resto es manual. En este ejemplo encuentra el 100 % de los casos. El comando es genalltca. Maximiliano Cristiá Testing = Especificación + Programación
  30. 30. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones Los casos de prueba en Z 5 casos automáticos SP4T == [VIS | monto? = 1 ∧ num? = ncta0 ∧ cajas = {ncta0 → 1}] SP5T == [VIS | monto? = 1 ∧ num? = ncta0 ∧ cajas = {ncta0 → 1, ncta1 → 1}] DNF 2T == [VIS | monto? = 0 ∧ num? = ncta0 ∧ cajas = ∅] SP20T == [VIS | monto? = −1 ∧ num? = ncta0 ∧ cajas = {ncta0 → 1}] SP21T == [VIS | monto? = −1 ∧ num? = ncta0 ∧ cajas = {ncta0 → 1, ncta1 → 1}] Maximiliano Cristiá Testing = Especificación + Programación
  31. 31. Introducción El modelo Testing Basado en Modelos Detalle del paso “generar” Un Caso de Estudio Testing asistido por Fastest Conclusiones ¿Qué estamos testeando? Los casos de prueba en castellano SP4T : depositar en una cuenta existente una cantidad positiva cuando es la única cuenta. SP5T : depositar en una cuenta existente una cantidad positiva cuando no es la única cuenta. DNF 2T : intentar un depósito cuando no hay cuentas. SP20T : depositar en una cuenta existente una cantidad negativa cuando es la única cuenta. SP21T : depositar en una cuenta existente una cantidad negativa cuando no es la única cuenta. Maximiliano Cristiá Testing = Especificación + Programación
  32. 32. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones Ventajas y desventajas del MBT formal Ventajas Es la técnica de testing más económica. Es la técnica de testing más automática. Es la técnica de testing más disciplinada. Es la técnica de testing que más errores descubre. Es la técnica de testing menos orientada al código. Se puede comenzar el testing desde el inicio del proyecto. Desventajas Requiere profesionales que puedan modelar formalmente. Requiere una herramienta como Fastest. Maximiliano Cristiá Testing = Especificación + Programación
  33. 33. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones MBT formal hace posible el testing Maximiliano Cristiá Testing = Especificación + Programación
  34. 34. Introducción Testing Basado en Modelos Un Caso de Estudio Conclusiones Proyectos actuales de testing con Fastest Con INPE Instituto Nacional de Pesquisas Espaciais (Brasil). Testing de protocolo de comunicación entre computadoras de satélites. Con Critical Software y Universidad de Coimbra Instituciones portuguesas. Testing de software de abordo de satélites según estándar de la ESA. Maximiliano Cristiá Testing = Especificación + Programación

×