Publicação científica
Search-Based Test Data Generation for SQL Queries
Os sistemas centrados em banco de dados dependem fortemente de consultas SQL para gerenciar e manipular seus dados. Esses comandos SQL podem variar desde seleções muito simples até consultas que envolvem diversas tabelas, subconsultas e operações de agrupamento. E, como acontece com qualquer parte importante do código, os desenvolvedores devem testar adequadamente as consultas SQL. Para testar completamente uma consulta SQL, os desenvolvedores precisam criar dados de teste que exercitem todos os alvos de cobertura possíveis em uma consulta, por exemplo, predicados JOINs e WHERE. E, de fato, esta tarefa pode ser desafiadora e demorada para consultas complexas. Estudos anteriores modelaram o problema de geração de dados de teste como um problema de satisfação de restrições e, com a ajuda de solucionadores SAT, geraram os dados necessários. No entanto, tais abordagens têm fortes limitações, como suporte parcial para consultas com JOINs, subconsultas e strings (que são comumente usadas em consultas SQL).
Neste artigo, modelamos a geração de dados de teste para consultas SQL como um problema baseado em pesquisa. Em seguida, elaboramos e avaliamos três abordagens diferentes baseadas em busca aleatória, busca aleatória tendenciosa e algoritmos genéticos (AGs). O GA, em particular, utiliza uma função de aptidão baseada em informações extraídas do plano de consulta física de um mecanismo de banco de dados como orientação de busca. Em seguida, avaliamos cada abordagem em 2.135 consultas extraídas de três softwares de código aberto e um sistema de software industrial. Nossos resultados mostram que o GA é capaz de cobrir completamente 98,6% de todas as consultas no conjunto de dados, exigindo apenas alguns segundos para cada consulta. Além disso, não sofre das limitações que afetam as técnicas de ponta.
A ferramenta está disponível em nosso GitHub.
Assista a um resumo do artigo em inglês:
Assista a um resumo do artigo em português:
BibTeX:
@inproceedings{aniche-evosql,
author = "Jeroen Castelein and Maurício Aniche and Mozhan Soltani and Annibale Panichella and Arie van Deursen",
title = "Search-Based Test Data Generation for SQL Queries",
booktitle = "Proceedings of 40th International Conference on Software Engineering (ICSE)",
year = 2018,
doi = "10.1145/3180155.3180202"
}