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

Software Quality

Software Quality

Apresentação sobre qualidade de software, mostrando alguns dos fatores que a influenciam, tipos de testes, além de abordagens para torná-la uma das prioridades da equipe.

Pedro Cavalheiro

April 08, 2016
Tweet

More Decks by Pedro Cavalheiro

Other Decks in Programming

Transcript

  1. Software Quality
    Don't be afraid of your code.
    Pedro Cavalheiro @MeSalva! - 2016

    View Slide

  2. What makes software high-quality?
    EXTERNAL
    ● Correctness
    ● Usability
    ● Efficiency
    ● Reliability
    ● Integrity
    ● Robustness
    INTERNAL
    ● Maintainability
    ● Flexibility
    ● Portability
    ● Reusability
    ● Testability

    View Slide

  3. The Joel Test: 12 Steps to Better Code
    1. Do you use source control?
    2. Can you make a build in one step?
    3. Do you make daily builds?
    4. Do you have a bug database?
    5. Do you fix bugs before writing new code?
    6. Do you have an up-to-date schedule?
    7. Do you have a spec?
    8. Do programmers have quiet working conditions?
    9. Do you use the best tools money can buy?
    10. Do you have testers?
    11. Do new candidates write code during their interview?
    12. Do you do hallway usability testing?

    View Slide

  4. Test early.
    Test often.

    View Slide

  5. How can software be tested?

    View Slide

  6. How can software be tested?
    ● Unit testing
    ● Integration testing
    ● Regression testing
    ● Resource testing (stress, load)
    ● Functional testing
    ● Performance testing
    ● Acceptance/Usability testing

    View Slide

  7. How can software be tested?

    View Slide

  8. How can software be tested?

    View Slide

  9. Testers

    View Slide

  10. Top Five
    (Wrong)
    Reasons You
    Don't Have
    Testers
    1. Bugs come from lazy
    programmers.
    2. My software is on the web. I can
    fix bugs in a second.
    3. My customers will test the
    software for me.
    4. Anybody qualified to be a good
    tester doesn't want to work as a
    tester.
    5. I can't afford testers!

    View Slide

  11. Good practices

    View Slide

  12. Strict code standards and quality guidelines.*

    View Slide

  13. Frequent code review sessions.

    View Slide

  14. Integrate frequently or continually.

    View Slide

  15. Iteration, iteration, iteration!

    View Slide

  16. Design a low complexity architecture.

    View Slide

  17. Refactoring.

    View Slide

  18. Inspiring team leads and goto gurus in each team.

    View Slide

  19. Teams composed of different skill-sets.

    View Slide

  20. Pair programming.

    View Slide

  21. Tools

    View Slide

  22. FRONTEND
    ● *CodeClimate
    ● CasperJS
    ● Phantomas
    ● Wraith
    ● PageSpeed Insights
    ● Selenium
    ● Watir
    ● Sahi
    ● +
    Any tools to help us?
    BACKEND
    ● *CodeClimate
    ● Bliss
    ● Code Coverage Generators
    ● Cucumber
    ● Rubocop
    ● Rails best practices
    ● Reek
    ● Scrutinizer
    ● +

    View Slide

  23. Measuring

    View Slide

  24. How to measure code quality?
    ● Code coverage metrics
    ● Defect tracking
    ● Bug regression
    ● Cyclomatic Complexity
    ● Lines added per feature
    ● Duplication
    ● Software quality score over time
    ● Technical debt
    ● [Insert your favorite metric]

    View Slide

  25. Tech debt

    View Slide

  26. View Slide

  27. “Why do we
    never have time
    to do it right, but
    always have time
    to do it over?”

    View Slide

  28. Thank You

    View Slide