Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semana 7 PDF
Semana 7 PDF
SEMANA 7
Calidad enfocada en el
desarrollo de software
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 7
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 7
ÍNDICE
CALIDAD ENFOCADA EN EL DESARROLLO DE SOFTWARE................................................................... 5
OBJETIVOS ESPECÍFICOS ........................................................................................................................... 5
INTRODUCCIÓN ...................................................................................................................................... 5
1. PRINCIPIOS FUNDAMENTALES DE LA CONSTRUCCIÓN DE SOFTWARE ..................................................... 6
1.1. MINIMIZAR COMPLEJIDAD ........................................................................................................... 8
1.2. ANTICIPAR CAMBIOS ................................................................................................................... 8
1.3. CONSTRUIR PARA VERIFICAR......................................................................................................... 9
1.4. UTILIZAR ESTÁNDARES ................................................................................................................. 9
2. MECANISMO DE CALIDAD EN EL DESARROLLO DE SOFTWARE.............................................................. 10
2.1. DISEÑO POR CONTRATO ............................................................................................................ 10
2.2. ANÁLISIS DE RENDIMIENTO......................................................................................................... 12
2.3. DEPURACIÓN............................................................................................................................ 12
3. INGENIERÍA DE TESTING ................................................................................................................. 14
3.1. FUNDAMENTOS DE PRUEBAS DE SOFTWARE ................................................................................ 15
3.1.1. TERMINOLOGÍA RELACIONADA CON LAS PRUEBAS......................................................................... 16
3.1.2. CASOS DE PRUEBA..................................................................................................................... 16
3.1.3. ELEMENTOS CLAVE.................................................................................................................... 18
3.1.4. TIPOS DE PRUEBA ...................................................................................................................... 19
3.1.5. ESTABLECER OBJETIVOS DE LA PRUEBA......................................................................................... 20
3.2. TÉCNICAS DE PRUEBA Y SU APLICACIÓN........................................................................................ 21
3.2.1. EXPERIENCIA DEL INGENIERO DE SOFTWARE ................................................................................. 21
3.2.2. ESPECIFICACIÓN ........................................................................................................................ 21
3.2.3. PROGRAMACIÓN DEL CÓDIGO.................................................................................................... 22
3.2.4. ERRORES.................................................................................................................................. 22
3.2.5. EN EL USO DE LA FUNCIONALIDAD ............................................................................................... 23
3.2.6. NATURALEZA DE LA APLICACIÓN.................................................................................................. 23
3.3. PLAN DE PRUEBAS ..................................................................................................................... 24
3.3.1. ESTRUCTURA DEL PLAN DE PRUEBAS............................................................................................ 24
COMENTARIO FINAL.......................................................................................................................... 27
REFERENCIAS........................................................................................................................................ 28
3
ESTE DOCUMENTO CONTIENE LA SEMANA 7
ÍNDICE DE FIGURAS
Figura 1: Actividades del desarrollo de software ................................................................................ 7
Figura 2: Relación de contratos entre componentes de software ..................................................... 11
Figura 3: Relación de contrato entre dos componentes de software ................................................ 11
Figura 4: Ciclo de pruebas y depuración. ........................................................................................... 13
Figura 5: El proceso de pruebas en el ciclo de vida del desarrollo..................................................... 15
Figura 6: Definición de escenarios ..................................................................................................... 17
Figura 7: Ejemplo de un caso de prueba simple ................................................................................ 18
ÍNDICE DE TABLAS
Tabla 1: Escenarios de prueba ........................................................................................................... 17
Tabla 2: Estructura del plan de pruebas ............................................................................................ 26
4
ESTE DOCUMENTO CONTIENE LA SEMANA 7
CALIDAD ENFOCADA EN EL DESARROLLO DE SOFTWARE
OBJETIVOS ESPECÍFICOS
Conocer los principios que gobiernan el desarrollo de software de calidad
Conocer los mecanismos que permiten los requisitos de calidad en el software
Comprender los conceptos básicos de la ingeniería de testing
Aplicar los diferentes tipos de prueba existentes al desarrollo de software
INTRODUCCIÓN
El desarrollo de software de calidad demanda una serie de aspectos que incluyen una buena
definición de requerimientos, y que posteriormente se traducen en un conjunto de
especificaciones funcionales y no funcionales de la solución. Asimismo, quienes desarrollan el
software toman esta información como la entrada a su proceso de implementación y pruebas.
Estas actividades deben estar bien definidas y en concordancia con las definiciones realizadas en el
proyecto. Para guiar el desarrollo de manera que el resultado sea un producto consistente,
robusto, confiable y fácil de usar, existen fundamentos para la programación. Así también, para
verificar que la solución de software haga lo que tiene que hacer, pero además para validar que el
software se desarrolle de acuerdo a normas o estándares acogidos por la organización. Estos
conceptos se desarrollarán en el contenido de esta semana, abordando los aspectos
fundamentales en el desarrollo de software y el proceso de pruebas.
5
ESTE DOCUMENTO CONTIENE LA SEMANA 7
1. PRINCIPIOS FUNDAMENTALES DE LA CONSTRUCCIÓN DE
SOFTWARE
La construcción de software (en adelante, desarrollo de software) es una de las principales
actividades que realiza la ingeniería de software. Esta última es la disciplina del área informática o
ciencias de la computación, que define métodos y técnicas especializadas para implementar y
mantener software de calidad. De esta manera el desarrollo de software es una actividad cuyo
producto satisface una diversa demanda de servicios y necesidades en el quehacer de hoy
(Pressman, 2010).
6
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Figura 1: Actividades del desarrollo de software
Fuente: material elaborado para esta asignatura (J. Reyes, 2015)
Durante el proceso de desarrollo, además se deben considerar funciones que pueden realizar
también los mismos miembros del equipo, o bien un grupo dedicado. Por ejemplo, el
aseguramiento de la calidad y administración de la configuración. En este último caso,
corresponde al área encargada de gestionar una cantidad considerable de productos de trabajo
del proyecto, también conocidos como entregables. En tal caso, la organización establece políticas
para la gestión de los entregables en cada proyecto, y un grupo a cargo de gestionarlos.
Componentes de software del proyecto. Todo desarrollo va generando una serie de piezas
de software, las cuales pueden corresponder al software de aplicación, desarrollos de
bases de datos, archivos de configuración, programas de procesamiento de datos,
configuraciones a nivel de sistemas y otros más.
7
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Documentos de la gestión del proyecto. Planes de proyecto, cartas Gantt, minutas de
reuniones, informes de avance, control presupuestario, contratos de terceros,
presentaciones para el cliente, gestión de riesgos y otros más.
Como se puede inferir, el desarrollo de software es una actividad elaborada, lejos de ser algo
simple. Requiere disciplina, método, un modelo de gobierno que facilite la administración y
gestión de todas las actividades que se deben desarrollar.
La necesidad de reducir complejidad se debe aplicar a toda actividad del desarrollo de software,
tomando mayor énfasis en el proceso de verificación y pruebas. De esta forma, al escribir código
se debe realizar en forma simple, ordenada, de acuerdo a una lógica previamente validada.
Siguiendo patrones de desarrollo que adopte la organización, respecto a estándares y modelos de
calidad.
8
ESTE DOCUMENTO CONTIENE LA SEMANA 7
definían (año 2000). Pero además de este tipo de cambios también existen los cambios que se
realizan producto de la renovación de plataformas e infraestructura computacional. En este caso,
las adecuaciones o adaptaciones que se requieren no están dadas por temas funcionales, sino más
bien técnicos. Hay otros casos, sin embargo, en los que la idea es la misma, el desarrollo debe
incorporar estos criterios en el diseño y posteriormente en la implementación de las soluciones.
Un sistema que no tiene flexibilidad para introducir cambios se transformará en un gran problema
en el momento que deba realizarlos. La anticipación a los cambios busca que desde el diseño se
considere introducir los mecanismos necesarios para asegurar que el sistema no tendrá problemas
para adaptarse ante necesidades de cambio.
Métodos de comunicación, donde se define el formato de los documentos que se utilizan para
dejar documentada una solución. Por ejemplo, para elaborar el análisis, el diseño de una solución,
la especificación técnica, cartas Gantt para los proyectos, informes de gestión de los proyectos,
minutas de trabajo, entre otros.
9
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Plataformas sobre las cuales corren los programas. Así, un programador aplicará las definiciones
correctas para interactuar a través del programa con el sistema operativo.
Así como existen convenciones internacionales que definen estándares, las organizaciones
internamente también pueden definir sus propios estándares para el desarrollo de software. Estas
definiciones obedecen a particularidades que deben ser consideradas y se adoptan con el objetivo
de uniformar las actividades realizadas en el ámbito de la programación.
El diseño por contrato en el desarrollo de software obedece a la aplicación de los contratos que
conocemos en el ámbito de las personas, en los cuales se establecen relaciones de obligación y
beneficios entre las partes. Al desarrollar software, se establece el tipo de relación entre distintos
componentes, en forma específica y sin ambigüedades. Quien llama y quien responde a ese
llamado es un contrato y pasa a formar parte de un requisito a nivel de sistema para cumplir uno o
más objetivos. De esta manera, si se amplía esta definición a una solución de software, se puede
señalar que existen componentes de software interrelacionados entre sí a través de contratos —
donde cada componente puede ser un emisor o receptor de mensajes— los cuales están definidos
como contratos que establecen obligaciones y beneficios, de acuerdo al tipo de relación que se
defina entre los componentes.
10
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Figura 2: Relación de contratos entre componentes de software
Fuente: material elaborado para esta asignatura (J. Reyes, 2015)
11
ESTE DOCUMENTO CONTIENE LA SEMANA 7
El componente C4 hace una solicitud al componente C5, para lo cual, de acuerdo al contrato entre
ambos, debe enviar un set de datos de entrada para ser procesados en las precondiciones del
procesamiento que realiza el componente C5. Posteriormente, el componente C5 envía el
resultado al componente C4, cumpliendo así con el contrato de comunicación que el sistema ha
definido entre ambos.
2.3. DEPURACIÓN
La depuración es el proceso que se desprende luego de realizar pruebas en la funcionalidad de una
solución de software. Busca determinar las causas que generan un error a nivel de aplicación, con
el objeto de establecer las correcciones que correspondan. Se inicia con la ejecución de un caso de
prueba, del cual se evalúa el resultado, donde aparece una diferencia respecto del resultado
esperado y el real que se obtiene. En primera instancia, cuando no existe tal correspondencia
(esperada vs. real), se puede inferir la existencia de un error, aun cuando no se tenga claro el
problema que lo origina. De esta forma, el proceso de depuración ayuda a encontrar una causa
que puede dar origen a la diferencia. De lo anterior, se puede identificar el error y el tipo de
corrección que se debe realizar. Cabe destacar que el proceso de depuración no es en sí la prueba
del software, pero sí debe estar considerado dentro del proceso de pruebas. En la figura 4 se
muestra un ciclo de pruebas, donde se realiza el proceso de depuración.
12
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Figura 4: Ciclo de pruebas y depuración.
Fuente: material elaborado para esta asignatura (J. Reyes, 2015)
13
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3. INGENIERÍA DE TESTING
Todo proceso productivo debe asegurar la calidad de sus productos. En el ámbito del desarrollo de
software, se ha mencionado en los contenidos de las semanas anteriores que existen procesos
orientados a asegurar la calidad del producto de software. Sin embargo, una de las actividades que
deben ser desarrolladas es precisamente evidenciar que el resultado obtenido a través de la
aplicación de métodos, procedimientos y ejecución de actividades dan como resultado un
producto de calidad. Por lo anterior, se han desarrollado modelos de referencia para ejecutar en
forma eficiente un conjunto actividades para probar el software. Así también, la gestión de estas
actividades es apoyada por artefactos (documentos) y en algunos casos también por herramientas
que asisten el proceso de pruebas.
La prueba del software es, entonces, una de las actividades que ayudan a validar las características
del software y, en particular, la correcta implementación de los requerimientos funcionales y no
funcionales, bajo los escenarios en los cuales se entiende deben operar.
A considerar:
El testing (o pruebas de software) permite medir la calidad del software en función de los errores
que se puedan encontrar, aplicándolo tanto en el ámbito funcional, como también en aquellas
necesidades no funcionales de la solución.
A través de las pruebas de software se puede establecer también el nivel de seguridad que ofrece
el producto desarrollado. No es lo mismo una solución con muchos errores, frente a una que luego
de ser probada (de acuerdo al ámbito que corresponda) no presenta problemas.
Finalmente, se puede inferir que mientras menos errores sean detectados por el testing, mayor
será el grado de calidad del producto. Esto implica que reduce la incertidumbre respecto a la
planificación, mejora los indicadores de calidad y rentabilidad al producir software y, finalmente,
ayuda a controlar los costos por concepto de mantenimiento posterior.
14
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3.1. FUNDAMENTOS DE PRUEBAS DE SOFTWARE
Como se ha señalado, las pruebas de software ayudan a verificar la calidad de un producto de
software, en forma previa a la entrega de la solución al cliente final. La prueba de software se
integra en distintas etapas del ciclo de vida del proceso de desarrollo de software, donde se
aplican técnicas especializadas orientadas a detectar errores en el software (Pressman, óp. cit.). En
la figura 5, se muestra cómo las actividades de prueba deben ir siendo definidas, diseñadas,
elaboradas y ejecutadas, durante el ciclo de desarrollo del software.
Es importante recalcar que para realizar pruebas del software es necesario planificarlas y también
saber cómo se va a medir la prueba, con el objeto de poder determinar objetivamente el
cumplimiento de los requerimientos tanto funcionales como no funcionales.
Las pruebas del software nunca se deben realizar en ambientes operativos o productivos. Siempre
se deben ejecutar en ambientes de prueba, los cuales deben cumplir con las mismas
características técnicas y funcionales con que se ejecutará el nuevo sistema, o bien donde
actualmente se ejecuta el sistema que se está modificando.
15
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3.1.1. TERMINOLOGÍA RELACIONADA CON LAS PRUEBAS
a. Distinción entre errores y fallas
Para describir un funcionamiento incorrecto de un sistema, se pueden utilizar varias
denominaciones, por ejemplo falta, error o simplemente fallo. Lo trascendental es diferenciar que
una falla en el sistema es el síntoma cuyo origen obedece a un error. Y es este último el que se
debe corregir. Las pruebas deberán cumplir ese objetivo, encontrar errores.
b. Validación
Establecer objetivamente a través de las pruebas y revisiones que el producto de software que se
está desarrollando satisface el uso para el cual fue concebido en el ambiente donde debe operar.
c. Verificación
Por otra parte, este proceso asegura que el producto de software cumpla con los requerimientos
necesarios. Estos requerimientos, formalmente deben estar escritos, revisados y acordados por las
partes interesadas (cliente, desarrolladores). De esta forma, la verificación debe velar por que el
producto de software se desarrolle de la forma correcta.
Los pasos a seguir en la creación de caso de prueba corresponden a los siguientes (Pressman, óp.
cit.):
16
ESTE DOCUMENTO CONTIENE LA SEMANA 7
a. Definición de escenarios
Para una determinada funcionalidad del software, se establecen las distintas casuísticas de
acuerdo a las definiciones dadas en las especificaciones funcionales. Por ejemplo, gráficamente se
puede representar de la siguiente forma en la figura 6.
De acuerdo a la lógica que representa este flujo de estructura de control, los eventuales caminos
de ejecución son:
Camino 1 1 -2 – 4 -6
Camino 2 1–2–4–7
Camino 3 1–3–5
Donde cada escenario representa un camino con un conjunto de valores y condiciones distintas al
momento de ejecutar el software.
Las condiciones de entrada son parte del dominio de valores que permite procesar el sistema.
Estas condiciones de entrada pueden contener valores válidos, inválidos, o bien aquellos que no
aplican a la condición de prueba.
17
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Figura 7: Ejemplo de un caso de prueba simple
Fuente: material elaborado para esta asignatura (J. Reyes, 2015)
En la figura 7, se muestran los resultados esperados en una aplicación bancaria donde el usuario
debe ingresar su clave para seleccionar la operación que requiera realizar. En este caso, opera la
tarjeta de crédito y solamente el camino 2 representa una secuencia exitosa para la prueba de
operación sobre la tarjeta. Los otros casos presentarán problemas de clave y vigencia.
18
ESTE DOCUMENTO CONTIENE LA SEMANA 7
e. Relación de las pruebas con otras actividades
Es importante destacar que el proceso de pruebas, como se ha mencionado anteriormente, está
inserto dentro de una serie de actividades orientadas a producir software de calidad. Por tanto, la
prueba además de atender los aspectos funcionales también debe abordar otros aspectos, tales
como seguridad, validez y verificación, depuración, programación de componentes y la
certificación final del software.
Como se mencionó anteriormente, las pruebas son aplicadas en distintos contextos durante el
ciclo de vida del desarrollo. De esta manera, se pueden establecer tres niveles de prueba:
a. Pruebas unitarias
Permiten verificar el funcionamiento en forma aislada de una o más piezas o componentes del
software. La prueba se realiza monitoreando el código fuente, lo cual se apoya con el uso de
herramientas del entorno de desarrollo que permiten visualizar la ejecución en cada línea de
código. Esta actividad es propia del equipo de desarrollo, no del usuario final.
b. Pruebas de integración
Permite verificar la interacción entre distintos componentes de software. Se basa principalmente
en la arquitectura del sistema, por lo cual el objeto de prueba es una cadena de funcionalidad
conocida que involucra una serie de desarrollos (piezas de software) que en conjunto satisfacen
una funcionalidad final del usuario. Por lo anterior, el ingeniero debe orientar la prueba en un
nivel de abstracción más cercano al negocio, en lugar de una revisión netamente técnica. Lo que
se debe evitar es abordar las pruebas de integración, abarcando de una vez la totalidad de la
funcionalidad, ya que resulta riesgoso y se pierde la oportunidad de hacerlo en forma incremental,
no permitiendo el avance progresivo del total de la solución.
a. Pruebas de sistemas
19
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3.1.5. ESTABLECER OBJETIVOS DE LA PRUEBA
a. Pruebas de aceptación
En este tipo de prueba se compara el comportamiento del sistema versus los requerimientos del
cliente. Para realizarlo, el cliente o usuario final establece las tareas o actividades a realizar con el
sistema, de manera que pueda comprobar que se satisface la lista de requerimientos que se han
definido.
b. Pruebas de instalación
Realizadas las pruebas de aceptación, el software se debe verificar nuevamente en el ambiente o
entorno definitivo. Estas pruebas se enfocan en mayor grado en los requerimientos de sistema
respecto a la configuración del hardware. Asimismo, el procedimiento de instalación es parte de la
prueba que se debe realizar.
c. Pruebas de conformidad
Se orientan a verificar el comportamiento del software respecto a las especificaciones realizadas
en la etapa de diseño, tomando como base los requerimientos funcionales y no funcionales del
sistema.
d. Pruebas de regresión
Estas pruebas son necesarias ante modificaciones o cambio en las especificaciones (funcionales y
no funcionales). Tienen por objeto demostrar que ante cambios, aun cuando el software haya sido
previamente probado, se debe volver a probar y su comportamiento debe mantenerse, salvo en
las modificaciones especificadas. Estas pruebas son aplicables en las pruebas unitarias, integrales o
de sistema
e. Pruebas de rendimiento
Prueba enfocada en los requerimientos de capacidad y tiempos de respuesta especificados en la
operación de las funciones del software. Por ejemplo, esta prueba se puede realizar con un
volumen alto en la carga de datos, para verificar el comportamiento del software.
f. Pruebas de configuración
Los usuarios del software usualmente tienen o utilizan configuraciones específicas. Por ejemplo,
roles especiales y accesos determinados. Entonces, estas pruebas se enfocan en verificar que las
configuraciones asignadas sean las correctas.
20
ESTE DOCUMENTO CONTIENE LA SEMANA 7
g. Pruebas de facilidad de uso
El enfoque de estas pruebas está dado en la facilidad de uso de las funciones del software que
utiliza el usuario, la documentación existente para guiarlo en la ejecución de sus tareas y, también,
la facilidad del software para superar errores provocados por el usuario.
Las técnicas de pruebas pueden ser clasificadas de dos formas: pruebas de caja blanca, en el caso
que se basen en el diseño del software, es decir, sabiendo cómo este fue desarrollado; o bien, caja
negra, donde solamente interesa saber el dato que entra y sale del sistema.
a. Pruebas ad hoc
Comúnmente utilizada, surge de la experiencia e intuición del ingeniero de software, lo cual se ha
aprendiendo de la experiencia en otros proyectos similares. En este caso, se genera un grado de
sensibilidad en la prueba, el cual es beneficioso al momento de seleccionar casos de prueba que se
pueden aplicar en un ámbito determinado.
3.2.2. ESPECIFICACIÓN
21
ESTE DOCUMENTO CONTIENE LA SEMANA 7
límite para validar la robustez ante datos que no corresponden al dominio de información del
sistema.
b. Tablas de decisión
Corresponden a relaciones lógicas entre datos y acciones dentro del sistema. Los casos de prueba
son generados a partir de las combinaciones que existen entre los datos y las acciones definidas
funcionalmente en el sistema.
a. Flujo de control
Esta técnica de prueba busca explorar todos los flujos de control que la funcionalidad tiene
definidos como parte de la programación. Se puede señalar que la forma más representativa de
realizarlo es recorriendo todos los caminos que las condiciones y decisiones del código pueden
tomar en función de los datos de entrada/salida en el sistema. De igual forma se presentan
algunas restricciones, como por ejemplo abordar los bucles de código. Sin embargo, la prueba
cumple su objetivo cuando al ejecutarse abarca la totalidad de condiciones, al menos una vez.
b. Flujo de datos
Esta técnica de prueba se centra en los datos y el flujo que deben seguir de acuerdo a la lógica que
se ha programado. Las variables pasan a ser el objeto de revisión, respecto al valor del dato
asignado y cómo este varía en la medida que se ejecutan los distintos flujos del programa. Dada la
gran cantidad de variables y caminos lógicos que se pueden ejecutar, una estrategia es seleccionar
los datos más sensibles y los caminos (condiciones/decisiones) más críticos para el funcionamiento
de la aplicación.
3.2.4. ERRORES
1
Correspondería a un flujo de proceso que tiene estados definidos, es decir, que presenta un inicio y un
final.
22
ESTE DOCUMENTO CONTIENE LA SEMANA 7
que para poder asignar un determinado valor debe configurar la cuenta a través del sistema.
Donde, además, el sistema requiera de un rol que permita realizar la habilitación. Esta técnica
también es útil en la depuración de las validaciones que debe realizar la funcionalidad.
b. Mutaciones (pruebas de acoplamiento)
Técnica basada en la generación de versiones distintas del software, donde se introducen
pequeñas modificaciones y a las cuales se les denomina mutantes. Los casos de prueba son
aplicados en la versión original y también en las versiones mutantes. Si el caso de prueba logra
establecer una diferencia entre ambas versiones, se entenderá que se ha identificado la versión
mutante. En estos casos, pequeñas modificaciones de sintaxis pueden dar cabida al
descubrimiento de problemas más complejos a nivel del software, por ejemplo acoplamiento de la
funcionalidad.
a. Perfil operativo
Una de las premisas en el ámbito de las pruebas es hacer que estas sean ejecutadas bajo
condiciones iguales o muy similares al entorno donde el software será puesto en operación. Esto
implica que a nivel de infraestructura, las condiciones deben ser recreadas en similitud al
ambiente productivo. Asimismo, la demanda de servicios o carga de trabajo del software también
debe estar en el mismo contexto que el esperado en el ambiente productivo. Por lo anterior se
puede inferir el grado de confiabilidad que se espera de la solución en el ambiente donde se
utilizará.
b. Confiabilidad
Estas pruebas buscan determinar el grado de confiabilidad de la solución, para lo cual están
basadas en los objetivos de confiabilidad que se han definido en los requerimientos (no
funcionales) del sistema y el uso esperado que este tendrá. Dado el escenario anterior, se busca
evaluar el grado de criticidad que presentarán las distintas componentes funcionales de la
solución.
Todas las técnicas de pruebas mencionadas anteriormente, en general, son aplicables a cualquier
tipo de software. No obstante, hay algunos casos en los cuales se requiere conocimientos
específicos en función de la naturaleza de las aplicaciones (Pressman, óp. cit.). Un ejemplo de lo
anterior, corresponde al siguiente tipo de aplicaciones:
23
ESTE DOCUMENTO CONTIENE LA SEMANA 7
Pruebas de protocolos de comunicación
Pruebas para sistemas en tiempo real
Pruebas para sistemas de seguridad
En cada caso, además de la naturaleza que se persigue con las pruebas de software, lo que se
pretende destacar es el hecho de existir una serie de características y condiciones particulares
dependiendo el tipo de aplicación que se requiere probar. En este sentido, se hace necesaria una
mirada especializada en cada tipo de aplicación. Lo ideal es que un ingeniero de software conozca
lo general y también lo particular. Entonces, al momento de planificar las pruebas también debe
considerarse este punto.
La estructura de un plan de pruebas debe ser acordada y aprobada por los integrantes del equipo
de trabajo, como también por las partes interesadas como por ejemplo, el usuario final de la
solución. Lo anterior, dado que al momento de definir y ejecutar las pruebas se va a requerir la
participación de distintos actores, por lo cual deben estar debidamente coordinadas y planificadas
en una carta Gantt.
El plan de pruebas consolida la planificación requerida para el control y gestión del proceso de
pruebas, para ello se debe elaborar como parte de la documentación del proyecto. De esta forma,
a modo de orientación, se presenta a continuación un esquema de índice que debiera tener el
plan de pruebas.
24
ESTE DOCUMENTO CONTIENE LA SEMANA 7
corresponde probar, aspectos que se
requiera explicitar respecto a alguna
condición especial de las pruebas.
Debe ser explicitado todo aquello que se
va a probar
o Aspectos funcionales
o Aspectos técnicos
o Aspectos de seguridad
o Otros
De la misma forma, se debe declarar lo
que no formará parte de la pruebas.
3. Referencia de Se indica la definición de requerimientos,
documentación especificaciones funcionales y técnicas de
la solución.
Parte 2 4. Estrategia Se declaran los tipos de prueba que se
realizarán (unitarias, integrales, sistema,
etc.).
Se definen los casos de prueba que se
desarrollarán y la técnica de prueba que
se utilizará.
En esta definición, se establece el grado
de cobertura que habrá sobre cada
aspecto a probar (funcional, técnico u
otro). Es decir, se indicará que se
ejecutará una cantidad determinada de
casos de prueba para los aspectos
funcionales, otra para aspectos de
seguridad y, así, respondiendo a los
aspectos considerados en el alcance de la
prueba.
5. Ítems de prueba Si bien en el punto donde se define el
alcance se indican, por ejemplo, aspectos
funcionales a probar, en este punto se
debe especificar cuál es la funcionalidad
que se probará. Se hace en forma
detallada.
6. Casos de prueba Se definen los escenarios de prueba.
Casos que abarcan la funcionalidad que
se probará.
Parte 3 7. Estado del plan De acuerdo a los convenios que
determinen el plan de pruebas con los
actores involucrados, se deben
25
ESTE DOCUMENTO CONTIENE LA SEMANA 7
establecer parámetros que determinen el
estado del plan de pruebas. Esto es, bajo
qué condiciones el plan puede
suspenderse, repetirse, anularse, o bien
darse por finalizado.
Es decir, se establecen criterios para dar
fluidez y continuidad a la ejecución del
plan de pruebas.
Se podría acordar que el plan se define
como exitoso si en su ejecución se logra
abarcar el 80% de los casos de prueba.
Otros factores que también inciden son el
costo y la duración.
8. Entregables Corresponde a la definición de todos los
documentos que formarán parte de los
entregables asociados al plan de pruebas.
Casos de prueba, registro de las pruebas,
informes de resultado.
9. Recursos necesarios Se deben señalar las necesidades de
ambiente para ejecutar las pruebas.
Disponibilidad de quienes realizarán las
pruebas.
Habilitación del software, en una versión
específica para la ejecución de la prueba.
Espacios físicos y otros aspectos
logísticos.
10. Calendarización de Se debe señalar el plan de actividades y la
actividades programación de estas.
Usualmente en formato Gantt.
11. Puntos de atención Identificación de riesgos y la forma de
mitigarlos en el caso que se presenten.
12. Matriz de Se explicitan las tareas principales y los
responsabilidades responsables de gestionarlas y
ejecutarlas.
13. Referencias Antecedentes generales que ayuden a
buscar información referente a la
planificación del plan de pruebas.
Tabla 2: Estructura del plan de pruebas
Fuente: material elaborado para esta asignatura (J. Reyes, 2015)
26
ESTE DOCUMENTO CONTIENE LA SEMANA 7
COMENTARIO FINAL
27
ESTE DOCUMENTO CONTIENE LA SEMANA 7
REFERENCIAS
Pantaleo, G. (2011). Calidad en el desarrollo de software. México: Alfaomega Grupo Editor.
Pressman, R. (2010). Ingeniería de software, un enfoque práctico. 7.ª edición. España: Editorial
McGraw-Hill Interamericana S. A.
Zahran, S. (1998). Software Process Improvement: Practical Guidelines for Business Success.
Semana 7.
28
ESTE DOCUMENTO CONTIENE LA SEMANA 7
29
ESTE DOCUMENTO CONTIENE LA SEMANA 7