Testing 3D
TATA Consultancy Services
Irene Pazos Viana IEEE Uruguay Section [email protected]
member
Testing Day
26.may.2011
[email protected] 26-may-11 2
testing 3D
• software testing• verificación, validación• inferencia, síntesis• ...• f: PROC x SPEC →→→→ {V, F}
(u name it … de que hablamos realmente??)
[email protected] 26-may-11 3
testing 3D
hablamos de todo esto?
COBERTURA
documentación (ieee 829)
casos
estrategiasPLANES
recursos
implem
entacion
resultados
anomalias
ciclosciclosciclosciclos e�e�e�e�iteraciones
iteracionesiteracionesiteraciones
fases
procesos
pruebas funcionales
perf
orman
ce
automa
tizaci
ón
metodología
proyecto
[email protected] 26-may-11 4
testing 3D
en el inicio fue el proyecto …todas las cosas fueron hechas por medio de Él, y sin El nada de lo que ha sido hecho, fue hecho…
bajo cualquier metodología y SDLC, testing es igualmente un proyecto con mismas características
que el proyecto al que sirve (y otra ejecución “fractal”)
foco
[email protected] 26-may-11 5
testing 3D
“no silver bullet”
• los modelos de calidad, metodologías y ciclos de vida, se eligen para servir mejor a los proyectos de una organización.
In folklore, the silver bullet is supposed to be the only kind of bullet for firearms that is effective against a Werewolf, witch,
or some monsters – wikipedia (since Lone Ranger is out of duty).
proyectos: metodologías, ciclos vida
[email protected] 26-may-11 6
testing 3D
testing: metodologías, ciclos vida
• Testing is the process of executing a program with the intent of finding errors
The Art of Software Testing, Myers, Nov.2011 3rd edition
(mhhh…tal vez sea una definición demasiado enfocada)
proyectos
[email protected] 26-may-11 7
testing 3D
test: definición
transitive verb
• 1: to put to test or proof : try
intransitive verb
• 1a : to undergo a test b : to be assigned a standing or evaluation on the basis of tests
• 2: to apply a test as a means of analysis or diagnosis
Merriam-Webster Dictionary
totalmenterecusiva !?
[email protected] 26-may-11 8
testing 3D
test: (A) A set of one or more test cases, or(B) A set of one or more test procedures, or (C)A set of one or more test cases and procedures.
test case: A set of input values, execution preconditions, expected results and execution postconditions, developed for a particular objective or test condition, such as to exercise a particular program path or to verify compliance with a specific requirement.
IEEE Std 610.12-1990, IEEE Std. Glossary of Software Engineering Terminology
el que esté libre de recursión, que arroje la primera definición
[email protected] 26-may-11 9
testing 3D
prueba
• 2. f. Razón, argumento, instrumento u otro medio con que se pretende mostrar y hacer patente la verdad o falsedad de algo.
• 4. f. Ensayo o experimento que se hace de algo, para saber cómo resultará en su forma definitiva.
• 13. f. Mat. Operación que se ejecuta para comprobar que otra ya hecha es correcta.
Diccionario de la lengua EspañolaVigésima segunda edición
REAL ACADEMIA.
[email protected] 26-may-11 10
testing 3D
1. ENSAYO
2. DEMOSTRACIÓN (de teoremas)
gracias Real Academia por las definiciones recibidas
silver bullet service pack+
[email protected] 26-may-11 11
testing 3D
test: P x E →→→→ C x { R }P procedimientoE especificaciónC métrica de cumplimientoR resultados
test: aplicación de un procedimiento a una especificación para obtener una métrica de cumplimiento y un conjunto de resultados
( procedimiento ? )
otras dimensiones para pruebas
[email protected] 26-may-11 12
testing 3D
con el permiso de los autores, se presentan (“bilingüemente”) conceptos relevantes tomados del material de los cursos:
C2 "Análisis Automático de Programas: de la Teoría a la Práctica"Dr. Diego Garbervetsky y Lic. Guido de CasoUniversidad de Buenos Aires, Argentina
C3 "Model Checking Continuous-Time Markov Models: From Theory to Practice"Dr. Joost-Pieter KatoenRWTH Aachen University, Alemania
C5 "Automated Test Generation and Repair"Dr. Darko MarinovUniversity of Illinois at Urbana-Champaign, Estados Unidos
Escuela de Verano de Ciencias Informáticas RÍO 2011Universidad Nacional de Río Cuarto, Córdoba, Argentina.
[email protected] 26-may-11 13
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
procedimientootras dimensiones de pruebas(aun en el ámbito del ensayo)
[email protected] 26-may-11 14
testing 3D
cuando hace falta extender dimensión de pruebas ?
Que tal si el proyecto que recibimos para probar fuera algo como …
proyectos …
(gracias Joost-Pieter Katoen)
[email protected] 26-may-11 15
testing 3D
Probar que no existe algo como el programa “scavenge” que permitía abusar de los tiempos de salto de satélite y los tiempos de las señales, accediendo en forma gratuita a servicios telefónicos pagos.
En las películas de cárceles siempre hay un reo que llama(ba) marcando con la horquilla (antes que los pulsos reemplazaran los tonos).
proyectos
[email protected] 26-may-11 16
testing 3D
Probar consistencia de criterios de facturación entre todos los actores y motores que participan del sistema de facturación de telefonía celular.
(ej: sistemas que cobran al cliente a fracción de min., según el plan contratado -20seg-, y pagan a carriers asociados a fracción de tiempo negociada -1 min-)
ANTEL tiene un contrato de revisión del sistema de facturación.
proyectos
[email protected] 26-may-11 17
testing 3D
Probar que mi broadcast en internet (radio, tv), no retransmite paquetes haciendo overlapsobre el mismo receptor.
Evitando que el periodista de la radio ESPECTADOR hable encima de si mismo cuando hay paquetes demorados (se le pisoteó el buffer??).
proyectos
[email protected] 26-may-11 18
testing 3D
u otros casos bien conocidos: (después que fallaron, claro … )
• probar que no hay el error en la unidad de división
de punto flotante en procesadores Intel Pentium II.
• probar que no hay un defecto de software en el sistema de control de la máquina de terapia
Therac25, que produjo la muerte de 6 pacientes de
cáncer por sobre-exposición radioactiva.
proyectos
[email protected] 26-may-11 19
testing 3D
no es trivial
probar que NO hay error en un sistema -cuando esto es posible-, eventualmente cuesta hoy MAS (tiempo, esfuerzo) que desarrollar el propio sistema.
(buen dato para quienes de dedican a pruebas …)
proyectos
[email protected] 26-may-11 20
testing 3D
pero…
un solo día de falla en el sistema de reservas de una compaña aérea importante puede provocar su bancarrota
de costos en vidas humanas mejor ni hablamos, pero podemos calcular cuanto cuesta una falla, un sistema, y cuanto vale unacompañía.
proyectos
además…
software bugs cost US economy $60B/year [NIST’02] (*)
Estimated savings from better testing
$22B/year (*)
(*) Darko Marinov: Automated Test Generation and Repair
26-may-11 21
testing 3D
Ariane 5 crash (1996)error in the software design (inadequate protection from integer overflow)
Columbia
disaster
Feb. 2003
Challenger
disaster
Jan. 1986
[email protected] 26-may-11 22
testing 3D
ok, hace falta considerar múltiples dimensiones de pruebas.
pruebas
[email protected] 26-may-11 23
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
aproximaciones para pruebas
[email protected] 26-may-11 24
aproximaciones
dinámico
• run code for some inputs, check outputs• checks correctness for some executions
problemas
• generación datos de entrada• adecuación de suites de prueba
precedencia, cobertura..
• “test oracles”mecanismos para determinar si prueba pasa o falla
ensayo de software
[email protected] 26-may-11 25
aproximaciones
estático
• verifica la correctitud de TODA ejecución posible del programa
algunas técnicas
• análisis de dataflowabstracción divisiones por cero: σ : var → {indef, Z, NZ, QZ }
• generación de condiciones de verificacióncon anotaciones como tipos o contratos
problemas• corrección vs. completitud:
falsos positivos & negativos
análisis de programas
[email protected] 26-may-11 26
aproximaciones
combina estático & dinámico
• verifica correctitud de TODA ejecución
• analiza automáticamente cumplimiento de determinadas propiedades sobre un modelo formal de un sistema (un grafo dirigido, con estados etiquetados para las propiedades).
model checking
Discrete-time Markov chain
[email protected] 26-may-11 27
aproximaciones
(yet .. no silver bullet)
análisis dinámico
NO: ensayo exhaustivo de toda posible entrada
análisis estático
NO: modelo preciso de cada estado posible
todo muy lindo .. pero … limitaciones
espacio( input ) continuo → infinitas pruebas
espacio( abstracción ) == sistema
[email protected] 26-may-11 28
aproximaciones
• encontramos todas las anomalías?análisis dinámico imposibleanálisis estático seguramente
• anomalías reportadas son reales?análisis dinámico seguramente
análisis estático imposible
“Most practical techniques and tools are both unsound and incomplete!”
(false positives, false negatives)
soundness & completeness
[email protected] 26-may-11 29
aproximaciones
• nivel automatización
apretar un botón vs. manual
• tipo de anomalías encontrados
complicadas de reproducir vs. fácilbaja probabilidad vs. alta
propiedades comunes vs. específicas
• tipo de problemas (no) encontrados
comparación
[email protected] 26-may-11 30
aproximaciones
• ensayo -dinámico- se mantiene como aproximación más ampliamente usada para encontrar problemas
• en la última década hay grandes progresos en análisis estático (de “sound” a práctico) y model checking (de hardware a software)
• “Vibrant research in the area”, “Gap between research and practice”.
estado actual
[email protected] 26-may-11 31
aproximaciones
“how-to” – bug dealing
• eliminar
- debug, test
• prevenir
- procesos de desarrollo software- diseño de lenguajes de programación
• demostrar ausencia
- prueba de teoremas- model checking, análisis de programas
[email protected] 26-may-11 32
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
(snapshot)
[email protected] 26-may-11 33
testing
research: automate testing
no hablamos de una persona que enseña a una máquina a reemplazar el trabajo manual de otra persona que hace pruebas
es una persona que crea una máquina que crea artefactos de pruebas.
ensayo Darko Marinov
[email protected] 26-may-11 34
testing
máquinas
• Randoop: random generation of OO tests• Pex: dynamic symbolic generation of inputs• UDITA: generation of complex data inputs• ReAssert: repair of OO unit tests• JPF: systematic testing of Java code
ensayo Darko Marinov
[email protected] 26-may-11 35
testing
generar test unitarios
• genera secuencias de invocaciones a métodos• elección aleatoria de métodos y parámetros• implementación java liberada (público)
RandoopDarko Marinov
Feedback-directed random test generation•by Carlos Pacheco,
Shuvendu K. Lahiri, Michael D. Ernst, and Thomas Ball
(ICSE 2007)
[email protected] 26-may-11 36
testing
PEXDarko Marinov
Pex – White Box Test Generation for .NET
generar test unitarios
• describe test scenarios with parameterized unit tests (PUTs)
• dynamic symbolic execution• implementación .NET
Code to generate inputs for:
Constraints to solve
a!=null
a!=null &&a.Length>0
a!=null &&a.Length>0 &&a[0]==12345678
90
void CoverMe(int[] a){if (a == null) return;if (a.Length > 0)
if (a[0] == 1234567890)
throw new Exception("bug");}
void CoverMe(int[] a){if (a == null) return;if (a.Length > 0)
if (a[0] == 1234567890)
throw new Exception("bug");}
Observed constraints
a==nulla!=null &&!(a.Length>0)a!=null &&a.Length>0 &&a[0]!=123456789
0
a!=null &&a.Length>0 &&a[0]==123456789
0
Data
null
{}
{0}
{123…}
a==null
a==null
a.Length>0
a.Length>0
a[0]==123…a[0]==123…T
TF
T
F
F
Execute&MonitorExecute&MonitorSolveSolve
Choose next pathChoose next path
Done: There is no path left.Done: There is no path left.
Negated conditionNegated condition
•by Nikolai Tillmann and
Jonathan de Halleux
(TAP 2008)
[email protected] 26-may-11 37
testing
UDITADarko Marinov
Test Generation through Programming in UDITA
generate complex test inputs
• combines filtering approach (check validity) and generating approaches (valid by construction)
• java-based language with non-determinism• tool for Java
01
32
red-black treeweb sites
s1
s2
s4
s3
s5
codetest
generation
testoracle
01
32
0 32
0 32
03
pass
fail
inputs outputs
•by Milos Gligoric, Tihomir Gvero,
Vilas Jagannath, Sarfraz Khurshid, Viktor Kuncak, and Darko Marinov
(ICSE 2010)
[email protected] 26-may-11 38
testing
automate repair tests for software evolutioned versions
• find small changes that make tests pass• ask the user to confirm proposed changes• tool for Java/Eclipse
ReAssertDarko Marinov
ReAssert: Suggesting repairs for broken unit tests•by Brett Daniel, Vilas Jagannath,
Danny Dig, and Darko Marinov(ASE 2009)
[email protected] 26-may-11 39
testing
Java Path Finder : Model checking of real code
• specialized Java Virtual Machine• supports backtracking, state comparison• many optimizations to make it scale• publicly available tool (Java PathFinder)
JPFDarko Marinov
Model Checking Programs•by W. Visser, K. Havelund, G. Brat, S. Park and F. Lerda
(J-ASE, vol. 10, no. 2, April 2003)
[email protected] 26-may-11 40
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
[email protected] 26-may-11 41
análisis de programas
• analiza código sin ejecutarlo
• es la examinación sistemática de una abstracción del espacio de estados del programa.
sistemática - examina en forma exhaustiva todos los caminos dentro de cada función ( loops!? )
abstracción - sólo mantenemos información relevante
a la propiedad a inferir: signo de las variables (+,-),
referenciamiento, ..
análisis estáticoDiego Garbervetsky, Guido de Caso
[email protected] 26-may-11 42
análisis de programas
técnicas más conocidasDiego Garbervetsky, Guido de Caso
[email protected] 26-may-11 43
análisis de programas
Capers Jones, Software Productivity Group
efecto en la industria: MICROSOFT
• Todo desarrollo interno pasa por analizadores automáticos
• Visual Studio + Code Contracts:Análisis estático + Generación de Test
• Kit de aceptación de drivers que se entrega a los fabricantes
Static Analysis can reduce defects by up to a factor of six!
Diego Garbervetsky, Guido de Caso
[email protected] 26-may-11 44
análisis de programas
• Java FindBugs: más de 1,5 millón downloads- usado en Google, Sun, Ebay, …- encuentra errores “mecánicos”o patrones de
errores• En Google descubrieron automáticamente
- > 4000 problemas de código en producción- más de 80 ciclos infinitos
http://findbugs.sourceforge.net/
en la industria Diego Garbervetsky, Guido de Caso
[email protected] 26-may-11 45
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
[email protected] 26-may-11 46
model checking
Carnegie Mellon
• method for formally verifying finite-state concurrent systems. Specifications about the system are expressed as temporal logic formulas, and efficient symbolic algorithms are used to traverse the model defined by the system and check if the specification holds or not.
Extremely large state-spaces can often be traversed in minutes. The technique has been applied to several complex industrial systemssuch as the Futurebus+ and the PCI local bus protocols
Model Checking Group, Specification and Verification Center. Carnegie Mellon.www.cmu.edu
[email protected] 26-may-11 47
model checking
utilidad
cuantificación
• colas, tiempos de espera, QoS, MTBF,…• impresiciones en inputs, retrasos, deadlines
ejemplos
• IEEE 1394 (Firewire): “biased delay” óptimo• análisis protocolos de seguridad• sistemas biológicos: Enzyme-catalysed substrate
conversion
• software de satélites
Joost-Pieter Katoen
[email protected] 26-may-11 49
model checking
alcance en modeladosólo una vista totalmente “brutal”
• Quantitative and Qualitative Reachability, Probabilistic Computation Tree Logic (PCTL), PCTL Counterexamples, Continuous-Time Markov Chains (CMTC), Continuous Stochastic Logic (CSL)
Joost-Pieter Katoen
REACHABILITY PROBABILITIES
[email protected] 26-may-11 52
testing 3D
• ensayo (dinámico)
• análisis (estático) de programas
• model checking
• epílogo & ultra-epílogo UY
[email protected] 26-may-11 53
testing 3D
test: P x E →→→→ C x { R }P procedimientoE especificaciónC métrica de cumplimientoR resultados
test: aplicación de un procedimiento a una especificación para obtener una métrica de cumplimiento y un conjunto de resultados
testing
proyecto
gestión
test
gestión
P = (análisis estático U análisis dinámico U model checking)
[email protected] 26-may-11 54
testing 3D
• industria: cursos abiertos (2007)
• UDELAR/FIng
INCO Taller de Verificación de Software
CPAP Inspección de Software
• CES – Lanzamiento de Carrera de Testing (2011)• Emprendimiento (InCo) especializado en proveer servicios de testing a empresas.
• Apoyo UE, PNUD para proyecto de Desarrollo tecnológico (URY/2003/5906)
testing en uruguay
[email protected] 26-may-11 55
testing 3D
horizonte …
• cobertura universitaria para desarrollo de la industria
• monitor de calidad, compilando resultados de industria
• recursos para I+D (apoyados por monitoreo ..)
testing en uruguay
software bugs cost US economy $60B/yearEstimated savings from better testing
$22B/year
Randoop, Pex, UDITA, ReAsert, JPF
testing 3D
Testing Day
TATA Consultancy Services
Mayo, 2011.Knowledge Development Center (KDC) del LATU Av. Italia 6201, Montevideo.
[email protected] 26-may-11 57