PerfLearner: Learning from Bug Reports to Understand and Generate Performance Test Frames

PerfLearner: Learning from Bug Reports to Understand and Generate Performance Test Frames
复制标题

DOI:
10.1145/3238147.3238204
复制
发表时间:
2018-09
期刊:
2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)
影响因子:
--
通讯作者:
Xue Han;Tingting Yu;D. Lo
Xue Han;Tingting Yu;D. Lo
中科院分区:
其他
文献类型:
--
作者:
Xue Han;Tingting Yu;D. Lo

文献摘要

相似文献

软件性能对于确保软件产品的质量很重要。性能错误定义为导致大量性能降低的编程错误,可能会导致系统缓慢和用户体验差。尽管已经对自动化性能测试(例如测试案例生成)进行了一些研究,但主要思想是选择工作负载值以增加程序执行时间。这些技术通常假设初始测试用例具有输入参数的正确组合,并专注于某些输入参数的不断发展值。但是,对于高度可配置的现实词应用程序,这种假设可能无法得出,其中输入参数的组合可能非常大。在本文中,我们手动分析了来自三个大型开源项目的300个错误报告 - Apache HTTP服务器,MySQL和Mozilla Firefox。我们发现1)暴露性能错误通常需要多个输入参数的组合,而2)某些输入参数经常参与暴露性能错误。在这些发现的指导下,我们设计并评估了一种自动化方法,即Perflearner,从性能错误报告的描述中提取执行命令和输入参数,并使用它们来生成测试框架以指导实际的性能测试案例生成。
Software performance is important for ensuring the quality of software products. Performance bugs, defined as programming errors that cause significant performance degradation, can lead to slow systems and poor user experience. While there has been some research on automated performance testing such as test case generation, the main idea is to select workload values to increase the program execution times. These techniques often assume the initial test cases have the right combination of input parameters and focus on evolving values of certain input parameters. However, such an assumption may not hold for highly configurable real-word applications, in which the combinations of input parameters can be very large. In this paper, we manually analyze 300 bug reports from three large open source projects - Apache HTTP Server, MySQL, and Mozilla Firefox. We found that 1) exposing performance bugs often requires combinations of multiple input parameters, and 2) certain input parameters are frequently involved in exposing performance bugs. Guided by these findings, we designed and evaluated an automated approach, PerfLearner, to extract execution commands and input parameters from descriptions of performance bug reports and use them to generate test frames for guiding actual performance test case generation.