Marek Gajda - Pi razy drzwi
Prezentacja z Uszanowanka Programowanka #9 - uszanowanko.pl
Każdy programista przynajmniej raz w życiu usłyszy magiczne słowa “Mam taki projekt… Ile to zajmie?”. Jak radzić sobie z odpowiedzią, kiedy nie mamy jeszcze wszystkich szczegółów, a jedynie ogólny zarys tego, co trzeba wykonać? Jak wróżyć z fusów skoro najczęściej pijemy kawę z ekspresu? Podzielę się swoimi doświadczeniami z szacowania projektów.
Lviv IT Arena is a conference specially designed for programmers, designers, developers, top managers, inverstors, entrepreneur and startuppers. Annually it takes place on 2-4 of October in Lviv at the Arena Lviv stadium. In 2015 conference gathered more than 1400 participants and over 100 speakers from companies like Facebook. FitBit, Mail.ru, HP, Epson and IBM. More details about conference at itarene.lviv.ua.
Automation of functional tests using JMeter Part II (in Polish)Tieto Corporation
Theoretical knowledge and practical examples about using more complicated functionalities of JMeter tool.
Presentation in Polish from a webinar that is dedicated to persons which have participated in our first training and have some previous experience with automation of web applications tests using JMeter tool.
http://www.slideshare.net/TietoCorporation/automation-of-functional-tests-using-j-meter-tool
Tomasz Stupak is Senior Test Engineer working for 5 years in Tieto. During his profession career he has experience with software and hardware testing.
Marek Gajda - Pi razy drzwi
Prezentacja z Uszanowanka Programowanka #9 - uszanowanko.pl
Każdy programista przynajmniej raz w życiu usłyszy magiczne słowa “Mam taki projekt… Ile to zajmie?”. Jak radzić sobie z odpowiedzią, kiedy nie mamy jeszcze wszystkich szczegółów, a jedynie ogólny zarys tego, co trzeba wykonać? Jak wróżyć z fusów skoro najczęściej pijemy kawę z ekspresu? Podzielę się swoimi doświadczeniami z szacowania projektów.
Lviv IT Arena is a conference specially designed for programmers, designers, developers, top managers, inverstors, entrepreneur and startuppers. Annually it takes place on 2-4 of October in Lviv at the Arena Lviv stadium. In 2015 conference gathered more than 1400 participants and over 100 speakers from companies like Facebook. FitBit, Mail.ru, HP, Epson and IBM. More details about conference at itarene.lviv.ua.
Automation of functional tests using JMeter Part II (in Polish)Tieto Corporation
Theoretical knowledge and practical examples about using more complicated functionalities of JMeter tool.
Presentation in Polish from a webinar that is dedicated to persons which have participated in our first training and have some previous experience with automation of web applications tests using JMeter tool.
http://www.slideshare.net/TietoCorporation/automation-of-functional-tests-using-j-meter-tool
Tomasz Stupak is Senior Test Engineer working for 5 years in Tieto. During his profession career he has experience with software and hardware testing.
Tomasz Górski - Gherkin - jak zostać poetą w IT
www.tsh.io
Celem prezentacji będzie pokazanie, jak poprawnie pisać testy w stylu BDD. Pokażę, jak konstruować zrozumiałe kroki, które będzie można wykorzystać podczas dalszej pracy.Poruszony temat zostanie rozwinięty od strony technicznej przez Szymona podczas kolejnej prezentacji.
Prezentacja z webinaru: https://www.youtube.com/watch?v=K_zRugiNpGY
Poruszane tematy:
- Audyty wydajności stron w raportach SEO - dlaczego większość robi to źle?
- Co mówią nam komponenty LCP
- Czym jest interfejs Speculation Rules i jak wpływa na TTFB, LCP i CLS?
- Przykłady systemów RUM
- Proces optymalizacji wydajności interakcji
- Przykłady optymalizacji interakcji względem wskaźnika INP (zoptymalizujemy Cookie Consent Banner, analitykę uruchamianą przez Google Tag Manager, długo wykonujące się zadania przez Javascript i wiele innych)
W ciągu kilku lat pracy z BDD nastawienie Przemka do tego procesu ulegało zmianom — od początkowego zachwytu, poprzez zniechęcenie i podawanie w wątpliwość jego sensowności, aż do ponownego entuzjazmu. Przyczyną tego było wpadanie w kolejne pułapki i ślepe uliczki BDD, z których wiele wynikało z błędnego traktowania scenariuszy jako testów.
W czasie wykładu prelegent podzielił się ze słuchaczami swoimi przemyśleniami na temat Behavior-Driven Development. Wyjaśnił także dlaczego, według niego, podczas pisania scenariuszy BDD, nie należy myśleć o ich implementacji w formie testów. Przedstawił również kilka wskazówek dla osób borykających się z problemami zarówno pisania samych scenariuszy, jak i ich późniejszej implementacji.
Web Dev Insider prezentuje: nowości ze świata wydajności frontendu. Nowinki, nowe narzędzia i techniki optymalizacji - przydatne z perspektywy techniczego SEO oraz front-end developmentu.
Tomasz Górski - Gherkin - jak zostać poetą w IT
www.tsh.io
Celem prezentacji będzie pokazanie, jak poprawnie pisać testy w stylu BDD. Pokażę, jak konstruować zrozumiałe kroki, które będzie można wykorzystać podczas dalszej pracy.Poruszony temat zostanie rozwinięty od strony technicznej przez Szymona podczas kolejnej prezentacji.
Prezentacja z webinaru: https://www.youtube.com/watch?v=K_zRugiNpGY
Poruszane tematy:
- Audyty wydajności stron w raportach SEO - dlaczego większość robi to źle?
- Co mówią nam komponenty LCP
- Czym jest interfejs Speculation Rules i jak wpływa na TTFB, LCP i CLS?
- Przykłady systemów RUM
- Proces optymalizacji wydajności interakcji
- Przykłady optymalizacji interakcji względem wskaźnika INP (zoptymalizujemy Cookie Consent Banner, analitykę uruchamianą przez Google Tag Manager, długo wykonujące się zadania przez Javascript i wiele innych)
W ciągu kilku lat pracy z BDD nastawienie Przemka do tego procesu ulegało zmianom — od początkowego zachwytu, poprzez zniechęcenie i podawanie w wątpliwość jego sensowności, aż do ponownego entuzjazmu. Przyczyną tego było wpadanie w kolejne pułapki i ślepe uliczki BDD, z których wiele wynikało z błędnego traktowania scenariuszy jako testów.
W czasie wykładu prelegent podzielił się ze słuchaczami swoimi przemyśleniami na temat Behavior-Driven Development. Wyjaśnił także dlaczego, według niego, podczas pisania scenariuszy BDD, nie należy myśleć o ich implementacji w formie testów. Przedstawił również kilka wskazówek dla osób borykających się z problemami zarówno pisania samych scenariuszy, jak i ich późniejszej implementacji.
Web Dev Insider prezentuje: nowości ze świata wydajności frontendu. Nowinki, nowe narzędzia i techniki optymalizacji - przydatne z perspektywy techniczego SEO oraz front-end developmentu.
6. BDD
● Behaviour Driven Development
● Dan North
● Zwinne metodyki
● TDD + DDD = BDD
● Tworzenie oprogramowania przez opisywanie jego zachowania, z
perspektywy jego udziałowców.
7. BDD kładzie nacisk na:
● Zrozumienie potrzeb klienta
● Poznanie jego języka
● Poznanie sposobu, w jaki opisuje jak oprogramowanie ma się
zachowywać
8. 3 zasady BDD
I. Enough is enough
● Analiza i projektowanie tyle ile naprawdę trzeba
● Nie specyfikujemy od razy całego zakresu projektu
● Robimy tyle ile trzeba
„Nadgorliwość gorsza jest od faszyzmu” :)
9. 3 zasady BDD
II. Deliver stakeholder value
● Wszystko co robimy ma nieść za sobą realną wartość biznesową
● Jeśli robimy coś co tej wartości nie przynosi, warto zająć się czymś
innym
● Jeżeli funkcjonalność pojawia się w projekcie, to znaczy, że jest ona
wartościowa
10. 3 zasady BDD
III. It's all behaviour
● Potrzeba mówienia „wszechobecnym językiem”
● Wszyscy uczestnicy projektu powinni odwoływać się i myśleć o
systemie w ten sam sposób
● Dzięki temu zmniejszana jest bariera komunikacyjna między
„nietechnicznymi” klientami, a „technicznymi” programistami
● Wymagania definiujemy w formie historyjek użytkownika
11. Podsumowując
● liczy się przede wszystkim zachowanie
● minimalizacja formalizmów, maksymalizacja zrozumienia
● naturalny język zrozumiały dla każdego
● nazwy metod testowych powinny być zdaniami
● łatwiejsze czytanie kodu i interpretacja testów
● kod stanowi dokumentację
12. Historyjki użytkownika
● Historyjka jest spisanym wymaganiem klienta
Każda historyjka składa się z kilku części:
● tytułu,
● narracji,
● kryteriów akceptacji
13. W narracji powinniśmy zawrzeć:
● Opis funkcjonalności
● Korzyści jakie płyną z danej funkcjonalności
● Osobę (rolę), która będzie czerpać te korzyści
Przykład:
Zakładanie nowego konta użytkownika w systemie xxx.
Jako użytkownik.
Chcę założyć nowe konto w systemie xxx.
Aby móc korzystać z systemu.
14. Historyjki ciąg dalszy
● Kryteria akceptacji określają moment, w którym historyjka jest
kompletna. Spisywane są w postaci scenariuszy, których pozytywne
przejście gwarantuje osiągnięcie celu.
Zwykle scenariusze składają się z trzech bloków:
● Given – określający kontekst
● When – określający zdarzenie
● Then – określający rezultat
15. Przykład historyjki (BDD)
Scenariusz: Wypłata środków z konta. (Tytuł)
Zakładając, że na koncie jest odpowiednia ilość środków (Given)
Oraz, że karta jest poprawna (Given)
Oraz, że w kasecie są pieniądze (Given)
Jeżeli klient zażąda wypłaty gotówki (When)
Wtedy konto zostanie obciążone (Then)
Oraz pieniądze zostaną wypłacone (Then)
Oraz karta zostanie zwrócona klientowi (Then)
16. Kluczowa sprawa
● Kluczem do sukcesu jest spowodowanie, by kryteria akceptacji
poszczególnych historyjek były wykonywalne, dzięki temu da się je
zautomatyzować.
17. Agenda
● Czym jest BDD
● Czym jest JBehave
● Praca z JBehave
● Podsumowanie
18. JBehave
Wykorzystuje słowa kluczowe:
● SCENARIO
● GIVEN
● WHEN
● THEN
● AND
● NARRATIVE
● EXAMPLES
Oraz annotacje:
● @GIVEN
● @WHEN
● @THEN
● @ALIAS
● @ALLIASES
● @PENDING
● Framework dla BDD wykorzystujący podobny format jak ten opisujący
historyjki użytkownika.
19. Bez BDD
public void login(String username,String password) {
driver.get("http://www.dummy.website.com");
driver.findElement(By.name("username")).sendKeys(username);
driver.findElement(By.name("password")).sendKeys(password);
driver.findElement(By.name("update")).click();
}
@Test
public void testLoginWorksForCorrectCredentials() {
login("bob","password");
assertTrue(driver.getPageSource().contains("Welcome"));
}
@Test
public void testLoginFailsForWrongPassword() {
login("bob","messerschmidt");
assertFalse(driver.getPageSource().contains("Welcome"));
}
20. Agenda
● Czym jest BDD
● Czym jest JBehave
● Praca z JBehave
● Podsumowanie
21. 1. Napisz historyjki
Scenario: Test the login works with valid credentials
Given the login page
When the user logs in with username: bob and password: password
Then the word: Welcome should be on the page
Scenario: Test login fails with wrong password
Given the login page
When the user logs in with username: bob and password: blah
Then the word: Invalid should be on the page
22. 2. Zmapuj historyjki do Javy
@Given("the login page")
public void gotoLoginPage() {
driver.get("http://www.dummy.website.com");
}
@When("the user logs in with username: $username and password:
$password")
public void login(String username, String password) {
driver.findElement(By.name("username")).sendKeys(username);
driver.findElement(By.name("password")).sendKeys(password);
driver.findElement(By.name("update")).click();
}
@Then("the word: $matchWord should be on the page")
public void findWordInPage(@Named("matchWord") String matchWord){
assertThat(driver.getPageSource(),containsString(matchWord));
}
23. Data Tables i DDT
Scenario: Test login with valid and invalid data
Given the login page
When the user logs in with <username> and <password>
Then the <matchWord> should be on the page
Examples:
|username |password |matchWord |
|bob |password |Welcome |
|bob |blah |Invalid |
… … ...
24. 3. Skonfiguruj narzędzie
● Embedder – klasa pełniąca punkt wejściowy konfiguracji JBehave
● Z Embeddera korzystają Embeddable – klasy uruchamiające
historyjki
● JBehave dostarcza implementacji JUnit Runnera
● http://jbehave.org/reference/stable/developing-
stories.html#configuring
25. 4. Uruchom testy
● Można uruchamiać je jako testy Junit
● Maven, Ant
● Można uruchamiać historyjki lokalne jak i zdalne
26. 4. Uruchom testy
public class TraderStoryRunner {
@Test
public void runClasspathLoadedStoriesAsJUnit() {
// Embedder defines the configuration and candidate steps
Embedder embedder = new TraderEmbedder();
List<String> storyPaths = ... // use StoryFinder to look up paths
embedder.runStoriesAsPaths(storyPaths);
}
@Test
public void runURLLoadedStoriesAsJUnit() {
// Embedder defines the configuration and candidate steps
Embedder embedder = new URLTraderEmbedder();
List<String> storyPaths = ... // use StoryFinder to look up paths
embedder.runStoriesAsPaths(storyPaths);
}
}
● TradeEmbedder / URLTradeEmbedder – definiują konfigurację używając
wczytywania z classpath i zasobu URL
27. 4. Uruchom testy
public class YourStory extends JUnitStory/Stories {
@org.testng.annotations.Test
public void run() throws Throwable {
super.run();
}
}
28. 5. Obejrzyj raport
Obecnie wspierane formaty raportów:
● ConsoleOutput
● IdeOnlyConsoleOutput
● TxtOutput
● HtmlOutput
● HtmlTemplateOutput
● XmlOutput
● PostStoryStatisticCollector
● DelegatingStoryReporter
● Klasa StoryReportBuilder pozwala na konfigurowanie raportowania w kilku
formatach na raz: CONSOLE, TXT, HTML, HTML_TEMPLATE oraz XML.
31. Agenda
● Czym jest BDD
● Czym jest JBehave
● Praca z JBehave
● Podsumowanie
32. Inne narzędzia do BDD
Dla Javy:
● Cucumber JVM
● Concordion
● EasyB
● JDave
● Inne:
● Jasmine (JavaScript)
● Behat (PHP)
● MSpec
33. JBehave vs Cucumber
Podobne:
● Czysta Java
● Wsparcie dla Junit
● Szybkie
● Łatwe w użyciu
Wady/Zalety Cucumber:
● wspiera features
● większa możliwość konfiguracji
raportów (ładny konsolowy output,
dodatkowe formaty)
● nie wspiera równoległych testy w
JUnit
● słaba dokumentacja
Wady/Zalety JBehave:
● bardzo dobra dokumentacja
● całkiem dobre formatowanie
HTML dla raportów
● wspiera równoległe testy w JUnit
● wspiera tylko stories a nie
features