Benchmark Test Tasks

All test tasks are available for web browsing and for download via the following GIT repository (for Test-Comp 2021 visit the tag 'testcomp21'): https://github.com/sosy-lab/sv-benchmarks/tree/testcomp21/

This edition of the competition on software testing is based on the following categories of test tasks. The test tasks are taken from the most diverse and publicly available repository of tasks, which were collected and contributed by the community on software verification.

For illustration, a structured overview shows the categories.

The authorative definition of the category structure is maintained in the repository for the benchmark definitions (https://gitlab.com/sosy-lab/test-comp/bench-defs).

1. Cover Errors (Finding Bugs)

This category consists of the following sub-categories.

ReachSafety-Arrays

Contains tasks for which treatment of arrays is necessary in order to determine reachability.

The test-generation tasks consist of the programs that match

array-examples/*.yml
array-industry-pattern/*.yml
reducercommutativity/*.yml
array-tiling/*.yml
array-programs/*.yml
array-crafted/*.yml
array-multidimensional/*.yml
array-patterns/*.yml
array-cav19/*.yml
array-lopstr16/*.yml
array-fpi/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-BitVectors

Contains tasks for which treatment of bit-operations is necessary.

The test-generation tasks consist of the programs that match

bitvector/*.yml
bitvector-regression/*.yml
bitvector-loops/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-ControlFlow

Contains programs for which the correctness depends mostly on the control-flow structure and integer variables. There is no particular focus on pointers, data structures, and concurrency.

The test-generation tasks consist of the programs that match

ntdrivers-simplified/*.yml
openssl-simplified/*.yml
locks/*.yml
ntdrivers/*.yml
openssl/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-ECA

Contains programs that represent event-condition-action systems.

The test-generation tasks consist of the programs that match

eca-rers2012/*.yml
eca-rers2018/*.yml
psyco/*.yml
eca-programs/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-Floats

Contains tasks for checking programs with floating-point arithmetics.

The test-generation tasks consist of the programs that match

floats-cdfpl/*.yml
floats-cbmc-regression/*.yml
float-benchs/*.yml
floats-esbmc-regression/*.yml
float-newlib/*.yml
loop-floats-scientific-comp/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-Heap

Contains tasks that require the analysis of data structures on the heap, pointer aliases, and function pointers.

The test-generation tasks consist of the programs that match

heap-manipulation/*.yml
list-properties/*.yml
ldv-regression/*.yml
ddv-machzwd/*.yml
forester-heap/*.yml
list-ext-properties/*.yml
list-ext2-properties/*.yml
ldv-sets/*.yml
list-simple/*.yml
heap-data/*.yml
list-ext3-properties/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-Loops

Contains tasks for which loop analysis is necessary.

The test-generation tasks consist of the programs that match

loops/*.yml
loop-acceleration/*.yml
loop-crafted/*.yml
loop-invgen/*.yml
loop-lit/*.yml
loop-new/*.yml
loop-industry-pattern/*.yml
loops-crafted-1/*.yml
loop-invariants/*.yml
loop-simple/*.yml
loop-zilu/*.yml
verifythis/duplets.yml
verifythis/elimination_max.yml
verifythis/lcp.yml
verifythis/prefixsum_iter.yml
verifythis/tree_del_iter.yml
verifythis/tree_del_iter_incorrect.yml
nla-digbench/*.yml
nla-digbench-scaling/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-Recursive

Contains tasks for which recursive analysis is necessary.

The test-generation tasks consist of the programs that match

recursive/*.yml
recursive-simple/*.yml
recursive-with-pointer/*.yml
verifythis/prefixsum_rec.yml
verifythis/tree_del_rec.yml
verifythis/tree_del_rec_incorrect.yml
verifythis/tree_max.yml
verifythis/tree_max_incorrect.yml
verifythis/elimination_max_rec.yml
verifythis/elimination_max_rec_onepoint.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-Sequentialized

Contains sequentialized concurrent programs that were derived from SystemC programs. The programs were transformed to pure C programs by incorporating the scheduler into the C code.

The test-generation tasks consist of the programs that match

systemc/*.yml
seq-mthreaded/*.yml
seq-mthreaded-reduced/*.yml
seq-pthread/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

ReachSafety-XCSP

Contains tasks from the XCSP_to_C tool benchmark set.

The test-generation tasks consist of the programs that match

xcsp/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

SoftwareSystems-BusyBox-MemSafety

Contains problems from the software system BusyBox.

The test-generation tasks consist of the programs that match

busybox-1.22.0/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

SoftwareSystems-DeviceDriversLinux64-ReachSafety

Contains problems that require the analysis of pointer aliases and function pointers.

The test-generation tasks consist of the programs that match

ldv-linux-3.0/*.yml
ldv-linux-3.4-simple/*.yml
ldv-linux-3.7.3/*.yml
ldv-commit-tester/*.yml
ldv-consumption/*.yml
ldv-linux-3.12-rc1/*.yml
ldv-linux-3.16-rc1/*.yml
ldv-validator-v0.6/*.yml
ldv-validator-v0.8/*.yml
ldv-linux-4.2-rc1/*.yml
ldv-linux-3.14/*.yml
ldv-challenges/*.yml
ldv-linux-4.0-rc1-mav/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@CALL(reach_error))) )

2. Cover Branches (Code Coverage)

This category consists of the following sub-categories.

ReachSafety-Arrays

Contains tasks for which treatment of arrays is necessary in order to determine reachability.

The test-generation tasks consist of the programs that match

array-examples/*.yml
array-industry-pattern/*.yml
reducercommutativity/*.yml
array-tiling/*.yml
array-programs/*.yml
array-crafted/*.yml
array-multidimensional/*.yml
array-patterns/*.yml
array-cav19/*.yml
array-lopstr16/*.yml
array-fpi/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-BitVectors

Contains tasks for which treatment of bit-operations is necessary.

The test-generation tasks consist of the programs that match

bitvector/*.yml
bitvector-regression/*.yml
bitvector-loops/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-ControlFlow

Contains programs for which the correctness depends mostly on the control-flow structure and integer variables. There is no particular focus on pointers, data structures, and concurrency.

The test-generation tasks consist of the programs that match

ntdrivers-simplified/*.yml
openssl-simplified/*.yml
locks/*.yml
ntdrivers/*.yml
openssl/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-ECA

Contains programs that represent event-condition-action systems.

The test-generation tasks consist of the programs that match

eca-rers2012/*.yml
eca-rers2018/*.yml
psyco/*.yml
eca-programs/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Floats

Contains tasks for checking programs with floating-point arithmetics.

The test-generation tasks consist of the programs that match

floats-cdfpl/*.yml
floats-cbmc-regression/*.yml
float-benchs/*.yml
floats-esbmc-regression/*.yml
float-newlib/*.yml
loop-floats-scientific-comp/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Heap

Contains tasks that require the analysis of data structures on the heap, pointer aliases, and function pointers.

The test-generation tasks consist of the programs that match

heap-manipulation/*.yml
list-properties/*.yml
ldv-regression/*.yml
ddv-machzwd/*.yml
forester-heap/*.yml
list-ext-properties/*.yml
list-ext2-properties/*.yml
ldv-sets/*.yml
list-simple/*.yml
heap-data/*.yml
list-ext3-properties/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Loops

Contains tasks for which loop analysis is necessary.

The test-generation tasks consist of the programs that match

loops/*.yml
loop-acceleration/*.yml
loop-crafted/*.yml
loop-invgen/*.yml
loop-lit/*.yml
loop-new/*.yml
loop-industry-pattern/*.yml
loops-crafted-1/*.yml
loop-invariants/*.yml
loop-simple/*.yml
loop-zilu/*.yml
verifythis/duplets.yml
verifythis/elimination_max.yml
verifythis/lcp.yml
verifythis/prefixsum_iter.yml
verifythis/tree_del_iter.yml
verifythis/tree_del_iter_incorrect.yml
nla-digbench/*.yml
nla-digbench-scaling/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Recursive

Contains tasks for which recursive analysis is necessary.

The test-generation tasks consist of the programs that match

recursive/*.yml
recursive-simple/*.yml
recursive-with-pointer/*.yml
verifythis/prefixsum_rec.yml
verifythis/tree_del_rec.yml
verifythis/tree_del_rec_incorrect.yml
verifythis/tree_max.yml
verifythis/tree_max_incorrect.yml
verifythis/elimination_max_rec.yml
verifythis/elimination_max_rec_onepoint.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Sequentialized

Contains sequentialized concurrent programs that were derived from SystemC programs. The programs were transformed to pure C programs by incorporating the scheduler into the C code.

The test-generation tasks consist of the programs that match

systemc/*.yml
seq-mthreaded/*.yml
seq-mthreaded-reduced/*.yml
seq-pthread/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-XCSP

Contains tasks from the XCSP_to_C tool benchmark set.

The test-generation tasks consist of the programs that match

xcsp/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

ReachSafety-Combinations

Contains programs combined from other sv-benchmark tasks through loose coupling

The test-generation tasks consist of the programs that match

combinations/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

SoftwareSystems-BusyBox-MemSafety

Contains problems from the software system BusyBox.

The test-generation tasks consist of the programs that match

busybox-1.22.0/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

SoftwareSystems-DeviceDriversLinux64-ReachSafety

Contains problems that require the analysis of pointer aliases and function pointers.

The test-generation tasks consist of the programs that match

ldv-linux-3.0/*.yml
ldv-linux-3.4-simple/*.yml
ldv-linux-3.7.3/*.yml
ldv-commit-tester/*.yml
ldv-consumption/*.yml
ldv-linux-3.12-rc1/*.yml
ldv-linux-3.16-rc1/*.yml
ldv-validator-v0.6/*.yml
ldv-validator-v0.8/*.yml
ldv-linux-4.2-rc1/*.yml
ldv-linux-3.14/*.yml
ldv-challenges/*.yml
ldv-linux-4.0-rc1-mav/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

SoftwareSystems-SQLite-MemSafety

Contains problems from the software SQLite

The test-generation tasks consist of the programs that match

sqlite/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )

Termination-MainHeap

Contains programs for which termination should be decided.

The test-generation tasks consist of the programs that match

termination-dietlibc/*.yml
termination-memory-alloca/*.yml
termination-memory-linkedlists/*.yml
termination-15/*.yml
termination-recursive-malloc/*.yml

with the specification:

COVER( init(main()), FQL(COVER EDGES(@DECISIONEDGE)) )