Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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?

Slide 4

Slide 4 text

Test early. Test often.

Slide 5

Slide 5 text

How can software be tested?

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

How can software be tested?

Slide 8

Slide 8 text

How can software be tested?

Slide 9

Slide 9 text

Testers

Slide 10

Slide 10 text

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!

Slide 11

Slide 11 text

Good practices

Slide 12

Slide 12 text

Strict code standards and quality guidelines.*

Slide 13

Slide 13 text

Frequent code review sessions.

Slide 14

Slide 14 text

Integrate frequently or continually.

Slide 15

Slide 15 text

Iteration, iteration, iteration!

Slide 16

Slide 16 text

Design a low complexity architecture.

Slide 17

Slide 17 text

Refactoring.

Slide 18

Slide 18 text

Inspiring team leads and goto gurus in each team.

Slide 19

Slide 19 text

Teams composed of different skill-sets.

Slide 20

Slide 20 text

Pair programming.

Slide 21

Slide 21 text

Tools

Slide 22

Slide 22 text

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 ● +

Slide 23

Slide 23 text

Measuring

Slide 24

Slide 24 text

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]

Slide 25

Slide 25 text

Tech debt

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Thank You