Testovanie
Základy softvérového inžinierstva
Sergej Chodarev (sergejx.net)
Ako vieme, či program funguje?
Manuálne testovanie
- veľmi zdĺhavé
- na niečo môžeme zabudnúť
Test Early, Test Often, Test Automatically
Tests that run with every build are much more effective than test plans that sit on a shelf.
– The Pragmatic Programmer
Automatické testy
- rýchle
- spúšťané keď je to potrebné
Verifikácia a validácia
Verifikácia – overenie správnosti produktu vzhľadom k formulovaným požiadavkám (Vytvárame produkt správne?)
Validácia – overenie správnosti produktu vzhľadom k potrebám zákazníka (Vytvárame správny produkt?)
Krabičky
- Black box testing
- White box testing
Testing pyramid
Jednotkové testy
- testovanie jednotlivých modulov
- píšu priamo autori modulov
- integrálna súčasť vývoja
Čo testovať?
- verejné rozhranie modulu
- test je špecifikácia
Testing Is Not About Finding Bugs
A test is a perspective into your code, and gives you feedback about its design, API, and coupling.
– The Pragmatic Programmer
Mocking
- náhrada iných modulov
- možnosť sledovať interakcie
Štýly testovania
- solitary unit tests
- sociable unit tests
Integračné testy
- integrácia medzi modulmi
- integrácia s inými službami
End-to-end testy
- aplikácia ako celok
- v reálnych podmienkach
- z pohľadu používateľa
Akceptačné testy
- testovanie z pohľadu zákazníka
- očakávané správanie systému
- Behaviour-Driven Development (BDD)
Pokrytie kódu testmi
- test coverage
- podiel kódu, ktorý sa vykonáva počas testovania
- dobrý nástroj, zlý cieľ
Test-driven development (TDD)
- Napísať test (alebo jeho časť) – červená
- Napísať kód, aby testy prešli – zelená
- Zlepšiť kód – refactoring
Test Your Software, or Your Users Will
Test ruthlessly. Don’t make your users find bugs for you.
– The Pragmatic Programmer