Happenee
workshop
Radim Štěpaník (CTO), Cyril Urban (Teamleader)
Timeline
Něco o nás
Proces vývoje v Qestu
Testing
Něco o vás/diskuze?
Co děláme?
3 nohy
Korporace
Tech partneři
Vlastní produkty
👀 Reference: Soupis referencí, Abaku forbes, Czechcrunch Sportlito
Kdo jsme?
~ 30 programátorů
týmy
komunita
nezávislost
sdílené know how
Qeetup
QCast
QTons
Technologie
Javascript
React native
Typescript
Serverless
Cloud - AWS, GCP, Azure
Node js
C#
Continues delivery
Graphql
Proces vývoje v Qestu
Testování?
Testování?
- není to o tom že někdo kliká ale jde o věci jako:
- jak píšeme naši aplikaci
- míra automatizace testů
- proces vývoje
- CI/CD
- komunikační schopnosti v rámci týmu
- jak funguje process
- monitoring a logování
Proč vůbec testovat?
Nebudeme mít žádné bugy 🐛
Proč vůbec testovat?
Testování je drahé
Proč vůbec testovat?
Budeme testovat až nakonec
Testování v rámci procesu
Role testera
- Kdo to je?
- Co by měl mít za vlastnosti
- problém že to spousta lidí bere jako vstupní pozici
- Klikač
- těžká pozice
- náročná repetitivní práce
- nejlepší uživatel
Role testera - kam se chceme dostat
-
HARDCORE tester 🤯
- moderní pozice
- automatizátor
- čte logy
- QA
- monitoring
- nastavení testovacích prostředí
- nechce tupě klikat
Process a role testingu
- Jasně definovaný vývojový process
- víme co je otestováno
Správně popsané tickety - DOD, DOR
User story
Akceptační kritéria
Subtasky (nezaměřit tickety na technologie
ale na business)
GIT
Release do produkce
- alpha, beta, preprod?, produkce vs review apps - speciální release per feature
- automatizace vs manuální proces (další slidy)
- CD vs release
- mobilní aplikace - spíše klasický release (hybrdidní aplikace OTA udpates)
- webové aplikace - fail fast
Trunkbase development
- trochu jiné gitflow
- podporuje continues delivery,
- monorepo ✅
- motivace
- být si co možná nejblíž
- vždy připravena relasovatelná verze
- hotfixy
- aktivní vývojáře
- relases několikrát denně
Trunkbase development
Trunkbase development - něco se rozbilo
- snaha co nejvíce udržet master deployovatelný
- nutnost automatizace - build, testy, E2E
- revert vs oprava
Trunkbase development - release
Release do produkce
Release do produkce
Regresní testování
Regresní testování
Regresní testování vs CD
- mnohem těžší - horší uchopení
- spíše na pravidelné bázi, ale nesouvisí s ověřením správnosti release
- měl bych se spolehnout spíše na automatizaci
Role vývojářů a testingu
- do jaké míry kontrolují po sobě vlastní práci - obecně problém
- chce to trpělivost a zkušenosti
- směřovat k tomu, že chci dotáhnout svůj ticket až do produkce
Automatizaceautomatizace a zase ta automatizace
Co není automatizované tak prostě ve světě IT nefunguje.
(motivace pro začátek - ukazujte si čísla)
Automatizaceautomatizace a zase ta automatizace
- součást každého ticketu
- dopady na psaní kódu
- TDD
- databáze
- vývojový proces
- dobré návyky vývojářů
Co používáme za nástroje
- E2E testy
- cypress testy, wdio
- Integrační testy
- cypress
- Integrační testy/unit
- jest
Co testovat na frontendu?
- Backend většinou není problém pokrýt na 100 procent
- Jak ale na frontend
- 20 procent - oddělovat business logic do jednoduchých fcí - unit testing
- 75 procent zbytek E2E cypress testy
- 5 procent unit testy komponent
A co backend?
Co nám říká teorie
- rozdělení testů
- unit testy
- integrační testy
- funkční testy
Sedí tento model na to co děláme?
- monolitické aplikace
- serverless, mikroslužby, služby
- nechci psát kód který nepotřebuji
- v kódu navíc můžu udělat chybu
Sedí tento model na to co děláme?
- integrační testy rulezz 💪
- implementační detaily
- integrated testy
Jak se tomu vyvarovat
- nastavit si robustnější přístup k architektuře
- závislosti v kódu
- OOP - dependency injection
- functional prorgramming - pure functions
- psát kód tak, abychom nepředávali zbytečné závislosti❗️
- více v mé přednášce
Testování jako dokumentace aneb archeologie v praxi 🙉
- jako správně dokumentovat funkcionalitu systému?
- proč je v kódu takhle divná věc
- jak se používá tahle knihovna?
- myslete na to, že testy a jejich popis můžou někomu jednou hodně pomoct
Testování - mikroslužby
- obecně problém distribuovaných systémů - těžko testovatelné
- nároky na dobrou architekturu a dobré návyky, infrastrukturu etc.
- testování kontraktů
- kontrakty vs dynamicky typovované jazyky
- jak z toho ven s javascriptem?
Slovo závěrem 👋
- budťe připraveni na změnu a nebojte se je dělat ❗️
- nebuďte klikači UI a postmana
- zdokumentujte to jakým způsobem jste přemýšleli nad tvorbou featury
- myslete na ty co přijdou po vás
Díky za pozornost
Happenee workshop
By Radim Štěpaník
Happenee workshop
- 308