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.

C456c99bd027622154db5f9e695afa7c?s=128

Pedro Cavalheiro

April 08, 2016
Tweet

Transcript

  1. Software Quality Don't be afraid of your code. Pedro Cavalheiro

    @MeSalva! - 2016
  2. What makes software high-quality? EXTERNAL • Correctness • Usability •

    Efficiency • Reliability • Integrity • Robustness INTERNAL • Maintainability • Flexibility • Portability • Reusability • Testability
  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?
  4. Test early. Test often.

  5. How can software be tested?

  6. How can software be tested? • Unit testing • Integration

    testing • Regression testing • Resource testing (stress, load) • Functional testing • Performance testing • Acceptance/Usability testing
  7. How can software be tested?

  8. How can software be tested?

  9. Testers

  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!
  11. Good practices

  12. Strict code standards and quality guidelines.*

  13. Frequent code review sessions.

  14. Integrate frequently or continually.

  15. Iteration, iteration, iteration!

  16. Design a low complexity architecture.

  17. Refactoring.

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

  19. Teams composed of different skill-sets.

  20. Pair programming.

  21. Tools

  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 • +
  23. Measuring

  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]
  25. Tech debt

  26. None
  27. “Why do we never have time to do it right,

    but always have time to do it over?”
  28. Thank You