VU Qualitatssicherung in der
Softwareentwicklung SS 2015
Assignment 1
Institut fur SoftwaretechnologieTU Graz
10. Marz 2015
Organisatorisches Assignment 1 Testen in C#
Inhalt
1 Organisatorisches
2 Assignment 1
3 Testen in C#
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Organisatorisches
4 Assignments
3er Gruppen
Gruppenanmeldung bis 17.03.2015
Abgabe 1. Assignment: 23.03.2015
Entwicklungsumgebung:Visual Studio 2010 Ultimate
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Aufgabe
Gruppenanmeldung
Volle Code Coverage
Erstellung von Randwerttests + Beantwortentheoretischer Frage
Naheres auf Ubungsblatt
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Domane
Messageboard, welches das Posten, “Liken” und Suchenvon Nachrichten erlaubt
Zwei Teile:
(Simuliertes) AktorensystemMessageboard-Funktionalitat
Aktoren fuhren parallel zueinander Aktionen aus undkommunizieren nur uber Messages
Das Framework verwendet kein multithreading, sondernsimuliert Parallelitat
Das Messageboard verwendet mehrere Typen von Aktoren
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Aktorensystem
Folgende Klassen implementieren SimulationSimulatedActorSystem: Managed Aktoren undsignalisiert das Fortschreiten von ZeitSimulatedActor: Abstrakte Klasse, welchemessage-passing-Logik implementiertCommunicationChannel: Abstraktion vonKommunikationskanal, welcher den Erhalt vonNachrichten verzogertMessage: interface, das jede versendbare Klasseimplementieren muss.
Zeit wird durch “Ticks” simuliert und beeinflusstden Erhalt von Nachrichtendas Verarbeiten von Nachrichten
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Messageboard
Vier Arten von Aktoren implementierenMessageboard-Funktionalitat:
Dispatcher: wahlt Worker fur Anfragen ausWorker: reagiert auf Anfragen von ClientsMessageStore: implementiert Persistenz-OperationenWorkerHelper: Hilfsaktor fur Kommunikation mitMessageStore
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Testen in C#
Verwendete TechnologienThema heute:
Unit Testing Framework : Microsoft VS Unit TestingCode Coverage Analyse (beinhaltet in Microsoft VisualStudio Ultimate/Premium)
Kommende Themen :
Pex (benotigt Visual Studio 2010)Spec Explorer (benotigt Visual Studio 2010 oder 2012)CodeContracts
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Unit Test - Erstellung
Neuer Test durch : Test → New Test ... → wahleUnit Test Wizard (erstellt Stubs)
beim ersten Mal : Create a new Visual C# test
project ...
danach : Auswahl des entsprechenden Testprojekts(verwende Projekt aus Framework)
nachste Seite : klicke Checkbox neben zu testendenKlassen
→ Test-Methoden-Stubs werden erstellt, erweitereTest-Klasse um weitere Tests
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Unit Test - Erstellung (Screenshots 1)
Abbildung : Screenshot von Unit-Test Erstellung Maske.
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Unit Test - Erstellung (Screenshots 2)
Abbildung : Auswahl der zu testenden Klassen.
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Test-Klassen-Methoden
Die Bedeutung von Methoden wird durch Attribute definiert:
TestMethod() Testcase der ausgefuhrt werden kann
TestClass() kennzeichnet Klasse, die Tests beinhaltet
TestInitialize() wird vor jedem Test aufgerufen (nutzlich zurKonfiguration von zu testenden Objekten)
TestCleanup() wird nach jedem Test aufgerufen
ExpectedException(typeof(ExceptionClass)) zusatzlich zuTestMethod(), eine Exception der KlasseExceptionClass wird erwartet
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Unit Test
Ausfuhrungein Test : Rechts-Klick in Test-Method → Run Tests
alle Tests in Klasse : Rechts-Klick in Test-Klasse → Run
Tests
alle Test in Solution : Test → Run→ All Tests in
Solution, oder Crtl+R,A
AssertionsAssertions werden mittels Methoden der KlasseMicrosoft.VisualStudio.TestTools.UnitTesting.
Assert ausgedruckt.
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Testen von Messageboard
Zugriff zu protected AttributenViele Methoden verandern nur den Zustand von protectedAttributen der Klassen und Auswirkungen sind nicht sofortersichtlich. Es kann Sinn machen, die Assertions uber diese zudefinieren. Dafur muss die Kapselung im Test gebrochenwerden. Zwei Moglichkeiten:
Verwendung vonMicrosoft.VisualStudio.TestTools.UnitTesting.
PrivateObject-Klasse
Innerhalb von Testprojekt: Ableiten von Klasse undpublic-Zugriffsmethoden implementieren
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Ein erster Unit Test
Im Framework enthalten
Zeigt Verwendung von Messageboard(Kommunikationaufbau und -abbau)
Code Coverage zahlt nicht zu Punkten
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Ein erster Unit Test - Code Coverage
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Code Coverage
Fur die Code Coverage Analyse muss diese in den TestSettings(Data and Diagnostics) fur das entsprechendeArtefakt ausgewahlt sein
Erreichbar uber : Test → Edit Test Settings
Resultat-Fenster aktivierbar durch : Test → Windows→Code Coverage Results
Bei einem Doppelklick auf eine Methode in diesemFenster wird der getestete Code farbkodiert angezeigt.
Blau hinterlegt werden voll abgedeckte ZeilenRot hinterlegt werden nicht abgedeckte ZeilenGelb hinterlegt werden partiell abgedeckte Zeilen
Fur die Aufgabe mussen alle Zeilen voll abgedeckt werden
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1
Organisatorisches Assignment 1 Testen in C#
Danke fur Ihre Aufmerksamkeit!
TU Graz VU Qualitatssicherung in der Softwareentwicklung SS 2015 Assignment 1