Hemos acumulado una cantidad sustancial de pruebas unitarias para nuestro programa principal a lo largo de los años. Varios miles. El problema es que no tenemos una idea clara de qué pruebas tenemos porque hay muchas. Y eso es un problema porque no sabemos dónde somos débiles en las pruebas (o dónde tenemos duplicados).
Nuestra aplicación es un motor de informes. Por lo tanto, puede tener una plantilla que se utiliza para probar el análisis (leemos todas las propiedades de la tabla), combinando datos (¿mantuvimos las propiedades correctas de la tabla en la combinación), formateando la página final (es la tabla colocada correctamente en la página ), y / o el formato de salida (es el archivo DOCX creado correcto).
Agregue a esto lo que necesitamos probar. Tome el relleno alrededor de una celda de la tabla (usamos Word, Excel y PowerPoint para el diseño del informe). Tenemos que probar el relleno a través del salto de página, para una tabla dentro de una celda, celdas fusionadas verticalmente, celdas fusionadas horizontalmente, una celda fusionada vertical y horizontalmente que contiene una tabla con celdas fusionadas vertical y horizontalmente en la tabla interna, donde esa tabla se rompe en una página.
Entonces, ¿en qué categoría entra esa prueba? ¿Relleno de tabla, saltos de página, celdas anidadas, celdas fusionadas verticalmente, celdas fusionadas horizontales o algo más?
¿Y cómo documentamos estas categorías, nombramos las pruebas unitarias, etc.?
Actualización: varias personas han sugerido usar herramientas de cobertura para verificar que tengamos cobertura total. Desafortunadamente, esto es de uso limitado en nuestro caso porque los errores tienden a deberse a combinaciones específicas, por lo que es un código que ha sido probado, pero no en esa combinación.
Por ejemplo, ayer tuvimos un cliente que comenzó un marcador de Word al final de un ciclo forEach en su plantilla (un documento de Word) y lo finalizó al comienzo del siguiente ciclo forEach. Todo esto usó código que tiene pruebas unitarias en su contra, pero no habíamos pensado en la combinación de una plantilla que expandía un marcador que comenzaba a iniciarse 25 veces, luego terminaba 10 veces (los dos bucles forEach tenían un número diferente de filas).