Um eine Software systematisch zu testen, werden ausgehend von der technischen Dokumentation und von den use cases zahlreiche Testfälle (test cases) notiert, die im Laufe der Entwicklung immer wieder durchgeführt werden um sicherzustellen, dass die erwartete Funktionalität gewährleistet ist. Ein Testfall besteht meist aus drei Teilen:
Manuelles Testen vs. automatisiertes Testen
Gute IDEs starten den Compiler schon während der Eingabe eines Programms fortwährend im Hintergrund und zeigen die gefundenen Fehler an, indem sie die entsprechenden Stellen beispielsweise farbig unterringeln. Die während der Compilierung erstellten Datenstrukturen des compilers (abstract syntax tree, symbol tables, types, …) werden von der IDE genutzt, um den Programmierer/-innen code assistance features zur Verfügung zu stellen, z.B.
Auch die Werkzeuge zur Unterstützung des refactoring greifen auf diese Informationen des Compilers zurück.