Effective testing for embedded software systems requires an understanding of the test boundaries and the ability to control the interaction of the software with its environment. Timing and sequence of external events related to internal processing make repeatability difficult to achieve. This paper presents techniques for modeling embedded software using the Unified Modeling Language (UML) to increase testability. Modeling techniques and simulation save time during integration, avoid long hours spent trying to recreate problems, and result in better test coverage.