CIT Varianter Plugin¶
This plugin is an implementation of a Combinatorial Interaction Testing algorithm for the Avocado varianter functionality. It generates an optimal number of variants, which in turn become different test scenarios.
Note
The publication by Ahmed, Bestoun S., Kamal Z. Zamli, and Chee Peng Lim, entitled “Application of particle swarm optimization to uniform and variable strength covering array construction”, Applied Soft Computing, 12(4), 2012, pp. 1330-1347, contains the basis for the algorithm and implementation of this feature.
Files¶
optional_plugins/varianter_cit/avocado_varianter_cit/__init__.py
: The plugin implementation.examples/varianter_cit/params.ini
: An example parameters file.
Usage¶
To see the variants generated by this demo implementation, execute:
$ avocado variants --cit-parameter-file examples/varianter_cit/params.ini
CIT Variants (14):
Variant gold-triangle-solid-aluminum-cathodic: /run
Variant red-circle-gas-leather-cathodic: /run
Variant gold-square-gas-plastic-anodic: /run
Variant black-circle-liquid-aluminum-anodic: /run
Variant green-triangle-liquid-leather-anodic: /run
Variant green-circle-solid-plastic-cathodic: /run
Variant black-square-solid-leather-cathodic: /run
Variant red-square-liquid-aluminum-anodic: /run
Variant red-triangle-liquid-plastic-cathodic: /run
Variant black-triangle-gas-plastic-anodic: /run
Variant green-square-gas-aluminum-anodic: /run
Variant gold-circle-solid-leather-anodic: /run
Variant gold-triangle-liquid-plastic-anodic: /run
Variant red-circle-solid-aluminum-cathodic: /run
Note
The exact variants generated are not guaranteed to be the same across executions.
You can enable more verbosity, making each variant to show its content:
$ avocado variants --cit-parameter-file examples/varianter_cit/params.ini -c
CIT Variants (15):
Variant black-square-solid-leather-cathodic: /run
/:coating => cathodic
/:color => black
/:material => leather
/:shape => square
/:state => solid
Variant red-circle-gas-aluminum-cathodic: /run
/:coating => cathodic
/:color => red
/:material => aluminum
/:shape => circle
/:state => gas
Variant red-triangle-liquid-plastic-anodic: /run
/:coating => anodic
/:color => red
/:material => plastic
/:shape => triangle
/:state => liquid
Variant green-square-gas-aluminum-anodic: /run
/:coating => anodic
/:color => green
/:material => aluminum
/:shape => square
/:state => gas
Variant gold-circle-solid-leather-anodic: /run
/:coating => anodic
/:color => gold
/:material => leather
/:shape => circle
/:state => solid
Variant green-triangle-solid-plastic-cathodic: /run
/:coating => cathodic
/:color => green
/:material => plastic
/:shape => triangle
/:state => solid
Variant gold-square-liquid-plastic-cathodic: /run
/:coating => cathodic
/:color => gold
/:material => plastic
/:shape => square
/:state => liquid
Variant black-triangle-gas-leather-anodic: /run
/:coating => anodic
/:color => black
/:material => leather
/:shape => triangle
/:state => gas
Variant black-circle-liquid-plastic-anodic: /run
/:coating => anodic
/:color => black
/:material => plastic
/:shape => circle
/:state => liquid
Variant gold-triangle-gas-aluminum-anodic: /run
/:coating => anodic
/:color => gold
/:material => aluminum
/:shape => triangle
/:state => gas
Variant green-circle-liquid-leather-anodic: /run
/:coating => anodic
/:color => green
/:material => leather
/:shape => circle
/:state => liquid
Variant red-square-solid-aluminum-anodic: /run
/:coating => anodic
/:color => red
/:material => aluminum
/:shape => square
/:state => solid
Variant black-triangle-liquid-aluminum-anodic: /run
/:coating => anodic
/:color => black
/:material => aluminum
/:shape => triangle
/:state => liquid
Variant red-square-gas-plastic-anodic: /run
/:coating => anodic
/:color => red
/:material => plastic
/:shape => square
/:state => gas
Variant red-square-liquid-leather-cathodic: /run
/:coating => cathodic
/:color => red
/:material => leather
/:shape => square
/:state => liquid
To execute tests with those combinations use:
$ avocado run passtest.py --cit-parameter-file examples/varianter_cit/params.ini
JOB ID : 6abd9e9f1ff9ed33a353ca8f3ef845cd4cc404a5
JOB LOG : $HOME/avocado/job-results/job-2018-07-23T08.46-6abd9e9/job.log
(01/15) passtest.py:PassTest.test;gold-circle-gas-plastic-cathodic: PASS (0.06 s)
(02/15) passtest.py:PassTest.test;green-square-solid-plastic-anodic: PASS (0.02 s)
(03/15) passtest.py:PassTest.test;black-triangle-liquid-aluminum-anodic: PASS (0.02 s)
(04/15) passtest.py:PassTest.test;red-triangle-solid-leather-cathodic: PASS (0.02 s)
(05/15) passtest.py:PassTest.test;red-square-liquid-aluminum-cathodic: PASS (0.02 s)
(06/15) passtest.py:PassTest.test;green-circle-gas-leather-anodic: PASS (0.02 s)
(07/15) passtest.py:PassTest.test;gold-circle-solid-aluminum-anodic: PASS (0.02 s)
(08/15) passtest.py:PassTest.test;black-square-gas-leather-cathodic: PASS (0.02 s)
(09/15) passtest.py:PassTest.test;red-circle-liquid-plastic-anodic: PASS (0.02 s)
(10/15) passtest.py:PassTest.test;green-triangle-gas-aluminum-cathodic: PASS (0.02 s)
(11/15) passtest.py:PassTest.test;gold-triangle-liquid-leather-cathodic: PASS (0.02 s)
(12/15) passtest.py:PassTest.test;black-circle-solid-plastic-anodic: PASS (0.02 s)
(13/15) passtest.py:PassTest.test;red-triangle-gas-plastic-cathodic: PASS (0.02 s)
(14/15) passtest.py:PassTest.test;gold-square-liquid-leather-anodic: PASS (0.02 s)
(15/15) passtest.py:PassTest.test;green-circle-liquid-aluminum-anodic: PASS (0.02 s)
RESULTS : PASS 15 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME : 1.21 s
JOB HTML : $HOME/avocado/job-results/job-2018-07-23T08.46-6abd9e9/results.html