Workshop Softwarearchitektur
zum Inhalt springen
Suche
Suche
Anmelden
Admin
Sie befinden sich hier:
main
»
knowhow
»
unittesting
Unit testing
Was ist ein Unit?
Einheit: Übereinkunft im Team
Unit Testing deutsch: Modultest, Komponententest → keine Aussage über die Größe eines Units
Wikipeda unit testing: A unit is the smallest testable part of an application
Nützlich?
Abgrenzungen
Akzeptanztests - Erfüllt das Programm die Anforderungen
Funktionale Anforderungen
Nichtfunktionale Anforderungen
⇒ Concordion
Integrationstest - Zusammenspiel von Komponenten
Teile des Systems
Ganzes System
Unit Test
Testbare Teile in isolation
Typisch in OO: Klassentest
Auch Integrationstests und Akzeptanztests können mit xUnit geschrieben sein!
Was finden wir oft in existierender Software vor?
Ein paar mit xUnit geschriebene Tests
Tests prüfen eine Hand voll Probleme, oftmals mehrere Komponenten im Zusammenspiel.
Manchmal unter Einbeziehung der Umwelt
–> Das sind keine Unit-Tests
Was leistet eigentlich Unit-Testing?
Einfaches Beispiel: Code Kata Anagramm:
http://www.codingdojo.org/cgi-bin/wiki.pl?KataBankOCR
Wir machen das als TDD (Checksum)
Regeln für einen Unit-Test live erarbeiten (Protokoll)
What is the object under Test?
Naming (Assumption On Condition)
Keine Reihenfolge
Common Setup - nur um die Lesbarkeit zu erhöhen
Mocking (Don't use 3rd party)
Mocks / Stubs
http://martinfowler.com/articles/mocksArentStubs.html
–> Hauptgrund für IoC, Programming against Interfaces, etc. …
http://mockito.googlecode.com/svn/branches/1.5/javadoc/org/mockito/Mockito.html
State vs. Behaviour
lawnsprinkler.enable()
expect valve.open()
verify(grass.isWet())
Beobachtungen:
Programm und Test ist fertig, können wir Bugs finden?
Was soll das ganze dann?
Aufgaben von Unit-Tests
Test von Entwicklerannahmen
Die Tests stellen sicher, dass die Klassen das Interface erfüllen, das wir als Entwickler festegelegt haben.
Umfangeiche Interfaces machen mehr Mühe beim Testen: Interfaces werden kleiner
Hauptnutzen: Ich kann die Implementaton ändern und merke ob die neue Implementation noch das alte Interface erfüllt (Regression)
Aber: Unit-Tests sind kein Ersatz für weiteres Testing (siehe Abgrenzung)
Aber: Unit-Tests finden keine neuen Bugs
Nach der Entwicklung ist der Test OK
Non-Functional:
Tests müssen ohne Aufwand durchzuführen sein
Test müssen schnell sein
Ergebnis: Höheres Vertrauen des Entwicklers in den Code
Ergebnis: Verhindert „ich traue mich nicht das zu ändern“
Unit Test
,
Testing
,
Integrationstest
,
Requirements
,
TDD
,
Mocking
Workshop Softwarearchitektur
Vorstellung
Treffen
Archiv 2010/2011
Archiv 2012
Archiv 2013
I/2014 19.02.13 MUC
II/2014 26.06.13 MUC
Knowledge Base
Mitgliederbereich
Planspiel Projekt
Prototyping
Unit Testing
Todoliste
Inbox
Themen-Pool
Impressum
Back to Top