Validación y verificación de requisitos

Índice
- Introducción
- Objetivos
- 1.Validación de requisitos
- 2.Verificación de requisitos
- 3.Desarrollo guiado por las pruebas
- 4.Caso práctico
- 4.1.Pruebas automatizadas de aceptación
- 4.1.1.Plan de pruebas
- 4.1.2.Escenarios de pruebas
- 4.2.Pruebas de carga
- 4.1.Pruebas automatizadas de aceptación
- Resumen
- Actividades
- Ejercicios de autoevaluación
- Solucionario
- Glosario
- Bibliografía
Introducción
-
¿Hemos seleccionado correctamente los requisitos?
-
¿Hemos implementado correctamente los requisitos?
Objetivos
-
Saber cómo validar la corrección y la calidad de los requisitos.
-
Saber elaborar un plan de pruebas para un proyecto, y
-
Entender la técnica de especificación por ejemplos y el desarrollo guiado por las pruebas.
1.Validación de requisitos

1.1.Revisiones de requisitos
-
Se distribuye la especificación que debemos someter a revisión entre los distintos revisores con el fin de que lleven a cabo una revisión individual para identificar problemas potenciales.
-
Se recogen y se organizan las conclusiones de las revisiones individuales y se convoca una reunión de requisitos.
-
En la reunión de requisitos, los distintos revisores comentan los problemas que han identificado y se proponen las acciones que hay que llevar a cabo para mitigarlos.
1.2.Problemas habituales que hay que detectar
2.Verificación de requisitos

2.1.Tipos de pruebas del software
-
Pruebas de aceptación: determinan si el comportamiento del sistema se adecua a los requisitos de los clientes (y, por lo tanto, si estos aceptarán o no el sistema desarrollado).
-
Pruebas de conformidad (también llamadas funcionales o de corrección): verifican que el software cumpla la especificación.
-
Pruebas de rendimiento: verifican que el sistema cumpla los requisitos de rendimiento como la capacidad, el volumen de los datos o los tiempos de respuesta.
-
Pruebas de estrés: ejercitan el sistema al límite de su capacidad (e incluso un poco más allá) para verificar su comportamiento en estas condiciones.
-
Pruebas de regresión: tras introducir modificaciones en el sistema, ejecutan de nuevo un conjunto de pruebas que el sistema ya superaba satisfactoriamente para verificar que las modificaciones no han causado efectos no deseados y que el sistema continúa superándolas.
2.2.El Plan de pruebas
-
Identificador del Plan de pruebas.
-
Referencias a otros documentos, como por ejemplo la especificación de requisitos, la documentación de diseño del sistema o la documentación del método que se ha seguido para desarrollar el sistema.
-
Elementos de prueba, como cuál es el software, con las versiones exactas que probaremos, o qué subsistemas del software probaremos, y características que vamos a examinar (desde el punto de vista del usuario), asociadas a un nivel de riesgo.
-
Riesgos identificados en el software, como cuáles son las áreas en las que es más probable que tengamos problemas y, por lo tanto, que debemos examinar de forma más exhaustiva.
-
Características que no se probarán, indicando el motivo por el que no se hará dicha comprobación (bajo riesgo, no forman parte de la entrega actual, etc.).
-
Estrategia de pruebas:
-
¿Qué herramientas se utilizarán?
-
¿Qué métricas se recogerán? ¿En qué nivel se recogerá cada métrica?
-
¿Cómo se gestionará la configuración? ¿Cuántas configuraciones diferentes se gestionarán?
-
¿Qué software y hardware se utilizarán?
-
¿Se harán pruebas de regresión? ¿Hasta qué punto?
-
-
Criterios de aceptación de la prueba (para cada prueba): ¿cómo se decidirá que la prueba se ha completado con éxito?
-
Criterios de cancelación de la prueba (para cada prueba): ¿cómo se decidirá si hay que suspender o cancelar una prueba?
-
Entregables: ¿qué se entregará como resultado de la ejecución de la prueba? (el documento del plan de pruebas, los casos de prueba, los logs de error, el informe de problemas, etc.).
-
Responsables de las pruebas y aprobaciones: ¿quién es el responsable de la ejecución de las pruebas? ¿Quién está autorizado a dar el proceso por finalizado y a aceptar el resultado de las pruebas?
-
Calendario.
2.3.Automatización de pruebas
2.3.1.Proceso de pruebas automatizadas
2.3.2.Pruebas automatizadas de aceptación
2.3.3.Pruebas automatizadas de carga

2.3.4.Datos de prueba
Datos reales
Datos sintéticos
-
Un volumen de datos muy grande (disponemos de datos reales pero necesitamos más).
-
Datos para probar los casos límite (fechas especiales como el 29 de febrero, registros muy grandes, direcciones con códigos postales extranjeros, etc.).
-
Datos con unas características muy concretas (por ejemplo, datos que son el peor caso en un algoritmo de ordenación, etc.).
3.Desarrollo guiado por las pruebas
-
Hay que escribir las pruebas antes de implementar el sistema.
-
Solo se tiene que implementar la funcionalidad necesaria para superar las pruebas.
3.1.El proceso del desarrollo guiado por las pruebas

public class ExpressionTest extends TestCase { public void testASingleNumberIsAnExpression() { assertEquals(2, evaluate("2")); } public void testInvalidCharactersAreRejected() { try { evaluate("2@2"); fail ("Should have thrown an exception"); } catch (InvalidCharacterException e) { //Everything is ok } } ...
3.2.Desarrollo guiado por el comportamiento

Quiero ver las opiniones sobre un hotel
Para poder decidir si voy o no
Suponiendo que el hotel existe
Y que hay registrada una opinión que dice “Es un lugar excelente” creada por Joan Salvat
Y que hay registrada una opinión que dice “No iría nunca” creada por la Maria Cases
Cuando el cliente pide ver las opiniones sobre el hotel
Entonces se muestran dos opiniones
Y una es la de Joan Salvat que dice “Es un lugar excelente”
Y la otra es la de Maria Cases que dice “No iría nunca”
Suponiendo que no existe ningún hotel llamado “X”
Cuando el cliente pide ver las opiniones del hotel “X”
Entonces se muestra un mensaje explicando que no existe ningún hotel denominado “X”
-
los que indican cuál es el estado del sistema antes de ejecutar la prueba (que corresponden a instrucciones del tipo “Dar de alta”);
-
el que indica cuál es la operación de sistema que queremos ejecutar; y
-
los que indican qué verificaciones tenemos que hacer sobre el resultado para aceptar la funcionalidad (que corresponden a instrucciones del tipo “Verificar”).
3.2.1.El proceso de BDD

3.3.Herramientas para la automatización de las pruebas de aceptación
3.3.1.Herramientas basadas en tablas
HorasLaborables |
HorasFestivos |
PrecioHora |
Pagar() |
40 |
0 |
20 € |
800 € |
45 |
0 |
20 € |
950 € |
48 |
8 |
20 € |
1.360 € |
public class CompensacionSemanal { public int HorasLaborables; public int HorasFestivos; public Importe PrecioHora; public Importe Pagar () { return Sistema.pagar(HorasLaborables, HorasFestivos, PrecioHora); } }

|Nominas.CompensacionSemanal| |
||||
|horasLaborables |
|horasFestivos |
|precioHora |
|pagar() |
| |
|40 |
|0 |
|20 € |
|800 € |
| |
|45 |
|0 |
|20 € |
|950 € |
| |
|48 |
|8 |
|20 € |
|1360 € |
| |
3.3.2.Herramientas basadas en escenarios
#language: es |
|||||
Esquema del escenario: Calcular la compensación semanal |
|||||
Suponiendo que un trabajador ha hecho <horas_laborables> en una semana |
|||||
Ejemplos: |
|||||
|horas_laborables |
|horas_festivos |
|precio_hora |
|compensacion |
| |
|
|40 |
|0 |
|20 € |
|800 € |
| |
|
|45 |
|0 |
|20 € |
|950 € |
| |
|
|48 |
|8 |
|20 € |
|1360 € |
| |
Y que ha trabajado 0 horas en festivos
Y que el precio hora es 20 €
Cuando calculamos la compensación semanal
Entonces el resultado es 800 €
#encoding: utf-8 begin require 'rspec/expectations';rescueLoadError;require 'spec/expectations';end require 'cucumber/formatter/unicode' $:.unshift(File.dirname(__FILE__) + '/../../lib') require 'compensacion_semanal' Before do @sistema = CompensacionSemanal.new end SuponiendoQue /un trabajador ha hecho (\d)+ horas laborables en una semana/ do | hl | @hores_laborables = hl end SuponiendoQue /ha trabajado (\d)+ horas en festivos / do | hf | @hores_festius = hf end SuponiendoQue /el precio por hora es (\d)+/ do | ph | @precio_hora = ph end Cuando /calculamos la compensación semanal/ do @resultat = @sistema.compensacion_setmanal (@hores_laborables, @hores_festius, @preu_hora) end Entonces /el resultado es (\d)+/ do | result | @resultado.should == result end
4.Caso práctico
4.1.Pruebas automatizadas de aceptación
4.1.1.Plan de pruebas
-
Se creará un conjunto de escenarios de pruebas para Cucumber.
-
Se utilizarán datos sintéticos que se generarán dentro del propio escenario.
4.1.2.Escenarios de pruebas
Quiero introducir una recomendación sobre un hotel
Para que mis clientes estén bien asesorados
Suponiendo que existe el hotel Ritz
Y que existe un agente de viajes llamado Joan
Cuando el agente Joan escribe una recomendación positiva “Está muy bien” sobre el hotel Ritz
Entonces hay una recomendación positiva “Está muy bien” del agente “Joan” sobre el hotel Ritz
Suponiendo que existe el hotel Ritz
Y que existe un agente de viajes llamado Joan
Y que el agente Joan ha hecho una recomendación positiva “Está muy bien” sobre el hotel Ritz
Cuando el agente Joan escribe una recomendación positiva “Volvería” sobre el hotel Ritz y la confirma
Entonces hay una recomendación positiva “Volvería” del agente “Joan” sobre el hotel Ritz
Suponiendo que existe el hotel Ritz
Y que existe un agente de viajes llamado Joan
Y que el agente Joan ha hecho una recomendación positiva “Está muy bien” sobre el hotel Ritz
Cuando el agente Joan escribe una recomendación positiva “Volvería” sobre el hotel Ritz
Y no la confirma
Entonces hay una recomendación positiva “Está muy bien” del agente “Joan” sobre el hotel Ritz
4.2.Pruebas de carga
-
Se utilizará JMeter para simular un gran número de usuarios concurrentes. Habrá que definir un script de pruebas o más y definir el número de clientes que queremos que ejecuten cada script de pruebas.
-
Se usarán las herramientas de monitorización que sean necesarias por lo que respecta a consumo de hardware (CPU, memoria, entrada/salida, red, etc.)
-
En los nodos clientes de las pruebas, tiempos de respuesta, respuesta de error sí/no, número de peticiones realizadas por segundo de cada tipo y resto de métricas que recoja el software de pruebas utilizado.
-
En todos los nodos, porcentaje de CPU usado, porcentaje de memoria física usada, tamaño de memoria de intercambio empleado, ancho de banda de red utilizado (de subida y de bajada), though put de entrada/salida a disco usado.
-
Se creará un script de pruebas para simular un usuario que se conecta a Viajes UOC, hace un par de buscas y consulta los detalles de un hotel. En este script, el usuario tardará más o menos cinco segundos después de hacer una petición antes de hacer la siguiente.
-
Se usarán datos de pruebas sintéticos (a falta de datos reales) para llenar la base de datos con volúmenes parecidos a los indicados en el documento de cargas esperadas.
-
Se harán varias etapas de pruebas:
-
Se simulará un usuario para comprobar que el entorno de pruebas funciona correctamente y que todo está a punto.
-
Se simulará un número de usuarios creciente desde diez hasta alcanzar los mil usuarios concurrentes, incrementando el número de usuarios a razón de diez usuarios adicionales por segundo. Por lo tanto, en cien segundos se llegará a los mil usuarios. Una vez alcanzados los mil usuarios, se continuará la prueba durante cinco minutos. Cada usuario repetirá indefinidamente el escenario hasta que finalice la prueba.
-
-
Se utilizará un entorno idéntico al descrito en el documento de arquitectura de hardware de producción para ejecutar el software de Viajes UOC.
-
Además, se usarán diez nodos pequeños de nuestro proveedor de hardware como servicio en la nube para ejecutar las pruebas (actuarán como clientes, simulando, cada uno, una décima parte de los clientes totales).
-
En los nodos clientes se utilizará JMeter para simular la carga ejercida por los usuarios.
-
Durante la segunda etapa se llega a los mil usuarios concurrentes, que ejecutan sus escenarios durante un minuto y, en global, un 98% de las respuestas tienen que ser correctas y con un tiempo de respuesta inferior a cinco segundos.
-
Si la primera ronda de pruebas no resulta con el 100% de las respuestas correctas y con tiempo de respuesta inferior a dos segundos.
-
En cualquier momento, si el porcentaje de respuestas correctas y con tiempo de respuesta inferior a cinco según está por debajo del 90%, puesto que entendemos que el sistema ya no se recuperará.
Resumen
Actividades
Ejercicios de autoevaluación
Solucionario
-
Se creará un conjunto de escenarios de pruebas para Cucumber.
-
Se utilizarán datos sintéticos que se generarán dentro del propio escenario.
Quiero hacer una promesa de financiación
Para apoyar un proyecto artístico que considero interesante
Suponiendo que existe un proyecto con una recompensa de importe 50 €
Y que existe un usuario que tiene una tarjeta de crédito válida
Cuando el usuario hace una promesa de financiación por la recompensa anterior
Entonces se han retenido 50 € en el saldo de la tarjeta
Y el usuario forma parte de la lista de mecenas del proyecto que han aportado 50 €
Suponiendo que existe un proyecto con una recompensa de importe 50 €
Y que existe un usuario que tiene una tarjeta de crédito no válida
Cuando el usuario hace una promesa de financiación por la recompensa anterior
Entonces no se ha retenido ningún importe en la tarjeta
Y el usuario no forma parte de la lista de mecenas del proyecto
-
Se usará JMeter para simular un gran número de usuarios concurrentes. Habrá que definir un script de pruebas o más y definir el número de clientes que queremos que ejecuten cada script de pruebas.
-
Se emplearán las herramientas de monitorización que sean necesarias por lo que respecta a consumo de hardware (CPU, memoria, entrada/salida, red, etc.)
-
En los nodos clientes de las pruebas, tiempos de respuesta, respuesta de error sí/no, número de peticiones realizadas por segundo de cada tipo y el resto de las métricas que recoja el software de pruebas utilizado.
-
En todos los nodos, porcentaje de CPU utilizado, porcentaje de memoria física empleada, tamaño de memoria de intercambio usado, ancho de banda de red utilizado (de subida y de bajada), through put de entrada/salida a disco usado.
-
Se creará un script de pruebas para simular un usuario que se conecta a CrowdArt, hace un par de buscas y consulta los detalles de un par de proyectos. En este script el usuario tardará más o menos tres segundos después de hacer una petición antes de hacer la siguiente.
-
Se creará otro script de pruebas para un usuario que hace más o menos lo mismo pero que finalmente decide hacer una promesa de financiación.
-
Se configurará que el 20% de los usuarios simulados ejecuten el script de pruebas B y el 80% ejecuten el A, dando por supuesto que estos porcentajes serán representativos de la carga real, puesto que no disponemos de esta información.
-
Se utilizarán datos de pruebas sintéticos (a falta de datos reales) para llenar la base de datos con volúmenes parecidos a los indicados en el documento de cargas esperadas.
-
Se seguirán varias etapas de pruebas:
-
Se simularán diez usuarios, uno en cada nodo de pruebas, que ejecutarán el mismo guión diez veces cada uno. El objetivo es comprobar que el entorno de pruebas funciona correctamente y que todo está a punto.
-
Se simulará un número de usuarios creciente desde diez hasta alcanzar los dos mil usuarios concurrentes, incrementando el número de usuarios a razón de diez usuarios adicionales cada segundo. Por lo tanto, en doscientos segundos se llegará a los dos mil usuarios. Una vez alcanzados los dos mil usuarios, se continuará la prueba durante un minuto. Cada usuario repetirá indefinidamente el mismo escenario y la proporción de usuarios que ejecuta cada escenario será la indicada.
-
-
Se empleará un entorno idéntico al descrito en el documento de arquitectura de hardware de producción para correr el software de CrowdArt.
-
Además, se emplearán diez nodos pequeños de nuestro proveedor de hardware como servicio en la nube para correr las pruebas (actuarán como clientes, simulando, cada uno, una décima parte de los clientes totales).
-
En los nodos clientes se utilizará JMeter para simular la carga ejercida por los usuarios.
-
Durante la segunda etapa, se alcanzan los dos mil usuarios concurrentes, que ejecutan sus escenarios durante un minuto y, en global, un 98% de las respuestas tienen que ser correctas y con un tiempo de respuesta inferior a cinco segundos.
-
Si la primera ronda de pruebas no resulta con el 100% de las respuestas correctas y con tiempo de respuesta inferior a dos segundos.
-
En cualquier momento, si el porcentaje de respuestas correctas y con tiempo de respuesta inferior a cinco segundos está por debajo del 90%, puesto que entendemos que el sistema ya no se recuperará.
2. Un caso de error que podríamos detectar durante la validación de requisitos podría ser que un requisito que se ha documentado en realidad no fuera tal; es decir, que no fuera una propiedad deseada por ningún stakeholder, por ejemplo, porque los desarrolladores no han entendido qué quiere realmente el stakeholder. Véase el apartado 1.
3. La validación de requisitos. Véase el apartado 1.
4. La revisión de requisitos. Véase el subapartado 1.1. para una descripción completa de la técnica.
5. La verificación de los requisitos es el proceso mediante el cual verificamos que el sistema desarrollado cumple sus requisitos. Véase el apartado 2.
6. La verificación de requisitos. Véase el apartado 2.
7. Si el requisito no estaba correctamente identificado y documentado, la validación de requisitos nos habría permitido detectarlo. En cambio, si el requisito estaba correctamente identificado y documentado pero el software no lo satisfacía, la verificación de requisitos nos habría sido útil. Véanse los apartados 1 y 2.
8. El de componente (pruebas unitarias), el de un subconjunto del sistema (pruebas de integración) y el del sistema en su totalidad (pruebas de sistema). Véase el apartado 2.
9. Determinar si el comportamiento del sistema se adecua a los requisitos de los clientes (pruebas de aceptación), si el software satisface la especificación de requisitos documentada (pruebas de conformidad), si el sistema cumple los requisitos de rendimiento (pruebas de rendimiento), cómo se comporta el sistema en situaciones de carga extremas (pruebas de estrés) y determinar si el sistema continúa comportándose como lo hacía en pruebas anteriores después de efectuar cambios (pruebas de regresión). Véase el apartado 2.
10. La automatización de las pruebas del software resulta fundamental para poder asegurar la consistencia y la repetibilidad de los resultados. Véase el subapartado 2.2.
11. 1) Situar el sistema sometido aprueba en un estado conocido.
12. Los datos de pruebas reales tienen la ventaja de que nos ayudan a descubrir los datos “normales” para nuestro software. Como inconvenientes, podemos listar que hay que obtenerlos de un sistema competidor o de un prototipo (lo cual no siempre resulta posible) y que pueden contener datos de carácter personal que dificulten su libre uso. Véase el subapartado 2.2.4.
13. Cuando hemos probado todos los casos que se han considerado necesarios y el software ha superado todas las pruebas. Ved el subapartado 3.1.1.
14. Aportando pruebas de regresión automatizadas que facilitan la reestructuración del código. Ved el subapartado 3.1.1.
15. Hay que describir los escenarios en un lenguaje cercano al lenguaje natural, escribir el código de apoyo necesario para hacerlos ejecutables y refinarlos añadiendo, si es preciso, nuevos escenarios para contemplar casos que los stakeholders no tuvieron en cuenta. Ved el subapartado 3.2.2.
Glosario
- acceptance test driven development m
- Véase desarrollo dirigido por las pruebas de aceptación.
- artefacto m
- Objeto producido por el trabajo del ser humano. En el contexto de la ingeniería del software, cada uno de los documentos, modelos, programas, etc., que se generan como resultado del trabajo del ingeniero.
- ATDD m
- Véase desarrollo dirigido por las pruebas de aceptación.
- BDD m
- Véase desarrollo dirigido por el comportamiento.
- behaviour driven development m
- Véase desarrollo dirigido por el comportamiento.
- completitud f
- Propiedad de una especificación de requisitos por la cual enumera todos los requisitos de todos los stakeholders, define el comportamiento del sistema para todo tipo de entradas de datos y situaciones y, finalmente, etiqueta y referencia todas las tablas, figuras y diagramas del documento.
- consistencia f
- Propiedad de una especificación de requisitos por la cual ningún subconjunto de los requisitos enumerados entra en conflicto.
- corrección f
- Propiedad de una especificación de requisitos por la cual todos los requisitos que documenta son realmente requisitos, es decir, por la cual todos los requisitos enumerados son realmente necesidades que el sistema debe satisfacer.
- criterio de aceptación m
- Descripción de las condiciones por las cuales se decidirá si cierto requisito, por lo general una historia de usuario, se considera como satisfecho o no.
- desarrollo dirigido por el comportamiento m
- Técnica de desarrollo de software consistente en escribir a priori las pruebas de
aceptación en un lenguaje que los stakeholders puedan entender pero que a la vez permita la automatización de las pruebas. Solo
cuando se dispone de una prueba para una funcionalidad, se pasa a implementar dicha
funcionalidad y, después, se utiliza la prueba para verificar la implementación.
en behaviour driven development
sigla BDD - desarrollo dirigido por las pruebas m
- Técnica de desarrollo de software que se vale de las pruebas automatizadas como elemento
central del proceso de desarrollo.
en test driven development
sigla TDD - desarrollo dirigido por las pruebas de aceptación m
- Técnica de desarrollo de software consistente en aplicar la filosofía de TDD a las
pruebas de aceptación: se escriben las pruebas de aceptación antes de implementar
la funcionalidad del sistema y se usan para comprobar que lo implementado es correcto.
en acceptance test driven development
sigla ATDD - especificación f
- Documentación del conjunto de requisitos que tiene que satisfacer el software.
- inambigüedad f
- Propiedad de una especificación de requisitos por la cual cada requisito enumerado tiene una única interpretación posible.
- métrica f
- Medida cuantitativa de cualquier propiedad del software, las pruebas o las especificaciones.
- modificabilidad f
- Propiedad de una especificación de requisitos por la cual la estructura y la redacción del documento permiten hacer cambios de manera fácil y consistente.
- plan de pruebas m
- Documento sobre el alcance, el enfoque y los recursos que se dedicarán a hacer las pruebas a lo largo del desarrollo de un proyecto.
- prueba de aceptación f
- Prueba cuyo objetivo es determinar si el sistema se adecua a los requisitos de los clientes y, por lo tanto, si estos aceptarán o no el sistema desarrollado. Por definición, pues, es una prueba de sistema.
- prueba de conformidad f
- Prueba cuyo objetivo es determinar si el objeto que se prueba cumple la especificación que tenemoso no.
- prueba de corrección f
- Prueba de conformidad.
- prueba de estrés f
- Prueba cuyo objetivo es ejercitar el sistema en el límite de su capacidad e incluso más allá para verificar su comportamiento bajo estas condiciones.
- prueba de integración f
- Prueba cuyo ámbito es un subconjunto del sistema. Se usa para verificar la integración entre varios componentes, seguramente ya probados de forma unitaria.
- prueba de regresión f
- Prueba cuyo objetivo es verificar que las modificaciones efectuadas en un sistema desde que se ejecutaron ciertas pruebas no han causado efectos no deseados y que el sistema continúa superando tales pruebas.
- prueba de rendimiento f
- Prueba cuyo objetivo es verificar que el sistema cumple los requisitos de rendimiento, como por ejemplo capacidad, volúmenes de datos o tiempos de respuesta.
- prueba de sistema f
- Prueba cuyo ámbito es el conjunto del sistema. Se puede considerar como una prueba de integración, pero con todos los componentes que forman el sistema ya integrados.
- prueba funcional f
- Prueba de conformidad.
- prueba unitaria f
- Prueba cuyo ámbito es el componente. Se prueba un componente de manera aislada del resto de los componentes del sistema.
- refactoring m
- Técnica disciplinada para reestructurar una base de código alterando la estructura interna sin cambiar el comportamiento externo; se usa para mejorar los atributos no funcionales del software.
- requisito m
- Condición exigida o necesaria para algo. En el campo de la ingeniería del software, necesidad o restricción que afecta a un producto de software que define las soluciones que son adecuadas (lo cumplen) y las que no (no lo cumplen) según esta necesidad o restricción. Una solución será adecuada si satisface todos los requisitos del sistema.
- revisión f
- Actividad llevada a cabo por un grupo de personas consistente en leer y analizar una especificación de requisitos buscando errores y problemas potenciales.
- stakeholder m y f
- Persona o entidad con un interés sobre el producto que estamos desarrollando.
- TDD m
- Véase desarrollo dirigido por las pruebas.
- test driven development m
- Véase desarrollo dirigido por las pruebas.
- trazabilidad f
- Propiedad de una especificación de requisitos por la cual cada requisito enumerado está claramente identificado y facilita la referencia en los artefactos desarrollados a lo largo del proyecto, ya sean otros documentos, el software, las pruebas, etc.
- validación f
- Proceso mediante el cual se comprueba que los requisitos seleccionados representan efectivamente las necesidades de los stakeholders y, por lo tanto, son los requisitos correctos.
- verificabilidad f
- Propiedad de una especificación de requisitos por la cual para cada requisito que enumera hay un proceso finito y de coste efectivo con el fin de determinar si el software satisface el requisito o no.
- verificación f
- Proceso mediante el cual se comprueba que el sistema desarrollado cumple sus requisitos.