Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software quality for TYPO3 projects: A story of...

Software quality for TYPO3 projects: A story of cheese, games and tools

Oliver Klee

August 03, 2023
Tweet

More Decks by Oliver Klee

Other Decks in Programming

Transcript

  1. Q U A L I T Y, C H E

    E S E A N D G A M E S T 3 D D 2 3 | 2 0 2 3 - 0 9 | O L I V E R K L E E | @ O L I K L E E @ C H A O S . S O C I A L
  2. T H E T Y P O 3 B E

    S T P R A C T I C E S T E A M Our vision In order to build and hone our expertise, we research QA tools and best practices and try them out. We also share our knowledge with each other and learn from each other. In addition, we provides templates or example projects to copy from.
  3. A B O U T M E Oliver „Oli“ Klee

    #bonn #extension-dev #workshop-teacher #unit-testing-guy #phpstan-guy #best-practices-team #motivation-research-team #team-leadership-working-group #game-cooking #powermetal
  4. Q U A L I T Y, C H E

    E S E A N D G A M E S 1. Why quality matters 3. Making quality fun 2. A strategy for quality
  5. T H E R E A R E N O

    S T U P I D Q U E S T I O N S .
  6. Q U A L I T Y, C H E

    E S E A N D G A M E S 1. Why quality matters 3. Making quality fun 2. A strategy for quality
  7. W H AT I S S O F T WA

    R E Q U A L I T Y ? as few bugs as possible we’re not playing Jenga the code is easy to change upgrades and refactorings pose little risk
  8. W H Y I N C R E A S

    E S O F T WA R E Q U A L I T Y ? because it’s a promise to our customers because we want to be able to be proud of our work because we’re too old for bad code
  9. W H E N Q U A L I T

    Y M I G H T B E N O T I M P O R TA N T throw-away prototypes very short-lived projects demonstration/example code
  10. Q U A L I T Y, C H E

    E S E A N D G A M E S 1. Why quality matters 3. Making quality fun 2. A strategy for quality
  11. T H E S W I S S C H

    E E S E M O D E L https://upload.wikimedia.org/wikipedia/commons/3/36/SwissCheese_Respiratory_Virus_Interventions-ver3.0.png
  12. T Y P E S O F C H E

    E S E F O R S O F T WA R E Q U A L I T Y static analysis (syntax, style, types …) dynamic tests (unit, functional, …) code reviews (by humans)
  13. C H O O S I N G T O

    O L S F O R S O F T WA R E Q U A L I T Y M o re i s b ette r. D o n ot d u p licate. P H P S ta n v s. 
 Ps a l m S te a l f ro m T Y P O 3.
  14. C L A S S E S O F T

    O O L S F O R S O F T WA R E Q U A L I T Y 🚀 
 f i re a n d fo rg et exa m p le : P H P 
 C S F i xe r 🐿 
 s lo w ly f i x e v e r y t h i n g exa m p le : 
 P H P S ta n 🏋 
 co n sta nt ly d o it exa m p le : 
 co d e re v i e w s 🛠 
 s e l f - m a d e
  15. T Y P O 3 C O R E :

    C O D E R E V I E W S 🏋 re v i e w 
 by re a d i n g 🏋 v e r if y 
 by m a n u a l te st i n g
  16. C H E E S E R E C O

    M M E N D B Y T H E T E A M
  17. T Y P O 3 C O R E :

    D Y N A M I C T E S T S Test Type Tool Language 🏋 unit tests PHPUnit PHP 🏋 functional tests PHPUnit PHP 🏋 acceptance tests 
 (end-to-end tests) Codeception PHP
  18. T Y P O 3 C O R E :

    S TAT I C C O D E T O O L S Tool Type Tool Language 🚀 code autoformatter, 
 style checker PHP CS Fixer PHP 🚀 IDE settings .editorcon fi g all 🚀 TYPO3 coding standards Composer package
  19. T Y P O 3 C O R E :

    S TAT I C C O D E T O O L S Tool Type Tool Language 🚀 syntax checker Lint: php -l PHP 🚀 style checker Stylelint SCSS 🚀 style checker ESLint TypeScript 🐿 type checker PHPStan PHP
  20. T Y P O 3 T E A E X

    A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 CI runner GitHub Actions – 🚀 dependency updater Dependabot Composer, npm 🚀 TER release Tailor TER 🚀 Code coverage Coveralls PHPUnit
  21. T Y P O 3 T E A E X

    A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 syntax & style JSON Lint JSON 🚀 syntax & style TypoScript Lint TypoScript 🚀 syntax & style YAML Lint YAML 🚀 syntax & style PHP_CodeSniffer PHP
  22. T Y P O 3 T E A E X

    A M P L E E X T E N S I O N : T O O L S Tool Type Tool Language/Ecosystem 🚀 syntax & style Prettier JavaScript 🚀 syntax & structure XLIFF Lint XLIFF 🚀 consistency Normalize Composer
  23. H O N O R A B L E M

    E N T I O N S Tool Type Tool Language/Ecosystem 🐿 code metrics PHPMD PHP 🐿 mutation testing Infection PHPUnit 🐿 Fuzzing PHP Fuzzer PHPUnit 🐿 type checker PHP Inspections PhpStorm
  24. H O N O R A B L E M

    E N T I O N S Tool Type Tool Language/Ecosystem 🚀 PHP compatibility compatibility rules PHP_CodeSniffer 🐿 auto-refactorings Rector PHP 🐿 TYPO3 upgrades TYPO3Scan TYPO3
  25. Q U A L I T Y, C H E

    E S E A N D G A M E S 1. Why quality matters 3. Making quality fun 2. A strategy for quality
  26. L E V E L S A N D C

    L E A R G O A L S
  27. L E V E L S A N D C

    L E A R G O A L S rule levels for PHPStan and Psalm baseline file (with a blocklist) enable rules one after the other
  28. P L AY I N G S O M E

    C H A L L E N G E S Which rule level can we reach? How high can we get the code coverage? How few mutations will escape our tests? How much can we code in a test-driven way?
  29. J O I N T H E B E S

    T P R A C T I C E S T E A M ! Talk to us at the coding night. 
 Or join the Slack channel: #best-practices-team