Scaling modified condition/decision coverage using distributed concolic testing for Java programs

Abstract Object-Oriented languages such as Java language introduce advantageous features which overcome the demerits of procedural languages to some extent. Therefore, Java language is now going to be used by the industries to develop their critical safety system software products. In this paper, we propose some code transformation methodologies, which are implemented in Java language to test Java written code. We apply Java Distributed Concolic testing technique to improve the code coverage, which is more powerful than non-distributed concolic testing in terms of speed of test case generation. We develop a Java coverage analyzer according to the test cases produced by Java distributed concolic testers. This version of the MC/DC analyzer is more powerful than that of procedural languages. Our core idea is to integrate the existing and developed modules to produce a single tool for measuring MC/DC score. This novel idea automates the flow of testing 100%. Our experimental results present different scenarios, and suggest the stronger one. On an average, for forty-five Java programs using three nodes in the client–server architecture, we achieved higher MC/DC score.

[1]  Avijit Das,et al.  AUTOMATIC GENERATION OF MC/DC TEST DATA , 2013 .

[2]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[3]  Armin Biere,et al.  Boolector: An Efficient SMT Solver for Bit-Vectors and Arrays , 2009, TACAS.

[4]  S. Godboley,et al.  Enhanced modified condition/decision coverage using exclusive-nor code transformer , 2013, 2013 International Mutli-Conference on Automation, Computing, Communication, Control and Compressed Sensing (iMac4s).

[5]  Santonu Sarkar,et al.  A Profile Guided Approach to Optimize Branch Divergence While Transforming Applications for GPUs , 2015, ISEC.

[6]  A. Jefferson Offutt,et al.  Coverage criteria for logical expressions , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[7]  A. Jefferson Offutt,et al.  Experimental results from an automatic test case generator , 1993, TSEM.

[8]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[9]  Rajib Mall,et al.  GECOJAP: A novel source-code preprocessing technique to improve code coverage , 2018, Comput. Stand. Interfaces.

[10]  Koushik Sen,et al.  Automated Test Generation Using Concolic Testing , 2015, ISEC.

[11]  Koushik Sen,et al.  CUTE: a concolic unit testing engine for C , 2005, ESEC/FSE-13.

[12]  Bruno Dutertre,et al.  A Fast Linear-Arithmetic Solver for DPLL(T) , 2006, CAV.

[13]  Durga Prasad Mohapatra,et al.  SMCDCT: A Framework for Automated MC/DC Test Case Generation Using Distributed Concolic Testing , 2015, ICDCIT.

[14]  Moonzoo Kim,et al.  SCORE: a scalable concolic testing tool for reliable embedded software , 2011, ESEC/FSE '11.

[15]  Rajib Mall,et al.  J3 Model: A novel framework for improved Modified Condition/Decision Coverage analysis , 2017, Comput. Stand. Interfaces.

[16]  Durga Prasad Mohapatra,et al.  ABCE: A Novel Framework for Improved Branch Coverage Analysis , 2015, SCSE.

[17]  A. Jefferson Offutt,et al.  Combination testing strategies: a survey , 2005, Softw. Test. Verification Reliab..

[18]  Koushik Sen,et al.  CUTE and jCUTE: Concolic Unit Testing and Explicit Path Model-Checking Tools , 2006, CAV.

[19]  Giovanni Denaro,et al.  Enhancing symbolic execution with built-in term rewriting and constrained lazy initialization , 2013, ESEC/FSE 2013.

[20]  Nikolai Tillmann,et al.  Guided test generation for coverage criteria , 2010, 2010 IEEE International Conference on Software Maintenance.

[21]  Giuliano Antoniol,et al.  MC/DC automatic test input data generation , 2009, GECCO '09.

[22]  Steven P. Miller,et al.  Applicability of modified condition/decision coverage to software testing , 1994, Softw. Eng. J..

[23]  Nazareno Aguirre,et al.  BLISS: Improved Symbolic Execution by Bounded Lazy Initialization with SAT Support , 2015, IEEE Transactions on Software Engineering.

[24]  Rajib Mall,et al.  An improved distributed concolic testing approach , 2017, Softw. Pract. Exp..

[25]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000 .

[26]  Sarfraz Khurshid,et al.  Test input generation with java PathFinder , 2004, ISSTA '04.

[27]  G. S. Prashanth,et al.  Increase in Modified Condition/Decision Coverage using program code transformer , 2013, 2013 3rd IEEE International Advance Computing Conference (IACC).

[28]  Mark Harman,et al.  Testability transformation , 2004, IEEE Transactions on Software Engineering.

[29]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[30]  Koushik Sen,et al.  Symbolic execution for software testing: three decades later , 2013, CACM.

[31]  Kunal Taneja,et al.  RUGRAT: Evaluating program analysis and testing tools and compilers with large generated random benchmark applications , 2016, Softw. Pract. Exp..

[32]  Xiang Li,et al.  Assuring the model evolution of protocol software specifications by regression testing process improvement , 2011, Softw. Pract. Exp..

[33]  Mark Harman,et al.  Testability Transformation - Program Transformation to Improve Testability , 2008, Formal Methods and Testing.

[34]  Yannis Smaragdakis,et al.  JCrasher: an automatic robustness tester for Java , 2004, Softw. Pract. Exp..

[35]  Giovanni Denaro,et al.  Symbolic execution of programs with heap inputs , 2015, ESEC/SIGSOFT FSE.

[36]  Mark Harman,et al.  Open Problems in Testability Transformation , 2008, 2008 IEEE International Conference on Software Testing Verification and Validation Workshop.