Hendrik Lösch

Testing mit
Visual Studio 2012

ISBN: 978-3-86802-461-6

© 2013 entwickler.press

Ein Imprint der Software & Support Media GmbH

Einführung

Software zu entwickeln ist mehr als nur Programmierung. Es ist der Prozess des Findens von Benutzeranforderungen, des Realisierens der entsprechenden Funktionalität und des Sicherstellens eines korrekt und stabil arbeitenden Produkts.

Wie jeder Entwickler weiß, klingt dies wesentlich einfacher als es tatsächlich ist. Häufig arbeiten wir an einem System, das sich beständig ändert und mit jeder geschriebenen Zeile Code wächst und komplexer wird. Die Software, die wir erstellen, verändert ihre Struktur täglich und deshalb müssen wir sicherstellen, dass die Arbeit eines Tages nicht die eines anderen beschädigt oder sogar unbrauchbar macht.

Testautomatisierung ist der beste Weg, um dieses Ziel zu erreichen. Während manuelle Tests zunächst praktikabler wirken, sind sie es dauerhaft jedoch nicht. Automatisierte Tests können schnell und so oft wiederholt werden, wie es notwendig ist. Die Art, wie sie ausgeführt werden, ist dabei immer gleich und nachvollziehbar. Deshalb können automatisierte Tests wesentlich kostengünstiger sein als ihre manuellen Pendants. Zusätzlich können durch sie Ressourcen für weit wichtigere Aufgaben frei werden, als das immer wiederkehrende Ausführen von Tests.

Über dieses Buch

Dieses Buch ist ein Leitfaden, der dabei helfen soll, die Möglichkeiten zu verstehen, die Visual Studio in Bezug auf das automatisierte Testen bietet. Dazu werden zunächst die grundlegenden Theorien erläutert, bevor anschließend gezeigt wird, wie Visual Studio 2012 genutzt werden kann, um entsprechende Tests zu erstellen. Dabei werden die Bestandteile der IDE erläutert und jeweils auf kurze Weise erklärt, wann und warum sie genutzt werden sollten.

Was dieses Buch (nicht) abdeckt

Microsoft unterscheidet zwischen Softwaretestern und -entwicklern sehr deutlich, indem beiden Gruppen jeweils individuelle Softwareprodukte zur Verfügung gestellt werden. Während Tester die Test Professional Edition nutzen sollten, richten sich alle anderen Editionen von Visual Studio vornehmlich an Entwickler. Die gleiche Unterscheidung trifft auch dieses Buch, was nicht zuletzt am Untertitel zu erkennen ist, weshalb Features wie das manuelle und explorative Testen ebenso wenig zum Umfang gehören, wie das Lab Management. Weiterhin wurde auf tiefergreifende Erklärungen der jeweiligen Theorien verzichtet und sich dafür auf die Funktionalität der Entwicklungsumgebung konzentriert. Sollte jedoch weitergehendes Interesse daran bestehen, empfiehlt sich ein Blick in die Bibliografie, die gerne als Literaturempfehlung verstanden werden darf.

Dieses Buch ist vorrangig für Personen geschrieben, die Code auf Basis von .NET oder WinRT schreiben, und dafür C# als Programmiersprache verwenden. Dies bedeutet nicht, dass Visual Basic oder unmanaged C++ komplett außen vorgelassen sind, sind doch die meisten beschriebenen Features für jene Sprachen bzw. die darunter liegenden Technologien ebenfalls verfügbar.

Weiterhin wird nicht gezielt zwischen Windows-8-Store-Apps und .NET-Applikationen unterschieden, da sich der Aufbau der Tests in vielen Fällen stark ähnelt und sich somit kein Unterschied in den Beispielen ergibt.

Das Beispielszenario

Wie bereits eingangs erwähnt, ist das eigentliche Ziel der Softwareentwicklung, einen Mehrwert für den Kunden zu schaffen. Um dies zu unterstreichen und möglichst nahe an der Praxis zu sein, liegt allen folgenden Beispielen die Annahme zugrunde, dass es sich bei der zu testenden Anwendung um ein reales Produkt handelt; einem Client für den bekannten Microblogging-Dienst Twitter.

Der Twitter-Client

Abbildung 0.1: Der Twitter-Client

Twitter erlaubt es seinen Nutzern, Kurznachrichten, so genannte Tweets, mit einer maximalen Gesamtlänge von 140 Zeichen zu schreiben. Diese können von anderen Nutzern abonniert und wiederum auch an deren Abonnenten weitergeleitet werden. Darüber hinaus können diese Nachrichten nicht nur Text, sondern auch Bilder enthalten, wodurch sich dank Twitter Informationen sehr schnell in der gesamten Welt verbreiten.

Wie später noch deutlicher werden sollte, ist es unerheblich, wie und ob die vorgestellte Software in ihrer Gänze implementiert wird. Die beschriebenen Schwierigkeiten und Fallstricke sind häufig die gleichen, ganz gleich ob eine Webseite, eine Desktop- oder eine mobile Applikation getestet werden soll. Aus diesem Grund ist die eigentliche Umsetzung des Clients, bis auf eine kurze Beschreibung der Architektur, auch nicht Teil dieses Buches und alle folgenden Codeausschnitte zeigen lediglich den Testcode.

Grundsätzliche Funktionalität

Den größten Teil der Applikation nimmt die so genannte Timeline ein. Diese enthält die Tweets, welche von Personen versandt wurden, denen der aktuell eingeloggte Benutzer folgt. Ein Eintrag in dieser Liste zeigt den Namen der Person, die die entsprechende Nachricht verfasste, dessen Avatar, das Veröffentlichungsdatum und den eigentlichen Nachrichtentext.

Im unteren Bereich können Tweets verfasst werden. In der Beispielanwendung soll es zunächst nur möglich sein, reine Textnachrichten zu verfassen. Es ist demnach nicht notwendig, auf Hyperlinks und Ähnliches Rücksicht zu nehmen, weshalb die Eingabe in einer einfachen Textbox geschieht. Wie bereits erwähnt, erlaubt Twitter nur Nachrichten mit einer Maximallänge von 140 Zeichen. Aus diesem Grund befindet sich neben der Textbox eine Anzeige, in der die noch verbliebenen Zeichen dargestellt werden. Demnach wird 140 angezeigt, wenn kein Text eingegeben wurde. 139 hingegen ist der Wert bei einem Zeichen und -1, wenn 141 Zeichen in der Textbox stehen.

Der Button zum Senden des Textes löst zwei Aktionen aus. Zum einen wird der Tweet zu Twitter geschickt und zum anderen wird Twitter kurze Zeit später die Nachricht wieder zurückschicken. Dies geschieht, weil jeder Nutzer zeitgleich auch sich selbst folgt und somit in seiner Timeline auch die eigenen Tweets lesen kann. Aus diesem Grund sollten eigene Nachrichten ebenso behandelt und damit auch angezeigt werden.

Architektur

Die Architektur der Anwendung ist sehr simpel. So gibt es vorrangig drei Klassen, die geprüft werden müssen, und die die drei Schichten des Programms widerspiegeln. Für eine bessere Testbarkeit wird dabei auf das MVVM-Pattern zurückgegriffen, welches es erlaubt, die Geschäftslogik und Benutzerschnittstelle lose zu koppeln. Ein genaues Wissen zu diesem Entwurfsmuster ist nachfolgend nicht notwendig.

Abbildung 0.2: Abhängigkeiten der Beispielklassen

MainWindow – Stellt die Benutzerschnittstelle mit allen visuellen Elementen wie Buttons, Listboxen und Textboxen dar.

ViewModel – Repräsentiert die Geschäftslogik, an die die Benutzerschnittstelle gebunden wird und die eine Liste bereitstellt, in der sich die Tweets befinden, die in der Timeline angezeigt werden sollen. Weiterhin enthält sie einen Counter, der die bereits eingegebenen Zeichen zählt sowie Methoden, mit denen der Nutzer eingeloggt oder eine Nachricht verschickt werden kann.

TwitterConnector – Hierbei handelt es sich um einen Adapter des Twitter-API, das das Model darstellt. Dieses wird durch das View Model genutzt, um auf die Dienste von Twitter zuzugreifen, um Informationen zu erhalten, zu verschicken oder den Benutzer zu authentifizieren.

Zusätzlich liegt die Klasse Tweet vor. Bei ihr handelt es sich um ein Datentransferobjekt, das alle notwendigen Informationen einer Nachricht kapselt. Dies wären zum Beispiel der Name des Nutzers, der sie verschickte, sein Avatar und der eigentliche Text.

Die Authentifizierung des Benutzers ist sehr komplex und es ist nicht zielführend, sie genauer zu beschreiben, da diese Informationen wenig Bedeutung für den Inhalt dieses Buches haben. Einzig die Tatsache, dass zur Authentifizierung ein geheimer Token von der Applikation gespeichert werden muss, ist wichtig. Jegliche Kommunikation mit dem Server muss zunächst über diesen Token initiiert werden. Dies wird nachfolgend getan, indem der Token in der app.config-Datei hinterlegt wird. Zugegebenermaßen ist dieses Vorgehen durchaus sicherheitskritisch, erlaubt aber einfachere Beispiele mit geringem Hintergrundwissen, die sich mehr auf das Thema des Buches konzentrieren: den Softwaretest.

1 Einleitung

Das folgende Kapitel beschreibt in aller Kürze die Konzepte, die sich hinter den Erläuterungen der kommenden Kapitel verbergen. Es klärt dabei vor allem die wichtigsten Definitionen und erläutert einige der Theorien des Testens sowie die unterschiedlichen Vorgehensmethoden bei der Entwicklung von Software, die zu einem veränderten Verständnis des automatisierten Testens zwischen den unterschiedlichen Versionen von Visual Studio führen.

1.1 Die Teststufen

Beim Erstellen einer ganzheitlichen Teststrategie ist es wichtig, die einzelnen Besonderheiten zu beachten, die unterschiedliche Testarten haben können. Deshalb werden in diesem Buch drei Ebenen des Testens unterschieden, wobei jede Unterscheidung sowohl auf den automatisierten als auch auf den manuellen Test angewendet werden kann.

Jede dieser Stufen hat eigene Anforderungen an die Umgebung, in der sie ausgeführt wird, sowie Gründe, warum sie notwendig ist. Auch wenn die Grenzen zwischen den Ebenen in der Praxis verschwimmen können, so ist ein grundsätzliches Verständnis doch notwendig, um gängige Probleme zu vermeiden.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!