Information Sciences 460–461 (2018) 172–189 Contents lists available at ScienceDirect Information Sciences journal homepage: www.elsevier.com/locate/ins A greedy-metaheuristic 3-stage approach to construct covering arrays Idelfonso Izquierdo-Marquez a , Jose Torres-Jimenez a, , Brenda Acevedo-Juárez b , Himer Avila-George b a CINVESTAV-Tamaulipas, Cd. Victoria, Tamaulipas, Mexico b Centro Universitario de los Valles, Universidad de Guadalajara. Ameca, Jalisco 46600, Mexico a r t i c l e i n f o Article history: Received 6 November 2017 Revised 12 April 2018 Accepted 21 May 2018 Available online 29 May 2018 Keywords: Greedy algorithms Metaheuristic algorithms Covering arrays 3-stage approach Covering perfect hash families Simulated annealing a b s t r a c t Covering arrays are combinatorial designs used as test-suites in software and hardware testing. Because of their practical applications, the construction of covering arrays with a smaller number of rows is desirable. In this work we develop a greedy-metaheuristic 3- stage approach to construct covering arrays that improve some of the best-known ones. In the first stage, a covering perfect hash family is created using a metaheuristic approach; this initial array may not be complete, and so the derived covering array may have miss- ing tuples. In the second stage, the covering perfect hash family is converted to a covering array and, in case there are missing tuples, a greedy approach completes the covering ar- ray through the addition of some rows. The third stage is an iterative postoptimization stage that combines two greedy algorithms and a metaheuristic algorithm; the greedy al- gorithms detect and reduce redundancy in the covering array, and the metaheuristic al- gorithm covers the tuples that may become uncovered after the reduction of redundancy. The effectiveness of our greedy-metaheuristic 3-stage approach is assessed through the construction of covering arrays of order four and strengths 3–6; the main results are the improvement of 9473 covering arrays of strength three, 9303 of strength four, 2150 of strength five, and 291 of strength six. To see how to apply covering arrays to real test- ing scenarios, the final part of this work presents the use of covering arrays of order four for setting up a composting process. © 2018 Published by Elsevier Inc. 1. Introduction A covering array CA(N; t, k, v) is a combinatorial design defined by four parameters N, t, k, and v, where N and k are respectively the number of rows and columns of the array; v is the order or the number of distinct symbols in every column of the array; and t is the strength, which indicates that every one of the ( k t ) subarrays formed by t columns contain as a row each t-tuple of order v at least once. Fig. 1 shows a CA(12; 2, 7, 3). This covering array has N = 12 rows and k = 7 columns; the order is v = 3 because each column has elements from the alphabet Z 3 = {0, 1, 2}; and the strength is t = 2 because every one of the ( 7 2 ) = 21 subarrays formed by two columns contains as a row the v t = 3 2 = 9 tuples of length two over Z 3 , Corresponding author. E-mail addresses: iizquierdo@tamps.cinvestav.mx (I. Izquierdo-Marquez), jtj@cinvestav.mx (J. Torres-Jimenez), brenda.acevedo@academicos.udg.mx (B. Acevedo-Juárez), himer.avila@academicos.udg.mx (H. Avila-George). https://doi.org/10.1016/j.ins.2018.05.047 0020-0255/© 2018 Published by Elsevier Inc.