Time is limited.
Creating a test case that satisfies all possible factors is often unrealistic and, more importantly, tedious.
Save time with CoverTable, a flexible pairwise tool that generates combinations covering two (or more) factors.
CoverTable uses a one-test-at-a-time greedy algorithm to generate covering arrays.
- Assigns a unique prime number ID to each factor value, then enumerates all n-way combinations to be covered.
- For each test row, the criterion selects the most efficient uncovered combination to include next by evaluating how many other uncovered combinations it would simultaneously satisfy.
- Repeats until all combinations are covered.
Two criteria are available:
- Greedy (default): Evaluates coverage efficiency for candidate pairs and selects the one that maximizes coverage. The
toleranceparameter allows trading quality for speed. - Simple: Picks the first feasible pair without efficiency evaluation. Faster, but produces more test cases.
Additionally, sorters (Hash / Random) control the initial ordering of combinations, which influences the quality and reproducibility of the output.
See also: Pairwise Testing Tool Comparison
CoverTable is available in two implementations, with TypeScript as the primary focus and Python offered as a secondary option.
Works in both Node.js and browsers (UMD build).
For more details, please refer to the links above.
Note:
The following data was measured in Python 3.7.7 on a3.1 GHz 6-Core Intel Core i5.
The coverage number is2.
| Combination | Default | Minimum case | Fastest case |
|---|---|---|---|
| 3^4 | num: 9 time: 0.0006s |
num: 9 time: 0.0006s |
num: 14 time: 0.0005s |
| 3^13 | num: 19 time: 0.03s |
num: 17 time: 0.03s |
num: 21 time: 0.003s |
| 4^15 + 3^17 + 2^29 | num: 36 time: 7.41s |
num: 34 time: 7.47s |
num: 42 time: 0.40s |
| 4^1 + 3^39 + 2^35 | num: 27 time: 15.19s |
num: 26 time: 14.70s |
num: 30 time: 0.51s |
| 2^100 | num: 14 time: 23.97s |
num: 12 time: 0.63s |
num: 13 time: 0.48s |
| 10^20 | num: 198 time: 14.28s |
num: 195 time: 14.48s |
num: 284 time: 0.53s |
In general, as the number of elements or coverage increases, the number of combinations tends to increase significantly.
If you use the greedy criterion and specify a positive integer for the tolerance option, you can increase speed at the expense of the number of combinations.
The greater the tolerance, the faster the speed and the larger the number of combinations.
| Tolerance | num | time |
|---|---|---|
| 0 (default) | 195 |
14.48s |
| 1 | 199 |
12.45s |
| 2 | 201 |
9.48s |
| 3 | 201 |
7.17s |
| 4 | 207 |
5.70s |
| 5 | 212 |
4.58s |
| 6 | 212 |
3.65s |
| 7 | 216 |
3.07s |
| 8 | 223 |
2.57s |
| 9 | 226 |
2.14s |
| 10 | 233 |
1.84s |
| 11 | 237 |
1.61s |
| 12 | 243 |
1.43s |
| 13 | 249 |
1.28s |
| 14 | 254 |
1.19s |
