Nowadays many organizations have lots of complicated applications running that are in continual development. A major challenge for them is to balance the available resources between maintenance work and adding new capabilities to the application. Devoting too many resources to one or the other can cause the product to lose ground to competitors who are always looking for an opportunity to seize your business by doing a better job of mastering that balance.
This challenge is transferred to the testing team in a much bigger manner. It becomes very difficult to determine the amount of testing needed for the maintenance phase and for the new features given the time constraints. This situation needs a perfect balancing act, as both are important and consume considerable amount of time, and requires careful consideration of priorities.
It's important to note that the need for maintenance grows as your customer base grows, and it's not a good idea to neglect your base of existing customers.
Here are a few pointers that can help you strike a balance between testing applications in the maintenance phase and making sure new features are tested thoroughly as well.
- You can begin by checking the bugs existing in the current release, the severity of same and their impact on the customer. The advantage is that being aware of the existing defects can help you to respond quickly in a better way to most of the customer issues that come up in a production
- Most developers find maintenance work boring, and as a result most new capabilities are done quickly, without completing all requirements. This may result in customers seeing bugs in real-life scenarios that point to design limitations and gaps. While testing, try to make sure that all the vital real-life scenarios are covered.
- Markets are constantly on the move with new requirements and capabilities, making it necessary for every software product to have them. While testing, check that the new features sync well with the existing features and do not hamper the performance and stability of your product.
- Give priority to testing the bug fixes and improvements called for by customers, as they are always more urgent than testing the new features. The challenge here is that you will always have customer requests that can hamper development and testing of new features. At some point you need to realize that creating new capabilities at the expense of some maintenance work is a risk worth taking in order to remain competitive.
- Try to apply a systematic approach to measure and judge the relative priority of specific new capabilities compared to specific maintenance work. This helps add a little science to the art of prioritizing software development work.
- Categorize development requests so that their benefit is clear. So, you might break benefits out into those that provide customer satisfaction, usability, competitive matching, feature leadership, sales appeal and cost cuts.
- Any product will always have defects or areas that aren't really defects but could stand a little improvement. You must not wait for the product to be perfect before you start testing the development of new features. If you do, you will never start testing the new features and will get left behind in the marketplace.
To conclude, I would say that the aforementioned considerations are some of the main ones that the testing team needs to balance in order to have a product that is tested effectively so as to compete and gain market share. If you succeed to achieve both the goals of maintaining as well as improving the existing product, then it will greatly help your product to maintain its competitive position in the ever-changing market.
This was first published in January 2008