Stop the Bad Test Death Spiral – The Team
Agile
in a Flash by Jeff Langr and Tim Ottinger (card #38)
> Only integration tests are
written ! Learn TDD.
> Overall suite time slows !
Break into “slow/fast” suites.
> Tests are run less often !
Report test timeouts as build failures.
> Tests are disabled ! Monitor
coverage.
> Bugs become commonplace !
Always write tests to “cover” a bug.
> Value of automated testing
is questioned ! Commit to TDD, acceptance tests (ATs), refactoring.
> Team quits testing in disgust
! Don’t wait until it’s too late!--
Each misstep with TDD may lead
down a bad spiral toward its abandonment.
Learn
TDD.
Violating cohesion and coupling principles impedes unit testing and promotes
integration tests instead. TDD drives a unit-testable, SOLID (OO Design
Pattern) design.
Break
into slow/fast suites
A fast suite runs in ten seconds. Keep the slow suite small. Use a continuous
test tool such as Infinitest (Selenium works well too). Keep coupling low.
Report
test timeouts as build failures Continually monitor the health of your
test suite. If the suite slows dramatically, developers soon skimp on testing.
Monitor
coverage
Seek coverage above 90% on new code and stable/increasing coverage on existing
code. Recast integration tests as unit tests or ATs.
Always
write tests to cover a bug Test first, of course. Defects indicate inadequate
test coverage. Track and understand each defect’s root cause!
Commit
to TDD, ATs, refactoring Do TDD diligently. Many bugs are rooted in
duplication that you must factor out. Quality problems slow production!
Don’t
wait until it’s too late! If you admit defeat, it may be too late—managers
rarely tolerate second attempts at what they think is the same thing.
No comments:
Post a Comment