Agile Testing – Don’t sacrifice testing
Agile testing ; I will repeat the title of my post. Don’t sacrifice testing your product!
Testing is an important factor in Agile, upholding the principle ‘Never compromise on quality‘. When on a project and the deadline is looming , there is usually only one place to cut resource. The final step before deployment: testing.
Especially with large more traditional approaches, if there is an error with the testing stage this usually means moving the deadline and spending more money. There is usually no choice about this. With Agile, you need to continuously test as you deploy in iterations. If there is an error with the testing when doing it in iterations, it can easily be rectified early on.
Testing is an important phase in the software development lifecycle, and there are different concepts for testing in Agile. If following these you can optimise productivity when testing and maximise the features delivered.
The earlier a bug or issue is found, the less it costs to fix. With this concept the aim is to ‘Fail Fast’. The main areas within an Agile project Fail Fast can benefit are:
- Early testing of requirements and the design of features during the early stages of the project.
- When the feature is being built; don’t wait until a feature is fully developed to test it if you can start to test early. Try to find issues as quickly as possible.
- Regression testing following changes and fixes.
- Integration tests are carried out as soon as something is ready to integrate.
Effective and productive testing involves the input and collaboration of all people involved. All stakeholders. This will increase the productivity of the test, fix and reset cycle. This is inline with the Agile value of collaboration . Any one who can test something should! This usually means the business owners testing the features they requested.
The concept of collaborative testing is mostly beneficial when teams are located in the same location. If this is not the case then a clear plan or process needs to be in place to ensure that there are working arrangements for testing.
Since we are developing in iterations, we should also test in iterations. Tests should be ran several times before the product passes the customer tests. Tests need to be designed to be repeatable by default.
End-to-End Experience Testing
Being collaborative and working together to ensure that regular demonstrations take place, allow you to test the full end-to-end experience of the feature. The full feature needs to be tested like this so you can ensure changes can be made to enhance the experience.
As well as the developer and QA testing the feature, an independant user should also test. Involvement from the business teams ensures that an independent view is always maintained.
All tests needs to be prioritised. It may not be possible to test everything exhaustively. Each test needs to be attached to a product or feature. The major or high risk tests should be carried out first — the ones with the biggest impact.
With this method, tests are created even before development is created. This ensures that the acceptance criteria are confirmed before any effort is wasted on creating the wrong product.
Risk Based Testing
Some tests, if done first can reduce the risk with putting a new development in a production environment. It would be best value to carry out these tests first. All requirements should be assessed for risk, and will allow you to prioritise the tests for each one. This way resource can be applied appropriately.
Tests are there to ensure that the product has value and expectations are reached. It should be done throughout the lifecycle of the product and focus should always be on delivering maximum business benefit.
Testing should be part of the project plan, not something that is thought about after. Especially testing early on which can reduce the risk of a project. Developers should be encouraged to demo their work early and try to get the business to test. When you test, this allows you to create a feedback loop, and promotes communication on a project.
Finally, testing allows you to keep control of a project! Don’t sacrifice on testing your product!
Follow me on Twitter!