Continuous Integration (CI) requires efficient regression testing to ensure the software systems' quality without delaying the CI builds significantly. This warrants the need for techniques to reduce the regression testing time, such as Test Case Prioritization (TCP) techniques that prioritize the execution of test cases such that faults can be detected as early as possible. Many recent TCP studies employ various Machine Learning (ML) techniques to deal with the dynamic and complex nature of CI. However, most of them use a limited number of features for training ML models and evaluate the models on subjects, for which the application of TCP is meaningless mainly due to the low regression testing time and the low number of failed builds. In this work, we first define, at a conceptual level, a data model that captures data sources and their relations in a typical CI environment. Second, we define a set of comprehensive features that account for the data model and cover all features previously used by the related studies. Third, we develop methods and tools to collect the defined features for 25 open-source software systems with enough failed builds whose regression testing takes at least five minutes. Forth, relying on the collected dataset containing a comprehensive feature set, we answer four research questions concerning the cost of data collection time, the accuracy of ML-based TCP based on the comprehensive feature set, the impact of the features on the accuracy, decay of ML-based TCP model over time, and the trade-off between the cost of the data collection time and accuracy of ML-based TCP techniques.
翻译:连续整合 (CI) 需要高效的回归测试,以确保软件系统的质量,而不会延误 CIS 的建设。这要求需要技术来缩短回归测试时间,例如测试案例优先排序(TCP)技术,优先执行测试案例,以便尽早发现故障。许多最近的TCP研究采用各种机器学习(ML)技术,处理CI的动态和复杂性质。然而,大多数TCP使用数量有限的特征来培训ML模型并评估关于主题的模型,而TCP的应用主要由于低回归测试时间和低失败构建数量而毫无意义。在这项工作中,我们首先在概念层面确定一种数据模型,在典型的CI环境中记录数据来源及其关系。第二,我们确定一套全面特征,说明数据模型的动态和复杂性质,涵盖相关研究以前使用的所有特征。然而,我们开发了方法和工具,收集25个基于开源软件的、有足够失败基础的系统确定特征,其回归测试至少需要5分钟。依靠包含TCP全面时间精确性的数据集,我们首先在概念层面上对T-CP 的准确性、基于ML 成本的数据收集的4个成本特征进行了研究。