Artur Wielogórski http://github.com/wodor
Testowanie w PHP Po co piszemy i uruchamiamy testy?
Testowanie w PHP Aby wiedzieć, że : To co implementujemy działa
Testowanie w PHP Aby wiedzieć, że : To co implementujemy działa Nie zepsuliśmy tego co było napisane wcześniej
Testowanie w PHP Aby wiedzieć, że : To co implementujemy działa Nie zepsuliśmy tego co było napisane wcześniej Aby mieć odwagę do refaktoryzacji
Testowanie w PHP Zaufanie
...zawiedzione Testy przechodzą, ale software nie działa.
False Positive! dlaczego
False Positive! Słabo napisane testy
False Positive! Słabo napisane testy Błędy we frontendzie
False Positive! Słabo napisane testy Błędy we frontendzie Błędy w konfiguracji
False Positive! Słabo napisane testy Błędy we frontendzie Błędy w konfiguracji
Web Acceptance, FTW!
Web Acceptance Kto używa Selenium lub Sahi? Kto lubi?
Web Acceptance, WTF? Brak prostego, spójnego języka opisującego zachowania!
False Positive! Słabo napisane testy Błędy we frontendzie Błędy w konfiguracji
False Positive! Słabo napisane testy Brak prostego, spójnego języka opisującego zachowania
Agile!
Agile! Ludzki Język Wykonywalna specyfikacja
Agile! Ludzki Język Wykonywalna specyfikacja Opisuj Zachowania
Agile! Ludzki Język Wykonywalna specyfikacja Opisuj Zachowania Format user story Business Value
Agile! Ludzki Język Wykonywalna specyfikacja Format user story Business Value Opisuj Zachowania Najpierw Testy
Agile! Ludzki Język Wykonywalna specyfikacja Opisuj Zachowania BDD Najpierw Testy Format user story Business Value
\\Poczta\Okienko\Polecone
\\Poczta\Okienko\Polecone Jako adresat Powinienem móc odebrać list adresowany do mnie aby go przeczytać
Gherkin Właściwość: Jako adresat Powinienem móc odebrać list adresowany do mnie aby go przeczytać
Założenia Właściwość: Jako adresat Powinienem móc odebrać list adresowany do mnie aby go przeczytać
Założenia Założenia: Zakładając że istnieją userzy: bob Oraz Na poczcie są listy: bob ala ma kota
Scenariusz Właściwość: Jako adresat Powinienem móc odebrać list adresowany do mnie aby go przeczytać
Scenariusz Założenia: Zakładając że istnieją userzy: bob Oraz Na poczcie są listy: bob ala ma kota Scenariusz: Jako właściciel listu odbieram go Zakładając że jestem "bob" I podchodzę do okienka pytając o list Wtedy powinienem otrzymać list z informacją "ala ma kota"
Scenariusz Założenia: Zakładając że istnieją userzy: bob Oraz Na poczcie są listy: bob ala ma kota Scenariusz: Jako właściciel listu odbieram go Zakładając że jestem "bob"
Scenariusz Założenia: Zakładając że istnieją userzy: bob Oraz Na poczcie są listy: bob ala ma kota Scenariusz: Jako właściciel listu odbieram go Zakładając że jestem "bob" I podchodzę do okienka pytając o list
Scenariusz Założenia: Zakładając że istnieją userzy: bob Oraz Na poczcie są listy: bob ala ma kota Scenariusz: Jako właściciel listu odbieram go Zakładając że jestem "bob" I podchodzę do okienka pytając o list Wtedy powinienem otrzymać list z informacją "ala ma kota"
Engage! $ behat --init
Let's try! Właściwość: Jako adresat Powinienem móc odebrać list adresowany do mnie aby go przeczytać
Poczta Scenariusz: Jako właściciel listu odbieram go Zakładając że jestem "bob" I podchodzę do okienka pytając o list Wtedy powinienem otrzymać pytanie o dowód Jeśli pokazuję dowód obywatela "bob" Wtedy powinienem otrzymać list z informacja "ala ma kota"
Dwa słowa O dostarczaniu założeń
Jak to działa? FeatureContext
Efekty Testy powstają na bieżąco. Spisane scenariusze są czytelną dokumentacją. Mamy testy, które dodają nam odwagi, aby wykonywać refactoring na bieżąco.
Use Case Nowy serwis phpunit
Jedna rzecz na raz Staraj się zawsze testować jedną rzecz, lub jeden krok użytkownika. Korzystaj z Backgroundów
Nie wszystkie kombinacje
Optymalizuj gdy to konieczne https://github.com/liip/liipfunctionaltestbundle
Aczkolwiek...... czasem trzeba zrobić coś więcej
Testy Wyszukiwarki i każdej innej usługi, której konfigurację musimy kontrolować.
... w rozproszonym środowisku Serwer CI Solr DB
Event System @beforesuite Konfiguracja Założenia Serwer CI Indeksowanie Solr DB @beforescenario - polecenie indexowania
Gdzie co i kiedy Developer --tags="~@long&&~@solr" Ci --tags="~@dev"
Wyniki Testy są uruchamiane regularnie. Testy nie utrudniają pracy developerom. Testy obejmują mechanizm indeksowania. Testy faktycznie wykrywają regresje, których nie zauważylibyśmy tak szybko.
Co z JavaScript @javascript @mink:[driver_name]
Kto za tym stoi http://everzet.com/ http://behat.org
Pytania?
dziękuję za uwagę