Vous êtes sur la page 1sur 41
TECNICAS DE PRUEBA DEL SOFTWARE Concertos as pruebas representan un interesante reto para los ingenieros de CLAVE i: Te, quienes por naturaleza son personas constructivas. Las pruebas res 437 Ten que el desarroliador descarte nociones preconcebidas de lo que compli “correcto” en el software y entonces disene dificiles casos de prueba para Aidomética «426 perlo". Beizer [BEI90] describe bien esta situacin cuando afirma: sun mito que si realmente fuéramos buenos para programar no tendriamos que Purar errores, Si tan solo pudiéramos concentrarnos, si todos usaran programacsial estructurada, disefio descendente o tablas de decision, silos programas se escritie-| Tan en SQUISH, si tuviéramos las balas plateadas correctas, entonces no habria ex Tes. Ese ¢s el mito. Hay errores, dice el mito, porque somos malos en lo que hacemos 1y Si Somos malos en eso, debemos sentimos culpables. Por tanto, él disefto de bas y de casos de prueba ¢s una admision de la falla, que instila una buena dosis culpa. ¥ el tedio de probar solo es un castigo por nuestros errares. {Castigo por 14.4.1 Notacién de grética de flujo Antes de tratar el método de la ruta basica, debe presentarse una notacién simple para la representacion del flujo de control, llamado gréfica de flujo (o gnéfica del pro- -giama).® La grafica de flujo describe un flujo de control logico empleando la notacién ilustrada en la figura 14.1. Cada construccién estructurada (capitulo 11) tiene su sim- compeneie seo bolo correspondiente en la grafica de flujo. El uso de una grafica de flujo se ilustra considerando la representacién del dise: fio procedimental de la figura 14.2a. Aqui se describe la estructura de control del pro. grama mediante un diagrama de flujo. En la figura 14.2b se correlaciona (0 mapea) eo méskgti el diagrama de flujo con su grafica de flujo correspondiente (suponiendo que no exis- ten condiciones compuestas en los diamantes de decision del diagrama de flujo). To- 3. Entealidad, e! método de la ruta basica se aplica sin e! uso de las graficas de flujo. Sin embargo, sir ‘ven como notacion til para comprender el flujo de contro PARTE DOS PRACTICA De LA INGENIERIA DEL SOFTWARE mando como referencia la figura 14.2b, cada cfrculo, llamado nodo de grifica de ffs jo, tepresenta una o mas instrucciones procedimentales. Una secuencia de recus dros de proceso y un diamante de decisi6n'se correlaciona con un solo nodo, Las fe chas en la grafica de flujo, llamadas aristas 0 enlaces, representan el flujo de contrat y son andlogos a las flechas de los diagramas de flujo. Una arista debe terminar e= un nodo, aunque el nodo no represente ninguna instruccin procedimental (par ejemplo, véase el simbolo en la grafica de flujo para la construccién if-then-else dete figura 14.1). Las dreas que limitan aristas y nodos se denominan regiones. Cuando se cuentan las regiones se incluyen las areas ubicadas fuera de la grafica.* les construci r rma. ica de fyjo mone srucciones estrucuradas en forma de grética de fy gratica de flujo. Donde coda circulo representa una 0 mas instrucciénen LDP sin ramificaciones o de cédigo fuente ‘@ Diagrama de flujo y b) grética de flujo. 4 Unandlisis mas detallado de las grificas y su aplicacion se presentard en Ta seccién 14.6.1 CAPITULO 14. ricicas De PRUEBA DEL TWAS 435 Cuando se encuentran condiciones compuestas en un disefio procedimental, la generacion de una grafica de flujo se vuelve ligeramente mas complicada. Una con dicién compuesta ocurre cuando hay uno © mas operadores booleanos (OR, AND, NAND, NOR) en una instruccion condicional. Tomando como referencia la figura 14.3, el segmento en LDP se traduce a la grafica de flujo mostrada. Obsérvese que se crea un nodo separado para cada una de las condiciones a y b en la instruccién IF a OR b. Cada nodo que contiene una condicion es un nodo predicado y se caracteriza porque de él emanan dos o més aristas. 14.4.2 Rutas independientes del programa Una ruta independiente es cualquier ruta del programa que ingresa por lo menos un nuevo conjunto de instrucciones de procesamiento o una nueva condicin. Cuando se explica desde el punto de vista de una grafica de flujo, una ruta independiente de be recorrer por lo menos una arista que no se haya recorrido antes. Por ejemplo, a continuaci6n se presenta un conjunto de rutas independientes en la gréfica de flujo de la figura 14.2b: ruta 4: 1-2-3-6-7-9-10-I-11 Obsérvese que cada nuevo camino ingresa una nueva artista. El camino 1-2-3-4-5-10-1-2-3-6-8-9-10-1-11 no se considera una ruta independiente porque se trata simplemente de una combi: nacion de rutas ya especificadas y no recorre ninguna arista nueva. Los caminos 1, 2, 3 y 4 constituyen un conjunto basico para la grafica de flujo de Ja figura 14.2b. Es decir, si se disefian pruebas para forzar la ejecucion de esas rutas Nodo Teme IFoORb then procedimiento x else procedimiento y ENDIF PARTE DOS PRACTICA DE LA INGENIERIA DEL SOFTWARE Sonu (un conjunto basico), se habran ejecutado los lados verdadero y falso de cada ins truccién del programa. Debe observarse que un conjunto basico no es unico. En ree Lo complejidad lidad, es posible derivar varios conjuntos basicos diferentes de un disefio proced> cidoniten «so mental determinado. oo o— Como se sabe cudntas rutas buscar? El cdlculo de la complejidad ciclomatica pee cadles médues eren Porciona la respuesta. La complejidad ciclomatica es una métrica de software que ‘més obobidad de © proporciona una medida cuantitativa de la complejidad logica de un programa contre omnes. So Cuando se emplea en el contexto del método de prueba de la ruta basica, el vale’ emplea parolapl —_calculado mediante la complejidad ciclomatica define el ntimero de rutas inde; ean de pubs ‘domes eetode — cuentes en el Conjunto basico de un programa, y proporciona tin limite superior pe sr Oe al: rael niimero de pruebas que deben aplicarse para asegurar que todas las instruc nes se hayan ejecutado por lo menos una vez. La complejidad ciclomatica se basa en la teoria grafica y se calcula de una de maneras eComo se 1, El niimero de regiones corresponde a la complejidad ciclomatica “ onl a 2. La complejidad ciclomatica, V(G), de una grafica de flujo, G, se define come matica? VG) =E-N+2 donde E es el nimero de aristas, y N, el nimero de nodos de la grafica de jo s 3. La complejidad ciclomatica, V(G), de una grafica de flujo, G, también se define como c : VE VG) =P+1 ener, donde P es el ntimero de nodos predicado incluidos en la grafica de flujo G el lite sper dl oe Tomando como referencia una vez mas la gréfica de flujo de la figura 14.2 ‘cose pute oa COplejidad ciclomdtica se calcula empleando cada uno de los algoritmos que (qmntzaqecaéa —-_-acaban de indicar. insti de nenesine 1, La grafica de flujo tiene cuatro regiones. ijcutedoporlomencs 2, (G) = 11 aristas - 9 nodos +2 = 4 smo vez 3. V(G) — 3 nodos predicado + 1 = Bs (ole cit): T0) Lo mas notable es que el valor de V(G) proporciona el limite superior del nimero de rutas independientes que forman el conjunto basico; por implicacién, ofrece un limite superior de! namero de pruebas que debe disefiarse y ejecutarse para garanti- zar la cobertura de todas las instrucciones del programa 14.4.3 Derivacién de casos de prueba E] método de prueba de la ruta basica se aplica a un disefio procedimental o al co- digo fuente. En esta seccién se presentara la prueba de la ruta basica como una se rie de pasos, Se empleard el procedimiento promedio (descrito en PDL en la figura 14.4) como ejemplo para ilustrar cada paso en el método de disefio de casos de prue- ba. Obsérvese que promedio, aun en el caso de un algoritmo extremadamente sim- ple, contiene condiciones compuestas y bucles. Los siguientes pasos se aplican para derivar el conjunto basico: 1, Utilizando el disefto 0 el cédigo como base se dibuja la grafica de flu- jo correspondiente. En la creacion de una grafica de flujo se emplean los simbolos y las reglas de construccién presentadas en la seccion 14.4.1. To- mando como referencia el PDL para obtener promedio en la figura 14.4, se crea una gréfica de flujo numerando esas instrucciones en PDL, que se corre- Jacionaran 0 mapearan en los nodos correspondientes de la grafica de flujo. En la figura 14.5 se muestra la grafica de flujo resultante. 2. Determinese la complejidad ciclomatica de la grafica de flujo resul- tante. La complejidad ciclomatica, VG), se determina al aplicar el algoritmo descrito en la seccién 14.4.2. Debe indicarse que podria determinarse ViG) sin desarrollar una grafica de flujo, si se cuentan todas las instrucciones condicio- Tee) identificados. PRACTICA DE LA INGENIEMA DEL SOFTWARE PROCEDIMIENTO promedio: * Kate procedimserto eau prom e100 9 mero rumeroe qa caer are valores lite: tbl cali 4 sme yl ttl de manera woe INTERFACE RETURNS promedo,fotdLanrad, fea: INTERFACE ACCEPTO vl, mio, manna: TIE vr 300} 10 SOALAR ARRAN: TW pore, arta, ol a: nino, matino, soma 8 SAL: we 118 te: (ete (eld = fd = 0: sume = 0: 0 WHE vert) <= 000 AND tints < WO «a nonemenir tl ea Flr > = mnie AND art] < = mano © THEN rermantar flloabde of cena = sure vl] ° nales en el PDL (para el procedimiento promedio, las condiciones comp’ cuentan como dos) y se suma | al resultado. Tomando como referencia la gura 14.5, ViG) = 6 regiones VviG) 7 aristas — 13 nodos + 2=6 V(G) = 5 nodos predicado + 1 Determinese un conjunto basico de rutas linealmente indepen El valor de V(G) indica el nmero de rutas linealmente independientes de l= estructura de control del programa. En el caso del procedimiento promedi= espera especificar seis caminos: ruta 1: 1-2-10-11-13, ruta 2: 1-2-10-12-13 ruta 3: 1-2-3-10-11-13, tuta 4: 1-2-3-4-5-8-9-2-... tuta 5: 1-2-3-4-5-6-8-9-2-. Tuta 6: 1-2-3-4-5-6-7-8-9-2-. CAPITULO 14 DE PRUEBA DEL SOFT 429 Los puntos suspensivos (...) que siguen a las rutas 4, 5 y 6 indican que es aceptable cualquier ruta que se recorra en el resto de la estructura de control. ‘A menudo vale la pena identificar nodos predicado como apoyo para derivar los casos de prueba. En este caso, los nodos 2, 3, 5, 6 y 10 son nodos predicado, 4. Preparense los casos de prueba que forzaran la ejecucin de cada ru- ta en el conjunto basico. Es necesario seleccionar los datos de manera tal que se establezcan apropiadamente las condiciones de los nodos predicado, a medida que se prueba cada ruta. Cada caso de prueba se ejecuta y compara con los resultados esperados. Una vez completados todos los casos, la perso- na que aplica la prueba puede estar segura de que todas las instrucciones del programa se han ejecutado por lo menos una vez Es importante observar que es imposible probar algunas rutas independientes (como la ruta 1 en nuestro ejemplo) por separado. Es decir, en el flujo normal del programa no puede obtenerse la combinacidn de los datos requeridos pata recorrer Ja ruta. En tales casos, estas rutas se ejercitan como parte de otra prueba del camino, Grafica de flujo Matiz de gréfica PARTE DOS PRACTICA DE LA INGENIEIA DEL SOFTWARE 14.4.4 Matrices de gr&ficas El procedimiento para derivar la grafica de flujo e incluso determinar un conjunto de tutas basicas es sensible a la mecanizaci6n. Una estructura de datos denominada matriz de gréfica resulta muy titil para desarrollar una herramienta de software que ayude en la prueba de la ruta basica una matriz de grafica es una matriz cuadrada cuyo tamafo (es decir, el niimens de filas y columnas) es igual al niimero de nodas en la grafica de flujo, Cada filz columna corresponde a un nodo identificado, y las entradas de la matriz correspom- den a las conexiones (una arista) entre nodos. En la figura 14.6 se muestra un ejem plo simple de una grafica de flujo y su matriz de grafica correspondiente [BEI90] Tomando como referencia la figura, cada nodo en la grafica esta identificado com nudmeros, mientras que cada arista se identifica con letras. Una conexi6n entre da nodos se indica creando una entrada de letra en la matriz. Por ejemplo, el node 3 conecta al nodo 4 con la arista Hasta este punto, la matriz de grafica no es mas que una representacion tab de una grafica de flujo. Sin embargo, al agregar un peso de enlace a cada una des entradas, la matriz de grafica se convierte en una herramienta poderosa para luar la estructura de control del programa durante la prueba. El peso de enlace porciona informacion adicional acerca del flujo de control. En su forma més sim el peso de enlace es | (existe una conexidn) 0 0 (no existe una conexién), Pero = pesos de enlace también se le asignan otras propiedades, mas interesantes © La probabilidad de que se ejecute un enlace (arista) El tiempo de procesamiento gastado durante el recorrido a un enlace. + La memoria requerida durante el recorrido de un enlace. '* Los recursos requeridos durante el recorrido de un enlace. Beizer [BEI90] proporciona un tratamiento completo de algoritmos mat adicionales que son aplicables a una matriz de grafica. El empleo de estas téc permite automatizar parcial o totalmente el andlisis requerido para disefiar casos! prueba, La técnica de prueba de la ruta basica descrita en la seccién 14.4 es una de técnicas para la prueba de estructuras de control. Aunque la prueba de la ruta ca.es simple y efectiva, no es suficiente por si misma. En esta seccién se anal brevemente variaciones sobre la prueba de estructuras de control. Estas ens la cobertura de las pruebas y mejoran la calidad de la prueba de caja blanca CAPITULO 140 ticucas 06 PRUEBA DEL SOFTWARE 431 14.5.1 Prueba de condicién La prueba de condicién [TAI89] es un método de disefio de casos de prueba que ejer- cita las condiciones logicas contenidas en un médulo del programa. Una condicién simple es una variable booleana o una expresi6n relacional, tal vez precedida con un operador NOT (-). Una expresién relacional toma la forma £, donde E; y Es son expresiones aritméticas y es uno de los si- guientes: <, <, =, 4 (desigual), > 0 = . Una condicién compuesta la integran dos 0 mas condiciones simples, operadores booleanos y paréntesis, Se supone que entre los operadores booleanos permitidos en una condicion compuesta se incluyen OR () AND (&) y NOT (+). Una condici6n sin expresiones relacionales se considera una ex presién booleana, Por tanto, los posibles tipos de elementos en una condicién inclu- yen un operador booleano, una variable booleana, un par de paréntesis (que encie- rran una condicién booleana simple o compuesta), un operador relacional o una ex- presién aritmética Si una condici6n es incorrecta, entonces por lo menos un componente de la con- dicién es incorrecto. Por tanto, entre los tipos de errores en una condici6n se inclu yen los presentes en el operador booleano (operadores booleanos incorrectos/fal- tantes/adicionales), en la variable booleana, en los paréntesis booleanos, en los operadores relacionales y en la expresiOn aritmética. El método de prueba de condi cién se concentra en la prueba de cada condicién del programa para asegurar que no contiene errores. 14.5.2 Prueba del flujo de datos El método Ge prueba def jlujo de datos selecciona rutas de prueba en un programa de acuerdo con las ubicaciones de las definicione: grama. El enfoque de prueba del flujo de datos se ilustra suponiendo que a cada ins trucci6n de un programa se le asigna un néimero de instrucci6n, y que ninguna fun cién modifica sus paraémetros o variables globales. En el caso de una instruccion con I.como numero de instruccién, s y los usos de las variables en él pro: DEF() = (X | instruccion J contiene una definicion de X} USO() = {X| instruccién J contiene un uso de X} Sila instruccién J es una instrucci6n if (si) 0 loop (bucle), su conjunto DEF esta vacio y su conjunto USO se basa en la condicién de la instruccién 1. Se dice que la defin cion de la variable X en la instruccion / esta viva en la instrucci6n 1’ si existe una ru- ta de la instruccién / a la J’ que no contiene otra definicién de X Una cadena definicién-uso (DU) de la variable X es de la forma [X, J, I"), donde ie I son nuimeros de instruccién, X esta en DEF (I) y USO("), y la definicién de X en la 7 instrucci6n F esté viva en 432 Cone Noes isn seg qu la prueba del lj de chose sad de moet eens cone 5 proba un site grade Sin erbro, uede ‘ss de um moneo ventada un toro on rcs de sae (qu estén bajo sospedt. TTC eg PARTE DOS PRACTICA DELA INGENIERIA DEL SOFTWARE Una estrategia simple de prueba de flujo de datos consiste en solicitar que cadena DU sea cubierta por lo menos una vez, Esta estrategia se denomina esta gia de prueba DU. Se ha mostrado que ésta no garantiza la cobertura de todas las mas de un programa. Sin embargo, slo en raras situaciones no se garantiza que rama esté cubierta por una prueba DU, como en las construcciones if-then-else entonces-si_no) en que la parte then no tiene definicion de alguna variable y la: te else no existe. En esta situacion, la rama else de la instruccion /fno esta neces riamente cubierta por la prueba DU. Se han estudiado y comparado varias estratl™ gias de prueba de flujo de datos (por ejemplo, [FRA88), [NTA88], [FRA93)). A los ie tores interesados se les recomienda que consideren consultar esas referencias Sm bliograficas. ae oe ri 14.5.3. Prueba de bucles Los bucles son la piedra de toque para la gran mayoria de los algoritmos imp tados en software. Y aun asi, a menudo se les presta poca atencién mientras se lizan pruebas de software. La prueba de bucles es una técnica de prueba de caja blanca que se concentra clusivamente en la validez de la construccién de bucles. Es posible definir cu: ferentes clases de bucles [BEI90}: bucles simples, concatenados, anidados y me tructurados (figura 14.7) rq) 3 #7 Bucles simples concatenados Bucles no esiructurados CAPITULO 14 ticnicas pe PRUEBA Det SOFTWARE 433 Bucles simples. £1 siguiente conjunto de pruebas se aplica a bucles simples, don den es el numero maximo de pasos que permite el bucle. 1. Omitir por completo el bucle Sélo un paso por el bucle Dos pasos por el bucle ‘m pasos por el bucle, donde m linea empleando un servicio en Iinea) y los enlaces representan la conexidn logics entre los pasos. El diagrama de flujo de datos (capitulo 8) se utiliza para ayudar om la creacion de graficas de este tipo. Modelado de estado finito. Los nodos representa los diferentes estados que & usuario observa en el software (por ejemplo, cada una de las “pantallas’ que apar= cen cuando un empleado toma un pedido por teléfono) y los enlaces representan transiciones que ocurren para ir de un estado a otro. El diagrama de estado (capita lo 8) ayuda a crear graficas de este tipo. Modelado del flujo de datos. Los nodos son objetos de datos, y los enlaces s las transformaciones que ocurren para traducir un objeto de datos en otro. Por plo, el nodo impuesto retenido por FICA (IRF) se calcula a partir de salario to (SN) empleando la relacién IRF = 0.62 x SN. Modelado relacionado con el tiempo. Los nodos son objetos de programa, y enlaces son las conexiones secuenciales entre esos objetos. Con los pesos de en ce se especifican los tiempos de ejecucion requeridos mientras el programa se cuta. Un anilisis detallado de cada uno de estos métodos graficos de prueba se en: tra mas alla del alcance de este libro. El lector interesado debe consultar [BEI95} ra tener una cobertura completa. 14.6.2 Particién equivalente La particion equivalente es un método de prueba de caja negra que divide el do nio de entrada de un programa en clases de datos a partir de las cuales pueden rivarse casos de prueba. Un caso de prueba ideal de manejo simple descubre clase de errores (por ejemplo, procesamiento incorrecto de todos los datos de ca teres) que, de otra manera, requeriria la ejecucién de muchos casos antes de que observe el error general. La particién equivalente se esfuerza por definir un caso prueba que descubra ciertas clases de errores, reduciendo asi el nimero total de sos de prueba que deben desarrollarse. El disefio de casos de prueba para particién equivalente se basa en una eval cin de las clases de equivalencia para una condicion de entrada. Con el uso de conceptos introducidos en la seccién anterior, si es posible enlazar un conjunte objetos mediante relaciones simétricas, transitivas y reflexivas, entonces existe clase de equivalencia {BEI95]. Una clase de equivalencia representa un conjunto estados validos y no validos para las condiciones de entrada. Por lo general

Vous aimerez peut-être aussi