Clasificación de Pruebas - Seguridad PDF
Clasificación de Pruebas - Seguridad PDF
Clasificación de Pruebas - Seguridad PDF
Niveles de seguridad
Los analistas usan cuatro niveles de aseguramiento de la calidad: Prueba, verificacin, validacin y certificacin.
Prueba
La prueba del sistema es un proceso caro pero crtico que puede llevarse hasta 50% del presupuesto para el
desarrollo del programa. El punto de vista comn respecto a las pruebas compartido por los usuarios, es que se lleva a
cabo para demostrar que no hay errores en un programa. Sin embargo, como se indic anteriormente, esto es
prcticamente imposible, puesto que los analistas no pueden demostrar que software est limpio de errores.
Por lo tanto, el enfoque ms til y prctico es en el entendimiento que la prueba es el proceso de ejecutar un
programa con la intencin explcita de hallar errores, es decir, hacer que el programa falle. El examinador, que puede ser
un analista, programador, o especialista entrenado en la prueba de software, est tratando realmente de hacer que el
programa falle. As, una prueba exitosa es aquella que encuentra un error.
Los analistas saben que un programa de prueba efectivo no garantiza la confiabilidad del sistema. La
confiabilidad es asunto del diseo. Por lo tanto, la confiabilidad debe disearse en el sistema. Los analistas no pueden
hacer una prueba de ella. Posteriormente, en esta misma seccin, se discutirn estrategias especficas de prueba.
Verificacin y validacin
Como la prueba, la verificacin tiene la intencin de hallar errores. Se lleva a cabo ejecutando un programa en un
ambiente simulado. La validacin se refiere al proceso del uso del software en un ambiente no simulado para hallar sus
errores.
Cuando los sistemas comerciales se desarrollan con la intencin explcita de distribuirlos a travs de terceros para
su venta, o comercializarlos por medio de oficinas de la propia compaa, primero deben pasar por la verificacin, a veces
llamada prueba alfa. La retroalimentacin de la fase de validacin generalmente produce cambios en el software para
resolver los errores y fallas que se descubren. Se elige un conjunto de instalaciones usuarias que ponen a trabajar el
sistema en un ambiente real. Estas instalaciones de prueba beta usan el sistema en las actividades cotidianas; procesan
transacciones en directo y producen salidas normales del sistema. El sistema est a prueba en toda la extensin de la
palabra, excepto que los usuarios estn advertidos de que estn usando un sistema que puede fallar. Sin embargo, las
transacciones que se estn procesando y las personas que usan el sistema son reales.
Es posible continuar la validacin durante varios meses. En el curso de la validacin del sistema, puede ocurrir
una falla y el software ser modificado. El uso continuo posiblemente produzca fallas adicionales y la necesidad de ms
cambios.
Certificacin
La certificacin del software es una garanta de lo correcto de un programa, su importancia va en aumento para
las aplicaciones de sistemas de informacin. Existe una creciente dependencia de la compra o renta de software comercial
en vez del desarrollo en casa. Sin embargo, antes que los analistas deseen aprobar la adquisicin de un paquete, a
menudo requieren de la certificacin del software por parte del fabricante o de un tercero sin prejuicios.
Por ejemplo, algunas empresas importantes de contabilidad estn involucradas en la certificacin de paquetes de
software, para garantizar que realmente hace lo que el vendedor afirma que realiza y de una manera apropiada. Para
certificar de esta forma el software, la empresa asigna a un equipo de especialistas que cuidadosamente examinan la
documentacin del sistema para determinar lo que afirma el vendedor que el sistema hace y cmo lo lleva a cabo.
Entonces ellos prueban el software contra estas afirmaciones. Si no se encuentran serias discrepancias o fallas,
certificarn que el software hace lo que la documentacin afirma. Sin embargo, no certifican que el software sea el
paquete correcto para una cierta organizacin. Esta responsabilidad sigue siendo de la organizacin y su equipo de
analistas.
Pgina 1 de 6
Estrategias de prueba
Ya se ha indicado que la filosofa detrs de la prueba es la de encontrar errores. Los casos de prueba se disean
con este propsito en mente. Un caso de prueba es un conjunto de datos que el sistema procesar como entrada normal.
Sin embargo, los datos se crean con la intencin expresa de determinar si el sistema los procesar correctamente. Por
ejemplo, los casos de prueba para el manejo de inventarios deben incluir situaciones en las que las cantidades que se
retiran del inventario excedan, igualen y sean menores que las existencias. Cada caso de prueba se disea con la intencin
de encontrar errores en la forma en que el sistema los procesar.
Hay dos estrategias generales para la prueba del software. Esta seccin examina ambas, las estrategias de prueba
de cdigo y prueba de especificacin.
Prueba de cdigo
La estrategia de prueba de cdigo examina la lgica del programa. Para seguir este mtodo de prueba, el analista
desarrolla casos de prueba que produzcan la ejecucin de cada instruccin en el programa o mdulo; es decir, se prueba
cada ruta del programa. Una ruta es una combinacin especfica de condiciones manejadas por el programa.
A primera vista, la prueba de cdigo parece ser un mtodo ideal para probar el software. Sin embargo, como
vimos en el ejemplo del principio de este captulo, es incorrecto el razonamiento de que todos errores de software se
pueden descubrir verificando toda ruta en un programa. En primer lugar, incluso en los programas moderadamente
grandes, del tamao usado en las situaciones tpicas de un negocio, es casi imposible hacer una prueba exhaustiva de esta
naturaleza. Las consideraciones financieras y las limitaciones de tiempo por lo general impedirn la ejecucin de cada
ruta dentro de un programa, ya que puede haber varios miles de ellas.
Sin embargo, aunque la prueba de cdigo se pueda llevar a cabo en su totalidad, no es una garanta en contra de
las fallas del software. Esta estrategia de prueba no indica si el cdigo cumple sus especificaciones ni tampoco
determina si todos los aspectos han sido implantados. La prueba de cdigo tampoco verifica el rango de los datos que
aceptar el programa, aun cuando, al ocurrir fallas del software en su uso real, sea frecuente que los usuarios introduzcan
datos fuera de los rangos esperados.
Prueba de especificacin
Para llevar a cabo la prueba de especificacin el analista examina las especificaciones que sealan lo que el
programa debe hacer y cmo lo debe llevar a cabo bajo diferentes condiciones. Despus se desarrollan casos de prueba
para cada condicin o combinacin de condiciones y se mandan para su procesamiento. Por medio del estudio de los
resultados, el analista puede determinar si el programa funciona de acuerdo con los requerimientos especificados.
Esta estrategia trata al programa como si fuera una caja negra: el analista no mira dentro del programa para
estudiar el cdigo y no le interesa si se prueba cada instruccin o ruta dentro del programa. En ese sentido, la prueba de
especificacin no es una prueba completa. Sin embargo, la hiptesis es que si el programa cumple las especificaciones,
no fallar.
Ninguna de las estrategias de prueba de cdigo o especificacin es ideal. Sin embargo, la prueba de
especificacin es la estrategia ms eficiente, ya que se centra en la forma que se espera se use el software. Tambin
muestra de nuevo qu tan importantes son las especificaciones desarrolladas por los analistas durante todo el proceso de
desarrollo del sistema.
MANEJO DE LAS PRCTICAS DE PRUEBAS
Independientemente de cual estrategia siga el analista, hay ciertas prcticas preferidas para garantizar que la
prueba sea til. Los niveles de prueba y los tipos de datos de prueba, junto con las bibliotecas de prueba, son aspectos
importantes del proceso real de prueba.
Niveles de prueba
Los sistemas no se disean como sistemas completos ni tampoco se prueban como sistemas nicos. El analista
debe llevar a cabo tanto pruebas parciales como las del sistema.
Pgina 2 de 6
Pruebas parciales
En las pruebas parciales, el analista prueba los programas que conforman a un sistema. (Por esta razn, a veces se
llama a las pruebas parciales prueba de programas, en contraste con la prueba de sistemas, que se estudia en la siguiente
seccin.) Las unidades de software en un sistema son los mdulos y rutinas que se ensamblan e integran para llevar a
cabo una funcin especfica. En un sistema grande, se necesitan muchos mdulos en varios niveles.
Las pruebas parciales se centran primero en los mdulos, independientes entre s, para localizar los errores. Esto
permite al que realice la prueba detectar errores en el cdigo y lgica contenidos dentro de ese nico mdulo. Aquellos
errores que resultan de la interaccin entre los mdulos se evitan inicialmente.
Por ejemplo, un sistema de informacin de un hotel est formado por mdulos para manejar las reservaciones;
entrada y salida de huspedes, restaurant, servicio al cuarto y cargos varios, actividades de convencin y elaboracin de
estados de cuenta. Para cada uno, se tiene la capacidad de introducir, cambiar o recuperar datos y responder a consultas o
imprimir reportes.
Los casos de prueba necesarios para las pruebas parciales deben probar cada condicin u opcin. Por ejemplo, los
casos de prueba se necesitan para determinar cmo maneja el sistema los intentos, para registrar a clientes que tengan o
no reservacin, lo mismo que aquellos casos en los que hay que cambiar el nombre en la reservacin cuando llega una
persona distinta a la esperada. Tambin se necesitan casos de prueba para las situaciones en las que el cliente paga el
monto exacto de la factura, slo parte de ella o ms del monto mostrado. Es ms, debe incluirse en un caso de prueba la
salida del cliente sin que realice pago alguno.
Si el mdulo recibe una entrada o genera una salida, tambin se necesitan casos de prueba para examinar el rango
de valores esperado, incluyendo los datos vlidos e invlidos. Qu ocurrir en el ejemplo de la salida del cliente del hotel
si un cliente desea hacer un pago de $ 150.000 para una prxima convencin? Estn diseados los mdulos de pago e
impresin para manejar este monto? La prueba para esta pregunta detecta rpidamente los errores existentes.
Si el mdulo se disea para llevar a cabo iteraciones, con procesos especficos contenidos dentro de un ciclo, es
recomendable ejecutar cada condicin frontera: cero iteraciones, una iteracin en el ciclo y el mximo nmero de
iteraciones en el ciclo. Por supuesto, siempre es importante examinar los resultados de la prueba, pero hay que prestar
especial atencin a estas condiciones. Muy a menudo, los analistas cometen el error de suponer que el caso de cero
iteraciones ser manejado automticamente en forma adecuada.
Las pruebas parciales se pueden llevar a cabo en forma ascendente, comenzando con los mdulos ms pequeos y
de nivel inferior y continuando de uno en uno. Para cada mdulo en la prueba ascendente, un programa corto (llamado
programa conductor ya que maneja o corre el mdulo) ejecuta el mdulo y proporciona los datos necesarios, de esta
forma se pide que el mdulo se desempee en la forma en que lo hara al encajarse dentro del sistema. Despus de probar
los mdulos de nivel inferior, la atencin se centra en los del siguiente nivel que usan los de nivel inferior. Se prueban en
forma individual y despus conjuntamente con los mdulos de nivel inferior que fueron examinados con anterioridad.
La prueba descendente, como su nombre lo indica, empieza con los mdulos de nivel superior. Sin embargo,
puesto que no se cuenta con las actividades de detalle, las que usualmente se llevan a cabo en las rutinas de nivel inferior
(ya que esas rutinas no se estn probando), se escriben fragmentos. Un fragmento es un mdulo que puede ser llamado
por el mdulo de nivel superior y que, al ser alcanzado en forma apropiada, regresar un mensaje al mdulo que hace la
llamada, indicando que ocurri la interaccin apropiada. No se hace el intento por verificar si el mdulo del nivel inferior
es correcto.
A menudo, los planes de prueba descendente se conjuntan con las pruebas ascendentes; es decir, se prueban como
unidad los mdulos de nivel inferior y se integran a un programa de prueba descendente.
Prueba de sistemas
La prueba de sistemas no prueba el software en s, sino la integracin de cada mdulo en el sistema. Tambin
busca las discrepancias entre el sistema y su objetivo original, especificaciones y documentacin del sistema. La
preocupacin principal es la compatibilidad de los mdulos individuales.
Los analistas tratan de hallar reas en donde los mdulos hayan sido diseados con especificaciones distintas para
la longitud y tipo de datos y los nombres de los elementos de los datos. Por ejemplo, un mdulo puede esperar que el tipo
de dato para la identificacin de un cliente sea un campo numrico, mientras que otros mdulos esperan que sea de tipo
carcter. Es posible que el sistema en s no reporte esto como un error, pero la salida puede mostrar resultados
inesperados. Si un registro creado y guardado en un mdulo, usando la identificacin como tipo numrico, se busca
posteriormente esperando que sea de tipo carcter, el campo no ser reconocido y aparecer el mensaje EL REGISTRO
PEDIDO NO SE ENCUENTRA. -
Pgina 3 de 6
La prueba de sistemas tambin debe verificar que los tamaos de los archivos son adecuados y que los ndices se
han construido en forma adecuada. Se deben probar a nivel sistema los procedimientos de ordenamiento y reindexacin,
que se supone estn presentes en los mdulos de nivel inferior, para ver que realmente existen y que logran los resultados
que esperan los mdulos.
Pgina 4 de 6
ENTER, cundo quitar los diskettes antes de apagar la mquina o qu hacer cuando se prende la luz que indica la falta de
papel en la impresora.
Por supuesto, no hay sustituto para un conjunto de manuales de procedimiento bien diseados. Los analistas se
concentran en los detalles principales y crticos del diseo de un sistema y los incluyen en la documentacin. Tambin
ponen atencin en los pequeos detalles, tales como los mencionados anteriormente, al disear el sistema. Pero es comn
que las descripciones de los detalles no estn dentro de la documentacin. Este tipo de prueba no slo muestra dnde se
necesitan, sino tambin en qu lugar estn equivocados, es decir, dnde las acciones sugeridas en la documentacin no
son compatibles con las que realmente hay que llevar a cabo para hacer que el sistema funcione.
Prueba de los factores humanos. Qu hacen los usuarios si, despus de mandar una transaccin por medio de una
terminal, la pantalla se pone en blanco mientras que los datos se procesan? Podran no llevar a cabo las acciones que el
analista desea o espera y en vez de ello responder de manera inusual: pueden oprimir la tecla de envo varias veces,
apagar la terminal y volverla a prender, desconectar el telfono y volverlo a conectar, volver a llamar al centro de
cmputo o golpear la terminal. Obviamente, ellos haran cualquier cosa si el analista no les diera algn mensaje en la
pantalla para indicar que su peticin ha sido recibida, que est siendo procesada y que tardar un poco. De esto trata la
prueba de factores humanos hallar respuestas a preguntas sobre como reaccionar la gente ante el sistema en formas no
previstas. Como regla general, aunque parezcan extraas las acciones anteriores, la gente tiene la razn, llevan a cabo
acciones que son normales bajo las circunstancias.
Es responsabilidad del analista el anticipar preguntas que surgirn en la mente de los usuarios cuando stos
interacten con el sistema. Si una pantalla se pone en blanco durante el procesamiento de la transaccin, el analista debe
asegurarse de que aparezca un mensaje en el cual se informe al usuario que la computadora est trabajando. Incluso no es
suficiente si el retraso es de ms de un segundo o dos. Para el procesamiento que se tarde periodos largos, el analista debe
hacer que la pantalla d al usuario un mensaje en el que se dice aproximadamente cunto tiempo se tardar y dando una
opcin para cancelar la peticin. El usuario puede decidir correr ese trabajo de una hora en otro momento, cuando el
sistema no est tan ocupado.
Si el sistema va a hacer un proceso largo de ordenamiento, el analista debe mantener al usuario informado acerca
de que proporcin del ordenamiento ha terminado. Los usuarios aprecian los sistemas que muestran el nmero de
registros ordenados o el porcentaje terminado.
Tambin el analista debe asegurarse de observar cmo introducen los datos las personas. Usan teclas diferentes
de las anticipadas (tales como la parte superior de los nmeros en el teclado de la mquina de escribir en vez del teclado
numrico)? Hay combinaciones difciles de teclas que puedan provocar errores (por ejemplo, tener que mantener
oprimida la tecla de maysculas con el dedo meique mientras se presiona la tecla + con el ndice)?
Cmo se sentir el usuario de un sistema despus de trabajar con l durante mucho tiempo? El resplandor de una
pantalla o simplemente bastante detalle en la misma provoca irritacin fsica y mental. Las ligeras modificaciones en el
contenido de la pantalla o la distribucin del equipo son la solucin. Es importante como afectan de forma dramtica al
usuario y, por lo tanto, al sistema.
Estas preguntas simples de prueba son de considerable importancia y extremadamente tiles para hallar defectos
que puedan provocar la falla del sistema. Algunos analistas hallarn estos defectos en la forma ms difcil por medio de
malas experiencias. No es fcil olvidar al sistema que fue daado porque el usuario golpe la terminal cuando introdujo
los datos y fueron aceptados por el sistema sin mostrar una respuesta. Sin embargo, si sigue los criterios anteriores, el
analista puede evitar dichas situaciones.
Pgina 5 de 6
Es difcil obtener datos reales en cantidad suficiente para conducir una prueba extensa. Y, aunque los datos reales
mostraran cmo funciona el sistema para los requerimientos tpicos de procesamiento, suponiendo que los datos reales
introducidos son en realidad tpicos, generalmente dichos datos no probarn todas las combinaciones o formatos que
puedan entrar al sistema. El sesgo hacia los valores tpicos no proporciona entonces una verdadera prueba del sistema y
de hecho ignora los casos ms probables que causan la falla del mismo.
Bibliotecas de prueba
Para garantizar que todos los sistemas se prueban adecuadamente, muchas organizaciones establecen bibliotecas
de prueba. Una biblioteca de prueba es un conjunto de datos desarrollados para probar en su totalidad un sistema. Se
guarda en una forma fcil de leer por la mquina, usualmente en disco magntico, y se usa por todas las personas
involucradas con un sistema particular.
Por ejemplo, un sistema grande de inventarios est formado por cientos de programas. Todos comparten datos y
formatos de archivo comunes. Cada uno de ellos tambin procesar transacciones similares y a veces actualizar registros
y en otras ocasiones recuperar datos para responder a consultas o prepara reportes y documentos. Puesto que estos
programas son transacciones interdependientes y sus procesos estn relacionados, tiene sentido usar un conjunto comn
de datos para probar cada programa.
Las bibliotecas de prueba no solamente son para las pruebas iniciales. Al evolucionar el sistema y modificarse y
dar mantenimiento a los programas, deben volverse a probar. La biblioteca de prueba tiene que conservarse durante toda
la vida de un sistema de forma que, al hacer cada cambio, se disponga nuevamente de datos confiables para probar el
sistema.
Pgina 6 de 6