This document discusses combinatorial software test design methods for selecting a small number of tests that achieve good coverage of interactions between test inputs. It explains that structured variation between tests is important to explore different areas of the software. Combinatorial testing uses algorithms to calculate the smallest number of tests needed to cover all target combinations of test inputs, like all pairs of values. This method can find many bugs with fewer tests than an unstructured approach.