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

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
https://engineering.atspotify.com/2018/01/11/testing-of-microservices/

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