$30 off During Our Annual Pro Sale. View Details »

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

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

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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 .

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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?

    View Slide

  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

    View Slide