During software development, developers often make numerous modifications to the software to address existing issues or implement new features. However, certain changes may inadvertently have a detrimental impact on the overall system performance. To ensure that the performance of new software releases does not degrade, existing practices rely on system-level performance testing, such as load testing, or component-level performance testing to detect performance regressions. However, performance testing for the entire system is often expensive and time-consuming, posing challenges to adapting to the rapid release cycles common in modern DevOps practices. System-level performance testing cannot be conducted until the system is fully built and deployed. On the other hand, component-level testing focuses on isolated components, neglecting overall system performance and the impact of system workloads. In this paper, we propose a novel approach to early detection of performance regressions by bridging the local performance data generated by component-level testing and the system-level architectural models. Our approach uses local performance data to identify deviations at the component level, and then propagate these deviations to the architectural model. We then use the architectural model to predict regressions in the performance of the overall system. We evaluate our approach on two open-source benchmark systems and show that it can effectively detect end-to-end system performance regressions from local performance deviations with different intensities and under various system workloads. More importantly, our approach can detect regressions as early as in the development phase, in contrast to existing approaches that require the system to be fully built and deployed. Our approach is lightweight and can complement traditional system performance testing when testing resources are scarce.
翻译:在软件开发过程中,开发者通常会对软件进行大量修改以解决现有问题或实现新功能。然而,某些变更可能会无意中对系统整体性能产生不利影响。为确保新软件版本的性能不会下降,现有实践依赖于系统级性能测试(如负载测试)或组件级性能测试来检测性能回归。但全系统性能测试往往成本高昂且耗时,难以适应现代DevOps实践中常见的快速发布周期。系统级性能测试需待系统完全构建部署后方可实施。另一方面,组件级测试聚焦于孤立组件,忽略了系统整体性能及系统工作负载的影响。本文提出一种新颖的性能回归早期检测方法,通过关联组件级测试产生的局部性能数据与系统级架构模型实现。该方法利用局部性能数据识别组件级偏差,进而将偏差传播至架构模型,最终通过架构模型预测系统整体性能回归。我们在两个开源基准系统上评估了该方法,结果表明其能有效检测不同强度局部性能偏差及各类系统工作负载下的端到端系统性能回归。更重要的是,相较于需系统完全构建部署的现有方法,本方法可在开发阶段实现早期回归检测。该方法具有轻量化特性,在测试资源有限时可作为传统系统性能测试的有效补充。