Two-stage algorithms for covering array construction

Kaushik Sarkar, Charles J. Colbourn

Research output: Contribution to journalArticlepeer-review

6 Scopus citations


Modern software systems often consist of many different components, each with a number of options. Although unit tests may reveal faulty options for individual components, functionally correct components may interact in unforeseen ways to cause a fault. Covering arrays are used to test for interactions among components systematically. A two-stage framework, providing a number of concrete algorithms, is developed for the efficient construction of covering arrays. In the first stage, a time and memory efficient randomized algorithm covers most of the interactions. In the second stage, a more sophisticated search covers the remainder in relatively few tests. In this way, the storage limitations of the sophisticated search algorithms are avoided; hence, the range of the number of components for which the algorithm can be applied is extended, without increasing the number of tests. Many of the framework instantiations can be tuned to optimize a memory-quality trade-off, so that fewer tests can be achieved using more memory.

Original languageEnglish (US)
Pages (from-to)475-505
Number of pages31
JournalJournal of Combinatorial Designs
Issue number8
StatePublished - Aug 2019


  • Lovász local lemma
  • conditional expectation
  • covering array
  • randomized algorithm
  • two-stage algorithm

ASJC Scopus subject areas

  • Discrete Mathematics and Combinatorics


Dive into the research topics of 'Two-stage algorithms for covering array construction'. Together they form a unique fingerprint.

Cite this