skip to main content
Skip header Section
Introduction to Combinatorial TestingJune 2013
Publisher:
  • Chapman & Hall/CRC
ISBN:978-1-4665-5229-6
Published:20 June 2013
Pages:
341
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Combinatorial testing of software analyzes interactions among variables using a very small number of tests. This advanced approach has demonstrated success in providing strong, low-cost testing in real-world situations. Introduction to Combinatorial Testing presents a complete self-contained tutorial on advanced combinatorial testing methods for real-world software. The book introduces key concepts and procedures of combinatorial testing, explains how to use software tools for generating combinatorial tests, and shows how this approach can be integrated with existing practice. Detailed explanations and examples clarify how and why to use various techniques. Sections on cost and practical considerations describe tradeoffs and limitations that may impact resources or funding. While the authors introduce some of the theory and mathematics of combinatorial methods, readers can use the methods without in-depth knowledge of the underlying mathematics. Accessible to undergraduate students and researchers in computer science and engineering, this book illustrates the practical application of combinatorial methods in software testing. Giving pointers to freely available tools and offering resources on a supplementary website, the book encourages readers to apply these methods in their own testing projects.

Cited By

  1. Colbourn C (2024). Efficient Greedy Algorithms with Accuracy Guarantees for Combinatorial Restrictions, SN Computer Science, 5:2, Online publication date: 1-Feb-2024.
  2. Kacker R, Kuhn D, Lei Y and Simos D (2022). Measuring the Adequacy of a Test Suite With Respect to a Modeled Test Space, IEEE Software, 39:5, (62-67), Online publication date: 1-Sep-2022.
  3. Lu X and Jimbo M Error-Correcting Locating Arrays for Interaction Fault Location in Combinatorial Testing 2022 IEEE International Symposium on Information Theory (ISIT), (1094-1099)
  4. Velez M, Jamshidi P, Siegmund N, Apel S and Kästner C White-Box Analysis over Machine Learning Proceedings of the 43rd International Conference on Software Engineering, (1072-1084)
  5. Luo C, Lin J, Cai S, Chen X, He B, Qiao B, Zhao P, Lin Q, Zhang H, Wu W, Rajmohan S and Zhang D AutoCCAG Proceedings of the 43rd International Conference on Software Engineering, (201-212)
  6. Damasceno C, Mousavi M and Simao A (2021). Learning by sampling: learning behavioral family models from software product lines, Empirical Software Engineering, 26:1, Online publication date: 1-Jan-2021.
  7. Jin H, Kitamura T, Choi E and Tsuchiya T A Comparative Study on Combinatorial and Random Testing for Highly Configurable Systems Testing Software and Systems, (302-309)
  8. Velez M, Jamshidi P, Sattler F, Siegmund N, Apel S and Kästner C (2020). ConfigCrusher: towards white-box performance analysis for configurable systems, Automated Software Engineering, 27:3-4, (265-300), Online publication date: 1-Dec-2020.
  9. ACM
    Tzoref R (2020). Comprehension and Evolution of Combinatorial Models and Test Plans, ACM SIGSOFT Software Engineering Notes, 45:3, (23-24), Online publication date: 9-Jul-2020.
  10. Zhao J, Dong T, Cheng Y and Wang Y CMM: A Combination-Based Mutation Method for SQL Injection Structured Object-Oriented Formal Language and Method, (345-361)
  11. ACM
    Barash G, Farchi E, Jayaraman I, Raz O, Tzoref-Brill R and Zalmanovici M Bridging the gap between ML solutions and their business requirements using feature interactions Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (1048-1058)
  12. Garn B, Radavelli M, Gargantini A, Leithner M and Simos D A Fault-Driven Combinatorial Process for Model Evolution in XSS Vulnerability Detection Advances and Trends in Artificial Intelligence. From Theory to Practice, (207-215)
  13. Kampel L, Simos D, Garn B, Kotsireas I and Zhereshchin E Algebraic Models for Arbitrary Strength Covering Arrays over v-ary Alphabets Algebraic Informatics, (177-189)
  14. Colbourn C and Syrotiuk V Detecting Arrays for Main Effects Algebraic Informatics, (112-123)
  15. Simos D, Zivanovic J and Leithner M Automated combinatorial testing for detecting SQL vulnerabilities in web applications Proceedings of the 14th International Workshop on Automation of Software Test, (55-61)
  16. Ha H and Zhang H DeepPerf Proceedings of the 41st International Conference on Software Engineering, (1095-1106)
  17. Peleska J, Brauer J and Huang W Model-Based Testing for Avionic Systems Proven Benefits and Further Challenges Leveraging Applications of Formal Methods, Verification and Validation. Industrial Practice, (82-103)
  18. ACM
    Jamshidi P, Velez M, Kästner C and Siegmund N Learning to sample: exploiting similarities across environments to learn performance models for configurable systems Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (71-82)
  19. ACM
    Tzoref-Brill R and Maoz S Modify, enhance, select: co-evolution of combinatorial models and test plans Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (235-245)
  20. Sarkar K, Colbourn C, Bonis A and Vaccaro U (2018). Partial Covering Arrays, Theory of Computing Systems, 62:6, (1470-1489), Online publication date: 1-Aug-2018.
  21. Tuncali C, Fainekos G, Ito H and Kapinski J Simulation-based Adversarial Test Generation for Autonomous Vehicles with Machine Learning Components 2018 IEEE Intelligent Vehicles Symposium (IV), (1555-1562)
  22. ACM
    Blue D, Raz O, Tzoref-Brill R, Wojciak P and Zalmanovici M Proactive and pervasive combinatorial testing Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice, (144-152)
  23. ACM
    Simos D, Kuhn R, Lei Y and Kacker R Combinatorial security testing course Proceedings of the 5th Annual Symposium and Bootcamp on Hot Topics in the Science of Security, (1-3)
  24. ACM
    Satish P, Nikhil P and Rangarajan K (2018). A Test Prioritization Algorithm That Cares for "Don't Care" Values and Higher Order Combinatorial Coverage, ACM SIGSOFT Software Engineering Notes, 42:4, (1-9), Online publication date: 11-Jan-2018.
  25. Jamshidi P, Siegmund N, Velez M, Kästner C, Patel A and Agarwal Y Transfer learning for performance modeling of configurable systems: an exploratory analysis Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, (497-508)
  26. ACM
    Hallé S and Khoury R SealTest: a simple library for test sequence generation Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, (392-395)
  27. Ahmed B, Gambardella L, Afzal W and Zamli K (2017). Handling constraints in combinatorial interaction testing in the presence of multi objective particle swarm and multithreading, Information and Software Technology, 86:C, (20-36), Online publication date: 1-Jun-2017.
  28. Tzoref-Brill R and Maoz S Syntactic and semantic differencing for combinatorial models of test designs Proceedings of the 39th International Conference on Software Engineering, (621-631)
  29. ACM
    Zalmanovici M, Raz O and Tzoref-Brill R Cluster-based test suite functional analysis Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, (962-967)
  30. Kampel L and Simos D Set-Based Algorithms for Combinatorial Test Set Generation Testing Software and Systems, (231-240)
  31. ACM
    Yamada A, Biere A, Artho C, Kitamura T and Choi E Greedy combinatorial test case generation using unsatisfiable cores Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, (614-624)
  32. ACM
    Tzoref-Brill R, Wojciak P and Maoz S Visualization of combinatorial models and test plans Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, (144-154)
  33. ACM
    Magid Y, Tzoref-Brill R and Zalmanovici M Coverage-based metrics for cloud adaptation Proceedings of the 2nd International Workshop on Quality-Aware DevOps, (1-6)
  34. Lin J, Luo C, Cai S, Su K, Hao D and Zhang L TCA Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering, (494-505)
  35. ACM
    Siegmund N, Grebhahn A, Apel S and Kästner C Performance-influence models for highly configurable systems Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, (284-294)
  36. ACM
    Patil A, Goveas N and Rangarajan K (2015). Re-architecture of Contiki and Cooja Regression Test Suites using Combinatorial Testing Approach, ACM SIGSOFT Software Engineering Notes, 40:2, (1-3), Online publication date: 3-Apr-2015.
  37. Hagar J, Wissink T, Kuhn D and Kacker R (2015). Introducing Combinatorial Testing in a Large Organization, Computer, 48:4, (64-72), Online publication date: 1-Apr-2015.
  38. Gaff B (2015). Important IP Cases in 2015, Part One, Computer, 48:4, (7-9), Online publication date: 1-Apr-2015.
  39. Vagoun T and Strawn G (2015). Implementing the Federal Cybersecurity R&D Strategy, Computer, 48:4, (45-55), Online publication date: 1-Apr-2015.
  40. Hsu D, Marinucci D and Voas J (2015). Cybersecurity: Toward a Secure and Sustainable Cyber Ecosystem, Computer, 48:4, (12-14), Online publication date: 1-Apr-2015.
  41. ACM
    Thüm T, Apel S, Kästner C, Schaefer I and Saake G (2014). A Classification and Survey of Analysis Strategies for Software Product Lines, ACM Computing Surveys, 47:1, (1-45), Online publication date: 1-Jul-2014.
  42. ACM
    Ramler R, Putschögl W and Winkler D Automated testing of industrial automation software: practical receipts and lessons learned Proceedings of the 1st International Workshop on Modern Software Engineering Methods for Industrial Automation, (7-16)
  43. ACM
    Bozic J, Simos D and Wotawa F Attack pattern-based combinatorial testing Proceedings of the 9th International Workshop on Automation of Software Test, (1-7)
Contributors
  • National Institute of Standards and Technology
  • The University of Texas at Arlington

Recommendations

Reviews

Robert L. Glass

The good news about this book is that: it provides an extremely thorough description of a vitally important way of optimizing the number of test cases needed to test a piece of software; it comes straight from the horse's mouth (the people who did the research that led to the approach); and it includes the experimental findings on the applications and value of the approach. The bad news is that applying the approach to the usual piece of application software is difficult and very application-dependent. There is no magic formula here! First, consider what is usually meant by combinatorial testing. There are at least three possible meanings here. The one featured in this book involves the necessity of testing combinations of input data to detect faults that arise when certain combinations interact. Another possible meaning, also discussed in the book, accounts for the possible combinations of configurations the software may run on (the book notes that this is probably the most common present use of combinatorial testing in practice). The third meaning regards the program logic itself, where testing of the execution of various logic segments must include combinations of those segments. The book also addresses this meaning (but later on) under the topic of "test coverage," and explains why that approach is black box (independent of knowledge of the source code) versus white box (requires knowledge of the source code). I was particularly pleased that this subject was covered in the book, since I assumed this was what the book was about when I signed up to review it! The most important aspect of combinatorial testing covered in the book involves research results produced by the National Institute of Science and Technology (NIST), where the authors are employed. They summarize those results in their "Interaction Rule," which states that "most failures are induced by single-factor faults or by the joint combinatorial effect (interaction) of two factors, with progressively fewer failures induced by interactions between three or more factors." (Put more simply, conditional testing can be restricted to a few key factors.) They also note that "the maximum degree of interaction in actual real-world faults observed is six." (In other words, combinatorial testing doesn't have to escalate the way you might think it must.) All of that, of course, provides a basis for the success of combinatorial testing. But now, for the bad news. Defining combinatorial test cases for a given piece of software is extremely application-dependent. There are, as previously noted, no magic rules in this book. The book makes up for this in the best way possible. It discusses almost all of the imaginable topics regarding the practical use of the approach, offers numerous case studies to illustrate its ideas, supplements each with highlighted rules of thumb for applying the approach in the context being described, provides sections on cost and practical considerations, and includes a well-written chapter summary along with some review questions for each topic (chapter). In these chapters, the authors: evaluate current test approaches to measure their effectiveness compared to combinatorial approaches; order test executions to minimize the time it takes to identify faults; describe event-driven applications, where the ordering of execution of the test cases may be crucial; compare the effectiveness of random test generation with the previously described combinatorial approach, surprisingly finding that randomly generated tests approach the effectiveness of combinatorial ones as system complexity increases (the authors also note that randomly generated tests are significantly cheaper than combinatorial ones); discuss the role of in-program, dynamic assertions in test efforts, noting that they are a dynamic and rather weak form of proof of correctness whose value may supplement combinatorial testing; and repeatedly address the test oracle problem, which is the need to have accurate test results for any test case to consider that test to be useful (this is a monumental problem for any testing approach, since it means that correct results must be known for each test case if the execution of that test case is to prove useful). Throughout the book, the authors present research findings about combinatorial testing in addition to those already noted above. Combinatorial testing, they note, provides a "pseudo-exhaustive" approach to testing where a completely exhaustive approach is usually impossible, using roughly 95 percent fewer test cases and producing "equally successful" results. They further note that "the larger the system, the greater the benefits of combinatorial testing." I was prepared at the outset to dislike this book. I expected a different subject. It was written by researchers who may or may not have been able to relate to practitioners. It was about a subject that seemed virtually impossible to make practical. But in the end, it turned out to be on a quite different subject, and the authors overcame all my concerns. I thoroughly recommend it to anyone involved in the practice of software testing. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.