Efficient Dependency Detection for Safe Java']Java Test Acceleration

被引:49
作者
Bell, Jonathan [1 ]
Kaiser, Gail [1 ]
Melski, Eric [2 ]
Dattatreya, Mohan [2 ]
机构
[1] Columbia Univ, 500 West 120th St, New York, NY 10027 USA
[2] Elect Cloud Inc, San Jose, CA USA
来源
2015 10TH JOINT MEETING OF THE EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND THE ACM SIGSOFT SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE 2015) PROCEEDINGS | 2015年
基金
美国国家科学基金会;
关键词
Test dependence; detection algorithms; empirical studies;
D O I
10.1145/2786805.2786823
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Slow builds remain a plague for software developers. The frequency with which code can be built (compiled, tested and packaged) directly impacts the productivity of developers: longer build times mean a longer wait before determining if a change to the application being built was successful. We have discovered that in the case of some languages, such as Java, the majority of build time is spent running tests, where dependencies between individual tests are complicated to discover, making many existing test acceleration techniques unsound to deploy in practice. Without knowledge of which tests are dependent on others, we cannot safely parallelize the execution of the tests, nor can we perform incremental testing (i.e., execute only a subset of an application's tests for each build). The previous techniques for detecting these dependencies did not scale to large test suites: given a test suite that normally ran in two hours, the best-case running scenario for the previous tool would have taken over 422 CPU days to find dependencies between all test methods (and would not soundly find all dependencies) on the same project the exhaustive technique (to find all dependencies) would have taken over 103 years. We present a novel approach to detecting all dependencies between test cases in large projects that can enable safe exploitation of parallelism and test selection with a modest analysis cost.
引用
收藏
页码:770 / 781
页数:12
相关论文
共 34 条
  • [1] Ball T., 1998, Software Engineering Notes, V23, P134, DOI 10.1145/271775.271802
  • [2] Bell J., 2015, IEEE SOFTWARE RELEAS
  • [3] Unit Test Virtualization with VMVM
    Bell, Jonathan
    Kaiser, Gail
    [J]. 36TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2014), 2014, : 550 - 561
  • [4] Bell J, 2013, PROCEEDINGS OF THE 35TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2013), P362, DOI 10.1109/ICSE.2013.6606582
  • [5] Automating regression test selection based on UML designs
    Briand, L. C.
    Labiche, Y.
    He, S.
    [J]. INFORMATION AND SOFTWARE TECHNOLOGY, 2009, 51 (01) : 16 - 30
  • [6] A simulation study on some heuristics for test suite reduction
    Chen, TY
    Lau, MF
    [J]. INFORMATION AND SOFTWARE TECHNOLOGY, 1998, 40 (13) : 777 - 787
  • [7] A new heuristic for test suite reduction
    Chen, TY
    Lau, MF
    [J]. INFORMATION AND SOFTWARE TECHNOLOGY, 1998, 40 (5-6) : 347 - 354
  • [8] JCrasher: an automatic robustness tester for Java']Java
    Csallner, C
    Smaragdakis, Y
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2004, 34 (11) : 1025 - 1050
  • [9] Do HS, 2004, 15TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING, PROCEEDINGS, P113
  • [10] Incorporating varying test costs and fault severities into test case prioritization
    Elbaum, S
    Malishevsky, A
    Rothermel, G
    [J]. PROCEEDINGS OF THE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 2001, : 329 - 338