Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Péhápkaři - Píšeme čitelný a testovatelný kód #5 by Driveto dev team

40 views

Published on

Další díl série o testování v PHP, tentokrát společná přednáška Petra Bechyně a Michala Hojgra, na které se podílel celý vývojový tým Driveta

Published in: Software
  • Be the first to comment

  • Be the first to like this

Péhápkaři - Píšeme čitelný a testovatelný kód #5 by Driveto dev team

  1. 1. Píšeme čitelný kód #5 Jak otestovat spaghetti kód a přejít na TDD Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  2. 2. Testujete? $result = $car->getFullCarName(); //var_dump($result); Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  3. 3. Každý testuje. Kdo říká, že ne, ten testuje nejvíc. Matěj Rokos | Driveto.cz Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  4. 4. Soutěžní otázka 1: Co lze jednotkově testovat? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  5. 5. Rozbor odpovědi 1-3 • Využívá zdroje (Databáze, filesystem, webové služby, aj.) • Dále více věcí najednou (získá data, spočítá výsledek) Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  6. 6. Rozbor odpovědi 1-1 +Oddělená business logika - Stále není jednotkově testovatelné Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  7. 7. Rozbor odpovědi 1-2 +Deterministicky testovatelné (na zadaný vstup -> očekávatelný výstup) Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  8. 8. Jak můžeme testovat? • Unit testy: • Nejmenší součást kódu • Bez externích závislostí • Integrační testy: • Funkcionalita více služeb „pohromadě“ • Akceptační testy: • Testujeme „celek“ • Request->response Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  9. 9. Př. 1: REST API – mobilní aplikace App Api DatabázeAvg. calculator Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  10. 10. Př. 2: Symfony PHP backend Web Controller Avg. calculator Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  11. 11. Soutěžní otázka 2: Co je „TDD“? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  12. 12. Jak na otestování špaget? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  13. 13. 1. Ručně otestovat web/aplikaci • Funguje vůbec? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  14. 14. 2. Identifikovat business logiku • Které části kódu jsou klíčové? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  15. 15. 3. Přesun logiky do služeb • Business logika je klíčová -> nutno testovat Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  16. 16. 4. Otestovat znovu • Nerozbil jsem nic? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  17. 17. 5. Testování 1. Příprava prostředí 2. Napíšeme test 1. Přidáme různé vstupy, které nás napadnou, bez ohledu na to, jestli mohou či nemohou nastat 2. Velmi pravděpodobně nalezneme spoustu chyb 3. Opravíme kód třídy tak, aby testy procházely - tento postup již připomíná TDD https://phpunit.de/getting-started/phpunit-7.html <2, 3> 2,5 <10, 20> 15 Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  18. 18. Testování v praxi Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  19. 19. Soutěžní otázka 4: Co nebyla business logika? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  20. 20. Shrnutí 1. Všichni již stejně testujeme (var_dump?) 2. Oddělená business logika – SRP viz samostatná přednáška: https://www.slideshare.net/PetrBechyn/phpkai-peme-iteln-kd-2-by-petr-bechyn-driveto) 3. Unit test 1. nevyužívá externí zdroje (databáze, webservices) 2. Je rychlejší než integrační testy (= rychlejší zpětná vazba) 3. Nevyžaduje komplexní sadu vstupů k otestování všech scénářů 4. Díky výše zmíněnému je snadno a rychle debugovatelný Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  21. 21. Kam dál? 1. Automatické testy -> CI: 1. Školení 1. https://pehapkari.cz/kurz/ci-a-cd-s-gitlab-ci-z-0-na-100/) 2. Nástroje? 1. Github – lze zdarma využít Travis, nebo CircleCI 2. Gitlab – build-in nástroj pipelines 3. Bitbucket – build-in nástroj pipelines Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  22. 22. Reference • Další čtení: • https://martinfowler.com/bliki/UnitTest.html • https://phpunit.de/getting-started-with-phpunit.html • Testovací repo: • https://github.com/driveto/writing-readable-code-5 Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  23. 23. Dotazy • Dotazy, náměty, připomínky…? Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně
  24. 24. Díky za pozornost! • We are hiring  www.driveto.cz Petr Bechyně petr.bechyne@driveto.cz CTO Driveto 736 761 183 Michal Hojgr michal.hojgr@driveto.cz Senior developer Driveto github.com/driveto Píšeme čitelný a testovatelný kód #5 11. 10. 2018 Petr Bechyně

×