This document discusses dynamic symbolic execution (DSE) for automatic test generation. It summarizes various techniques for automatic test generation such as random testing, combinatorial testing, search-based testing, and symbolic execution-based testing. It then describes DSE which performs symbolic execution dynamically along concrete program executions to leverage concrete executions while overcoming limitations of symbolic execution alone, such as issues with external library calls and complex constraints. The document also discusses challenges in DSE including imprecision due to semantic differences between symbolic and concrete representations, and path explosion due to the large number of possible paths in programs.