SlideShare a Scribd company logo
1 of 31
Download to read offline
I testování může být zábava
Praktické tipy a zkušenosti
53. sraz přátel PHP, 1.12.2022
Michal Majer /
Proč, co a jak?
Testování?
Proč testovat?
• Stabilnější codebase
• Méně bugů
• Lépe se provádí změny / upgrades
• Bezpečnější vývoj v týmu
• Testy jako dokumentace business logiky
• Produktivnější vývoj (API, …)
• Jednodušší debugging
• Dobře testovatelný kód bývá lépe
strukturován …
Co testovat?
• Kód s “větší náchylností na chyby”
• Kód, jehož chybovost je dražší na opravu
• Kód blíže k business logice
• Přístupný přes formuláře, API, CLI, …
• Kód, kde se již začali objevovat chyby
• Kód, kde je složitější odhalit případné
chyby - crons, asynchronní handlers
Jak testovat?
• Zkuste různé frameworky, jeden se
naučte dobře
• Zjednodušte si budoucí práci
• Když je lehké testy psát, spíše se
nepřeskočí
• Je zábavnější vytvářet kód pro
podporu testování, když nemáte
deadline
• Spouštějte testy na CI serveru
• Pište kód, který je lépe testovatelný
PHPUnit (arrange, act, assert)
PHPUnit install & run (1)
PHPUnit install & run (2)
Upravená očekávaná hodnota
z 0217 na ****
Složitější příklad?
???
Fixtures - zenstruck/foundry
“Foundry makes creating
f
ixtures data fun
again, via an expressive, auto-completable,
on-demand
f
ixtures system with Symfony and
Doctrine.”
Kevin Bond
(zenstruck)
Foundry factories (1)
Entity
Factory
All factories
Foundry factories (2)
Foundry factories (3)
Příliš boilerplate ??
Foundry factories, použití (1)
Foundry factories, použití (2)
Arrange
Foundry factories, použití (3)
composer require --dev
zenstruck/messenger-test
Act
Assert
Foundry, relations
Foundry, další funkce (2)
• Factories as services
• Delayed
f
lush
• De
f
ine states
• Database reset
• …
States
Delayed
f
lush
Browser tests - zenstruck/browser
Browser tests - forms
composer require --dev
zenstruck/mailer-test
Browser tests - API
???
Browser tests - API
Hodnota navrácená
z “testPost”
Browser tests, další funkce
• Integrace opravdového prohlížeče (přes Symfony/Panther)
• Možnost pořizovat fotky
• Přístup k JS konzoli
• Rozšiřitelnost (vlastní browser třída)
• Přístup k chybovým stránkám
• JMESPath expressions
ParaTest - brianium/paratest
composer require --dev
brianium/paratest
Testování externích API -
https://github.com/php-vcr/php-vcr
PHPUnit - data providers
https://blog.martinhujer.cz/how-to-use-data-providers-in-phpunit/
PHPUnit - Test coverage
XDEBUG_MODE=coverage ./bin/phpunit
--coverage-html ./phpunit-coverage
Rekapitulace
• Testovat se vyplatí
• Testování může být zábava,
např. s pomocí správných nástrojů
• Třeba zjednodušit všechny 3 “áčka”
• Arrange, Act, Assert
• Né všechen kód se vyplatí testovat,
třeba se zaměřit na ty důležité části
Děkuju za pozornost
Michal Majer / 53. sraz přátel PHP, 1.12.2022
E-mail: majermi4@gmail.com
Twitter: @MichalMajer15
Péhápkáři Slack: @majermi4
Prezentace ke stažení

More Related Content

Similar to Michal Majer / I testování může být zábava

Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Vašek Purchart
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automationOndřej Machulda
 
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)Michal ZOBEC
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webDevelcz
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022PeckaDesign.cz
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyLukáš Petrlík
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částProfinit
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Michal Špaček
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Péhápkaři
 
Zonky QA Meetup
Zonky QA MeetupZonky QA Meetup
Zonky QA Meetupdamovsky
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostchaplin06
 
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021Ales Lichtenberg
 

Similar to Michal Majer / I testování může být zábava (20)

Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
KeePass: Základy, pokročilé využití a KeePass Enterprise (čtvrtek, 14.4.2022)
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 
Borek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro webBorek Bernard: TypeScript - příčetný jazyk pro web
Borek Bernard: TypeScript - příčetný jazyk pro web
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
 
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache Derby
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. část
 
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
 
Joomla! na MS Windows
Joomla! na MS WindowsJoomla! na MS Windows
Joomla! na MS Windows
 
Kvalita kódu
Kvalita kóduKvalita kódu
Kvalita kódu
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
 
Zonky QA Meetup
Zonky QA MeetupZonky QA Meetup
Zonky QA Meetup
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 

Michal Majer / I testování může být zábava