Sinds drupal 7 is de module simpletest geintegreerd in core. Door het maken van een core patch wordt het nut en de globale werking duidelijk gemaakt van unit testing.
1. Unit Testing
Raymond Muilwijk
Michel van de Ven
Madcap BV
http://open.madcap.nl http://www.madcap.nl
2. Agenda
● De theorie
● Wat zijn unit tests?
● Wat heb je er aan?
● Test-first programming
● Pointers and pitfalls
● De praktijk
● Demonstratie unit tests & refactoring, test-first
programming
● Toekomst van simpletest
● Q&A
3. Wat zijn unit tests?
● Doel is verificatie en validatie:
Bouwen we het systeem juist?
Bouwen we het juiste systeem?
● In code geformuleerde tests die, in een
bekende context, “units” van het systeem
functioneel testen.
(Unit = functie, module, class &c)
● Voorspelbaar, reproduceerbaar.
● Programmer Tests & Customer Tests,
integratietest
4. Wat heb je er aan? (1)
● Write once, use forever: zinvolle investering.
● Levende systeemdocumentatie: samen met de
code onderhouden, dus actueel.
● Controle op regressie van bugs: iedere bug zijn
eigen unit test.
● Courage to change: geen onvermoede
effecten.
● Hulp bij impactanalyse: Wat is de fan-out als ik
deze interface verander?
5. Wat heb je er aan? (2)
● Werkt toepassen van gezonde software
engineering principes in de hand:
● Functionele decompositie.
● Decoupling & isolation, reduceren afhankelijkheden.
● MVC, Law of Demeter, YAGNI, DRY.
● Voorwaarde voor het kunnen doen van
refactoring.
● Kwaliteit.
6. Test-first programming
● Eerst de test, dan pas de code.
● Unit test is zeer precieze want in code
geformuleerde specificatie.
● Belangrijke effecten:
● Het formuleren van de unit test dwingt tot het doen
van analyse en ontwerp (JIT, XP)
● Je kunt stoppen met coderen precies wanneer de
unit test slaagt.
Do the simplest thing that could possibly work.
You are not going to need it.
7. Pointers & Pitfalls
● Unit tests tonen, net als alle andere methoden,
alleen de aanwezigheid van bugs aan, niet de
afwezigheid.
● De code van de unit test kan net zo buggy zijn
als het testonderwerp.
● Unit tests moeten tezamen met de code
onderhouden worden.
● Hoeveel unit tests moet je maken?
Test everything that can possibly break.
● Gebruik van revisie controle is voorwaarde.