poznańska grupa .net spotkanie vi - test driven development
TRANSCRIPT
![Page 1: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/1.jpg)
Bartłomiej Szafko
![Page 2: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/2.jpg)
Be Driven!Be Driven!
Wymagana dyscyplina Szersze spojrzenie na
programowanie Umiejętność zastosowania się do
zaleceń
![Page 3: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/3.jpg)
Test Driven!Test Driven!
Testy Kodowanie Uruchamianie
testów Naprawianie kodu Uruchamianie
testów(znowu) Refaktoryzacja
Za Asutosh Nilkanth http://www.nilkanth.com
![Page 4: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/4.jpg)
TDD jest AGILETDD jest AGILE
AGILE: grupa metodyk projektowych eXtremeProgramming: iteracje +
TESTOWANIE Szybko dostarczamy działające
oprogramowanie Klient może sobie podziałać na
prawie gotowej aplikacji Silne nastawienie na zmianę
![Page 5: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/5.jpg)
http://www.extremeprogramming.org
![Page 6: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/6.jpg)
TestowanieTestowanie Przecież sprawdzam mój kod! Rodzaje testów
Unit Integration(moduły) Functional(według specyfikacji, user
story) System( wymagania)
System integration ( współpraca z innymi aplikacjami)
Acceptance – akceptacji: Alfa + Beta
Testy dokumentują kod
![Page 7: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/7.jpg)
Testowanie – cd.Testowanie – cd.
To, że przechodzą testy, nie oznacza, że nie ma błędów
Im więcej błędów znajdziesz – tym więcej ich jest (nieodkrytych?)
Nie wszystkie błędy naprawiamy ???
![Page 8: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/8.jpg)
Unit TestingUnit Testing
Testowanie małych kawałków kodu - unitów
Unit: Procedura, funkcja ( w językach
proceduralnych) Metoda
![Page 9: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/9.jpg)
Zasady budowania testówZasady budowania testów
Zostajemy w obrębie procesu i hosta Nie testujemy zapisywanie/pobierania z
bazy danych Problem: taki sam stan bazy przed testami Problem: zewnętrzna zależność serwer SQL
Nie testujemy wywołań web service, ani niczego sieciowego
Pojedyncze sprawdzenie wyniku(Assert), jeśli więcej rozbijamy test
Czasem osobny test dla każdej metody Testy na wyjątki na końcu
![Page 10: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/10.jpg)
NUNIT(www.nunit.org)NUNIT(www.nunit.org)
Atrybuty: TestFixture – klasa Test – metoda – właściwy test + Asserty
ExpectedException SetUp – metoda – stan na start TearDown – metoda – przywrócenie
stanu orginalego Assert – sprawdzanie wartości DEMO
![Page 11: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/11.jpg)
Mock, fake Mock, fake
Oszukane implementacje interfejsów Pozwala dodać listę metoda – wynik;
property – wynik; Pozwalają ominąć kawałki sięgające na
zewnątrz (np. baza danych, web service) Nmock ( http://www.nmock.org) Pozwala na wielokrotne wywołania
metod DEMO
![Page 12: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/12.jpg)
Code coverage – pokrycie Code coverage – pokrycie kodukodu Chcemy, żeby nasze testy pokrywały
100% kodu Wszystkie rozgałęzienia:
If, case, exceptions, catch Pozwala stwierdzić ile i _JAKI_ kod nie
jest testowany NCover (http://www.ncover.org/),
niestety płatny
![Page 13: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/13.jpg)
Testowanie UI - WinformsTestowanie UI - Winforms
NUnitForms (http://nunitforms.sourceforge.net/)
TestRecoder Problem: okna modalne, własne
kontrolki DEMO
![Page 14: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/14.jpg)
Testowanie UI – ASP .NETTestowanie UI – ASP .NET
WatiN (http://watin.sourceforge.net/) WatiN TestRecoder WatiN nadaje się do stress testów WADY:
Wolno działa Zmiany w .aspx mogą uniemożliwić
testowanie VSTS ma dobre narzędzia do testowania
Web: Symulowanie różnych rozkładów obciążeń
DEMO
![Page 15: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/15.jpg)
Ciekawe narzędziaCiekawe narzędzia
Wtyczka do VS TestDriven.NET ( http://www.testdriven.net)
![Page 16: Poznańska grupa .Net spotkanie VI - Test Driven Development](https://reader034.vdocuments.mx/reader034/viewer/2022042700/5563836ad8b42ad2128b4705/html5/thumbnails/16.jpg)
Pytania? Kompilacja linków + slajdy:
http://bartekszafko.inc.pl Dziękuję za uwagę