Vývoj na poli automatizace testování webů otevírá spousta možností, které by ještě před pár lety byly nereálné. Podíváme se na některé aktuální trendy a ukáži pár moderních technologií a služeb, které vám mohou pomoci automatizovat (a tedy urychlit, zlevnit nebo zlepšit) různé části QA procesu: visual testing, docker, web performance testing.
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Ondřej Machulda
Záznam přednášky: https://www.webexpo.cz/praha2016/prednaska/funkcni-testovani-chybejici-vrchol-pyramidy/
Automatické testování nejsou zdaleka jenom unit-testy - ty sice tvoří základ takzvané testovací pyramidy, ta by ale neměla zůstat nedostavěná. Přednáška o tom, kdy a jak se během vývoje věnovat také vyšší vrstvě testů - funkčnímu testování alias testům uživatelského rozhraní (end-to-end testům). A naopak v jakých situacích by to byla asi zbytečná práce.
Také popíši, jak vypadá náš rutinní proces psaní funkčních Selenium testů v Jobs.cz a ukáži několik nástrojů převážně (ale nejenom) pro PHP, které můžete při vytváření a spouštění funkčních testů v praxi využít a které vám celou práci mohou usnadnit.
atoto.cz - jak na snadnou integraci Codeceptionatotocz
Jak jsme zintegrovali nástroj pro unit testy, integrační testy a akceptační testy - vše v jednom.
Praktická ukázka snadné integrace codeception do vaší aplikace.
Jak testovat vaše aplikace, poznatky z praxe a tipy a triky pro každého kdo chce testovat.
Předkrm před přednáškou o Codeception a jeho snadném nasazení v Atoto.cz
This slides are only in Czech language.
Slidy z workshopu Testování klientských Javascriptových aplikací, který proběhl na Webexpo 2012. Shrnuje jak nastavit automatické testování, spouštění testů napsaných v testovacím frameworku Jasmine pomocí Selenium Gridu a CI serveru Jenkins.
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)Ondřej Machulda
Záznam přednášky: https://www.webexpo.cz/praha2016/prednaska/funkcni-testovani-chybejici-vrchol-pyramidy/
Automatické testování nejsou zdaleka jenom unit-testy - ty sice tvoří základ takzvané testovací pyramidy, ta by ale neměla zůstat nedostavěná. Přednáška o tom, kdy a jak se během vývoje věnovat také vyšší vrstvě testů - funkčnímu testování alias testům uživatelského rozhraní (end-to-end testům). A naopak v jakých situacích by to byla asi zbytečná práce.
Také popíši, jak vypadá náš rutinní proces psaní funkčních Selenium testů v Jobs.cz a ukáži několik nástrojů převážně (ale nejenom) pro PHP, které můžete při vytváření a spouštění funkčních testů v praxi využít a které vám celou práci mohou usnadnit.
atoto.cz - jak na snadnou integraci Codeceptionatotocz
Jak jsme zintegrovali nástroj pro unit testy, integrační testy a akceptační testy - vše v jednom.
Praktická ukázka snadné integrace codeception do vaší aplikace.
Jak testovat vaše aplikace, poznatky z praxe a tipy a triky pro každého kdo chce testovat.
Předkrm před přednáškou o Codeception a jeho snadném nasazení v Atoto.cz
This slides are only in Czech language.
Slidy z workshopu Testování klientských Javascriptových aplikací, který proběhl na Webexpo 2012. Shrnuje jak nastavit automatické testování, spouštění testů napsaných v testovacím frameworku Jasmine pomocí Selenium Gridu a CI serveru Jenkins.
Slajdy o testování v Ruby on Rails prezentované na setkání příznivců Ruby on Rails 2.8.2007 v Praze.
Prezentace představuje důvody, proč je výhodné testovat, dále tipy, jak s psaním testů začít. Obsahuje také přehled základních i pokročilejších testovacích nástrojů.
Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...PeckaDesign.cz
Buďte za profíka a odevzdejte PR na první dobrou. Vše si nejdřív nanečisto pustíme lokálně skrz lokální Travis CI a poté už build na Travisu bude hračka.
Lightning talk z nekonference jOpenspace 2016.
Framework Angular 2 vyšel v dlouho očekávané finální verzi, co přináší proti předchozí verzi, jaká je motivace jeho vzniku a kdy o něm má smysl přemýšlet
Materiály: http://www.angular.cz/jopenspace-2016
Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....PeckaDesign.cz
Naše interní CI sloužilo krásných 5 let. Nyní ale nastal čas přejít do standardizovaného prostředí, abychom mohli zase o krok posunout naši Developer experience, na které v Pecce usilovně pracujeme. Jelikož pro verzování kódu využíváme Github, logickým krokem bylo využít Github Actions. O tom jak jsme na ně přecházeli, a co to pro nás znamenalo, se ve své přednášce rozpovídal Jakub.
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Michal Špaček
V přednášce si ukážeme to, co nás v hodinách chemie na škole neučili. V našich tajných i částečně veřejných laboratořích jsme se pokusili sloučit některé chemické prvky s exotickou faunou pomocí moderních procesů a výsledek tohoto počínání bychom chtěli demonstrovat odborné i široké veřejnosti. To, co za správného kurzu filipínské měny (PHP) vzniklo spojením selenu (Selenium) a špetky kofeinu (Selenium RC, Java) s hady (Python) totiž úspešně používáme k automatickému regresnímu testování uživatelských rozhraní webových aplikací made in Skype.
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
Téma: Angular a NativeScript: Pro enterprise level web, desktop a nativní mobilní aplikace, více info na: http://ctvrtkon.cz/pozvanka-na-ctvrtkon-71-30-srpna-2018/
Selenium a WebDriver - přítomnost a budoucnost Ondřej Machulda
Konference Test Stack, 6. června 2019, Praha
Kam se testování přes Selenium posunulo?
* Co je to standard W3C WebDriver, proč na něj Selenium přechází a co se díky němu mění
* Jakou výhodu přináší to, že se o integraci protokolu do prohlížečů starají sami jejich výrobci (Mozilla, Google, Apple)
* Jaké nové možnosti přineslo end-to-end testování přes Selenium v poslední době – například headless režim Firefoxu a Chrome
* Lokální zprovoznění Selenia i vybraného prohlížeče jedním příkazem – spuštěním Selenia v Dockeru si můžeme ušetřit spoustu obtíží a nekompatibilit, na které jsme dříve mohli narazit
Budoucnost Selenia:
* Co přinese Selenium 4.0? Jak se na něj připravit, abychom pak nemuseli věnovat upgradu veliké úsilí?
* Kam směřuje budoucí role Selenia? Možná ho totiž nebudeme potřebovat na to, na co ho používáme dnes.
* Kdy má smysl použít alternativy k Seleniu jako Pupeteer nebo Cypress? A proč Selenium rozhodně není překonané a naopak je jeho potenciál vyšší, než kdy dříve?
Performance testy v době continuous delivery (ITvečer na FIT ČVUT)SmartMeter.io
Více info o zátěžovém testování na: www.smartmeter.io
Prezentace obsahuje uvedení do problematiky performance testování a tuningu výkonu (nejen) webových aplikací včetně praktické ukázky provedení performance testu.
Nastavení očekávání a předpokladů pro provedení a vyhodnocení performance testů. Životní cyklus a praktické zkušenosti s performance testy prováděnými v rámci týmu, projektu nebo jako služba na dálku.
Tipy a triky z performance testů webových aplikací – investigace a interpretace výsledků testů. Organizace v oblasti performance testingu.
Přednášeno v rámci ITvečera 11.4.2016 na FIT ČVUT
Slajdy o testování v Ruby on Rails prezentované na setkání příznivců Ruby on Rails 2.8.2007 v Praze.
Prezentace představuje důvody, proč je výhodné testovat, dále tipy, jak s psaním testů začít. Obsahuje také přehled základních i pokročilejších testovacích nástrojů.
Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...PeckaDesign.cz
Buďte za profíka a odevzdejte PR na první dobrou. Vše si nejdřív nanečisto pustíme lokálně skrz lokální Travis CI a poté už build na Travisu bude hračka.
Lightning talk z nekonference jOpenspace 2016.
Framework Angular 2 vyšel v dlouho očekávané finální verzi, co přináší proti předchozí verzi, jaká je motivace jeho vzniku a kdy o něm má smysl přemýšlet
Materiály: http://www.angular.cz/jopenspace-2016
Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....PeckaDesign.cz
Naše interní CI sloužilo krásných 5 let. Nyní ale nastal čas přejít do standardizovaného prostředí, abychom mohli zase o krok posunout naši Developer experience, na které v Pecce usilovně pracujeme. Jelikož pro verzování kódu využíváme Github, logickým krokem bylo využít Github Actions. O tom jak jsme na ně přecházeli, a co to pro nás znamenalo, se ve své přednášce rozpovídal Jakub.
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Michal Špaček
V přednášce si ukážeme to, co nás v hodinách chemie na škole neučili. V našich tajných i částečně veřejných laboratořích jsme se pokusili sloučit některé chemické prvky s exotickou faunou pomocí moderních procesů a výsledek tohoto počínání bychom chtěli demonstrovat odborné i široké veřejnosti. To, co za správného kurzu filipínské měny (PHP) vzniklo spojením selenu (Selenium) a špetky kofeinu (Selenium RC, Java) s hady (Python) totiž úspešně používáme k automatickému regresnímu testování uživatelských rozhraní webových aplikací made in Skype.
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
Téma: Angular a NativeScript: Pro enterprise level web, desktop a nativní mobilní aplikace, více info na: http://ctvrtkon.cz/pozvanka-na-ctvrtkon-71-30-srpna-2018/
Selenium a WebDriver - přítomnost a budoucnost Ondřej Machulda
Konference Test Stack, 6. června 2019, Praha
Kam se testování přes Selenium posunulo?
* Co je to standard W3C WebDriver, proč na něj Selenium přechází a co se díky němu mění
* Jakou výhodu přináší to, že se o integraci protokolu do prohlížečů starají sami jejich výrobci (Mozilla, Google, Apple)
* Jaké nové možnosti přineslo end-to-end testování přes Selenium v poslední době – například headless režim Firefoxu a Chrome
* Lokální zprovoznění Selenia i vybraného prohlížeče jedním příkazem – spuštěním Selenia v Dockeru si můžeme ušetřit spoustu obtíží a nekompatibilit, na které jsme dříve mohli narazit
Budoucnost Selenia:
* Co přinese Selenium 4.0? Jak se na něj připravit, abychom pak nemuseli věnovat upgradu veliké úsilí?
* Kam směřuje budoucí role Selenia? Možná ho totiž nebudeme potřebovat na to, na co ho používáme dnes.
* Kdy má smysl použít alternativy k Seleniu jako Pupeteer nebo Cypress? A proč Selenium rozhodně není překonané a naopak je jeho potenciál vyšší, než kdy dříve?
Performance testy v době continuous delivery (ITvečer na FIT ČVUT)SmartMeter.io
Více info o zátěžovém testování na: www.smartmeter.io
Prezentace obsahuje uvedení do problematiky performance testování a tuningu výkonu (nejen) webových aplikací včetně praktické ukázky provedení performance testu.
Nastavení očekávání a předpokladů pro provedení a vyhodnocení performance testů. Životní cyklus a praktické zkušenosti s performance testy prováděnými v rámci týmu, projektu nebo jako služba na dálku.
Tipy a triky z performance testů webových aplikací – investigace a interpretace výsledků testů. Organizace v oblasti performance testingu.
Přednášeno v rámci ITvečera 11.4.2016 na FIT ČVUT
phpCE, 27. října 2018, Praha
Asi jste v poslední době slyšeli o GraphQL. Je tedy opravdu čas opustit REST API, jak někteří tvrdí? Myslím, že zdaleka ne - a chtěl bych vám ukázat existující alternativu pro vytváření dobrých REST API - standard JSON API, okolo kterého se rozvíjí zajímavý ekosystém i v PHP.
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Ondřej Machulda
Annotated slides for phpCE workshop on November 3, 2017.
Workshop repository: https://github.com/OndraM/selenium-workshop-phpce
The workshop covered:
- setting up local development environment (using Docker)
- practical examples of functional tests implementation
- exploring possibilities of Selenium WebDriver
- parallel test execution using Steward
- hands-on Page Object design pattern
- dealing with asynchronous elements of web-pages (AJAX, JavaScript)
- general tips & tricks how to keep a maintainable suite of functional tests in a long-term
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Ondřej Machulda
Annotated slides from Berlin PHP Usergroup Meetup, 4th April 2017.
---
Not only unit tests but also end-to-end tests in real browser are important part of test automation and test pyramid. So let's have a look how to easily write and run Selenium functional tests using PHPUnit and Steward.
Automatické testování webů v praxi - Barcamp Ostrava 2015Ondřej Machulda
Prezentace z Barcampu Ostrava 5.12.2015. Záznam přednášky: https://www.youtube.com/watch?v=B8GbM_N9CRc
"Nemáte rádi, když chyby na vašem webu hlásí až zákazníci, kterým něco přestalo fungovat? Raději proto novou verzi ručně kontrolujete - proklikáte hlavní stránky, přihlásíte se, odešlete nějaký ten formulář... Pokud jste tohle někdy zažili, zkusím vám ukázat, jak, proč a kdy to dělat chytřeji. A také co nám v LMC pomáhá starat se o kvalitu webů jako Jobs.cz nebo Prace.cz. Automatizace, funkční testy a Selenium to the rescue!"
28. července 2014 jsme začali po částech přepisovat Jobs.cz z interního frameworku do Symfony. Pokud i vy plánujete přepisovat aplikaci do Symfony, mohlo by vás zajímat, co jsme se za uplynulý rok a čtvrt naučili - na čem jsme si vylámali zuby, co bychom znovu udělali jinak a co se nám naopak vyplatilo.
Video: https://www.youtube.com/watch?v=u6PA7EUO0WA
Při práci s databází se musíme poměrně často potýkat s problematikou vícenásobného souběžného přístupu k datům. Prezentace se zabývá touto problematikou, představuje dva mechanismy řešící souběžné transakce: pessimistic a optimistic offline lock. Dále zmiňuje možné problémy každého z těchto přístupů a na závěr vzájemně porovná vhodnost jejich použití v různých případech.
Autoři: Luboš Krčál, Ondřej Machulda - ČVUT FEL
Hlavní problémy systému on-line rezervace vstupenek do O2 ArenyOndřej Machulda
Prezentace testování webového systému pro on-line rezervace vstupenek v O2 aréně. Ukázka a popis hlavních nalezených problémů včetně doporučení. Kompletní zpráva viz http://www.slideshare.net/ondram/tur-a2-machuon1 .
Testování systému pro on-line rezervaci vstupenek do O2 ArenyOndřej Machulda
Testování uživatelského rozhraní webového systému pro on-line rezervaci vstupenek do O2 Areny v Praze -
semestrální práce předmětu Y39TUR (A7B39TUR) na ČVUT FEL.
Testování jednotlivých případů užití heuristickou evaluací a kognitivním průchodem, popis nalezených problémů včetně doporučení jak je odstranit.
1. Trendy a nové možnosti
test automation
anotovaná verze
TechMeetup Ostrava
23. května 2018
Ondřej Machulda
@OndraM
2. How to sound smart in your Talk
Will Stephen | TEDxNewYork
https://www.youtube.com/watch?v=8S0FDjFBj8o
3. Trendy v test automation
Důraz na rychlost
– agilita, zkracování feedback loop
Continuous Deployment
– kratší release cycle (až „permanentní release“)
Posun testování blíže k vývojářům
– nezbytné kvůli rychlosti; změna QA kultury
Kontejnerizace, Docker aj.
– aplikace jako mikroservicy v kontejnerech; kontejnerizace testování
Testování (monitoring) produkce
4. Změna QA kultury
●
„QA je odpovědností vývojářů“
●
Je nezbytná rychlá zpětná vazba (feedback loop)
– Agilní vývoj, časté releasy (continuous deployment)
– Nemůžeme dlouho čekat na ověření, že jsme nic nerozbili
●
Regresní testy by si měli psát sami vývojáři
– Musí to jít jednoduše – nástroje, infrastruktura, nejlépe stejný jazyk
jako aplikace
●
Posun role testera
– Od toho „co píše testy“ právě směrem k automation engineerovi který
zajišťuje infrastrukturu a nástroje pro vývojáře
6. Kontejnerizace aplikace
●
Aplikace spouštíme v izolovaném kontejneru
(Docker), bez další instalace
●
Můžeme vytvořit a spustit kontejnery s aplikací
– Klidně pro každý commit
– S malými náklady a systémovými nároky
●
A oproti němu můžeme testovat end-to-end testy
7. Kontejnerizace funkčních testů
●
Je problematické instalovat závislosti prohlížečů přímo
– Týká se Selenia i Cypressu
●
Možnost snadného spuštění v různých prohlížečích a různých
verzích
– Které mohou díky Dockeru běžet vedle sebe na jednom stroji
●
Pohodlnější i pro lokální spouštění
– Jen jeden příkaz
●
Snazší údržba
– Nezaneřádí to systém, kdyžtak se jen smaže
●
Snadné škálování
– Pokud potřebujeme pouštět hodně testů paralelně
8. Selenium v Dockeru 🐳
$ docker run -p 4444:4444 -p 5900:5900
selenium/standalone-chrome-debug:3.6.0
$ vncviewer localhost:5900 # Linux
$ open vnc://127.0.0.1:5900 # MacOS
https://hub.docker.com/r/selenium/
9. Continuous Deployment Pipeline
Nový merge do repozitáře aplikace
⇓
CI server vytvoří a spustí Docker image aplikace
⇓
Na CI serveru se oproti tomu automaticky spustí testy
(včetně funkčních)
⇓
Pokud projdou, aplikace se automaticky nasadí na
produkci
11. Funkční (e2e) testy
●
Ve stanoveném scénáři
ověřují konkrétní
skutečnosti
●
Umíme je automatizovat
●
Pro každou validaci
musíme napsat kód
●
Selektory... 😭
●
Stejně neověříme vše
Vizuální testy
●
Ověřují, že stránka/její
část vypadá, jak má
●
Neřešíme kód pro
validaci (ani selektory)
●
Najdeme chyby, které
jsme vůbec nehledali
●
Mohou nahradit/doplnit
část funkčních testů
●
Jdou také automatizovat
🎉
18. 1. Scénář testu
public function testLoginAndDashboard()
{
$this->wd->get('https://.../login');
$this->assertSame('Admin Dashboard Login', $this->wd->getTitle());
$this->findByName('email')
->sendKeys('foo@example.com');
$this->findByName('password')
->sendKeys('password');
$this->findByCss('[type=submit]')
->click();
$this->waitForCss('#morris-area-chart', true);
$this->assertSame('Admin Dashboard Main Page', $this->wd->getTitle());
}
19. 2. Pořídit screenshot
protected function setUp()
{
$this->eyes = new Eyes();
...
}
public function testLoginAndDashboard()
{
$this->wd->get('https://.../login');
$this->assertSame('Admin Dashboard Login', $this->wd->getTitle());
$this->eyes->checkWindow('Login page');
$this->findByName('email')
->sendKeys('foo@example.com');
$this->findByName('password')
->sendKeys('password');
$this->findByCss('[type=submit]')
->click();
$this->waitForCss('#morris-area-chart', true);
$this->assertSame('Admin Dashboard Main Page', $this->wd->getTitle());
$this->eyes->checkWindow('Dashboard');
}
20. 3. Porovnat rozdíl s baseline
4. Reportovat chyby
●
Ukázky
– Rozbitý icon font, nenačtené css, rozbitý javascriptový prvek
●
Ignorování oblastí
– Datum, anketa, banner apod.
●
Poradí si s dynamickým obsahem
– Náhodné pořadí položek, změna úvodního článku apod.
– Různé způsoby porovnání (hlídání layoutu apod.)
●
Hromadné ignorování stejné chyby
– Změna loga, rok v patičce...
●
Rozhraní pro správu výsledků / baseline screenshotů
23. Web Performance testing
Kdo monitoruje odezvu serveru?
Kdo monitoruje rychlost načtení webu?
„80-90 % of the end-user response time is spent
on the frontend“
24. Web Performance testing
●
Navigation Timing API 🆕
●
Jak dlouho trvá, než s webem může pracovat uživatel?
●
Jaké množství dat se načetlo (css, javascript, obrázky)?
●
Není problém jen v nějakém prohlížeči?
25. Web Performance testing – sitespeed.io
●
https://www.sitespeed.io/
●
Open-source, provozujete si sami, na svém železe
●
Pod kapotou Selenium => cross-browser
31. Cloud testing services
BrowserStack
SauceLabs
TestingBot
Ukázka:
https://saucelabs.com/u/OndraM
Vlastní linux server
s prohlížečem
nainstalovaným
přímo v systému
Na serveru běží Docker,
a v něm kolik chceme
prohlížečů.
Nebo se můžeme připojovat k
prohlížečům běžícím v cloudu.
Výhoda je mj. velké množství
prohlížečů a to, že se
nemusíme starat o vlastní
infrastrukturu. Je to ale
pekelně drahé. Je možné to
použít jako doplněk k
předchozím variantám.
32. Shrnutí
Mění se QA kultura
Kontejnerizace je tu a nikam neodchází
Vše směřujte k continuous deployment pipeline
Vizuální testování může nahradit část e2e testů
Měření frontend performace na produkci
Cloud testing služby