Hablemos de una parte muy importante no solo en Software Testing, sino, en Ingeniería de Software en general: Los requerimientos o requisitos.
Un requerimiento define las funciones, capacidades o atributos intrínsecos de un sistema de software, en otras palabras, describe como un sistema debe comportarse.
Existen dos tipos de requerimientos:
Requerimientos funcionales
Según la oficina de gestión de proyectos, los requerimientos funcionales de un sistema, son aquellos que describen cualquier actividad que este deba realizar, en otras palabras, el comportamiento o función particular de un sistema o software cuando se cumplen ciertas condiciones. Estos requisitos deben estar especificados de manera explícita. Ejemplos:
El campo de monto acepta únicamente valores numéricos con dos decimales.
La pantalla de registro de pago puede imprimir los datos en pantalla a la impresora.
Después de tres intentos fallidos de entrar al sistema, bloquear la cuenta.
Requerimientos no funcionales
Los requerimientos no funcionales definen las características o cualidades generales que se esperan de un sistema y establecen restricciones sobre el producto, el proceso de desarrollo de software y establecen restricciones externas que el software debe lograr. Ejemplos:
Requerimientos de usabilidad: La usabilidad se define como el esfuerzo que necesita hacer un usuario para aprender, usar, ingresar datos e interpretar los resultados obtenidos de un software de aplicación.
Requerimientos de eficiencia: Relacionado con desempeño en cuanto a tiempo de respuesta, número de operaciones por segundo, entre otras mediciones, así como consumo de recursos de memoria, procesador, espacio en disco o red.
Requerimientos de dependibilidad: Engloba varios atributos como:
Disponibilidad: Disposición del sistema para prestar servicio correctamente.
Confiabilidad: Continuidad del servicio prestado por el sistema.
Integridad: Ausencia de alteraciones inadecuadas al sistema.
Mantenibilidad: Posibilidad de realizar modificaciones o reparaciones a un proceso sin afectar la continuidad del servicio.
Ahora que tenemos estos conceptos claros ¿Cómo relacionamos los requerimientos con el testing?
Las pruebas se pueden clasificar conforme a lo que verifican, en este caso se dividen en pruebas funcionales y no funcionales.
Las pruebas funcionales se basan en la ejecución, revisión y retroalimentación de las funcionalidades anteriormente especificadas, es decir, los requisitos funcionales. Dentro de estas hay distintos tipos que serán detalladas en el siguiente post. Algunos tipos de pruebas funcionales son:
Pruebas exploratorias
Pruebas de humo
Pruebas de regresión
Las pruebas no funcionales, en cambio, tienen como objetivo verificar los requisitos que se utilizan para juzgar la operación de un sistema, en palabras más simples, características que, aunque tal vez no fueron especificadas, un sistema debe contar con ellas. Ejemplo:
Pruebas de usabilidad
Pruebas de rendimiento
Pruebas de compatibilidad
Pruebas de portabilidad
En conclusión, para decir que sistema tiene calidad deben cumplirse los requisitos funcionales y no funcionales, aunque cabe destacar que esto no es lo único que se toma en cuenta para evaluar la calidad. Si un sistema cumple con los requisitos especificados y no cumple con las necesidades del cliente, pues, no tiene calidad, porque el cliente no lo utilizará.
En el próximo post hablaremos de unos temas interesantes: Verificación y validación, los niveles de prueba y los tipos de prueba. #NoTeRindas
Fuentes:
Los requerimientos vienen a ser la base para construir nuestro software, bien definidos pueden dar un gran apoyo al crear nuestros casos de prueba, gracias por tu post.😀