Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería de Software II
Docente: Urbano Eliécer Gómez Prada
Una realidad poco conocida o
comprendida, es más fácil de asimilar,
cuando es mostrada a través de un símil
con otra que si conocemos, o bien, con
otra que puede intuirse coherentemente
usando el sentido común
goo.gl/EEDMmq 2
“Vistas” de una construcción
3
Justificación
4
Introducción a las pruebas
Objetivo:
Conocer las ideas principales sobre
las pruebas del software
Introducción a las pruebas
Ariane 5.
Lanzado por primera vez el 4 de junio de
1996.
Ariane 5.
36.7 segundos después explotó.
Motivo:
Fallo software. La programación no se había probado lo suficiente.
Introducción a las pruebas
Definición de prueba:
Verificación dinámica del
comportamiento del
software a partir de un
conjunto finito de casos de
prueba.
Para probar un software
necesitamos ejecutar ese
software.
Introducción a las pruebas
Definición de prueba:
Validación: proceso de evaluar un
1
Verificación dinámica del sistema o componente durante o al
comportamiento del software a final del proceso de desarrollo para
partir de un conjunto finito de determinar si satisface los requisitos
casos de prueba. especificados.
Acciones
Una prueba consta, al
menos, de tres Configurar partida:
elementos: El sistema muestra un formulario con todos los
valores configurables.
El jugador introduce modifica los valores.
El sistema comprueba la validez de los valores y
vuelve a la pantalla principal.
Ejemplo:
No
TÉCNICAS DE PRUEBA
• Pruebas estructurales o de Caja Blanca.
• Pruebas funcionales o de caja negra.
ESTRATEGIAS DE PRUEBA
• Pruebas unitarias.
• Pruebas de integración.
• Pruebas de sistema.
• Pruebas de aceptación.
• Pruebas de regresión.
Niveles de prueba
Necesidades Verifican
de los Pruebas de
aceptación
usuarios
Verifican
Paso a Pruebas de
producción implantación
Verifican
Requisitos del Pruebas de
sistema sistema
y el comportamiento de TestNG
CruiseControl
cada uno de los Cobertura
XUnit
CoView
Pruebas unitarias
Técnicas:
– Análisis de caminos.
– Partición de categorías.
– Mutaciones.
– Algoritmos genéricos.
Técnicas:
Arriba abajo:
El primer componente que se prueba es el primero
de la jerarquía (A). Una de las ventajas es que las
interfaces entre los distintos componentes se
prueban en una fase temprana y con frecuencia.
Abajo a arriba:
Se prueban primero los componentes de más bajo
nivel (E, F) Este tipo de enfoque permite un
desarrollo más en paralelo, pero presenta mayores
dificultades a la hora de planificar y de gestionar.
Pruebas de sistema
Herramientas:
Cuando: Durante la construcción Herramientas:
del sistema (partes completas). Avignon
sistema, comprobando su
Marathon
The Grinch
funcionalidad e integridad GUItar
Herramientas:
Cuando: Durante la implantación en Herramientas:
el entrono de producción.
. Las mismas. Las pruebas se vuelven
Objetivo: Comprueban el correcto a ejecutar en el entorno real de
funcionamiento del sistema dentro producción y se añaden nuevas
del entorno real de producción pruebas.
(rendimiento, copias de seguridad,
etc.). .
Pruebas de aceptación
Herramientas:
Cuando: Después de la Herramientas:
implantación en el entorno de
producción. Las mismas. Las pruebas se vuelven
a ejecutar en el entorno real de
Objetivo: Verifican que el sistema producción y se añaden nuevas
cumple con todos los requisitos
pruebas.
indicados y permite que los
usuarios del sistema den el visto .
bueno definitivo.
Pruebas de regresión
“Imposibles de mantener”
“Engaño”
¿Por qué?.
Automatización de las pruebas
Las pruebas son polémicas:
Ventajas de la automatización:
– Mayor rapidez de ejecución.
– Menos recursos.
– Evitamos pruebas obsoletas
Automatización de las pruebas
Inconvenientes:
– ¡Muy pocas herramientas!.
– Necesitan una “base” a menudo inexistente.
– Un conjunto pobre de pruebas.
Automatización de las pruebas
Cuando automatizar y cuando no automatizar.
Bien Mal.
No buscamos Gastamos más en la
automatizarlo automatización que en la
absolutamente todo. pruebas en sí.
Tenemos modelos y Construimos el sistema
documentación del sobre la marcha.
sistema.
Las herramientas de prueba
Nosotros controlamos las nos controlan a nosotros.
herramientas de prueba.
Aparición de metodologías
La Ingeniería de Software se basa en dos puntos principales:
Productos Personalizados
Productos Genéricos
(a la Medida)
35
Atributos de un buen Software
Atributo Descripción
36
Dml y lo Olv,
Exp y tal vez lo Ent
Reflexión Inv y lo Apr
• El reto de la heterogeneidad
• El reto de la entrega
• El reto de la confianza
38
En resumen
¿Qué es Software? Programas de ordenador y la documentación asociada.
¿Qué es la Ingeniería del Es una disciplina que comprende todos los aspectos de la producción de
Software? software. Comprende las formas prácticas para desarrollar y entregar un
software útil.
¿qué es un procesos del Un conjunto de actividades cuya meta es el desarrollo o evolución del
Software? software.
¿Qué es un modelo de Una representación simplificada de un proceso del software, presentada
procesos del Software? desde una perspectiva específica.
¿Cuáles son los costos de A grandes rasgos, el 60% de los costos son de desarrollo, el 40% restantes
la Ingeniería del son de pruebas. En el caso del software personalizado, los costos de
Software? evolución a menudo exceden los de desarrollo.
¿Qué son los métodos de Enfoques estructurados para el desarrollo de software que incluyen modelos
la Ingeniería del de sistemas, notaciones, reglas, sugerencias de diseño y guías de procesos.
Software?
¿Qué es CASE Sistemas de software que intentan proporcionar ayuda automatizada a las
(Ingeniería del Software actividades del proceso del software. Los sistemas CASE a menudo se
Asistida por Computador? utilizan como apoyo al método.
¿Cuáles son los atributos El software debe tener la funcionalidad y el rendimiento requeridos por el
de un buen software? usuario, además de ser mantenible, confiable y fácil de utilizar.
¿Cuáles son los retos Enfrentarse con la creciente diversidad, las demandas para reducir los
fundamentales a los que tiempos de entrega y el desarrollo de software fiable.
se enfrenta la Ingeniería
del Software?
39
Tomado de: Sommerville, I. (2005) Ingeniería del Software. Séptima Edición. Editorial Perason. Madrid.
Modelos de proceso especializado
40
Desarrollo en Componentes
Etapa 1 Etapa 4
Se investigan y evalúan productos disponibles Se integran los componentes en la
basados en componentes. arquitectura.
Etapa 2 Etapa 5
Se consideran los aspectos de integración de los Se efectúan pruebas exhaustivas para
componentes. asegurar la funcionalidad apropiada.
Etapa 3
"Programar sin una arquitectura o diseño en mente es como explorar una gruta sólo
con una linterna: no sabes dónde estás, dónde has estado ni hacia dónde vas“
Danny Thorpe
41
Diseño en el nivel de Componentes
Ventajas Desventajas
• Permitan especificar, desarrollar y verificar • Consume mucho tiempo y es
un sistema por medio del empleo de una costoso.
notación matemática rigurosa.
• Se requiere mucha capacitación.
• Elimina muchos problemas difíciles de
vencer con otros paradigmas. • Es difícil la comunicación con los
• Permite descubrir errores y desarrollar clientes - aumenta la complejidad
software cero defectos. técnica.
43
Software orientado a Aspectos
• Ingeniería de componentes orientada a aspectos.
45
Contratos
• Contrato de software
• Contrato de Servicio
goo.gl/kGUrD2
Diseño de casos de prueba.
Enfoques principales
(Piattini et al) 47
Diseño de casos de prueba
goo.gl/CqSXk9
ISO/IEC 29119 Pruebas de
software
Estándar Internacional para pruebas
de software
Part 1 BS 7925-1
Concepts & Vocabulary
BS 7925-2
BS 7925-2 IEEE 829
IEEE 1008
1. Conceptos y Vocabulario
Draft
Test [No issues identified with
Specification Test Specification]
Updated Test
Publish Specification Update
test test
Published
specification Test specification
Specification
Procesos de gestión de pruebas
Test
Static Test Dynamic Test
Management
Processes Processes
Processes
Procesos de planificación de pruebas
Understand Scope
Context
Organise
Test Plan
Development
Identify & Analysed Risks
Analyze
Risks
Identify Treatment
Risk Approaches
Treatment
Approaches
Design Test
Strategy
Schedule, Staffing
Profile Determine
Staffing and
Test Strategy
Draft Scheduling
Test Plan Document
Test Plan
Approved
Test Plan
Gain
Consensus
Test Plan on Test Plan
Publish
Test Plan
Monitoreo de pruebas y control de procesos
Test Test
Progress Control
Information Information
Report
[Testing Incomplete]
Control
Measures Directives
...Test Processes...
Dynamic/Static/Management
Procesos de pruebas dinámicos
(Phase) Test Management Process
(Phase) Control
Test Plan Directives Test
Measures
Test Environment
Requirements
Test
Test Incident
Environment
Test Reporting Incident
Set-up Environment Report
Readiness
Report
Procesos de pruebas estáticas
63
Prueba de caja Negra
• Las pruebas de caja negra, también denominada prueba de
comportamiento, se centran en los requisitos funcionales del
software. O sea, la prueba de caja negra permite al ingeniero
del software obtener conjuntos de condiciones de entrada
que ejerciten completamente todos los requisitos funcionales
de un programa.
• La prueba de caja negra intenta encontrar errores de las
siguientes categorías: (1) funciones incorrectas o ausentes,
(2) errores de interfaz, (3) errores en estructuras de datos o
en accesos a bases de datos externas, (4) errores de
rendimiento y (5) errores de inicialización y de terminación.
64
Preguntas
1. ¿Cómo se prueba la validez funcional?
2. ¿Cómo se prueba el rendimiento y el comportamiento del
software?
3. ¿Qué clases de entrada compondrán unos buenos casos de
prueba?
4. ¿Es el sistema particularmente sensible a ciertos valores de
entrada?
5. ¿De qué forma están aislados los límites de una clase de datos?
6. ¿Qué volúmenes y niveles de datos tolerará el sistema?
7. ¿Qué efectos sobre la operación del sistema tendrán
combinaciones específicas de datos?
Partición equivalente
La partición equivalente es un método de prueba de caja negra que divide el campo de
entrada de un programa en clases de datos de los que se pueden derivar casos de prueba.
• En esas situaciones, se deben probar todas las versiones con los mismos
datos de prueba, para asegurar que todas proporcionan una salida
idéntica. Luego, se ejecutan todas las versiones en paralelo y se hace una
comparación en tiempo real de los resultados, para garantizar la
consistencia.
Pruebas de entornos
especializados, arquitecturas y
aplicaciones
• Prueba de interfaces gráficas de usuario
• Prueba de arquitectura
• Prueba de sistemas de tiempo-real
• Prueba de la documentación: se puede enfocar en dos fases. -1- La revisión e
inspección (examina el documento para comprobar la claridad editorial). -2- La
prueba en vivo utiliza la documentación junto al uso del programa real
goo.gl/DNLG9B
El arte de la depuración.
goo.gl/DNLG9B
Una estrategia de prueba del SW
Requisitos Pruebas de
alto nivel
Diseño Prueba de
Integración
Codificación
Prueba de
unidad
Dirección del
la prueba
Etapas de prueba del SW
Criterios para Completar la Prueba
Cada vez que se tratan de las pruebas del SW surgen unas preguntas:
¿Cuándo hemos terminado la prueba?
¿Cómo sabemos que hemos probado lo suficiente?
Ton Gilb, plantea que se deban abordar los siguientes puntos si se desea
implementar con éxito una estrategia de prueba del SW:
• Especificar los requisitos del producto de manera cuantificable mucho
antes que comiencen las pruebas.
• Establecer los objetivos de la prueba de manera explicita.
• Comprender que usuarios van a manejar el SW y desarrollar un perfil
para cada categoría de usuario.
goo.gl/DNLG9B
Pruebas de Unidad
Errores:
1. Procedencia aritmética incorrecta mal aplicada
2. Operaciones de modo mezcladas.
3. Inicializaciones incorrectas.
4. Falta de precisión.
5. Representación incorrecta de una expresión.
Pruebas de Integración
Tipos de Integración
1. No incremental “big bang”. Se combinan todos los módulos por
anticipado, se prueba todo el producto.
2. Integración incremental en donde se desarrollan módulos pequeños y
funcionales que hacen que los errores sean más fácil de aislar y corregir.
La Prueba de Regresión
Cada vez que se añade un nuevo modulo como parte de una prueba de
integración el software cambia.
La prueba de regresión es volver a ejecutar un subconjunto de
pruebas que se han llevado a cabo anteriormente para asegurarse de
que los cambios no han propagado efectos colaterales no deseados.
goo.gl/CqSXk9
Comentarios de la Prueba
La prueba alfa:
• Se lleva a cabo por un cliente en el lugar de desarrollo.
• Se usa el software de forma natural con el desarrollador
como observador del usuario.
• Se registran los errores y problemas de uso.
• Se llevan a cabo en un entorno controlado.
La prueba beta:
• Se lleva a cabo por los usuarios finales del software en los
lugares de trabajo de los clientes.
• El desarrollador no está presente normalmente.
• Es una aplicación «en vivo» del software en un entorno que
no puede ser controlado por el desarrollador.
Prueba de Recuperación.
Piratas informáticos
• “deporte”
• empleados disgustados venganza
• Individuos deshonestos ganancias personales ilícitas.
goo.gl/DNLG9B
Tipos
Tipo de
pruebas
Alfa
Unidad
Beta
Recuperación
Integración
Seguridad
Resistencia
Tipos
Validación Rendimiento
Recuperación
Seguridad
Sistema
Resistencia
Rendimiento
Tipos
Tipo de Objetivos
pruebas
Descubrir errores
Identificar fallos
funcionales de la
aplicación
Objetivos
Evaluar la calidad
técnica del producto
Tipo de Objetivos
pruebas
Otro tipo
de
pruebas
Recorrido
Aleatoria
Solidez
Aguante
Otro tipo de
pruebas
Prestaciones
Conformidad
homologación
Regresión
Mutación
Tipos
En Tipo de Objetivos
función pruebas
Otro tipo
de
pruebas
De caja negra
En función de
qué conocemos
De caja blanca
Pruebas
En función al manuales
grado de
automatización Pruebas
automáticas
En función
Pruebas unitarias
Pruebas
integración
En función de Pruebas de
que se prueba aceptación
Pruebas
funcionales
Pruebas de
rendimiento
Tipos
En Tipo de Objetivos
función pruebas
Otro tipo
de
pruebas
Integridad de
los datos y la
BD
Fallas y
Funcionalidad
recuperación
Seguridad y
Ciclo del
control de
negocio
acceso
Criterios
para la
realización
Interfaz de de pruebas
Esfuerzo
usuario
Performance Volumen
Carga Configuración
Sentencias
De tablas Decisiones
De llamadas Condiciones
Cobertura
de
pruebas
Condiciones Condiciones
/decisiones múltiples
Operadores
De caminos
relacionales
De
funciones
Propósito
Enfoque del
Aprovechamiento
cliente
Pruebas y
aceptación
del cliente
Control
estadístico
vs
métricas
Concepto
Clasificación
Control
estadístico
vs
métricas
Métricas de Medidas de estructuración de un
producto programa.
Métricas de
Métricas de complejidad.
proceso
Métricas de cobertura
de pruebas.
Métricas de
defectos.
Métricas de
portabilidad.
Métricas basadas en
Métricas de
atributos externos del
usabilidad.
producto
Métricas de
mantenibilidad.
Métricas de
fiabilidad.
Concepto
Clasificación
Control
estadístico
vs
métricas
Para sistemas
orientados a
objetos
Acoplamiento
Para sistemas
orientados a Herencia
objetos
Cohesión
Concepto
Clasificación
Control
estadístico
vs
métricas
Para sistemas
orientados a
objetos
Basadas en
estructuras
de diseño
Relacionadas
con el control
Basadas en intramodular
estructuras de
diseño Relacionada con
el acoplamiento
entre clases
Concepto
Clasificación
Control
estadístico
vs
métricas
Para sistemas
Herramientas
orientados a
estadísticas
objetos
Basadas en
estructuras
de diseño
Histogramas.
Tablas de
varianza y
Herramientas covarianza.
estadísticas Matriz de
correlación
lineal.
Concepto
Basadas en
código Clasificación
fuente
Control
estadístico
vs
métricas
Herramientas Para sistemas
estadísticas orientados a
objetos
Basadas en
estructuras
de diseño
No. de líneas de
código.
No. de líneas de
comentarios.
Basadas en
código fuente
No. de
instrucciones
Densidad de
documentación.
Concepto
Basadas en
código Clasificación
fuente
Control
estadístico
vs
métricas
Para sistemas
Herramientas
orientados a
estadísticas
objetos
Basadas en
estructuras
de diseño
Riesgos
¿Y qué opina usted?, ¿Qué aspectos agregaría a esta lista para la identificación
efectiva de los riesgos de proyecto?, ¿Cuál ha sido su experiencia?
Complejidad
goo.gl/DNLG9B
Complejidad
goo.gl/DNLG9B
Software Testing –Test Link
• Definir proyectos de pruebas (Test Project).
• Definir los usuarios que accederán al proyecto.
• Crear casos de prueba y su información (Test Case).
• Organizar los casos de pruebas en “conjuntos de pruebas” (Test Suite).
• Asignar palabras claves (keywords) a los casos de pruebas.
• Crear planes de pruebas (Test Plan) y enlazarles casos de pruebas (Test Case).
• Ejecutar los casos de prueba y registrar resultados.
• Visualizar los resultados de las pruebas (Test Results).
• http://www.testlink.org/
• http://www.qaustral.com.ar/descargas/MTestLink.pdf
• https://softwaremantenible.com/2016/05/23/como-crear-un-proyecto-de-prueba-unitarias-unit-test
-project/
Hewlett Packard Quality Center (HP QC)
•
Es un software de gestión de calidad.
• Ofrece diversas capacidades para el aseguramiento de calidad, gestión de
requerimientos, gestión de software testing, entre otros.
Pasos:
• Definir proyectos, ciclos y planes de prueba.
• Definir los casos de prueba.
• Registrar la ejecución de casos de prueba incluyendo el resultado y la evidencia anexa.
• Registrar defectos y asociarlos a los casos de prueba.
• Reportes operativos de Testing (porcentajes de avance, estado de incidencias, progreso de
la Ejecución).
Zephyr / Jira
• Creación y planificación:
– Crear Tests como Issues de Jira estándares.
– Construir planes de prueba.
– Definir ciclos de pruebas.
– Hacer seguimiento al avance de las pruebas dentro de Jira.
– Tiene disponibles planes predeterminados para amplia variedad de proyectos.
• Ejecución de las pruebas:
– Ingreso de información en las pruebas (estatus, comentarios, adjuntos).
– Asociaciones de defectos a los casos de pruebas.
• Tableros e indicadores para ver la situación y progreso de las pruebas.
http://www.getzephyr.com/
https://es.atlassian.com/software/jira
.
Referencias bibliográficas
1. UPIICSA, «Ingeniería de Software,» [En línea]. Available: goo.gl/QkbWqG.
2. Lawrence Pfleeger, SHARI Atlee, JOANNE M, Software Engineering: Theory and Practice.
4a. Edición. Pearson Education, 2010.
3. Sommerville, I. (2005) Ingeniería del Software. Séptima Edición. Editorial Pearson. Madrid.
4. Pressman, Roger. (2010) Ingeniería del Software un enfoque práctico. Séptima edición. McGrwHill.
5. R. A. Gacitúa Bustos, «Métodos de desarrollo de software: el desafío pendiente de la
estandarización,» Theoria, vol. 12, pp. 23-42, 2003.
6. E. Mnkandla, «About Software Engineering Frameworks and Methodologies,» IEEE Africon 2009,
2009.
7. S. Lawrence Pfleeger y J. M. Atlee, Software Engineering. Theory and Practice.,Tercera ed., Pearson
Education, Inc., 2006.
8. E. M. Rogers, Diffusion of Innovations, Quinta ed., Free Press, 2003.
9. S. T. Redwine y W. E. Riddle, «"Software technology maturation", Proceedings of the Eighth
International Conference on Software Engineering,» IEEE Computer Society Press, pp. 189-
200, 1985.
10. R. McGrath, «The Pace of Technology Adoption is Speeding Up,» Harvard Business Review, 25
Noviembre 2013. [En línea]. Available: goo.gl/P1J5Lh.
11. B. H. Hall y B. Khan, «Adoption of New Technology,» New Economy Handbook, 2003.
12. B. Boehm, «A view of 20th and 21st century software engineering,» ICSE '06 Proceedings of the 28th
international conference on Software engineering, pp. 12-29, 28 Mayo 2006.
Referencias bibliográficas (II)