1. 5. Testing
1.1. Fundamentos
1.1.1. Terminología
1.1.1.1. Probar
1.1.1.1.1. Debe ser:
1.1.1.1.2. Antes de la entrega
1.1.1.1.3. Pos-entrega
1.1.1.1.4. Técnicas
1.1.1.2. Falta
1.1.1.3. Falla
1.1.1.4. Error
1.1.2. Asuntos clave
1.1.2.1. Criterio de selección
1.1.2.2. Efectividad y diana de las pruebas
1.1.2.3. Identificar defectos = éxito
1.1.2.4. Oráculos
1.1.2.4.1. Pasó
1.1.2.4.2. Falló
1.1.2.5. Testabilidad
1.1.2.5.1. ¿Fácil de probar?
1.1.2.5.2. Probabilidad de falla
1.2. Niveles de prueba
1.2.1. Dianas
1.2.1.1. Módulo
1.2.1.2. Grupo de módulos
1.2.1.3. Sistema completo
1.2.2. Partes
1.2.2.1. Unidad
1.2.2.2. Integración
1.2.2.3. Sistema
1.2.3. Objetivo
1.2.3.1. Prueba de aceptación
1.2.3.2. Prueba de instalación
1.2.3.3. Alfa y beta
1.2.3.4. De regresión
1.2.3.5. Rendimiento
1.2.3.6. Prueba de estrés
1.2.3.7. Prueba de recuperación
1.2.3.8. Prueba de configuración
1.2.3.9. De usabilidad
1.3. Técnicas de prueba
1.3.1. Sistemáticas
1.3.1.1. Varios escenarios
1.3.1.2. Black-box
1.3.1.3. Glass-box
1.3.2. Basadas en la experiencia
1.3.2.1. Pruebas ad hoc
1.3.2.2. Exploratoria
1.3.3. Basadas en especificación
1.3.4. Basadas en código
1.3.5. Basadas en faltas
1.3.5.1. Adivinar errores
1.3.5.2. Prueba de mutación
1.3.6. Basadas en uso
1.3.6.1. Perfil de operación
1.3.6.2. SRET
1.3.7. Basadas en la naturaleza de la aplicación
1.3.7.1. Prueba orientada a objetos
1.3.7.2. a componentes
1.3.7.3. prueba basada en la web
1.3.7.4. prueba de la GUI
1.3.7.5. de conformidad
1.3.8. Combinar técnicas
1.4. Medidas de las pruebas
1.4.1. Tipos de faltas
1.4.2. Densidad de faltas
1.4.3. Prueba de vida evaluación de confiabilidad
1.5. Evaluación de las pruebas hechas
1.5.1. Cobertura
1.5.2. Siembre de fallos
1.5.3. Puntuación de la mutación
1.5.4. Comparación de la efectividad relativa de diferentes técnicas
1.6. Proceso de prueba
1.6.1. Consideraciones
1.6.1.1. Actitud colaborativa para con las pruebas
1.6.1.2. Reconocer las fallas
1.6.1.3. Desalentar la posesión de código
1.6.2. Guías
1.6.3. Manejo del proceso de pruebas
1.6.4. Documentación y producto de trabajo
1.6.4.1. Documentos
1.6.4.1.1. Plan de prueba
1.6.4.1.2. Diseño de prueba
1.6.4.1.3. Especificación del procedimiento de prueba
1.6.4.1.4. Registro de prueba
1.6.4.1.5. Registro de incidentes
1.6.4.1.6. Reporte de problemas
1.6.4.2. Equipo de prueba
1.6.4.2.1. Interno
1.6.4.2.2. Independiente
1.6.4.3. Estimación de costo y esfuerzo más otras medidas.
1.6.4.4. Terminación
1.6.4.4.1. ¿Cuántas pruebas son suficientes?
1.6.4.4.2. % de cobertura de código
1.6.4.4.3. Exactitud funcional
1.6.4.4.4. Densidad de faltas
1.6.4.4.5. Todo lo anterior proporciona un buen soporte para saber cuándo para de hacer pruebas.
1.6.4.5. Reutilización de pruebas y de patrones
1.7. Actividades de prueba
1.7.1. Planeación
1.7.1.1. Coordinación de personal
1.7.1.2. Manejo de instalaciones y equipos de pruebas
1.7.1.3. Planeación para desenlaces no deseados
1.7.2. Generación de pruebas por caso
1.7.2.1. Nivel de prueba
1.7.2.2. Técnica de la prueba
1.7.3. Desarrollo del ambiente de prueba
1.7.4. Ejecución
1.7.4.1. Todo documentado
1.7.4.2. Debe ser replicable
1.7.5. Evaluación de los resultados de las pruebas
1.7.6. Registro
1.7.6.1. ¿Cuándo?
1.7.6.2. ¿Quién?
1.7.6.3. ¿Cuáles configuraciones de software se usaron?
1.7.6.4. Otros
1.7.7. Seguimiento de defectos
2. 0. Tener en cuenta
2.1. Ingeniería
2.1.1. Reconocimiento
2.1.2. De software
2.1.3. Profesión
3. 1. Introducción
3.1. Define la estructura de los siguientes capítulos
3.1.1. Definir el KA
3.1.2. Relación con las demás KA
3.1.3. División de cada KA
3.1.3.1. subáreas
3.1.3.2. temas
3.1.3.2.1. subtemas
3.2. Requerimientos
3.3. Diseño
3.4. Construcción
3.5. Testing
3.6. Mantenimiento
3.7. Configuración
3.8. Manejo de Ing. de software
3.9. Proceso de Ing. de software
3.10. Método y herramientas de Ing. de software
3.11. Calidad
3.12. Disciplinas relacionadas
4. 3. Diseño
4.1. Fundamentos
4.1.1. Actividades de diseño
4.1.1.1. Arquitectónico
4.1.1.2. Detallado
4.1.2. Principios
4.1.2.1. Abstracción
4.1.2.2. Emparejamiento y cohesión
4.1.2.3. Descomposición y modularización
4.1.2.4. Encapsulación
4.1.2.5. Separación
4.1.2.5.1. Interfaz
4.1.2.5.2. Implementación
4.1.2.6. Suficiente, completo y primitivo
4.1.3. Objetivo es definir
4.1.3.1. Arquitectura
4.1.3.2. Componentes
4.1.3.3. Interfases
4.1.3.4. Otros
4.1.4. Producción paralela
4.2. Asuntos clave
4.2.1. Calidad
4.2.1.1. Rendimiento
4.2.1.2. Empacado y distribución
4.2.2. Aspectos
4.2.2.1. Concurrencia
4.2.2.2. Control de eventos
4.2.2.3. Distribución
4.2.2.4. Excepciones y errores
4.2.2.4.1. Prevenir
4.2.2.4.2. Tolerar
4.2.2.4.3. Manejar
4.2.2.5. Interacción y presentación
4.2.2.6. Persistencia de datos
4.3. Estructura y arquitectura
4.3.1. Vista
4.3.1.1. lógica
4.3.1.2. de proceso
4.3.1.3. física
4.3.1.4. desarrollo
4.3.2. Estilo
4.3.2.1. Sistemas generales
4.3.2.2. Sistemas distribuidos
4.3.2.3. Sistemas interactivos
4.3.2.4. Sistemas adaptables
4.3.3. Patrones de diseño
4.3.3.1. Estilos arquitectónicos
4.3.3.2. Patrones de diseño
4.3.4. Familias y frameworks
4.4. Calidad de diseño y evaluación
4.4.1. Calidad específica en el diseño
4.4.2. Atributos
4.4.2.1. Generales
4.4.2.2. Dinámicos
4.4.2.3. Estáticos
4.4.3. Análisis de calidad y técnicas de evaluación
4.4.4. Medidas
4.4.4.1. Orientadas a funciones
4.4.4.2. Orientada a objetos
4.5. Notaciones
4.5.1. Vista estática
4.5.1.1. ADLs
4.5.1.2. Diagramas de clase y objetos
4.5.1.3. Diagrama de componentes
4.5.1.4. Diagramas de implementación
4.5.1.5. MER
4.5.1.6. Lenguaje descripción interfaz
4.5.1.7. Estructura Jackson
4.5.1.8. Tablar de estructura
4.5.2. Vista dinámica
4.5.2.1. Diagrama de actividad
4.5.2.2. de colaboración
4.5.2.3. de flujo
4.5.2.4. de secuencia
4.5.2.5. Pseudocódigo
4.5.2.6. Tablas de decisión
4.6. Estrategias
4.6.1. Generales
4.6.2. Orientado a funciones
4.6.3. Orientado a objetos
4.6.4. Diseño orientado a la estructura de datos
4.6.5. Basado en componentes