Primo Gabrijeli delphimarand si http www thedelphigeek com
Primož Gabrijelčič delphi@marand. si http: //www. thedelphigeek. com http: //primoz. gabrijelcic. org grafika: Flickr / Gamma-Ray Productions
Embarcadero Akademija preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing Urnik 09. 00 – 10. 30 – 11. 00 – 12. 30 Unit testing, TDD DUnit, DUnit 2, DUnit. X, Test. Insight odmor Unit testing v resničnem svetu, mocking
Embarcadero Akademija Preizkušanje enot preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing » Unit « Testing • » unit « <> » unit « • » unit « = » enota « = majhen samostojen del programa • razred
Embarcadero Akademija Zakaj? • Odpornost proti napakam • Olajšano predelovanje • Testiranje robnih pogojev • Dokumentacija • Dobra zasnova programov preizkušanje enot / unit testing
Embarcadero Akademija Kdaj? • Pred spreminjanjem programa • Med programiranjem • Pred commitom • V build serverju • Med izdelavo release verzije preizkušanje enot / unit testing
Embarcadero Akademija TDD • Najprej test, nato koda repeat Write. ATest(); Watch. It. Fail(); Write. The. Code(); Watch. Test. Pass(); until false; preizkušanje enot / unit testing
Embarcadero Akademija Kako? • Čim manjši del funkcionalnosti • Le en test pravilnosti • Izogibamo se if in case • Pripravi, pokliči, preveri • Najprej pogosti primeri, nato robni • Preverimo proženje izjem • Preverimo vse možne poti • Medsebojno neodvisni preizkusi preizkušanje enot / unit testing
Embarcadero Akademija Ogrodja preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing DUnit • [JUnit] • Juanco Anez • Od 2005 del Delphija • Čarovnika za izdelavo projekta in testnega primera • Grafično in tekstovno izvajalno okolje
Embarcadero Akademija API • TTest. Case • Setup • Tear. Down • Register. Test • Check. XXXX • Expected. Exception preizkušanje enot / unit testing
Embarcadero Akademija Izvajanje for i : = First. Test to Last. Test do begin test. Case : = TMy. Test. Case. Create; try test. Case. Setup; try Run. Test. Case(test. Case, i); finally test. Case. Teardown; end; finally test. Case. Free; end; preizkušanje enot / unit testing
Embarcadero Akademija DUnit 2 • [DUnit] • Peter Mc. Nab • http: //dunit 2. sourceforge. net/ • Združljiv preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing Izboljšave • Testira » puščanje « pomnilnika • XML reporter • Obsežnejši API • Hierarhični testi • Testiranje programov (simulacija interakcije) • GUIAutomation • Hitrejše izvajanje
Embarcadero Akademija preizkušanje enot / unit testing Izvajanje test. Case : = TMy. Test. Case. Create; try for i : = First. Test to Last. Test do begin test. Case. Setup; try Run. Test. Case(test. Case, i); finally test. Case. Teardown; end; finally test. Case. Free; end;
Embarcadero Akademija preizkušanje enot / unit testing DUnit. X • Moderna zasnova • Vincent Parrett (Final Builder) • https: //github. com/VSoft. Technologies/DUnit. X
Embarcadero Akademija Atributi • [Test. Fixture] • [Setup], [Tear. Down] • [Setup. Fixture], [Tear. Down. Fixture] • [Test], [Test. Case] • [Repeat. Test] • [Ignore] • [Category] preizkušanje enot / unit testing
Embarcadero Akademija API • Assert. XXXX • Assert. Will. Raise preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing Test. Insight • Integrirani grafični poganjalnik za DUnit, DUnit 2, DUnit. X • Vgrajen v Delphi • Samodejno izvajanje testov
Embarcadero Akademija Od teorije k praksi … preizkušanje enot / unit testing
Embarcadero Akademija Mocking preizkušanje enot / unit testing
Embarcadero Akademija Odvisni razredi preizkušanje enot / unit testing
Embarcadero Akademija Lažni razredi preizkušanje enot / unit testing
Embarcadero Akademija preizkušanje enot / unit testing Dependency Injection • Inversion of Control (Io. C) • Običajno: Razred izdela primerke razredov, ki jih uporablja • Obrnjeno (Io. C): Razredu nastavimo (injection) primerke razredov, ki jih uporablja
Embarcadero Akademija preizkušanje enot / unit testing Primer type ILogger = interface procedure Log(const msg: string); end; TTested. Class = class strict private FLogger: ILogger; public property Logger: ILogger read FLogger write FLogger; end;
Embarcadero Akademija preizkušanje enot / unit testing Delphi Mocks • Vincent Parrett (DUnit. X) • https: //github. com/VSoft. Technologies/Delphi-Mocks • Avtomatska izdelava lažnih razredov • TStub • TMock • Osnovano na vmesnikih + RTTI
Embarcadero Akademija preizkušanje enot / unit testing Preizkušamo lahko tudi drugače
Embarcadero Akademija Načini preizkušanja • Preizkušanje enot • Integracijsko preizkušanje • Regresijsko preizkušanje • Aplikacijsko preizkušanje • Test. Complete • DUnit + Open. CTF • DUnit 2 preizkušanje enot / unit testing
preizkušanje enot / unit testing Embarcadero Akademija Vprašanja?
- Slides: 30