Hi,
wie Markus schon geschrieben hat: Ein Teil der Tests ist abhängig von der Programmiersprache. JUnit oder andere Testframeworks dienen auf der untersten Ebene zum Testen, ob Beispielsweise Methoden einer Klasse das tun, was erwartet wird.
Desweiteren schreibt man sich eigene Testtreiber, die Teilbereiche der zu entwickelnden Software simulieren, um die selbst entwickelten Teile im Zusammenspiel mit den Schnittstellen anderer zu testen (solange da noch nichts geliefert wurde).
Zentrale Codebereiche werden in einem Review mit anderen Entwicklern besprochen, wobei der Ersteller begründet warum er seinen Code so gestaltet hat.
Wenn irgendwann mal alles in einer ersten Form da ist und zusammengestöpselt werden kann, dann testet der Entwickler seine Sachen im Live System.
Nebenbei werden Testfälle geschrieben, die alle Anwendungsfälle abdecken sollen. Richtig, das ist äusserst Umfangreich
Vor allem, weil diese Testfälle dann von Personen, die mit der Entwicklung nichts zu tun haben, abgearbeitet werden.
Diese Leute notieren alle Fehler, und zwar mit genauen Angaben wann, wo und bei welcher Aktion der Fehler aufgetreten ist.
Die Entwickler suchen die Fehler und bauen sie aus. Wenn diese Testphase mehrfach durchgelaufen ist, dann wird das Programm auf den Markt losgelassen.
In der Realität werden die Testphasen aus (markt)politischen Gründen äusserst knapp gehalten (wenn sie überhaupt stattfinden). Unittests finden in der Praxis nur statt, wenn der Projektleiter Wert darauf legt oder der Entwickler selber so schlau ist, sich die Zeit zu nehmen (wenn er kann). Der Zeitdruck in der professionellen Softwareentwicklung ist enorm, Time to Market ist scheinbar alles, und solange der Kunde die nachträgliche Patcherei mitmacht ist alles in Ordnung…
Den Vorlauf der Entwicklung, nämlich die Spezifikation und die Designphase mit ihren einzelnen Reviews und Korrekturphasen hab ich mal weggelassen.
Grüsse,
Herb