He escrito un programa en C++. ¿Cómo escribo un programa de prueba? ¿Existen requisitos específicos para el programa de prueba?
¡Hola! El programa de prueba es responsable de proporcionar datos de muestra al programa escrito, recopilar automáticamente los resultados de ejecución y brindar retroalimentación basada en los resultados.
El programa de prueba puede escribirse por separado o integrarse en el programa fuente como un módulo.
La declaración de depuración, con la que estamos familiarizados, es el ejemplo más simple de prueba. Antes de que existiera la función de "vista de apagado", para monitorear los resultados de las variables después de cada paso de la ejecución del programa, a menudo se agregaban algunas declaraciones que generaban variables clave.
Por ejemplo, el siguiente programa:
#incldue
usando el espacio de nombres std;
#define DEBUG
int main(){
int n;
#ifdef DEBUG
cout< #endif n = 3; cout< devuelve 0; } La función de DEBUG aquí es ver el valor de la variable n no inicializada. Generalmente se muestra -89******00 (0xcccccccc). Generalmente, dicha declaración también aparecerá después de operar el puntero y usará una declaración de depuración para generar el contenido de la memoria apuntada. por el puntero, etc. Esto es sólo una función del programa de prueba. Como se mencionó anteriormente, el programa de prueba debe proporcionar datos para probar la solidez y seguridad del programa, así como utilizar datos masivos para probar la eficiencia de la ejecución, etc. La selección de datos de prueba tiene los siguientes puntos clave para detectar diferentes características del programa: @ Intente incluir todos los elementos posibles en el conjunto de entrada y observe si el programa puede dar Resultado correcto. (Autenticidad) Por ejemplo: hay un programa que ingresa un plano de laberinto determinado y quiere probar la longitud del camino más corto. Entonces el laberinto de entrada debe incluir varias posibilidades: con y sin caminos, con y sin callejones sin salida, con bucles (para evitar bucles interminables durante la búsqueda), con salida en la esquina superior izquierda, en la esquina superior derecha, etc., todas debe ser considerado Entrar. El programa debe reaccionar correctamente ante cada situación. @ Preste atención a probar casos extremos y situaciones críticas. (Seguridad) Esto es para probar la solidez del programa. Los usuarios inevitablemente realizarán acciones ilegales, y el programa debe tener suficiente protección para hacer frente a estos accidentes. Por ejemplo: si escribes una calculadora simple, debes comprobar si el divisor es 0 la función de un programa es vincular el contenido de un documento a otro documento, entonces debes comprobarlo tú mismo Vincula tu; propio caso; etc. @ Preste atención al tamaño y aleatoriedad de los datos de entrada. (Eficiencia) El estándar para medir la eficiencia del programa debe considerar el desempeño con datos a gran escala. Los datos deben ser lo suficientemente aleatorios para evitar sorpresas. Por ejemplo: al comparar la eficiencia de varios algoritmos de clasificación diferentes, los datos seleccionados deben estar en orden aleatorio. En el caso de datos secuenciales: el algoritmo de burbuja es obviamente más rápido que la clasificación rápida, pero eso es por casualidad. @ Si es posible, también puedes probar la versatilidad y escalabilidad del programa (Versatilidad y compatibilidad) Un buen programa debe ser fácil de expandir y tener un alto valor de usabilidad. La mayor parte del software recibe parches constantemente, en lugar de derribarse y reescribirse. Los programas de prueba generalmente no pueden detectar estas dos características directamente. Sin embargo, los errores en las pruebas a veces pueden ayudarnos a mejorar la calidad de nuestros programas. Una vez escribí un programa de procesamiento de imágenes similar a Meituxiu Xiu. Estaba escrito en C++ y era bastante tosco. La entrada también debe controlarse mediante la línea de comando. Lo probé con una variedad de imágenes, incluidos colores sólidos, tonos de fondo obvios y puntos de ruido completamente caóticos. Las imágenes anteriores funcionaron muy bien, pero el programa generó una excepción al procesar la última imagen: después de la inspección, se descubrió que mi programa de procesamiento estaba escrito en base a imágenes de 24 bits y la última imagen era de 32 bits. Situaciones similares incluyen problemas con el funcionamiento del programa en sistemas de 32 y 64 bits, etc., en los que no entraré en detalles aquí. Para escribir un programa de prueba, generalmente se divide en dos módulos: generación de datos y detección de resultados. La primera parte del programa de prueba escribe los datos generados en un archivo. Después de que el programa lee el archivo y lo ejecuta, los resultados se escriben en otro archivo y luego la segunda parte del programa de prueba los compara. el resultado. Documentos y respuestas estándar. Para que un programa de prueba detecte robustez, solo se requiere la primera parte. Si ocurre una excepción cuando el programa a probar procesa datos, se realizarán las modificaciones correspondientes en función de los resultados. Para programas que prueban la eficiencia, se puede agregar un módulo de sincronización al programa a probar. El método de escritura específico es el siguiente: #include #define CHECK_TIME int main(){ / /... .intput #ifdef CHECK_TIME reloj t start = reloj(); #endif #ifdef CHECK_TIME cout << "Tiempo de ejecución: " << reloj() - inicio << " ms." << endl; #endif Bueno, eso es todo, espero que te ayude!