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

AndroidCodeCoverage.pdf

Michal Jenicek
October 12, 2018
48

 AndroidCodeCoverage.pdf

Michal Jenicek

October 12, 2018
Tweet

Transcript

  1. ANDROID
    CODE COVERAGE
    Michal Jeníček, Android Engineer at STRV

    View Slide

  2. !2
    “Code coverage is not your enemy.
    It’s a tool to help you with
    development.“

    View Slide

  3. JACOCO JAVA CODE COVERAGE
    !3
    ● Based on byte code, thus is for Kotlin too

    View Slide

  4. MISSED INSTRUCTIONS & BRANCHES
    !4
    ● JaCoCo offers two main metrics

    View Slide

  5. CODE COVERAGE SAMPLE
    !5

    View Slide

  6. !6

    View Slide

  7. !7

    View Slide

  8. !8

    View Slide

  9. !9

    View Slide

  10. !10

    View Slide

  11. !11

    View Slide

  12. CODE COVERAGE - DOES IT WORTH?
    !12
    Code coverage analysis will
    ● Help to find missing branches in unit testing
    ● Help to keep in mind when there will be decreasing coverage with new code
    Code coverage analysis will NOT
    ● Ensure, you have been writing tests right

    View Slide

  13. CODE COVERAGE - WHEN TO USE
    !13
    Whenever tests are written
    ● It’s small effort to get helpful tool useful for checking our tests
    Whenever tests are executed on CI
    ● It’s small effort to connect code coverage to continuous integration

    View Slide

  14. RUN CODE COVERAGE
    !14

    View Slide

  15. Intellij IDEA
    !15
    ● Analyse simple project locally (no standard outputs)

    View Slide

  16. GRADLE PLUGIN DEFAULT TASK
    !16
    ● Analyse simple project for CI (instrumentation only)

    View Slide

  17. GRADLE PLUGIN CUSTOM TASK
    !17
    ● Analyse complex project for CI

    View Slide

  18. UNIT TEST ANALYSIS
    !18

    View Slide

  19. !19

    View Slide

  20. !20

    View Slide

  21. !21

    View Slide

  22. !22

    View Slide

  23. !23

    View Slide

  24. !24

    View Slide

  25. CI GIT INTEGRATION
    !25

    View Slide

  26. CI BRANCH CHECKS
    !26
    ● Run checks with every push to branch automatically
    ● Merge pull request / branch based on available checks

    View Slide

  27. CIRCLE CI 2.0
    !27

    View Slide

  28. CIRCLE CI 2.0
    !28

    View Slide

  29. CIRCLE CI 2.0
    !29

    View Slide

  30. CIRCLE CI 2.0
    !30

    View Slide

  31. TRAVIS CI
    !31

    View Slide

  32. TRAVIS CI
    !32

    View Slide

  33. TRAVIS CI
    !33

    View Slide

  34. TRAVIS CI
    !34

    View Slide

  35. JENKINS PIPELINE
    !35

    View Slide

  36. JENKINS PIPELINE
    !36

    View Slide

  37. JENKINS PIPELINE
    !37

    View Slide

  38. !38
    JENKINS UI

    View Slide

  39. CODE COVERAGE OUTPUTS
    !39

    View Slide

  40. OUTPUTS STRUCTURE
    !40

    View Slide

  41. OUTPUTS STRUCTURE
    !41

    View Slide

  42. OUTPUTS STRUCTURE
    !42

    View Slide

  43. OUTPUTS STRUCTURE
    !43

    View Slide

  44. JACOCO LOCAL
    !44

    View Slide

  45. JACOCO LOCAL
    !45

    View Slide

  46. CODECOV
    !46

    View Slide

  47. SAMPLE PROJECT
    !47

    View Slide

  48. I have prepared stub of sample application to apply all kinds of code coverage ability.
    Sample application is built following way:
    ● Single activity multi-module application
    ● Navigation architecture component
    ● MVVM approach
    ● DI with Dagger
    ● Connected to Travis, Circle CI, Jenkins CI & Codecov
    !48
    HTTPS://GITHUB.COM/KOTOMISAK/IMAGE-ANALYZER-ANDROID

    View Slide

  49. THAT'S IT
    Michal Jeníček
    [email protected]

    View Slide

  50. QUESTIONS

    View Slide