My testing Life Cycle

by Call me dave... 30. September 2009 17:16

Each time we start a new project I usually have to fill in the Test plan for the development team.  That task involves creating a set of high level goals around quality and having that plan approved by the Test lead.  The following summarises the plan for my current project.

Testing Stage Description Designed by Audience Tools Environments
Behaviour Tests

· Tests used to grow the system’s API

· Validates developers understanding of the Story being built

· Scenarios are added to increase understanding of the problem domain

· Developers

· BA validating the design

· NUnit

· Rhino.Mocks

· NBehave

· Build

Unit Tests

· Used to verify a component is built correctly

· Used to test isolated component’s independently

· Layers are tested independently

· Dependent layers are mocked out

· Tests are added to increase code coverage and to validate error paths

· Developers

· Other developers

· NUnit

· Rhino.Mocks

· Build

Integration Tests

· Used to test the interaction between components and services

· Interact with external message databases, Web Services and Message queues

· Tests are added when assumptions about the dependent systems are incorrect

· Developers

· Other developers

· NUnit

· Build

Acceptance Tests

· Used to validate business rules and scenarios

· End to End testing scenario

· BAs/Testers

· Business users

· Selenium

· White

· ALL except production

Deployment Verification Tests

· Tests that are run in production

· Developers and the support team

· Support team

· NUnit

· All


I try to differentiate the look and structure of the code between writing Behaviour, Unit and Integration tests (I find pure BDD syntax throughout the test overly complex and ugly).  As the table shows both the audience and focus of the tests are very different and so the code should look different.  I can be confident to walk through a NBehave test with a BA but explaining the use of Rhino.Mocks within in Unit test is not worth the hassle.