SlideShare une entreprise Scribd logo
1  sur  59
Strategie Automatyzacji Testów
Wiktor Żołnowski
www.agileszkolenia.pl
facebook.com/CodeSprinters
Waterfall vs Agile
Automatyzacja Testów w projektach typu “green field”
● Piramida Testów
● Continuous Integration
● Test-Driven Development
● Behavior-Driven Development
● Continuous Delivery
Testy End-to-end - ~10%
•Testy funkcjonalne - ~20%
•Testy Jednostkowe - ~70%
Piramida Testów
Continuous Integration
Continuous Integration - Praktyki
● Repozytorium Kodu
● Automatyczny Build
● Każda zmiana jest testowana w środowisku testowym
● Build powinien być samo-testujący się
● Build powinien być szybki
● Środowisko testowe odpowiada środowisku produkcyjnemu
● Łatwy dostęp do wyników testów oraz ostatniej działającej
wersji
● Każdy widzi wyniki
● Automatyczny deployment
Continuous Integration – Repozytorium kodu
● Wszystkie artefakty są wersjonowane w repozytorium kodu
● Zmiany są commitowane i integrowane jak najczęściej –
przynajmniej raz dziennie
● Ilość rozgałęzień w repozytorium powinna być zredukowana do
minimum – zmiany powinny być ciągle integrowane.
Continuous Integration – Automatyczny Build
● Powinna być możliwość zbudowania całego systemu za pomocą
jednej komendy.
● Narzędzia 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 wspólnym środowisku
testowym
Continuous Integration – Testy Automatyczne
● Każda zmiana powinna być przetestowana za pomocą
automatycznych testów.
● Serwer Continuous Integration powinien budować aplikacje,
instalować ją w środowisku testowym oraz uruchamiać testy.
Continuous Integration – Szybki Build
Continuous Integration – Łatwy dostęp do ostatniej
działąjącej wersji
Continuous Integration
Test-Driven Development
Test First Development
Testowanie to forma dostarczania
informacji zwrotnej na temat tego czy i
jak testowane oprogramowanie działa.
Im szybciej i częściej dostarczana jest
informacja o działaniu aplikacji tym
bardziej jest ona wartościowa.
TFD polega na utworzeniu pętli
dostarczającej częstą i trafną informację
dla jak najmniejszych wprowadzanych
zmian.
Pętla Test First
1. Napisz test
2. Uruchom test
3. Wprowadź zmianę
4. Uruchom testy
Test F.I.R.S.T
FAST: Testy powinny być szybkie.
INDEPENDENT: Testy powinny być niezależne.
REPEATABLE: Testy powinny być powtarzalne.
SELF VALIDATING: Testy powinny dawać jednoznaczną
odpowiedź na temat tego czy oprogramowanie działa.
TIMELY: Testy powinny być pisane w odpowiednim
momencie.
Fast
Co to znaczy, że test jest szybki?
Jeśli testy są zbyt wolne to nie są
uruchamiane wystarczająco
często.
Independent
Kolejność uruchamiania testów nie
powinna mieć znaczenia.
Powinna być możliwość
uruchomienia każdego testu w
odizolowaniu od pozostałych.
Jeśli jeden test nie przejdzie wyniki
pozostałych nie powinny być od
tego zależne.
Repeatable
Bez zmian w funkcjonalności testy
zawsze powinny dawać takie same
wyniki.
Testy powinny być niezależne od
środowiska na którym są
uruchamiane.
Koniec z tekstami:
"A u mnie działa".
Self Validating
Testy dostarczają informacji
zwrotnej czyli jednoznacznej
odpowiedzi na temat tego czy i jak
działa wytwarzane
oprogramowanie.
Informacja o statusie testów nie
powinna wymagać żadnej
ingerencji testera czy developera.
Timely
Testy powinny być pisane przed
kodem produkcyjnym.
Odkładanie pisania testów na "po
kodzie produkcyjnym" nie ma sensu
gdyż wtedy testy już nie są przeważnie
nam potrzebne.
Pisanie testów po kodzie powoduje, że
rosną koszty ich wytworzenia i
utrzymania.
Test-Driven Development
Oprócz testów do naszej pętli
dodajemy jeszcze projektowanie
architektury.
TDD = TFD + Refactoring
TDD opiera się na wytwarzaniu oprogramowania w bardzo
małych krokach.
W jednym kroku piszemy jeden test i jedną małą
funkcjonalność.
Nie dotykamy kodu funkcjonalności, gdy nie mamy
napisanego testu, który nie przechodzi.
Pętla TDD
Dyscyplina
Zgodnie z definicją wszystko wydaje się być proste.
W praktyce okazuje się, że potrzebna jest bardzo duża dyscyplina
by przestrzegać powyższych zasad.
Nad własną dyscypliną trzeba wytrwale pracować.
Dwie podstawowe zasady
Piszemy kod nowej funkcjonalności tylko gdy testy nie przechodzą.
Usuwamy wszystkie duplikacje na które natrafimy.
Efekt
Każdy pisze testy, gdyż nie ma czasu na czekanie aż ktoś inny zrobi to za
nas.
Kod tworzony jest na podstawie świadomie podjętych decyzji zasilonych
informacją z testów.
Każdy nawet najmniejszy element aplikacji jest przemyślany i
odpowiednio zaprojektowany.
Szybka informacja zwrotna podczas wprowadzania bardzo małych zmian
pozwala na łatwe wykrywanie błędów.
Architektura wyłania się dzięki bardzo małym krokom i ciągłemu
refactoringowi...
TDD jest przede wszystkim techniką
tworzenia specyfikacji i architektury
wyłaniającej się.
Testy są efektem ubocznym.
Testy powstałe przy użyciu 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 osiągnąć interesariusz?
3. Jakie możliwości powinien dostarczać nasz produkt by osiągnąć
cel interesariusza?
4. Jak ta funkcjonalność ma wyglądać?
5. Jak ta funkcjonalność ma zostać zaimplementowana?
Behavior Driven Development
Behavior Driven Development – User Stories
In order to <goal>
As a <stakeholde>
I want <action>
Behavior Driven Development – User Stories
In order to log in into application
As a user
I want log in to application
Behavior Driven Development – User Stories
In order to provide limited access to sensitive user data
As a registered user
I would like to have possibility of authentication
In order to have possibility to send SPAM to users
As 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 Testów w projektach typu “legacy”
● Legacy Code
● Odwrócona Piramida Testów
● Refaktoring
Testy End-to-end
Testy Funkcjonalne/Integracyje
Testy Jednostkowe
Jak wygląda oprogramowanie idealne?
Testy End-to-end
Testy Funkcjonalne/Integracyje
Testy Jednostkowe
Dlaczego więc wygląda to tak?
Testy End-to-end
Dług techniczny...
Testy End-to-end
Dług techniczny...
Dlaczego automatyzujemy testy?
Bezpieczeństwo...
Odwaga...
Testy End-to-end
Testy Funkcjonalne/Integracyje
Testy Jednostkowe
Testy End-to-end
Testy Funkcjonalne/Integracyje
Testy Jednostkowe
Tak, jasne...
Czasami piramida testów wygląda 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 umożliwić
refaktoryzację kodu na
niższych poziomach.
•Tworzymy testy
jednostkowe
•Usuwamy testy end-to-
end!
Zadowolony developer
Wiktor Żołnowski
www.agileszkolenia.pl
http://blog.testowka.pl
facebook.com/CodeSprinters
wiktor.zolnowski@gmail.com

Contenu connexe

Tendances

Tendances (20)

String Manipulation in Python
String Manipulation in PythonString Manipulation in Python
String Manipulation in Python
 
Collaborative Filtering and Recommender Systems By Navisro Analytics
Collaborative Filtering and Recommender Systems By Navisro AnalyticsCollaborative Filtering and Recommender Systems By Navisro Analytics
Collaborative Filtering and Recommender Systems By Navisro Analytics
 
End-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingEnd-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of Testing
 
İşletim Sistemi Bellek Yönetimi
İşletim Sistemi Bellek Yönetimiİşletim Sistemi Bellek Yönetimi
İşletim Sistemi Bellek Yönetimi
 
Python programming
Python programmingPython programming
Python programming
 
Introduction to programming with python
Introduction to programming with pythonIntroduction to programming with python
Introduction to programming with python
 
zeromq
zeromqzeromq
zeromq
 
Detecting Paraphrases in Marathi Language
Detecting Paraphrases in Marathi LanguageDetecting Paraphrases in Marathi Language
Detecting Paraphrases in Marathi Language
 
Knowledge Extraction
Knowledge ExtractionKnowledge Extraction
Knowledge Extraction
 
Python, the Language of Science and Engineering for Engineers
Python, the Language of Science and Engineering for EngineersPython, the Language of Science and Engineering for Engineers
Python, the Language of Science and Engineering for Engineers
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
Python Programming Essentials - M9 - String Formatting
Python Programming Essentials - M9 - String FormattingPython Programming Essentials - M9 - String Formatting
Python Programming Essentials - M9 - String Formatting
 
Practices of the Python Pro: coding best practices
Practices of the Python Pro: coding best practicesPractices of the Python Pro: coding best practices
Practices of the Python Pro: coding best practices
 
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Data Analysis With Pandas
Data Analysis With PandasData Analysis With Pandas
Data Analysis With Pandas
 
Python sqlite3
Python sqlite3Python sqlite3
Python sqlite3
 
Python programming : Inheritance and polymorphism
Python programming : Inheritance and polymorphismPython programming : Inheritance and polymorphism
Python programming : Inheritance and polymorphism
 
Glove global vectors for word representation
Glove global vectors for word representationGlove global vectors for word representation
Glove global vectors for word representation
 
PyTorch Python Tutorial | Deep Learning Using PyTorch | Image Classifier Usin...
PyTorch Python Tutorial | Deep Learning Using PyTorch | Image Classifier Usin...PyTorch Python Tutorial | Deep Learning Using PyTorch | Image Classifier Usin...
PyTorch Python Tutorial | Deep Learning Using PyTorch | Image Classifier Usin...
 

En vedette

Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
Wiktor Żołnowski
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Geek Girls Carrots Poznan
 

En vedette (20)

Ewa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnychEwa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnych
 
People are awesome - ALE 2014
People are awesome - ALE 2014People are awesome - ALE 2014
People are awesome - ALE 2014
 
Bdd and Agile Requirements
Bdd and Agile RequirementsBdd and Agile Requirements
Bdd and Agile Requirements
 
Ui testing with espresso
Ui testing with espressoUi testing with espresso
Ui testing with espresso
 
Fast deterministic screenshot tests for Android
Fast deterministic screenshot tests for AndroidFast deterministic screenshot tests for Android
Fast deterministic screenshot tests for Android
 
Android Espresso
Android EspressoAndroid Espresso
Android Espresso
 
Tech Talk #5 : Android Automation Test with Espresso - Trần Văn Toàn
Tech Talk #5 : Android Automation Test with Espresso - Trần Văn ToànTech Talk #5 : Android Automation Test with Espresso - Trần Văn Toàn
Tech Talk #5 : Android Automation Test with Espresso - Trần Văn Toàn
 
Espresso testing
Espresso testingEspresso testing
Espresso testing
 
Testing android apps with espresso
Testing android apps with espressoTesting android apps with espresso
Testing android apps with espresso
 
Stickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy softwareStickies on the wall will not help you if you are building crappy software
Stickies on the wall will not help you if you are building crappy software
 
A little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guideA little bird told me... about a good page in your user guide
A little bird told me... about a good page in your user guide
 
Abe 2012
Abe 2012Abe 2012
Abe 2012
 
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
Continuous Delivery - kolejny krok na drodze do Agile - Quality Excites 2014
 
Frameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika BraunFrameworki agilowe w obszarze testow - Monika Braun
Frameworki agilowe w obszarze testow - Monika Braun
 
Sqa days2013
Sqa days2013Sqa days2013
Sqa days2013
 
Xp days ukraine 2012
Xp days ukraine 2012Xp days ukraine 2012
Xp days ukraine 2012
 
Monika Braun - Agile Test Team
Monika Braun - Agile Test TeamMonika Braun - Agile Test Team
Monika Braun - Agile Test Team
 
Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016Bdd and Agile Requirements Boiling Frogs 2016
Bdd and Agile Requirements Boiling Frogs 2016
 
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowaniaBogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
Bogna Majchrzak, Magda Traciłowska - Tester jako strażnik jakości oprogramowania
 
selenium grid & docker
selenium grid & dockerselenium grid & docker
selenium grid & docker
 

Similaire à Strategie automatyzacji testow

Kariera it Sopot
Kariera it SopotKariera it Sopot
Kariera it Sopot
neoteric-eu
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
kraqa
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
Infoshare
 

Similaire à Strategie automatyzacji testow (20)

Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
university day 1
university day 1university day 1
university day 1
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołu
 
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacjeTdd - Czyli jak tworzyć dobre jakościowo aplikacje
Tdd - Czyli jak tworzyć dobre jakościowo aplikacje
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 
Automatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacjiAutomatyzacja w praktyce. Praktyka automatyzacji
Automatyzacja w praktyce. Praktyka automatyzacji
 
MS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowychMS - Wprowadzenie do testów jednostkowych
MS - Wprowadzenie do testów jednostkowych
 
Kariera it Sopot
Kariera it SopotKariera it Sopot
Kariera it Sopot
 
SkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel DecSkładQA 2018 - Daniel Dec
SkładQA 2018 - Daniel Dec
 
Few Questions about Continuous Delivery
Few Questions about Continuous DeliveryFew Questions about Continuous Delivery
Few Questions about Continuous Delivery
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
Od Produktywności do Sabotażu - Sławomir Radzymiński, KraQA #31
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
Agile & Scrum podstawy
Agile & Scrum podstawyAgile & Scrum podstawy
Agile & Scrum podstawy
 
Matka, żona, i...testerka
Matka, żona, i...testerkaMatka, żona, i...testerka
Matka, żona, i...testerka
 
Wstęp do Agile
Wstęp do AgileWstęp do Agile
Wstęp do Agile
 
Bezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowychBezstratna kompresja listy przypadków testowych
Bezstratna kompresja listy przypadków testowych
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 

Strategie automatyzacji testow