Automated test generation tools enable test automation and further alleviate the low efficiency caused by writing hand-crafted test cases. However, existing automated tools are not mature enough to be widely used by software testing groups. This paper conducts an empirical study on the state-of-the-art automated tools for Java, i.e., EvoSuite, Randoop, JDoop, JTeXpert, T3, and Tardis. We design a test workflow to facilitate the process, which can automatically run tools for test generation, collect data, and evaluate various metrics. Furthermore, we conduct empirical analysis on these six tools and their related techniques from different aspects, i.e., code coverage, mutation score, test suite size, readability, and real fault detection ability. We discuss about the benefits and drawbacks of hybrid techniques based on experimental results. Besides, we introduce our experience in setting up and executing these tools, and summarize their usability and user-friendliness. Finally, we give some insights into automated tools in terms of test suite readability improvement, meaningful assertion generation, test suite reduction for random testing tools, and symbolic execution integration.
Anand S, Burke E K, Chen T Y, Clark J, Cohen M B, Grieskamp W, Harman M, Harrold M J, McMinn P. An orchestrated survey of methodologies for automated software test case generation. Journal of Systems and Software , 2013, 86(8): 1978–2001. DOI: 10.1016/j.jss.2013.02.061.
Sakti A, Pesant G, Guéhéneuc Y G. Instance generator and problem representation to improve object oriented code coverage. IEEE Trans. Software Engineering , 2015, 41(3): 294–313. DOI: 10.1109/TSE.2014.2363479.
Panichella A, Kifetew F M, Tonella P. A large scale empirical comparison of state-of-the-art search-based test case generators. Information and Software Technology , 2018, 104: 236–256. DOI: 10.1016/j.infsof.2018.08.009.
Csallner C, Smaragdakis Y. JCrasher: An automatic robustness tester for Java. Software: Practice and Experience , 2004, 34(11): 1025–1050. DOI: 10.1002/spe.602.
King J C. Symbolic execution and program testing. Communications of the ACM , 1976, 19(7): 385–394. DOI: 10.1145/360248.360252.
Papadakis M, Kintis M, Zhang J, Jia Y, Le Traon Y, Harman M. Mutation testing advances: An analysis and survey. Advances in Computers , 2019, 112: 275–378. DOI: 10.1016/bs.adcom.2018.03.015.
Buse R P L, Weimer W R. Learning a metric for code readability. IEEE Trans. Software Engineering , 2010, 36(4): 546–558. DOI: 10.1109/TSE.2009.70.
Börstler J, Caspersen M E, Nordström M. Beauty and the beast: On the readability of object-oriented example programs. Software Quality Journal , 2016, 24(2): 231–246. DOI: 10.1007/s11219-015-9267-5.