¿Alguien tiene alguna experiencia con una herramienta que genera cadenas de prueba a partir de una gramática BNF que luego podría alimentar a una prueba unitaria?Generación de casos de prueba de gramática BNF
Respuesta
No tengo una respuesta a la pregunta de la herramienta, pero diré que es bastante fácil en cualquier lenguaje de procesamiento de texto (perl/python/etc) generar oraciones aleatorias de una gramática BNF y algo más detallada en un lenguaje más grande (Java/C/etc.), pero no debería ser demasiado difícil de implementar.
El problema con esto, por supuesto, es que solo puede generar cadenas en la gramática, y a menos que su gramática sea muy simple, el espacio de prueba es infinitamente grande.
He hecho exactamente lo que hazzen comentado (usando una DSL incorporada en un lenguaje de scripting). Fue un ejercicio levemente interesante, pero a excepción de las pruebas más básicas de, p. análisis, no fue terriblemente útil. La mayoría de mis pruebas más interesantes tienen que ver con relaciones más sofisticadas de las que uno puede expresar fácilmente en BNF (o cualquier otra gramática libre de contexto).
Si, por ejemplo, está desarrollando un compilador, es probable que tenga un tipo de datos de árbol de sintaxis abstracta. Si es así, entonces podría escribir una función para generar un AST aleatorio; con eso, puede imprimirlo en una cadena y alimentarlo a su prueba unitaria. Se garantiza que es un programa válido de esta manera, ya que comenzó con su AST.
Si estuviera escribiendo un compilador en Haskell o ML, esto es lo que haría, usando QuickCheck.
- 1. Herramientas de generación de casos de prueba
- 2. Cualquier BNF IDE con características de prueba
- 3. ¿Cuál es el BNF de BNF? es decir, ¿cómo definimos una meta gramática BNF?
- 4. gramática de C++ BNF con ejemplos de análisis/comparación
- 5. ¿Hay una gramática similar a BNF para describir LLVM IR?
- 6. Generación automática de casos de prueba unitarios para .NET y Java
- 7. Marco de prueba de Google - Dependencia entre casos de prueba
- 8. Casos de prueba para entradas de cadena
- 9. Catálogos de prueba: errores comunes o casos de prueba
- 10. Casos de prueba VS comunicado ASERCIÓN
- 11. Casos de prueba con JIRA o Confluence
- 12. ¿Cómo administrar casos de prueba usando Confluence?
- 13. Integrar casos de prueba HPTP con PHPUnit
- 14. ¿JUnit ejecuta casos de prueba secuencialmente?
- 15. ¿Existe una gramática formal del lenguaje js (idealmente BNF) (o solo un subconjunto de texto mecanografiado)?
- 16. Lexer/analizador para generar código Scala a partir de la gramática BNF
- 17. ¿Cuál es la forma más fácil de saber si una gramática BNF es ambigua o no?
- 18. Sintaxis de Gramática y Lingüística
- 19. Prueba de generación de gráficos con JUnit
- 20. Generación de prueba de unidad automática incorporada C
- 21. de Python creación unittest y dinámica de casos de prueba
- 22. ¿Dónde puedo encontrar la gramática BNF o YACC estándar para el lenguaje C++?
- 23. ¿Dónde encontrar buenas plantillas/ejemplos de casos de prueba?
- 24. ¿Maven Surefire ejecuta casos de prueba secuencialmente de forma predeterminada?
- 25. Cómo ejecutar casos de prueba explícitos de Nunit
- 26. Cómo establecer la secuencia de casos de prueba en xUnit
- 27. Scala: Definición de casos de prueba basados en la carpeta
- 28. Prueba de unidad de Visual Studio: varios casos como Nunit
- 29. ¿Cómo ejecutar todos los casos de prueba JUnit de NetBeans?
- 30. notación BNF de T-SQL