Mit Hilfe von Unit-, Integrations- und Systemtests lässt sich die Funktionalität von einzelnen Methoden, Modulen oder der gesamten Anwendung automatisiert und kontinuierlich überprüfen. Mit zunehmender Komplexität einer Anwendung steigt die Anzahl der Tests sehr stark. Obwohl einzelne Tests zumeist sehr schnell ausgeführt werden, führt die schiere Masse häufig zu einer hohen Gesamtlaufzeit. In der Folge werden Tests lokal oft überhaupt nicht mehr und im Continuous Integration Build oft nur noch eine Teilmenge ausgeführt. Mögliche Fehler werden dann erst stark verzögert im Nightly-Build entdeckt. Gibt’s denn da keine Möglichkeit die Ausführung zu beschleunigen?
Das Visual Studio und der Team Foundation Server ermöglichen es die Ausführung von Tests an einen Test Controller zu delegieren. Dieser wiederum leitet die Anfragen an Test Agents weiter. Abhängig von deren Anzahl allerdings nur eine Teilmenge. Hierdurch kommt es zu einer Parallelisierung der Testausführung und damit zu einer stark verkürzten Gesamtlaufzeit.
Dabei gilt es zu berücksichtigen das die Test Assemblies sowie die zu testenden Bestandteile zunächst auf alle Agents verteilt und ggf. eingerichtet werden. Dies führt zu einem gewissen Overhead, so dass sich dieses Vorgehen erst ab einer gewissen Menge an Tests lohnt.
Die Umgebung in der die Tests ausgeführt werden wird über eine Test Settings Datei festgelegt. In dieser werden die Variante „Remote execution“ sowie der Test Controller ausgewählt.
Welche Test Settings Datei wiederum zur Anwendung kommt wird bei einer Ausführung aus dem Visual Studio im Menü unter Test -> Test Settings konfiguriert. Achtung: Dies unterscheidet sich von der Auswahl der Test Settings für Lasttests. Diese werden über das Kontextmenü der Settings Datei ausgewählt.
Für den Buildprozess wir die Einstellung in der Builddefinition konfiguriert.
Durch eine Erhöhung der Test Agent Anzahl kann die Ausführungsgeschwindigkeit deutlich gesteigert werden. Dies setzt eine entsprechende Infrastruktur voraus. Wer diese in seiner lokalen Umgebung nicht zur Verfügung stellen möchte kann auf die Cloud ausweichen. Hier lässt sich sehr schnell eine große Anzahl an Test Agents einrichten. Wie eine solche Infrastruktur aufgebaut wird und was dabei zu beachten ist wird in einem der nachfolgenden Blogbeiträge näher beleuchtet.