Pregunta

Estoy introduciendo pruebas de integración automatizadas en una aplicación madura que hasta ahora solo se ha probado manualmente.

La aplicación está basada en Windows y se comunica con una base de datos MySQL.

¿Cuál es la mejor manera (incluidos los detalles de las herramientas recomendadas) de mantener las pruebas independientes entre sí en términos de las transacciones de la base de datos que ocurrirán?

(Las modificaciones al código fuente de la aplicación para este propósito particular no son una opción).

¿Fue útil?

Solución

¿Cómo estás verificando los resultados?

Si necesita consultar la base de datos (y parece que probablemente lo haga) para obtener resultados, entonces estoy de acuerdo con Kris K, excepto que me esforzaría por reconstruir la base de datos después de cada caso de prueba, no solo de cada suite.

Esto ayuda a evitar peligrosos pruebas de interacción

En cuanto a herramientas, recomendaría Unidad Cpp.Realmente no estás haciendo pruebas unitarias, pero no debería importar ya que el marco xUnit debería brindarte el marco de configuración y desmontaje que necesitarás para configurar automáticamente tu accesorio de prueba

Obviamente, esto puede resultar en pruebas de ejecución lenta, dependiendo del tamaño de la base de datos, la población, etc.Es posible que pueda adjuntar/desconectar bases de datos en lugar de eliminarlas/reconstruirlas.

Si está interesado en realizar más investigaciones, consulte Patrones de prueba XUnit.Es un buen libro y un buen sitio web para este tipo de cosas.

Y gracias por automatizar :)

Mella

Otros consejos

Puede volcar/restaurar la base de datos para cada conjunto de pruebas, etc.Dado que está automatizando esto, puede ser algo en la funcionalidad de configuración/desmontaje.

Solía ​​restaurar la base de datos en la función SetUp de la clase de prueba unitaria relacionada con la base de datos.De esta manera se aseguró que cada prueba se realice en las mismas condiciones.

Puede considerar preparar contenido de base de datos especial para las pruebas, es decircon menos datos que la versión de producción actual (para mantener los tiempos de restauración razonables).

Creo que el mejor entorno para este tipo de pruebas es VMWare o su equivalente.Configure su base de datos, registro de transacciones, etc., luego registre todo: la base de datos y la configuración.Luego, para volver a realizar la prueba, vuelva a cargar la imagen y la base de datos e inicie las pruebas.Esto todavía requiere el mantenimiento de las pruebas a medida que cambia el sistema, pero al menos las pruebas son repetibles, lo cual es uno de los mayores desafíos en las pruebas de integración.

Para la automatización de pruebas, mucha gente usa Perl, pero hemos descubierto que los programas Perl crecen como Topsy y se vuelven complicados.El uso de Python como lenguaje de secuencias de comandos (ejecutamos pruebas de C++) vale la pena si está intentando crear una serie de pruebas estructuradas.

Como @Kris K. dice que descargar y restaurar la base de datos entre cada prueba probablemente será el camino a seguir.

Dado que está pensando en realizar pruebas externas a la aplicación, buscaría crear el marco de prueba en un lenguaje en el que pueda aprovechar mejores herramientas de prueba.

Si creó el marco de prueba en Java, podría aprovechar unidad conjunta y potencialmente incluso algo como Fitness.

No piense que sólo porque la aplicación bajo prueba sea C++ significa que está atrapado usando C++ para sus pruebas automatizadas.

Pruebe AnyDbTest, creo que es la herramienta que está encontrando.(www.anydbtest.com).

Características:

  • 1.Escribir un caso de prueba con código Xml, no con código Java/C++/C#/VB.No necesita esas costosas herramientas de programación.

  • 2. Admite todas las bases de datos populares, como Oracle/SQL Server/My SQL

  • 3. Se admiten muchos tipos de afirmaciones, como StrictEqual, SetEqual, IsSupersetOf, Overlaps y RecordCountEqual, etc.Además, la mayoría de las afirmaciones pueden anteponer la lógica, no el operador.

  • 4.Permite utilizar una hoja de cálculo Excel/Xml como fuente de datos para las pruebas.Como sabe, la hoja de cálculo de Excel sirve para crear/editar y mantener fácilmente los datos de prueba.

  • 5. Admite el modelo de prueba de zona de pruebas. Si se realiza una prueba en la zona de pruebas, todas las operaciones de la base de datos en cada base de datos se revertirán, lo que significa que se desharán todos los cambios.

  • 6.Permite realizar el bombeo de datos desde una base de datos/Excel a la base de datos de destino en la fase de inicialización y finalización de la prueba.Esta es una forma sencilla de preparar los datos de prueba para la prueba.

  • 7. Pruebas únicas de bases de datos de diferentes tipos, lo que significa que el conjunto de resultados de destino y de referencia puede provenir de dos bases de datos, incluso una es SQL Server y la otra es Oracle.

  • 8.Establezca la comparación de estilos para el conjunto de registros.AnyDbTest le dirá cuál es la intersección, excedente o ausencia entre los dos conjuntos de registros.

  • 9. Comparación de estilos secuenciales para conjuntos de registros o valores escalares.Significa que los dos conjuntos de resultados se compararán en su secuencia original.

  • 10.Permitir exportar el conjunto de resultados de la declaración SQL a un archivo Xml/Excel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top