How Effective Is Branch-Based Combinatorial Testing? An Exploratory Study

Combinatorial testing detects faults by trying different value combinations for program inputs. Traditional combinatorial testing treats programs as black box and focuses on manipulating program inputs (named input-based combinatorial testing or ICT). In this paper, we explore the possibility of conducting combinatorial testing via white-box branch information. Similarly, different combinations of branches taken in an execution are tried to test whether they help detect faults and to what extent. We name this technique branch-based combinatorial testing (BCT). We propose ways to address challenges in realizing BCT, and evaluate BCT with Java programs. The results reported that BCT can effectively detect faults even with low-level combinations, say 3-4 ways, which suggest it to be a strong test adequacy criterion. We also found that our greedy strategy for minimizing test suites reduces over 50% tests for reaching certain way levels, and merging nested branches detects faults more cost-effectively than considering them separately.

[1]  Baowen Xu,et al.  A Software Debugging Method Based on Pairwise Testing , 2005, International Conference on Computational Science.

[2]  J. Jenny Li,et al.  Code-coverage guided prioritized test generation , 2004, Proceedings of the 28th Annual International Computer Software and Applications Conference, 2004. COMPSAC 2004..

[3]  Huai Liu,et al.  Code Coverage of Adaptive Random Testing , 2013, IEEE Transactions on Reliability.

[4]  Xu Baowen,et al.  Generating combinatorial test suite for interaction relationship , 2007 .

[5]  I. K. Mak,et al.  Adaptive Random Testing , 2004, ASIAN.

[6]  Charles J. Colbourn,et al.  Prioritized interaction testing for pair-wise coverage with seeding and constraints , 2006, Inf. Softw. Technol..

[7]  Myra B. Cohen,et al.  Augmenting simulated annealing to build interaction test suites , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[8]  Mark Harman,et al.  Regression testing minimization, selection and prioritization: a survey , 2012, Softw. Test. Verification Reliab..

[9]  Yepang Liu,et al.  Understanding and detecting wake lock misuses for Android applications , 2016, SIGSOFT FSE.

[10]  Michael D. Ernst,et al.  Are mutants a valid substitute for real faults in software testing? , 2014, SIGSOFT FSE.

[11]  D. Richard Kuhn,et al.  Combinatorial and Random Testing Effectiveness for a Grid Computer Simulator , 2009 .

[12]  L. Lundberg,et al.  Advances in Computer Science - ASIAN 2004. Higher-Level Decision Making , 2005 .

[13]  Atif M. Memon,et al.  Test suite prioritization by interaction coverage , 2007, DOSTA '07.

[14]  Zhi Quan Zhou Using Coverage Information to Guide Test Case Selection in Adaptive Random Testing , 2010, 2010 IEEE 34th Annual Computer Software and Applications Conference Workshops.

[15]  Hareton K. N. Leung,et al.  A survey of combinatorial testing , 2011, CSUR.

[16]  Alex Groce,et al.  Comparing non-adequate test suites using coverage criteria , 2013, ISSTA.

[17]  Gregg Rothermel,et al.  An empirical study of regression test selection techniques , 2001, ACM Trans. Softw. Eng. Methodol..

[18]  Jerry Huller Reducing Time to Market with Combinatorial Design Method Testing , 2002 .

[19]  Shi Liang,et al.  Generating Optimal Test Set for Neighbor Factors Combinatorial Testing , 2006, 2006 Sixth International Conference on Quality Software (QSIC'06).

[20]  Elaine J. Weyuker,et al.  An Applicable Family of Data Flow Testing Criteria , 1988, IEEE Trans. Software Eng..

[21]  Ralph E. Johnson,et al.  Bita: Coverage-guided, automatic testing of actor programs , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[22]  Mark Harman,et al.  A study of equivalent and stubborn mutation operators using human analysis of equivalence , 2014, ICSE.

[23]  T. H. Tse,et al.  Adaptive Random Test Case Prioritization , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[24]  Xiaodong Xie,et al.  Adaptive Random Test Case Generation for Combinatorial Testing , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference.

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

[26]  Tarik Nahhal,et al.  Coverage-guided test generation for continuous and hybrid systems , 2009, Formal Methods Syst. Des..

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

[28]  Moataz A. Ahmed,et al.  Pair-wise test coverage using genetic algorithms , 2003, The 2003 Congress on Evolutionary Computation, 2003. CEC '03..

[29]  Jeff Yu Lei,et al.  IPOG/IPOG‐D: efficient test generation for multi‐way combinatorial testing , 2008, Softw. Test. Verification Reliab..

[30]  Baowen Xu,et al.  An Improved Regression Test Selection Technique by Clustering Execution Profiles , 2010, 2010 10th International Conference on Quality Software.

[31]  Jacques Klein,et al.  Bypassing the Combinatorial Explosion: Using Similarity to Generate and Prioritize T-Wise Test Configurations for Software Product Lines , 2014, IEEE Transactions on Software Engineering.

[32]  Jeff Yu Lei,et al.  Practical Combinatorial Testing: Beyond Pairwise , 2008, IT Professional.

[33]  Alan Hartman,et al.  Workshop on Domain specific approaches to software test automation: in conjunction with the 6th ESEC/FSE joint meeting , 2007, FSE 2007.

[34]  Satish Narayanasamy,et al.  Maple: a coverage-driven testing tool for multithreaded programs , 2012, OOPSLA '12.

[35]  Ralf Reussner,et al.  Quality of Software Architectures and Software Quality, First International Conference on the Quality of Software Architectures, QoSA 2005 and Second International Workshop on Software Quality, SOQUA 2005, Erfurt, Germany, September 20-22, 2005, Proceedings , 2005, QoSA/SOQUA.

[36]  Robert L. Probert,et al.  A measure for component interaction test coverage , 2001, Proceedings ACS/IEEE International Conference on Computer Systems and Applications.

[37]  Michael L. Fredman,et al.  The AETG System: An Approach to Testing Based on Combinatiorial Design , 1997, IEEE Trans. Software Eng..

[38]  Nancy G. Leveson,et al.  An empirical evaluation of the MC/DC coverage criterion on the HETE-2 satellite software , 2000, 19th DASC. 19th Digital Avionics Systems Conference. Proceedings (Cat. No.00CH37126).

[39]  A. Barrett,et al.  A Combinatorial Test Suite Generator for Gray-Box Testing , 2009, 2009 Third IEEE International Conference on Space Mission Challenges for Information Technology.

[40]  A. Jefferson Offutt,et al.  MuJava: a mutation system for java , 2006, ICSE.

[41]  Myra B. Cohen,et al.  Combinatorial Interaction Regression Testing: A Study of Test Case Generation and Prioritization , 2007, 2007 IEEE International Conference on Software Maintenance.

[42]  Jian Lu,et al.  User Guided Automation for Testing Mobile Apps , 2014, 2014 21st Asia-Pacific Software Engineering Conference.

[43]  Sam Malek,et al.  SIG-Droid: Automated system input generation for Android applications , 2015, 2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE).

[44]  David S. Rosenblum,et al.  Using Coverage Information to Predict the Cost-Effectiveness of Regression Testing Strategies , 1997, IEEE Trans. Software Eng..

[45]  Nikolai Tillmann,et al.  Fitness-guided path exploration in dynamic symbolic execution , 2009, 2009 IEEE/IFIP International Conference on Dependable Systems & Networks.

[46]  Myra B. Cohen,et al.  Covering arrays for efficient fault characterization in complex configuration spaces , 2004, IEEE Transactions on Software Engineering.

[47]  Yu Lei,et al.  In-parameter-order: a test generation strategy for pairwise testing , 1998, Proceedings Third IEEE International High-Assurance Systems Engineering Symposium (Cat. No.98EX231).

[48]  Suzette Person,et al.  A Flexible and Non-intrusive Approach for Computing Complex Structural Coverage Metrics , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[49]  C. L. Mallows,et al.  Applying design of experiments to software testing: experience report , 1997, ICSE '97.

[50]  Na Liu,et al.  Concolic Metamorphic Debugging , 2015, 2015 IEEE 39th Annual Computer Software and Applications Conference.

[51]  Rui Abreu,et al.  A dynamic code coverage approach to maximize fault localization efficiency , 2014, J. Syst. Softw..

[52]  Robert Mandl,et al.  Orthogonal Latin squares: an application of experiment design to compiler testing , 1985, CACM.

[53]  Yves Le Traon,et al.  Comparing White-Box and Black-Box Test Prioritization , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[54]  R. Krishnan,et al.  Combinatorial testing: learnings from our experience , 2007, SOEN.

[55]  Jian Lu,et al.  GreenDroid: Automated Diagnosis of Energy Inefficiency for Smartphone Applications , 2014, IEEE Transactions on Software Engineering.

[56]  J. Czerwonka Pairwise Testing in the Real World : Practical Extensions to Test-Case Scenarios , 2011 .

[57]  Mark Harman,et al.  An Analysis and Survey of the Development of Mutation Testing , 2011, IEEE Transactions on Software Engineering.

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

[59]  Charles J. Colbourn,et al.  Covering arrays of higher strength from permutation vectors , 2006 .

[60]  Baowen Xu,et al.  Generating combinatorial test suite for interaction relationship , 2007, SOQUA '07.

[61]  Jonathan P. Bowen,et al.  From MC/DC to RC/DC: formalization and analysis of control-flow testing criteria , 2006, Formal Aspects of Computing.