It's worth being test-driven and working from the outside-in,
starting with automated acceptance tests. And it's worth getting
done in the iteration, which means performing any supplementary
testing, e.g. ad-hoc testing on a per user-story basis in the
iteration. This means that testing responsibilities and skills are
an intrinsic part of the team and are colocated.
Why?
There are many reasons. Here are some ...
1. You build quality in rather inspecting for it afterwards. And
building it in produces a higher standard of quality than trying to
retrofit it afterwards.
2. By not having
trailer-hitched testing , the
lifecycle is shortened enabling you to deliver more quickly.
3. Performing ad-hoc testing, iteratively within the iteration,
means you avoid tail-end crunch that usually results in cutting the
amount of testing or slipping the delivery date, or both.
4. Testing within the iteration and resolving defects as they
occur keeps the defect count low.
5. Keeping the defect count low means that defects can be managed
more collaboratively within iterations. Write the defects on index
cards and use face-to-face communication to shepherd them through
to resolution. This is a more effective way to get defects
resolved. Bug tracking systems provide an auditing process that is
required when you have defects ping-ponging between separate
development and test teams. By not having
trailer-hitched testing , you can
eliminate this waste.
6. Automated acceptance tests provide less expensive regression
testing. They are quicker and more exhaustive than manual
regresison testing. (That's not to say that you won't require some
eyeballing using ad-hoc testing, but this can be minimised and
focused to test the things that humans do better than machines)
7. Creating automated tests in a test-driven fashion means your
automated regression tests grow in sync with the code.
8. Automated acceptance tests can be run regularly through
continuous integration , which
means regressed code can be caught early and fixed promptly. This
reduces the feedback time for defect resolution.
9. Automated regression testing through
continuous integration , that's
executed automatically on every code check-in, gives you confidence
to make changes and move forward quickly.
Using FIT or FitNesse ...
10. Automated acceptance tests are easily understood by business
people because they're written in plain English using business
domain language and are formatted in tables.
11. Designing automated acceptance tests facilitates the
collaboration between the customer, the developers and the testers
necessary to reveal the details of the user stories.
12. Automated acceptance tests provide executable requirements.
13. Automated acceptance tests are less ambiguous because they
capture the details of a requirement as concrete examples of
required behaviour rather rules stated in a requirements
specification document, which can be interpreted differently by
readers.
14. Automated acceptance tests provide a single source for
requirements and acceptance tests, therefore eliminating
duplication and the divergence between a product requirements
specification and the acceptance test cases.
15. Because they're executable, automated acceptance tests either
pass or fail. There is no interpretation of results requiring a
tester to determine whether the system satisifed an ambiguous
requirement statement in the specification document.
Friday, 18 August 2006
Build it in
Posted by Simon Baker - Permalink