Combinatorial Testing: Theory and Practice

Another advantage of this tool is that it can use three different algorithms (FIPOG, FIPOG-F, FIPOG-F2) to generate the combinatorial object array. So if we specify a degree of interaction of 2, ACTS will give us test sets that cover all the possible combinations of values for all the above pairs of parameters. In this example, the two variables being tested are a circle’s size (radius) and the circumference of that same circle. To test this relationship, pairwise testing would involve testing all combinations of circle sizes (radius) and corresponding circumference values. As mentioned in previous sections, CT for the purpose of software testing stems from a rich history of DoE, including designs such as OAs [12]. This previous work has had a strong influence on algorithms to generate combinatorial test suites.
Results of this and subsequent studies showed that across a variety of domains, all failures were triggered by a maximum of 4-way to 6-way interactions [6], [7], [8]. 2, the detection rate increases rapidly with interaction strength (the interaction level t in t-way combinations is often referred to as strength). With the NASA application, for example, 67% of the failures were triggered by only a single parameter value, 93% by 2-way combinations, and 98% by 3-way combinations. The detection rate curves for the other applications studied are similar, reaching 100% detection with 4-way to 6-way interactions.

As we discussed, it is most effective for systems with multiple parameters and multiple possible values for each parameter. If a system has only a few parameters and a small number of possible values for each parameter, pairwise testing may be unnecessary. https://www.globalcloudteam.com/ Pairwise testing, also, will not be useful if the values of inputs are inappropriate. Combinatorial testing is a testing technique in which multiple combinations of the input parameters are used to perform testing of the software product.

Swiggy Vs. Zomato: Who offers a better user experience?

This helps ensure that the software works correctly in all scenarios, which is essential for producing reliable and bug-free software. It is based on covering all possible discrete combinations of input parameters by using a minimum set of test cases. This technique is helpful when the number of input parameters is large, as it helps to reduce test execution time and cost. After successful use for a long period of time, the software is installed in a new location, with a different user base, and a new set of bugs appear. Typically, the reason is not surprising—the change in usage has resulted in a different set of inputs, and some of these input combinations trigger failures that have escaped previous testing and extensive use. Such failures are known as interaction failures, because they are only exposed when two or more input values interact to cause the program to reach an incorrect result.

  • It can uncover defects that might remain undetected in other testing methods, leading to enhanced test coverage.
  • He has authored or coauthored 2 books and more than 100 publications on information security, empirical studies of software failure, and software assurance, and is a senior member of the IEEE.
  • For thorough checking, it may be necessary to test 3-way and 4-way combinations of values.
  • This helps ensure that the software works correctly in all scenarios, which is essential for producing reliable and bug-free software.
  • Let’s say you have an application that allows users to enter two numbers, and the application will output the sum of the two numbers.

This simple but powerful tool help not only to generate tests using pairwise technique but also has capabilities to add required tests, negative values and complex constraints. It is JAVA-based and completely free tool with GUI which makes it even easier to use for anybody. This tool is the simplest to use because we just have to write the test factors and constraints (if any) and the test configurations are generated.

Test-case design support system

In this section, we discuss challenges to generating combinatorial test suites, categories of algorithms that have been popular in literature, and automated tools for this purpose. One more example is where Pairwise testing can also test relationships between two variables. Further, pairwise testing may not be the most effective technique in cases where the order of parameters is important, as this type of testing does not account for ordering. Laleh Ghandehari is a Computer Science PhD candidate at the University of Texas at Arlington.
There are some challenges that one may face when implementing pairwise testing. Also, additional tests must sometimes be added to supplement the pairwise tests. Explaining this example, the tester could examine how the probability of an event occurring changes when the probability of a second event occurring increases from 0.1 to 0.2, from 0.2 to 0.3, from 0.3 to 0.4, etc. This type of testing can be used to identify edge cases and potential problems in the system. Now, we can still reduce the combination further into All-pairs technique. Parse_config parses our ACTS output file and returns a list of dictionaries representing the generated configurations.
what is combinatorial testing
He has contributed to design and evaluation of industrial experiments, quality engineering, and evaluation of measurement uncertainty in physical measurements and in outputs of computational models. His current interests include development and use of combinatorial mathematics methods for testing software systems. He is a Fellow of the American Statistical Association and a Fellow of the American Society for Quality. He has also worked in industry (AT&T Bell Telephone Laboratories) and academia (Virginia Tech, Blacksburg, VA).

Pairwise testing and Use Case testing should be considered essential components of any comprehensive software testing strategy. Pairwise testing, also known as all-pairs testing, focuses on testing all possible combinations of input parameters with a minimal number of test cases, thereby reducing costs related to time, resources, and effort. It can uncover defects that might remain undetected in other testing methods, leading to enhanced test coverage. Orthogonal arrays, Latin squares, and the In-Parameter-Order Algorithm are some of the techniques used in pairwise testing. On the other hand, Use Case testing concentrates on testing a system’s functionality based on various use cases or scenarios.

Nearly all are single conditions or 2-way, with a rapidly declining proportion involving 3-way or more complex sets of conditions. This curve is superimposed on the fault profiles presented above in Fig. Note that it closely matches the profile for the NASA database application. The data for this application were from initial testing results, while the other curves are for fielded products. Thus, the distribution of faults in this initial testing is quite close to the distribution of conditions documented in the FAA report.
She received the BS degree from Shahid Beheshti University and the MS degree in Computer Science from Sharif University of Technology. Her research interests include fault localization, software analysis, and software testing. In particular, she focuses on combinatorial testing and fault localization based on combinatorial testing. Pairwise Testing also known as All-pairs testing is a testing approach taken for testing the software using combinatorial method. It’s a method to test all the possible discrete combinations of the parameters involved.
Apart from these, the clients and users also demand exponential performance, functionality, quality, scalability, effectiveness, and more. Moreover, it can also cause bodily harm, which can result in large economic losses or security breaches, as well as affect the quality of day-to-day life. However, software testers often have limited time and budget, which frequently makes it impossible to exhaustively test software. Additionally, testers often intuitively test for defects that they anticipate, while less foreseen defects are overlooked and not tested. The best way to overcome such a situation is to implement Combinatorial Testing in software and applications.

what is combinatorial testing


Automated Combinatorial Testing for Software (ACTS) is a tool for generating combinatorial test sets. The test would evaluate a circle with a radius of 1 and a circumference of 3.14, a circle with a radius of 2 and a circumference of 6.28, and a circle with a radius of 3 and a circumference of 9.42. By testing all possible combinations, the relationship between the size of a circle and its circumference can be determined. Just like the CAGen tool, Pairwiser too requires one by one entering of all factors and their values. The N-wise testing then would just be, all possible combinations from the above formula.
what is combinatorial testing
Combinatorial Testing is an approach that can systematically examine system setting in a manageable number of tests and by systematically covering t-way interactions. Therefore, here is an expounded discussion on Combinatorial Testing, to define its significance, methods and other major qualities. Pairwise testing, also referred to as all-pairs testing, is a combinatorial testing technique that focuses on testing all possible combinations of input parameters with a minimal number of test cases.
what is combinatorial testing
Feng Duan is a PhD student in Department of Computer Science and Engineering at the University of Texas at Arlington. His research interests include software analysis and testing, particularly combinatorial testing, model-based testing and input parameter modeling. Let’s say you have an application that allows users to enter two numbers, and the application will output the sum of the two numbers. You can use pairwise testing to test all possible combinations of two numbers, such as (1, 2), (2, 3), (3, 4), (4, 5), etc. By testing all the combinations of two numbers, you can be sure that the application is working correctly and will not fail when given different numbers. Raghu Kacker is a senior researcher in the Applied and Computational Mathematics Division of NIST.