Test-driven development is ensuring that your software is functioning and making sure the software’s internals are well designed, reusable and decoupled.
I’ve been struggling with making TDD work in embedded software design. Using QP made me realize that perhaps the problem isn't our tools. It's our policy.