Strategie automatyzacji testow

download Strategie automatyzacji testow

If you can't read please download the document

Transcript of Strategie automatyzacji testow

Strategie Automatyzacji Testw

Wiktor onowski www.agileszkolenia.plfacebook.com/CodeSprinters

Waterfall vs Agile

Automatyzacja Testw w projektach typu green field

Piramida Testw

Continuous Integration

Test-Driven Development

Behavior-Driven Development

Continuous Delivery

Testy End-to-end -~10%

Testy funkcjonalne - ~20%

Testy Jednostkowe - ~70%

Piramida Testw

Continuous Integration

Continuous Integration - Praktyki

Repozytorium Kodu

Automatyczny Build

Kada zmiana jest testowana w rodowisku testowym

Build powinien by samo-testujcy si

Build powinien by szybki

rodowisko testowe odpowiada rodowisku produkcyjnemu

atwy dostp do wynikw testw oraz ostatniej dziaajcej wersji

Kady widzi wyniki

Automatyczny deployment

Continuous Integration Repozytorium kodu

Wszystkie artefakty s wersjonowane w repozytorium kodu

Zmiany s commitowane i integrowane jak najczciej przynajmniej raz dziennie

Ilo rozgazie w repozytorium powinna by zredukowana do minimum zmiany powinny by cigle integrowane.

Continuous Integration Automatyczny Build

Powinna by moliwo zbudowania caego systemu za pomoc jednej komendy.

Narzdzia takie jak make, ant, maven, nuget, rake, DEB, RPM, MSI mog okaza si pomocne.

Automatyzacja budowania oprogramowania powinna zawiera w sobie instalacj tego oprogramowania we wsplnym rodowisku testowym

Continuous Integration Testy Automatyczne

Kada zmiana powinna by przetestowana za pomoc automatycznych testw.

Serwer Continuous Integration powinien budowa aplikacje, instalowa j w rodowisku testowym oraz uruchamia testy.

Continuous Integration Szybki Build

Continuous Integration atwy dostp do ostatniej dziajcej wersji

Continuous Integration

Test-Driven Development

Test First Development

Testowanie to forma dostarczania informacji zwrotnej na temat tego czy i jak testowane oprogramowanie dziaa.

Im szybciej i czciej dostarczana jest informacja o dziaaniu aplikacji tym bardziej jest ona wartociowa.

TFD polega na utworzeniu ptli dostarczajcej czst i trafn informacj dla jak najmniejszych wprowadzanych zmian.

Ptla Test First

Napisz test

Uruchom test

Wprowad zmian

Uruchom testy

Test F.I.R.S.T

FAST: Testy powinny by szybkie.INDEPENDENT: Testy powinny by niezalene.REPEATABLE: Testy powinny by powtarzalne.SELF VALIDATING: Testy powinny dawa jednoznaczn odpowied na temat tego czy oprogramowanie dziaa.TIMELY: Testy powinny by pisane w odpowiednim momencie.

Fast

Co to znaczy, e test jest szybki?

Jeli testy s zbyt wolne to nie s uruchamiane wystarczajco czsto.

Independent

Kolejno uruchamiania testw nie powinna mie znaczenia.

Powinna by moliwo uruchomienia kadego testu w odizolowaniu od pozostaych.

Jeli jeden test nie przejdzie wyniki pozostaych nie powinny by od tego zalene.

Repeatable

Bez zmian w funkcjonalnoci testy zawsze powinny dawa takie same wyniki.

Testy powinny by niezalene od rodowiska na ktrym s uruchamiane.

Koniec z tekstami:"A u mnie dziaa".

Self Validating

Testy dostarczaj informacji zwrotnej czylijednoznacznej odpowiedzi na temat tego czy i jak dziaa wytwarzane oprogramowanie.

Informacja o statusie testw nie powinna wymaga adnej ingerencji testera czy developera.

Timely

Testy powinny by pisane przed kodem produkcyjnym.

Odkadanie pisania testw na "po kodzie produkcyjnym" nie ma sensu gdy wtedy testy ju nie s przewanie nam potrzebne.

Pisanie testw po kodzie powoduje, e rosn koszty ich wytworzenia i utrzymania.

Test-Driven Development

Oprcz testw do naszej ptli dodajemy jeszcze projektowanie architektury.

TDD = TFD + Refactoring

TDD opiera si na wytwarzaniu oprogramowania w bardzo maych krokach.

W jednym kroku piszemyjedentest ijednma funkcjonalno.

Nie dotykamy kodu funkcjonalnoci, gdy nie mamy napisanego testu, ktrynieprzechodzi.

Ptla TDD

Dyscyplina

Zgodnie z definicj wszystko wydaje si by proste.

W praktyce okazuje si, e potrzebna jest bardzo dua dyscyplina by przestrzega powyszych zasad.

Nad wasn dyscyplin trzeba wytrwale pracowa.

Dwie podstawowe zasady

Piszemy kod nowej funkcjonalnoci tylko gdy testynie przechodz.

Usuwamywszystkieduplikacje na ktre natrafimy.

Efekt

Kady pisze testy, gdy nie ma czasu na czekanie a kto inny zrobi to za nas.

Kod tworzony jest na podstawie wiadomie podjtych decyzji zasilonych informacj z testw.

Kady nawet najmniejszy element aplikacji jest przemylany i odpowiednio zaprojektowany.

Szybka informacja zwrotna podczas wprowadzania bardzo maych zmian pozwala na atwe wykrywanie bdw.

Architektura wyania si dziki bardzo maym krokom i cigemu refactoringowi...

TDD jest przede wszystkim technik tworzenia specyfikacji i architektury wyaniajcej si.

Testy s efektem ubocznym.

Testy powstae przy uyciu TDD to nie wszystko.

Dobrze napisane testy s wykonywaln dokumentacj kodu

Czym jest TDD

Wymagania i specyfikacja czyli to, co testujemy

1. Jaki mamy cel biznesowy?

2. Co chce osign interesariusz?

3. Jakie moliwoci powinien dostarcza nasz produkt by osign cel interesariusza?

4. Jak ta funkcjonalno ma wyglda?

5. Jak ta funkcjonalno ma zosta zaimplementowana?

Behavior Driven Development

Behavior Driven Development User Stories

In order to As a I want

Behavior Driven Development User Stories

In order to log in into applicationAs a userI want log in to application

Behavior Driven Development User Stories

In order to provide limited access to sensitive user dataAs a registered userI would like to have possibility of authentication

In order to have possibility to send SPAM to usersAs a business owner I would like to have possibility to ask users for their email address

Behavior Driven Development User Stories

In order to...As a... I would like to...

Behavior Driven Development Scenariusze

//GIVEN...kontekst...//WHEN...akcja...//THEN...walidacja...

Page Object Pattern + BDD

A teraz... Kodzik...

Continuous Delivery

Automatyzacja Testw w projektach typu legacy

Legacy Code

Odwrcona Piramida Testw

Refaktoring

Testy End-to-end

Testy Funkcjonalne/Integracyje

Testy Jednostkowe

Jak wyglda oprogramowanie idealne?

Testy End-to-end

Testy Funkcjonalne/Integracyje

Testy Jednostkowe

Dlaczego wic wyglda to tak?

Testy End-to-end

Dug techniczny...

Testy End-to-end

Dug techniczny...

Dlaczego automatyzujemy testy?

Bezpieczestwo...

Odwaga...

Testy End-to-end

Testy Funkcjonalne/Integracyje

Testy Jednostkowe

Testy End-to-end

Testy Funkcjonalne/Integracyje

Testy Jednostkowe

Tak, jasne...

Czasami piramida testw wyglda jako tak...

Testy End-to-end

Testy funkcjonalne/integracyjne

Testy Jednostkowe

Teraz mamy odwag!

Czas...

Problemy z utrzymaniem...

Debugowanie...

Odwracamy piramid

Piszemy testy end-to-end tylko po to, by umoliwi refaktoryzacj kodu na niszych poziomach.

Tworzymy testy jednostkowe

Usuwamy testy end-to-end!

Zadowolony developer

Wiktor onowskiwww.agileszkolenia.plhttp://blog.testowka.plfacebook.com/[email protected]

Click to edit the title text formatClick to edit Master title style

4/4/14

Kliknij, aby edytowa format tekstu tytuu

Kliknij, aby edytowa format tekstu konspektuDrugi poziom konspektuTrzeci poziom konspektuCzwarty poziom konspektuPity poziom konspektuSzsty poziom konspektuSidmy poziom konspektusmy poziom konspektuDziewity poziom konspektu

Kliknij, aby edytowa format tekstu konspektuDrugi poziom konspektuTrzeci poziom konspektuCzwarty poziom konspektuPity poziom konspektuSzsty poziom konspektuSidmy poziom konspektusmy poziom konspektuDziewity poziom konspektu

Click to edit the title text formatClick to edit Master title style

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level

Seventh Outline LevelClick to edit Master text stylesSecond level

Third level

Fourth level

Fifth level

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level

Seventh Outline LevelClick to edit Master text stylesSecond level

Third level

Fourth level

Fifth level

4/4/14

Click to edit the title text formatClick to edit Master title style

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level

Seventh Outline LevelClick to edit Master text stylesSecond level

Third level

Fourth level

Fifth level

4/4/14

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level

Seventh Outline LevelClick to edit Master text stylesSecond level

Third level

Fourth level

Fifth level

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline Level

Seventh Outline LevelClick to edit Master text styles

4/4/14

Click to edit the title text formatClick to edit Master title style