Visual Studio 2017 (Teil 2)

Beim Visual Studio und Azure Info Day dieses Jahr stellte Daniel Meixner die Neuerungen von Visual Studio 2017 vor. Mittelpunkt der Präsentation war das Thema „Shift-Left-Ansatz“, wobei Programmierung und Testing näher zusammengerückt werden und so die Produktivität durch Fehlervermeidung gesteigert werden kann.

Im ersten Teil des Blogbeitrags ging es um die Themen InnerLoop und die Frage, wie dieser beschleunigt werden sowie das Feature IntelliTrace. Im zweiten Teil steht das Thema Tests im Mittelpunkt. Zunächst wird gezeigt, wie live Unit Tests durchgeführt werden können und im zweiten Schritt dreht sich dann alles um die Live Architecture Validation.

Unit Tests – IntelliTest

Offen ist weiterhin die Frage, wie ein Fehler überhaupt in die Produktion und das Livesystem kommen kann und warum dieser nicht vorher behoben wurde. Häufig ist das Problem hierbei, dass kein Test geschrieben oder dieser auskommentiert wurde. Nachträgliche Tests halten lange auf und verlangsamen so die Produktivität, gerade wenn eine große Codebase vorliegt die noch ungetestet ist.

Start Live Unit Test, Visual Studio 2017, generic.de AG

Start Live Unit Test

Um diese Probleme vermeiden zu können liefert Visual Studio 2017 mit IntelliTest ein Feature, welches automatische Unit Tests mit möglichst hoher Testabdeckung erstellt. Diese Test durchlaufen die einzelnen Äste und fragen unter anderem ab, wie die Parameter gesetzt sein müssen und wie die if-else Bedingungen lauten. In der Ausgabe wird angezeigt, welche Aspekte zu Problemen führen könnten. Der Programmcode wird so auf seine Durchführbarkeit geprüft. Es findet allerdings kein Test der fachlichen Logik statt! Im obigen Beispiel, würde der Test anzeigen, dass zu prüfen ist, on der String NULL ist.

Auch hier spielt die zeitliche Entkopplung zwischen Code Editing und Testing eine wichtige Rolle. Durch das späte Testing erfolgen immer wieder Unterbrechungen. Mit Visual Studios Live Unit Testing wird das Testing weiter links durchgeführt. Wird eine Codezeile geändert, wird diese sofort getestet. Über die Integration des MSTest Frameworks per Nuget Package können Testfälle über IntelliTest erzeugt und damit live getestet werden.

Fehler beim Live Unit Test in Visual Studio 2017, generic.de AG

Anzeige der Fehler beim Live Unit Test

Es werden direkt bei der Code Erstellung Informationen angezeigt, ob diese Zeilen zu Problemen führen können. Somit wird auch das Problem umgangen, dass der Unit Test beim Schreiben vergessen wird, da direkt der Hinweis erfolgt, dass der Unit Test angepasst werden muss und damit gleichzeitig auch der Hinweis, dass die Produktionsreife noch nicht gegeben ist.

Live Architecture Validation

Gleiches gilt für die Überprüfung der Architektur. Sobald ein Fehler auftritt setzt man sich mit der Architektur erneut auseinander. Stellt man hierbei weitere Fehler oder Probleme fest, können diese in dem Zug mitangegangen werden. Die Abhängigkeiten, korrekte und inkorrekte, werden in Visual Studio hinterlegt und können somit ebenfalls im Moment des Code Schreibens überprüft werden. Wird gegen eine Abhängigkeit verstoßen, kommt ein Hinweis, dass die neue Zeile nicht konform mit den bestehenden Abhängigkeiten ist. Die Entkopplung zwischen Architekturvorgaben, die oftmals nur in der Doku hinterlegt sind und dem Code Editing wird durch die Live Architecture Validation aufgehoben.

Zusammenfassung

Mit den Neuerungen in Visual Studio 2017 wird es einfach, einen aussagekräftigen Bugreport zu erstellen, welcher automatisch in die Visual Studio Team Services eingebunden wird. Somit ist es auch für unerfahrene Tester einfach und schnell möglich einen Bug zu protokollieren.
Aus den Visual Studio Team Services wiederum ist es sehr einfach, aus diesem Bug einen Branch zu ziehen und den entsprechenden Branch aus zu checken. Das Bugfixing selbst findet dann mittels IntelliTrace statt. Durch einmaliges Reproduzieren kann nachvollzogen werden, welche Stellen im Code zu Problemen führen können.
Durch Live Testing mit automatischen Unit Tests kann die fachliche Logik überprüft werden und somit bereits bei der Entstehung des Codes auf mögliche Probleme hingewiesen werden. Die Überprüfung der fachlichen Logik erfolgt mit Hilfe von IntelliTest. Auch die Überprüfung der Architektur und Komponenten erfolgt live durch die Live Architecture Validation. Hierbei werden Verstöße gegen die Architektur oder den Komponentenaufbau direkt gemeldet.
Insgesamt weist Visual Studio 2017 einige Features auf, die frühzeitig auf Probleme hinweisen und dadurch die Produktivität steigern.