Automated testing techniques have the potential to improve software reliability by discoveringmore obstacles or often known as “corner cases” that result in software errors, achieve bettercoverage, and reduce the costs of testing compared to manually written tests. Concolic testing ortesting based on a combination of concrete and symbolic execution, which is also known asdynamic symbolic execution, is a method for test input generation where a given program isexecuted both concretely and symbolically in order to achieve high path coverage. But inpractice, however, both for symbolic and concolic execution, the possible number of paths thatmust be considered symbolically is so large that the methods end up exploring only small partsof the program state space, and those that can be reached by short runs from the initial state, inreasonable time. We can introduce hybrid concolic testing, that combines and interleaves theapplication of random tests with concolic testing to achieve deep and wide exploration of theprogram state space. From the initial program state, hybrid concolic testing starts by performingrandom testing to improve coverage. When random testing saturates, or if it cannot produce anynew coverage points after running some predetermined number of steps, the algorithmautomatically switches to concolic execution from the current program state to perform anexhaustive bounded depth search for an uncovered coverage point. As soon as one is found, thealgorithm reverts back to concrete mode. Therefore, hybrid testing uses both the capacity ofrandom testing to inexpensively generate deep program states through long program executionsand the capability of concolic testing to exhaustively and symbolically search for new paths.Hybrid concolic testing is most suitable for testing reactive programs that periodically get inputfrom their environment. Examples of such programs include editors, network servers, simpleGUI based programs, event based systems, embedded systems, and sensor networks. On theother hand, transformational programs, that get some fixed input initially, are not suitable forhybrid concolic testing, since the future behavior cannot be affected by symbolic execution afterthe initial input has been set.