Abstract
Описано особливості проблеми тестування програмного забезпечення (ПЗ) за допомогою автоматизованих систем генерування модульних тестів. Проаналізовано методи автоматизованого модульного тестування, що використовуються для тестування ПЗ. Виконано класифікацію методів генерування модульних тестів на підставі вхідних даних і засобів для генерування тестів. Показано, що компільований байт-код та граф контролю потоку є основними видами вхідних даних, а символьне виконання є основним методом для генерування модульних тестів. Систематизовано новітні методи автоматизованого модульного тестування: символьне виконання з використанням штучних нейронних мереж, додаткової логіки та оптимізаційних алгоритмів. Проаналізовано можливості застосування мета- та гіперевристик системами автоматизованого генерування модульних тестів. Побудовано їх ієрархічну модель: до четвертого рівня віднесено пошукові алгоритми для аналізу умов у коді; до третього – SMT-бібліотеки, які містять множину алгоритмів першого рівня та стратегії їх використання; до другого – поєднання результатів роботи SMT-бібліотеки з результатами роботи додаткової логіки; до першого – алгоритм управління, що керують процесом генерування тестів. Описано можливості виконання паралельних обчислень на всіх рівнях ієрархії. Продемонстровано наявність вузьких місць у реалізаціях систем генерування модульних тестів. Запропоновано розподіл завдання генерування модульних тестів на підставі рівнів ієрархії моделі, що дає змогу обійти вузькі місця поточних систем та покращити масштабованість. Розроблено UML-діаграму класів на запропонованій моделі. Запропоновано одночасне використання метаевристик на всіх ієрархічних рівнях моделі для підвищення якості згенерованих тестів, що покращить універсальність і модульність системи. Обґрунтовано потребу подальшого розроблення нових методів для підвищення ефективності алгоритмів генерування тестів та якості тестування.
Publisher
Ukrainian National Forestry University
Reference22 articles.
1. Anand, S., Burke, E. K., Chen, T. Y., Clark, J., Cohen, M. B., Grieskamp, W., & Zhu, H. (2013). An orchestrated survey of methodologies for automated software test case generation. Journal of Systems and Software, 86(8), 1978-2001. https://doi.org/10.1016/j.jss.2013.02.061
2. Bjørner, N. (2018). Z3 and SMT in industrial R&D. Springer, Cham. In International Symposium on Formal Methods, 675–678. https://doi.org/10.1007/978-3-319-95582-7_44
3. Bucur, S., Ureche, V., Zamfir, C., & Candea, G. (2011). Parallel symbolic execution for automated real-world software testing. Proceedings of the Sixth Conference on Computer Systems – EuroSys 11. https://doi.org/10.1145/1966445.1966463
4. Cadar, C., Dunbar, D., & Engler, D. R. (2008). Klee: unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, Vol. 8, 209–224.
5. Cadar, C., Ganesh, V., Pawlowski, P. M., Dill, D. L., & Engler, D. R. (2008). EXE. ACM Transactions on Information and System Security, 12(2), 1–38. https://doi.org/10.1145/1455518.1455522