|
|
(One intermediate revision by one other user not shown) |
Line 1: |
Line 1: |
| In [[computer science]], '''all-pairs testing''' or '''pairwise testing''' is a [[combinatorial]] method of [[software testing]] that, for ''each pair'' of input parameters to a system (typically, a [[software]] [[algorithm]]), tests all possible discrete combinations of those parameters. Using carefully chosen [[test vector]]s, this can be done much faster than an exhaustive search of [[Software testing#Input combinations and preconditions|all combinations]] of all parameters, by "parallelizing" the tests of parameter pairs.
| | Hi, everybody! My name is Lino. <br>It is a little about myself: I live in Sweden, my city of Borensberg. <br>It's called often Eastern or cultural capital of . I've married 1 years ago.<br>I have 2 children - a son (Beatris) and the daughter (Candelaria). We all like Agriculture Show.<br><br>Visit my blog post ... [http://Www.Trimmcoaching.com/movie-club/lorem-ipsum-dolor-sit Fifa 15 Coin Generator] |
| | |
| ==Rationale==
| |
| Assume that the test function{{clarify|date=June 2012}} has <math>N</math> parameters given in a set <math>\{ P_i\} = \{ P_1 , P_2 , ... , P_N \}</math>.
| |
| The range of the parameters are given by <math>R(P_i)= R_i</math>.
| |
| Let's assume that <math>|R_i|= n_i</math>.
| |
| We notice that the set of choices of ranges <math>X = \{ n_i \}</math> can be a [[multiset]] {{clarify|date=June 2012}}, because there can be multiple
| |
| parameters having same number of choices.
| |
| | |
| Let's define <math>max(S)</math> as one of the maximum of the multiset <math>S</math>.
| |
| Then, the number of pair-wise test cases on this test function would be:-
| |
| | |
| <math>
| |
| T = max(X) \times max ( X \setminus max(X) )
| |
| </math>
| |
| | |
| Plainly that would mean, if the <math> n = max(X) </math> and <math> m = max ( X \setminus max(X) ) </math>
| |
| then the number of tests is typically O(''nm''). Where ''n'' and ''m'' are the number of possibilities for each of the two parameters with the most choices.
| |
| | |
| {| class="wikitable"
| |
| |-
| |
| ! Parameter Name !! Value 1 !! Value 2 || Value 3 || Value 4
| |
| |-
| |
| | Enabled || True || False || * || *
| |
| |-
| |
| | Choice Type || 1 || 2 || 3 || *
| |
| |-
| |
| | Category || a || b || c || d
| |
| |}
| |
| | |
| In this case the parameters are Enabled with choices range of 2, Choice Type with 3, and Category with 4.
| |
| That would mean:
| |
| <math> | |
| X = \{ 2, 3 , 4 \}
| |
| </math>
| |
| Hence, n = 4, m = 3 and number of tests would be 12.
| |
| The pict tool generated pairwise test cases on the input looks like:-
| |
| | |
| {| class="wikitable"
| |
| |-
| |
| ! Enabled !! Choice Type !! Category
| |
| |-
| |
| | True || 3 || a
| |
| |-
| |
| | True || 1 || d
| |
| |-
| |
| |False || 1 || c
| |
| |-
| |
| |False || 2 || d
| |
| |-
| |
| |True || 2 || c
| |
| |-
| |
| |False || 2 || a
| |
| |-
| |
| |False || 1 || a
| |
| |-
| |
| |False || 3 || b
| |
| |-
| |
| |True || 2 || b
| |
| |-
| |
| |True || 3 || d
| |
| |-
| |
| |False || 3 || c
| |
| |-
| |
| |True || 1 || b
| |
| |}
| |
| | |
| The below table would generate a multiset :
| |
| | |
| {| class="wikitable"
| |
| |-
| |
| ! Parameter Name !! Value 1 !! Value 2 || Value 3 || Value 4
| |
| |-
| |
| | Enabled || True || False || * || *
| |
| |-
| |
| | Choice Type || 1 || 2 || 3 || 4
| |
| |-
| |
| | Category || a || b || c || d
| |
| |}
| |
| | |
| In this case the parameters are Enabled with choices range of 2, Choice Type with 4, and Category with 4.
| |
| That would mean:-
| |
| <math>
| |
| X = \{ 2, 4 , 4 \}
| |
| </math>
| |
| and it is a multiset.
| |
| Hence, n = 4, m = 4 and number of tests would be 16, which are shown in the below table:-
| |
| {| class="wikitable"
| |
| |-
| |
| ! Enabled !! Choice Type !! Category
| |
| |-
| |
| |True||3||b
| |
| |-
| |
| |False||3||d
| |
| |-
| |
| |True||2||a
| |
| |-
| |
| |True||1||c
| |
| |-
| |
| |False||4||b
| |
| |-
| |
| |False||1||a
| |
| |-
| |
| |False||2||b
| |
| |-
| |
| |True||4||d
| |
| |-
| |
| |True||4||a
| |
| |-
| |
| |True||2||d
| |
| |-
| |
| |False||4||c
| |
| |-
| |
| |False||1||b
| |
| |-
| |
| |True||2||c
| |
| |-
| |
| |False||1||d
| |
| |-
| |
| |False||3||a
| |
| |-
| |
| |True||3||c
| |
| |}
| |
| | |
| The reasoning behind all-pairs testing is this: the simplest bugs in a program are generally triggered by a single input parameter. The next simplest category of bugs consists of those dependent on interactions between pairs of parameters, which can be caught with all-pairs testing.<ref>{{cite book | last = Black | first = Rex | title = Pragmatic Software Testing: Becoming an Effective and Efficient Test Professional | location = New York | publisher = [[John Wiley & Sons|Wiley]] | year = 2007 | isbn = 978-0-470-12790-2 | page = 240}}</ref> Bugs involving interactions between three or more parameters are progressively less common,<ref>{{cite journal | author=D.R. Kuhn, D.R. Wallace, A.J. Gallo, Jr. | title=Software Fault Interactions and Implications for Software Testing | journal=IEEE Trans. on Software Engineering |volume=30 | issue=6 |date=June 2004 | url=http://csrc.nist.gov/groups/SNS/acts/documents/TSE-0172-1003-1.pdf}}</ref> while at the same time being progressively more expensive to find by exhaustive testing, which has as its limit the exhaustive testing of all possible inputs.<ref>{{cite report| title=Practical Combinatorial Testing. SP 800-142. | publisher=Natl. Inst. of Standards and Technology | year=2010 |url=http://csrc.nist.gov/groups/SNS/acts/documents/SP800-142-101006.pdf }}</ref>
| |
|
| |
| This can be further generalized.{{cn|date=July 2012}}
| |
| The idea is to apply [[sorting]] to the set <math>X = \{ n_i \}</math> so that <math>P = \{ P_i \}</math> gets ordered too.
| |
| Let the sorted set be a <math>N</math> tuple :-
| |
|
| |
| <math>
| |
| P_s = < P_i > \; ; \; i < j \implies |R(P_i)| < |R(P_j)|
| |
| </math>
| |
| | |
| Now we can take the set <math>X(2) = \{ P_{N-1} , P_{N-2} \}</math> and call it the pairwise testing.
| |
| Generalizing further we can take the set <math>X(3) = \{ P_{N-1} , P_{N-2} , P_{N-3} \}</math> and call it the 3-wise testing.
| |
| Eventually, we can say <math>X(T) = \{ P_{N-1} , P_{N-2} , ... , P_{N-T} \}</math> T-wise testing.
| |
| | |
| The N-wise testing then would just be, all possible combinations from the above formula.
| |
| | |
| One of the main strengths of combinatorial technique is that it enables a significant reduction of the number of test cases without compromising functional coverage.<ref>{{cite web|url=http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4578383|title= IEEE 12. Proceedings from the 5th International Conference on Software Testing and Validation (ICST). Software Competence Center Hagenberg. "Test Design: Lessons Learned and Practical Implications. }}</ref> Many testing methods regard all-pairs testing of a system or subsystem as a reasonable cost-benefit compromise between often computationally infeasible higher-order combinatorial testing methods, and less exhaustive methods which fail to exercise all possible pairs of parameters. Because no testing technique can find all bugs, all-pairs testing is typically used together with other [[quality assurance]] techniques such as [[unit testing]], [[symbolic execution]], [[fuzz testing]], and [[code review]].
| |
| | |
| ==Notes==
| |
| | |
| {{reflist}}
| |
| | |
| == See also ==
| |
| {{portal|Software Testing}}
| |
| * [[Software testing]]
| |
| * [[Orthogonal array testing]]
| |
| | |
| == External links ==
| |
| * [http://www.combinatorialtesting.com Combinatorialtesting.com; Includes clearly written introductions to pairwise and other, more thorough, methods of combinatorial testing]
| |
| * [http://hexawise.com/ Hexawise.com - Pairwise test case generating tool with both free and commercial versions (also provides more thorough 3-way, 4-way, 5-way, and 6-way coverage solutions)]
| |
| * [http://testcover.com/pub/background/stareast2008.ppt Pairwise Testing Comes of Age - Review including history, examples, issues, research]
| |
| * [http://www.pairwise.org/ Pairwise Testing: Combinatorial Test Case Generation]
| |
| * [http://www.developsense.com/testing/PairwiseTesting.html Pairwise testing]
| |
| * [http://www.mcdowella.demon.co.uk/allPairs.html All-pairs testing]
| |
| * [http://csrc.nist.gov/acts/ Pairwise and generalized t-way combinatorial testing]
| |
| * [http://testapi.codeplex.com TestApi - .NET API library for testing, providing a variation generation API]
| |
| * [http://github.com/sageserpent-open/NTestCaseBuilder NTestCaseBuilder - another .NET API library; focussed purely on combinatoric testing and scalability of test case generation]
| |
| * [http://code.google.com/p/jcombinatorial/ JCombinatorial - an open-source library that facilitates all-pairs testing with JUnit]
| |
| * {{cite web |url=http://www.phadkeassociates.com/index_rdexperttestplanning.htm |title=rdExpert Software for Orthogonal Array Testing |publisher=Phadke Associates, Inc. |quote=Commercial toolset for Orthogonal Array and PairWise Testing.}}
| |
| * [http://msdn.microsoft.com/en-us/library/cc150619.aspx Pairwise Testing in the Real World: Practical Extensions to Test-Case Scenarios]
| |
| | |
| {{DEFAULTSORT:All-Pairs Testing}}
| |
| [[Category:Software testing]]
| |
| [[Category:Combinatorics]]
| |
| [[Category:Design of experiments]]
| |
Hi, everybody! My name is Lino.
It is a little about myself: I live in Sweden, my city of Borensberg.
It's called often Eastern or cultural capital of . I've married 1 years ago.
I have 2 children - a son (Beatris) and the daughter (Candelaria). We all like Agriculture Show.
Visit my blog post ... Fifa 15 Coin Generator