Poznańska grupa .Net spotkanie VI - Test Driven Development

16
Bartłomiej Szafko

Transcript of Poznańska grupa .Net spotkanie VI - Test Driven Development

Page 1: Poznańska grupa .Net spotkanie VI - Test Driven Development

Bartłomiej Szafko

Page 2: Poznańska grupa .Net spotkanie VI - Test Driven Development

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

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

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

http://www.extremeprogramming.org

Page 6: Poznańska grupa .Net spotkanie VI - Test Driven Development

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

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

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

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

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

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

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

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

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

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

Pytania? Kompilacja linków + slajdy:

http://bartekszafko.inc.pl Dziękuję za uwagę