6

Estoy desarrollando una utilidad de línea de comandos que tiene MUCHOS indicadores. Un comando típico es el siguiente:¿Existe un estándar establecido para probar los argumentos de línea de comando?

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E 

En la mayoría de los casos, un mensaje de 'éxito' se imprime, pero todavía quiero para verificar frente a otras fuentes como una base de datos externa para asegurar el éxito real.

Estoy empezando a crear pruebas de integración y no estoy seguro de la mejor manera de hacerlo. Mis principales preocupaciones son:

  1. Hay muchas combinaciones de banderas, ¿cómo sé qué combinaciones probar? Si hace los cálculos para los 10 indicadores que se pueden usar juntos ...
  2. ¿Es necesario probar las permutaciones de indicadores?
  3. Cómo crear un marco capaz de automatizar las pruebas y luego verificar los resultados.
  4. Cómo realizar un seguimiento de un gran número de banderas y proporcionar un pedido para que sea fácil saber qué combinaciones se han implementado y cuáles no.

Pensar en escribir casos individuales y verificar los resultados en un formato de prueba de unidad es desalentador.

¿Alguien sabe de un patrón que se puede utilizar para automatizar este tipo de prueba? Tal vez incluso el software que intenta resolver este problema? ¿Cómo las personas que trabajan en las herramientas de línea de comandos de GNU prueban su software?

Respuesta

2

Creo que esto es muy específico para su aplicación.

En primer lugar, ¿cómo se determina el éxito de la ejecución de su aplicación? ¿Es un código de resultado? ¿Es algo impreso en la consola?

Para la pregunta 2, depende de cómo analizar esos indicadores en su aplicación. La mayoría de las veces, el orden de las banderas no es importante, pero hay casos en que sí lo es. Espero que no necesites probar permutaciones de banderas, porque agregaría muchos casos para probar.

En un caso general, debe analizar cuál es el impacto de cada indicador. Es posible que una bandera no interfiera con las otras, y solo necesita ser probada una vez. Este es también el caso de las banderas que están destinadas a ser utilizadas solas (--help o --version, por ejemplo). También debe analizar qué valores debe probar para cada indicador. Por lo general, desea probar cada tipo de posible valor válido y cada tipo de posibles valores no válidos.

Creo que se podría escribir un script bash simple para realizar las pruebas, o cualquier lenguaje de scripts, como Python. Al usar bucles anidados, puede probar, para cada indicador, los valores posibles, incluidas las pruebas de valores inválidos y el caso donde no se establece el indicador. Produciré una matriz multidimensional de resultados, que debería analizarse para ver si los resultados se ajustan a lo esperado.

+0

Gracias por los comentarios. En la mayoría de los casos, los comandos producen un mensaje de "éxito"; sin embargo, se manipula una entidad externa al comando. Así que tengo que hacer un trabajo extra para la verificación (como consultar una base de datos). Voy a jugar con la idea de los bucles anidados, sin embargo, parece que sería difícil mantener la prueba organizada de esa manera. – trinth

1

Cuando escribo aplicaciones (en lenguajes de scripts), tengo una función que analiza una cadena de línea de comandos. Obtengo el archivo que estoy desarrollando y la prueba de unidad que funciona directamente en vez de involucrar el shell.

Cuestiones relacionadas