Los métodos para diseñar casos de prueba utilizando tecnología de caja negra incluyen división de clases de equivalencia, análisis de valores límite, especulación de errores, diagramas de causa y efecto y estrategias integrales.
Las pruebas de caja negra se centran en probar los requisitos funcionales del software, es decir, las pruebas de caja negra permiten a los ingenieros de software deducir las condiciones de entrada para ejecutar todos los requisitos funcionales del programa. Las pruebas de caja negra no reemplazan las pruebas de caja blanca, pero se utilizan para ayudar a las pruebas de caja blanca a encontrar otros tipos de errores.
Las pruebas de caja negra intentan encontrar los siguientes tipos de errores:
1) errores u omisiones funcionales
2) errores de interfaz
<; p>3) Errores de estructura de datos o de acceso a bases de datos externas4) Errores de rendimiento
5) Errores de inicialización y terminación;
1. Método de diseño de casos de prueba para pruebas de caja negra
Método de división de clases de equivalencia
Método de análisis de valores límite
Método de especulación incorrecta
Método del diagrama causal
Método de análisis basado en tablas de decisión
Método de diseño experimental ortogonal
Método de análisis del diagrama funcional
p>División de clases de equivalencia:
Consiste en dividir todos los datos de entrada posibles, es decir, el dominio de entrada de un programa en varias partes (subconjuntos), y luego seleccionar varias partes de cada subconjunto para servir datos representativos. como casos de prueba. Este método es un método importante y comúnmente utilizado para diseñar casos de prueba de caja negra.
1) Dividir clases de equivalencia: Las clases de equivalencia se refieren a un subconjunto de campos de entrada. En este subconjunto, todos los datos de entrada equivalen a exponer errores en el programa. Es razonable suponer que probar valores representativos de una clase de equivalencia equivale a probar otros valores de esa clase. Por lo tanto, todos los datos de entrada se pueden dividir razonablemente en varias clases de equivalencia, y si se utiliza un dato en cada clase de equivalencia como condición de entrada de la prueba, se puede utilizar una pequeña cantidad de representatividad.
Clase de equivalencia válida: se refiere a un conjunto de datos de entrada que son razonables y significativos para la especificación del programa. Usando una clase de equivalencia válida, podemos verificar si el programa implementa la funcionalidad y el rendimiento especificados en la especificación.
Clase de equivalencia no válida: Justo lo contrario de la definición de clase de equivalencia válida.
Al diseñar casos de prueba, debemos considerar ambas clases de equivalencia, porque el software no solo debe poder recibir datos razonables, sino también soportar pruebas inesperadas. Estas pruebas pueden garantizar que el software tenga una mayor confiabilidad.
2) Métodos para dividir las clases de equivalencia: Los siguientes son seis principios para determinar las clases de equivalencia.
① Cuando la condición de entrada especifica el rango de valores o el número de valores, se puede establecer una clase de equivalencia válida y dos clases de equivalencia no válidas.
② Cuando la condición de entrada especifica el conjunto de valores de entrada o la condición de "qué se debe hacer", se pueden establecer clases de equivalencia válidas y clases de equivalencia no válidas.
③Si la condición de entrada es una cantidad booleana, se pueden determinar la clase de equivalencia válida y la clase de equivalencia no válida.
(4) Cuando se especifica un conjunto de valores de datos de entrada (asumiendo n), y el programa debe procesar cada valor de entrada por separado, se pueden establecer n clases de equivalencia válidas y una clase de equivalencia no válida.
⑤ Bajo la condición de que los datos de entrada deben cumplir con las reglas, puede establecer una clase de equivalencia válida (que cumpla con las reglas) y varias clases de equivalencia no válidas (que violen las reglas desde diferentes ángulos).
⑥Si se sabe que cada elemento en la clase de equivalencia dividida tiene una forma diferente de ser procesado por el programa, entonces la clase de equivalencia debe dividirse en clases de equivalencia más pequeñas.
3) Diseñe casos de prueba: después de establecer la clase de equivalencia, puede crear una tabla de clases de equivalencia para enumerar todas las clases de equivalencia divididas:
Las condiciones de entrada son válidas, las clases de equivalencia no son válidas, etc. Categorías de valencia
..........
..........
Luego divídelas de Diseño casos de prueba en clases de equivalencia:
①Asigne un número único a cada clase de equivalencia.
② Diseñe un nuevo caso de prueba para cubrir tantas clases de equivalencia válidas como sea posible. Repita este paso hasta que se cubran todas las clases de equivalencia válidas.
(3) Diseñe un nuevo caso de prueba para cubrir solo una clase de equivalencia no válida que no esté cubierta. Repita este paso hasta que todas las clases de equivalencia no válidas estén cubiertas.
Análisis de valores límite
El análisis de valores límite es un complemento del método de división de clases de equivalencia.
(1) Reflexiones sobre el método de análisis del valor límite:
La experiencia de pruebas a largo plazo nos dice que una gran cantidad de errores ocurren en los límites del rango de entrada o salida, no entre los rangos de entrada y salida internos. Por lo tanto, al diseñar casos de prueba para diversas condiciones de contorno, se pueden encontrar más errores.
Al diseñar casos de prueba utilizando el análisis de valores límite, primero se deben determinar las condiciones límite. Normalmente, los límites de las clases de equivalencia de entrada y salida son las condiciones de contorno en las que se debe centrar la prueba. Los valores que son exactamente iguales, ligeramente mayores o ligeramente menores que los límites deben seleccionarse como datos de prueba en lugar de valores típicos o cualquier valor de la clase de equivalencia.
(2) Principio de selección de casos de prueba basado en el método de análisis de valores límite:
1) Si la condición de entrada especifica un rango de valores, entonces la suma de los valores que acaban de alcanzar el límite de este rango Los valores justo fuera de los límites de este rango deben usarse como datos de entrada de prueba.
2) Si la condición de entrada especifica el número de valores, el número máximo, el número mínimo, el número menor que el número mínimo y el número mayor que el número máximo se utilizan como datos de prueba.
3) Utilice el principio anterior 1) según cada condición de salida especificada en la especificación.
4) Aplicar el principio 2) anterior según cada condición de salida especificada en la especificación.
5) Si el campo de entrada o el campo de salida proporcionado en la especificación del programa es un conjunto ordenado, el primer elemento y el último elemento del conjunto deben seleccionarse como caso de prueba.
6) Si se utiliza una estructura de datos interna en el programa, el valor en el límite de la estructura de datos interna debe seleccionarse como caso de prueba.
7) Analizar la especificación para encontrar otras posibles condiciones de contorno.
Método de falsa conjetura
Método de inferencia de errores: un método para diseñar casos de prueba basado en la experiencia y la intuición e inferir todos los errores posibles en el programa.
La idea básica del método de razonamiento de errores: enumerar todos los posibles errores y situaciones especiales propensas a errores en el programa y seleccionar los casos de prueba en consecuencia. Por ejemplo, muchos errores comunes de módulos enumerados en pruebas unitarias, errores encontrados en pruebas de productos anteriores, etc. Estos son resúmenes de experiencia. Además, cuando los datos de entrada y los datos de salida son 0, la tabla de entrada está en blanco o la tabla de entrada tiene solo una fila. Éstas son situaciones propensas a errores. Se pueden seleccionar ejemplos de estas situaciones como casos de prueba.
Método del diagrama causal
El método de división de clases de equivalencia y el método de análisis de valor límite introducidos anteriormente se centran en las condiciones de entrada, sin considerar la relación entre las condiciones de entrada, las combinaciones mutuas, etc. . Teniendo en cuenta la combinación mutua de condiciones de entrada, pueden surgir algunas situaciones nuevas. Sin embargo, comprobar combinaciones de condiciones de entrada no es fácil. Incluso si todas las condiciones de entrada se dividen en clases de equivalencia, existen bastantes combinaciones entre ellas. Por lo tanto, debemos considerar una forma adecuada para describir combinaciones de múltiples condiciones y generar múltiples acciones en consecuencia.
El resultado final del método del diagrama de causa y efecto es una tabla de decisiones, adecuada para comprobar varias combinaciones de condiciones de entrada del programa.
Pasos básicos para generar casos de prueba utilizando diagramas de causa y efecto:
(1) Analizar la descripción de la especificación del software, cuáles son las causas (es decir, condiciones de entrada o clases de equivalencia de condiciones de entrada) y resultados (es decir, condición de salida) y asignar un identificador a cada causa y efecto.
(2) Analice la semántica en la descripción de la especificación del software, descubra la correspondencia entre causas y resultados y dibuje un diagrama de causa y efecto basado en estas relaciones.
(3) Debido a limitaciones gramaticales o ambientales, algunas combinaciones entre causas y efectos no son imposibles. Para representar estos casos especiales, se utilizan símbolos en el diagrama de causa y efecto para representar restricciones o limitaciones.
(4) Convierta el diagrama de causa y efecto en una tabla de decisiones.
(5) Saque cada columna de la tabla de juicio como base para diseñar casos de prueba.
Los casos de prueba generados por el diagrama de causa y efecto (bajo la relación parcial y combinada) contienen todas las situaciones de datos de entrada verdaderos y falsos. El número de casos de prueba es el más pequeño a medida que aumentan los datos de entrada. , el número de casos de prueba es lineal.
Las tablas de decisión se utilizan en el método del diagrama de causa y efecto. Las tablas de decisión son herramientas para analizar y expresar diferentes operaciones bajo múltiples condiciones lógicas.
En los primeros días del desarrollo de la programación, las tablas de decisiones se utilizaban como herramienta auxiliar para escribir programas porque podían expresar relaciones lógicas complejas y combinaciones de diversas condiciones de forma concreta y clara.
La tabla de decisiones suele constar de cuatro partes.
Stub condicional: enumera todas las condiciones del problema. Generalmente se cree que el orden en que se enumeran las condiciones no es importante.
Apéndice de acción: enumera las posibles acciones especificadas por el problema. El orden de estas acciones no está restringido.
Entrada de condición: enumera el valor de la condición en su columna izquierda, junto con todos los posibles valores verdaderos y falsos.
Elementos de acción: enumera las acciones que se deben realizar en diversas condiciones.
Regla: Un valor específico para cualquier combinación de condiciones y la acción correspondiente a realizar. La columna de la tabla de decisiones que recorre los elementos de condición y los elementos de acción es la regla. Obviamente, hay tantas reglas como conjuntos de valores de condición enumerados en la tabla de decisiones, es decir, hay tantas columnas de elementos de condición y elementos de acción.
Pasos para establecer una tabla de decisiones: (según especificaciones del software)
①Determinar el número de reglas. Si hay n condiciones, cada condición tiene dos valores (0, 1), por lo que existen reglas.
② Enumere todas las pilas de condiciones y pilas de acciones.
③Complete los elementos condicionales.
④ Complete los elementos de acción. Espere el formulario de sentencia preliminar.
⑤ Simplifica y fusiona reglas similares (misma acción).
B. Beizer señaló las condiciones adecuadas para usar tablas de decisión para diseñar casos de prueba:
La especificación se proporciona en forma de tabla de decisión y también se puede convertir fácilmente en una. tabla de decisiones.
El orden de las condiciones no afecta ni afectará qué acciones se realizan.
③El orden de las reglas no afecta ni afectará qué operaciones se realizan.
④Cada vez que se han cumplido las condiciones de una regla y se ha determinado la operación a realizar, no es necesario comprobar otras reglas.
⑤Si se cumple una regla, se realizarán múltiples operaciones y el orden en que se realicen estas operaciones no importa.
Ventajas de las pruebas de caja negra
1. Básicamente, a nadie le importa. Si el programa deja de ejecutarse, generalmente se debe a que el programa bajo prueba falló.
2. Después de diseñar los casos de prueba, el siguiente trabajo es divertido. Por supuesto, lo más deprimente es determinar la causa del bloqueo.
Desventajas de las pruebas de caja negra
1. Los resultados dependen del diseño del caso de prueba. El diseño de casos de prueba proviene en parte de la experiencia, y vale la pena aprender de OUSPG.
2. No existe el concepto de transición estatal. En la actualidad, existen básicamente algunos ejemplos exitosos de PDU, pero es imposible realizar una transferencia de estado para el programa que se está probando.
3. Para las pruebas sin el concepto de estado, es más problemático encontrar y determinar los casos de prueba que hacen que el programa falle. Los casos de prueba circundantes que puedan aparecer deben confirmarse individualmente. En lo que respecta a las pruebas con estado, es aún más problemático, especialmente si no es causado por un solo caso de prueba. Estos son más destacados en el tema del montón.
Selección de herramientas de prueba de caja negra (pruebas funcionales)
Entonces, ¿cómo completar las pruebas funcionales de manera eficiente? Sin duda, es muy importante elegir una herramienta de prueba funcional adecuada y formar un equipo de usuarios de herramientas de alta calidad. Aunque en esta etapa hay algunas empresas de servicios de software que participan en proyectos de subcontratación de pruebas funcionales sin utilizar ninguna herramienta de prueba funcional. A corto plazo, la rentabilidad de estas empresas es aceptable, pero a largo plazo es probable que sean sustituidas por empresas de servicios de software con un mayor grado de automatización.
Actualmente existen muchas herramientas software para pruebas funcionales y constantemente se introducen herramientas para diferentes arquitecturas. Este artículo se centra en una herramienta de prueba automatizada típica, WinRunner de Mercury.
WinRunner es una herramienta de prueba funcional de software de nivel empresarial que se utiliza para probar si las aplicaciones pueden ejecutarse como se espera. Al capturar, detectar y simular automáticamente las interacciones del usuario, WinRunner puede identificar la mayoría de los defectos funcionales del software, asegurando que las aplicaciones que abarcan múltiples puntos funcionales y bases de datos se lanzarán sin fallas funcionales.
Las características de WinRunner son: en comparación con las pruebas manuales tradicionales, las pruebas de puntos de función se pueden completar rápidamente y en lotes, y se puede realizar la misma acción en el mismo script de prueba, lo que elimina los malentendidos causados por las pruebas manuales; Además, también puede realizar la misma acción repetidamente, y la parte más aburrida del trabajo de prueba puede ser completada por la máquina; admite scripts de prueba de estilo programa, y un ingeniero de pruebas altamente calificado puede usarlo para completar tareas extremadamente complejas; Pruebe utilizando comodines, macros, declaraciones condicionales, declaraciones de bucle, etc. para reutilizar los scripts de prueba. Proporciona un buen entorno de integración y soporte para la mayoría de los lenguajes de programación y tecnologías de Windows, lo que brinda una gran comodidad para las pruebas funcionales de aplicaciones basadas en la plataforma Windows.
El flujo de trabajo de WinRunner se puede dividir aproximadamente en los siguientes seis pasos:
1 Identificar la GUI de la aplicación
En WinRunner, podemos usar la GUI. Espía para identificar varios objetos GUI. Una vez identificados, WinRunner los almacena en un archivo de mapeo GUI. Proporciona dos modos de archivo de mapeo de GUI: archivo de mapeo de GUI global y archivo de mapeo de GUI por prueba. La mayor diferencia es que este último genera un archivo GUI para cada script de prueba, que se puede crear, almacenar y cargar automáticamente. Este modo se recomienda para principiantes. Sin embargo, este modo no es fácil de describir cambios en objetos y la eficiencia es relativamente baja, por lo que el primero es una mejor opción para probadores experimentados y solo genera un archivo GUI, lo que hace que el script de prueba sea más fácil de mantener y más eficiente. .
2. Cree un script de prueba
Al crear un script de prueba, generalmente se registra primero y luego se agrega manualmente el TSL (lenguaje de script de prueba similar al lenguaje C) requerido. la grabación en el guión. Hay dos modos para grabar guiones: sensible al contexto y simulación. La elección depende principalmente de si se simula la trayectoria del mouse. Cuando se requiere reproducción, generalmente se selecciona la simulación. Durante la grabación, estos dos modos se pueden cambiar mediante la tecla F2.
Si observa la escala y los puntos de función del software moderno, comprenderá que las pruebas funcionales ya han superado la etapa en la que se pueden completar escribiendo en el teclado y haciendo clic con el mouse. Las pruebas de rendimiento son un medio eficaz para controlar el rendimiento del sistema y desempeñan un papel importante en la verificación de la capacidad del software, la planificación de la capacidad, el ajuste del rendimiento, la reparación de defectos, etc.
3. Depurar el script de prueba.
En WinRunner, hay una barra de herramientas de depuración especial para depurar scripts de prueba. Puede utilizar pasos individuales, pausas, puntos de interrupción, etc. Controle y rastree scripts de prueba y vea varios valores de variables.
4. Ejecute el script de prueba en la nueva aplicación.
Cuando se lance una nueva versión de la aplicación, probaremos varias funciones de la aplicación, incluidas funciones nuevas. En este momento, por supuesto, es imposible volver a grabar y escribir todos los guiones de prueba. Podemos utilizar scripts existentes para ejecutar estos scripts de prueba en lotes para probar si los puntos de función antiguos funcionan correctamente. Puede utilizar el comando de llamada para cargar cada script de prueba. También puede agregar varios scripts TSL al comando de llamada para aumentar las capacidades de procesamiento por lotes.
5. Analizar los resultados de las pruebas
En todo el proceso de prueba, el análisis de los resultados de las pruebas es el más importante. A través del análisis, se pueden descubrir varios defectos funcionales de la aplicación. Después de ejecutar un script de prueba, se generará un informe de prueba. A partir de este informe de prueba, podemos encontrar los defectos funcionales de la aplicación, la diferencia entre los resultados reales y los resultados esperados, y los distintos cuadros de diálogo generados durante la prueba.
6. Defectos de devolución
Después de analizar el informe de prueba, informe varios defectos en la aplicación de acuerdo con el proceso de prueba y luego envíe estos defectos al personal designado para su modificación y mantenimiento.
Métodos comunes de prueba funcional
La prueba funcional consiste en verificar las funciones del producto y probarlas una por una de acuerdo con los casos de prueba funcionales para verificar si el producto cumple con los requisitos del usuario. Los métodos de prueba comunes son los siguientes:
1. Verificación del enlace de la página: si cada enlace tiene una página correspondiente y si el cambio entre páginas es correcto.
2. Verificación de dependencia: ¿eliminar/agregar un proyecto afectará a otros proyectos? Si es así, ¿son correctos estos efectos?
3. Compruebe si las funciones del botón son correctas: como actualizar, cancelar, eliminar, guardar, etc.
4. Verificación de la longitud de la cadena: ingrese contenido que exceda la longitud de la cadena especificada en el requisito para ver si el sistema comete un error al verificar la longitud de la cadena.
5. Verificación del tipo de carácter: ingrese otros tipos de contenido donde se debe ingresar el tipo de contenido especificado (por ejemplo, ingrese otros tipos de caracteres donde se debe ingresar el tipo entero) para ver si el sistema verifica el carácter. escriba y se informará un error.
6. Verificación de signos de puntuación: el contenido de entrada incluye varios signos de puntuación, especialmente espacios, comillas y la tecla de retorno de carro. Compruebe si el procesamiento del sistema es correcto.
7. Procesamiento de caracteres chinos: ingrese chino en un sistema que pueda ingresar chino para ver si hay caracteres confusos o errores.
8. Verifique la integridad de la información mostrada: al verificar y actualizar la información, verifique si se muestra toda la información completa y si la información mostrada es consistente con la información agregada. .
9. Información duplicada: ingrese nombres o ID duplicados en alguna información que debe tener un nombre y ser única para ver si el sistema la ha procesado y si se informará un error. Los nombres duplicados incluyen si distinguen entre mayúsculas y minúsculas, si se ingresan espacios antes y después de la entrada y si el sistema los maneja correctamente.
10. Verifique la función de eliminación: en algunos lugares donde se pueden eliminar varios mensajes a la vez, presione "Eliminar" sin seleccionar ningún mensaje para ver cómo lo maneja el sistema y si habrá algún error; luego seleccione uno o varios mensajes y elimínelos para ver si se procesan correctamente.
11. Verifique si agregar y modificar es consistente: verifique si los requisitos para agregar y modificar información son consistentes. Si agrega un elemento requerido, la modificación también debe registrarse al agregar un elemento especificado; entero, la modificación también debe ser un número entero.
12. Verifique y modifique nombres duplicados: al modificar, modifique los elementos que no se pueden repetir en el contenido existente para ver si se procesarán y se informará un error. También preste atención a si se informarán errores con sus propios duplicados.
13. Envíe el formulario repetidamente: Si un registro se ha enviado correctamente, envíelo nuevamente después de regresar para ver si el sistema lo ha procesado.
14. Verifique la reutilización del botón Atrás: si hay una reversión, regrese a la página original, regrese nuevamente, repita varias veces para ver si hay algún problema.
15. Verificación de búsqueda: ingrese el contenido que existe y no existe en el sistema donde hay una función de búsqueda y verifique si los resultados de la búsqueda son correctos. Si puede ingresar varias condiciones de búsqueda, puede agregar condiciones razonables e irrazonables al mismo tiempo para ver si el sistema las procesa correctamente.
16. Ubicación de la información de entrada: Ingrese la información donde permanece el cursor. Preste atención a si el cursor y la información ingresada saltarán a otros lugares.
17. Verificación de carga y descarga de archivos: si la función de carga y descarga de archivos está implementada y si los archivos cargados se pueden abrir. ¿Cuáles son las reglas para el formato de los archivos cargados? ¿El sistema proporciona alguna información explicativa? Compruebe si el sistema puede hacerlo.
18. Verificación de elementos requeridos: si el sistema maneja todos los elementos no completados que deben completarse y si hay un mensaje para los elementos requeridos, como agregar * antes de los elementos requeridos.
19. Comprobación de teclas de acceso directo: si se admiten teclas de acceso directo comunes, como Ctrl+C Ctrl+V retroceso, etc. y si los accesos directos también están restringidos para ciertos campos que no permiten la entrada de información, como la selección de persona y la selección de fecha.
20. Verificación de la tecla Intro: presione la tecla Intro directamente después de la entrada para ver cómo lo maneja el sistema y si se informa un error.