Vikas Gupta: Software architect

Implement your Test Strategy

Posted by Vikas Gupta on January 28, 2013

Importance of having a Test Strategy

Testing is a cross-functional activity that involves the whole team, and should be done continuously from the beginning
of the project. Building quality in means writing automated tests at multiple levels (unit, component, and acceptance) and running them as part of the deployment pipeline, which is triggered every time a change is made to your application, its configuration, or the environment and software stack that it runs on. Manual testing is also an essential part of building quality in: Showcases, usability testing, and exploratory testing need to be done continuously throughout the project. Building quality in also means constantly working to improve your automated testing strategy.

The design of a testing strategy is primarily a process of identifying and prioritizing project risks and deciding what actions to take to mitigate them. A good testing strategy has many positive effects. Testing establishes confidence that the software is working as it should, which means fewer bugs, reduced support costs, and improved reputation. Testing also provides a constraint on the development process which encourages good development practices. A comprehensive automated test suite even provides the most complete and up-to-date form of application documentation, in the form of an executable specification not just of how the system should work, but also of how it actually does work.

Type of Tests


1. Business-Facing Tests

These tests are commonly known as functional or acceptance tests. They should be written before development on a story starts. Acceptance tests should cover happy paths. There can be numerous alternate or sad paths. Apart from using techniques like equivalence partitioning and boundary value analysis, testers should use their intuition and judgement to pick most relevant cases. Automated test cases should run on production-like environment.

2. Technology Facing tests

There tests include unit, component and deployment tests. Unit tests test a particular piece of the code in isolation. They run very fast.  Component tests test larger clusters of functionality.

Test Strategies

1. New Projects

New projects have potential to achieve the ideals because the cost of change is low.

2. Legacy Systems

These systems generally do not have automated tests. The first priority when dealing with such a system is to create an automated build process, and then create an automated functional tests  around it. First we need to identify the high value use cases and automate those.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: