ACTS
ACTS (Automated Combinatorial Testing for Software) is NIST’s free generator of combinatorial tests: from a model of parameters and values it builds a t-way test set, in which every combination of values of any t parameters appears in at least one test, for t from 1 to 6 [1], [2]. It has a graphical interface, a command line and a Java API.
The quality question it answers: which few tests cover every interaction among two, three or more inputs? The method is on Combinatorial Testing.
Model and commands from the ACTS user guide; the run for this card is pending.
Two versions
| Basic | Advanced | |
|---|---|---|
| How to get it | direct download from NIST’s Downloadable Tools page; no licence | by e-mail request to NIST |
| t-way generation, IPOG algorithm | yes | yes |
| Constraints between parameters | no | yes |
| Mixed strength (relations), base choice, other algorithms | no | yes |
Both industrial studies on Combinatorial Testing in Industry used ACTS; Daoud et al. used version 3.2, an Advanced release, for its mixed-strength arrays.
Install and quick start
ACTS needs a current Java runtime; there is nothing to install beyond the jar.
java -version
java -jar acts.jar # opens the graphical interface
java -Ddoi=2 -Doutput=csv -jar acts.jar machine_acts.txt machine.csv
The ticket-machine model from the PICT card, in ACTS’s text format, machine_acts.txt (constructed example). Two differences: Member is a boolean (true, false), and the cash-and-email constraint is left out because the Basic version cannot read it, so all 78 pairs are required and cash-with-email rows may appear:
[System]
Name: TicketMachine
[Parameter]
Payment (enum) : cash, card, app
Member (boolean) : true, false
Stay (enum) : short, hours, overnight
Language (enum) : en, de, fr
Receipt (enum) : paper, email, none
Options are Java system properties, written before -jar [1]:
| Option | Values | Meaning |
|---|---|---|
-Ddoi= | 1–6 (default 2) | the strength t |
-Doutput= | nist (default), csv, numeric, excel | output format |
-Dcheck=on | verify coverage after generating | |
-Dalgo=null | check the coverage of an existing test set without generating | |
-Dmode=extend | extend the tests listed in the model’s [Test Set] section |
Reading the output
The output of a run made for this card is still to be added.
With -Doutput=csv, each row is one test and each column a parameter, as in PICT’s table. With -Dcheck=on, ACTS also reports whether every t-way combination is covered.
Common mistakes
- Writing constraints for the Basic version. The
[Constraint]section of the model is read only by the Advanced version. With Basic, either request Advanced, or generate the table in PICT, which has constraints. - Options after the jar name.
-Doptions belong betweenjavaand-jar. Anything written afteracts.jaris passed to ACTS as an argument, not set as an option. - Spaces in parameter names. Names follow Java variable rules:
Receipt_Type, notReceipt Type. - Running out of memory on large models. Raise the Java heap:
java -Xmx2g … -jar acts.jar ….
In CI
Keep the model file in version control and generate the table in the build, as with PICT; Java must be on the runner (GitHub’s Ubuntu images include it).
Go deeper
- Covering Array Generation: how IPOG builds the array.
- Combinatorial Testing Tools: ACTS, PICT and CASA compared, and what seed tests are worth.
References
- National Institute of Standards and Technology,“User Guide for ACTS, Basic 1.0 and Advanced 3.3.” 2023. [Online]. Available: https://csrc.nist.gov/projects/automated-combinatorial-testing-for-software/downloadable-tools
- Y. Lei, R. Kacker, D. R. Kuhn, V. Okun, and J. Lawrence,“IPOG: A General Strategy for T-Way Software Testing,” in IEEE International Conference and Workshops on Engineering of Computer-Based Systems (ECBS), 2007, pp. 549–556. doi: 10.1109/ECBS.2007.47.
Disclaimer: AI is used for text summarization, polishing and explaining. Authors have verified all facts and claims. In case of an error, feel free to file an issue.