{{announcement.body}}
{{announcement.title}}

How Can You Optimize the Cost of Software Testing?

DZone 's Guide to

How Can You Optimize the Cost of Software Testing?

In this post, we’ll share some ways to reduce software testing costs that we have tried and tested firsthand at Abstracta with great results.

· Performance Zone ·
Free Resource

Ways to Reduce the Cost of Software Testing Without Sacrificing Quality

Due to the novel coronavirus and the impact, it’s having on the global economy, my colleagues and I have been thinking a lot these days about how we could help our clients and others find ways to reduce the cost of testing without letting their products’ quality suffer. And dare we say it, maybe even lessen the need of having to let go of valuable team members. In certain cases and many industries, the latter is unavoidable but it’s important to first try to control or optimize costs as much as possible. 

In this post, we’ll share some ways to reduce software testing costs that we have tried and tested firsthand at Abstracta with great results.

Optimize Testing Costs

Test as Soon as Possible

Just like it’s important to test for early detection of an illness, it’s important to test your software early, before small issues (bugs) start to develop into much larger (and expensive) ones. By applying the shift-left testing approach, testing becomes more efficient because a tester’s learning curve can be tracked to the process. Asking questions sooner, like “What would happen if…” will help to improve the requirements and reduce the amount of re-work.

Be Careful with Documentation

Be careful with how much tests are documented (the requirements and other things as well), look for a good balance. More documentation helps new people learn faster, helps to clarify, to discuss things in black and white. On the other hand, it makes the process less flexible, adding maintenance costs to keep that documentation up to date with the continuously changing requirements. Aim to find the right balance.

Apply Risk-Based Testing for Everything

Looking at risk, we see it is made up of two factors: the probability of something happening and the level of (negative) business impact that it would have. Risk-based testing is all about prioritizing, prioritizing, prioritizing. Applying Pareto’s Principle, what are the 20% of test cases that would mitigate 80% of the risk?

Use Production Information to Improve Testing

While it’s imperative to shift left testing, it’s also very important to shift the right testing. This approach aims to not let your users be the only ones testing your software in production!

One source of useful information for real user behavior is Google Analytics, for example, if you want to see what areas of your e-commerce website are most heavily trafficked (thus should be more rigorously tested). You could also check Google Analytics to understand from which devices, OS versions, or browsers most of your users are accessing your site from so that you can simulate these behaviors in your testing.

Another example of obtaining production info is to investigate within your performance monitoring tool (for example, with your favorite APM tool) to understand how each set of changes in the code impacts performance.

Optimize Automation Costs

Focus Automation at the API Level Rather than the UI Level 

Test automation, when applied wisely, can provide a great return on investment, despite the initial investment required.

You should decide at which level you will put more effort into automation, thinking of the different layers of your application. For us testers, we can automate at the UI level or the API level. To understand more about the pros and cons of these options, check this article on the agile testing pyramid

One possible strategy is to start by automating the main flow of the functionality or the user story you want to test at the UI level, with the most common data. Then analyze which endpoints are invoked in that flow. Add automated tests at the API level for each endpoint and expand the coverage there with different test data, making interesting combinations. These tests are quicker to run, more robust (less maintenance), and run faster. Also, there are several free tools to do them like Postman and SoapUI.

Consider Migrating to Open Source Tools

If you’re paying for very expensive tool licenses, you could consider open-source ones. Open-source testing tools offer a high level of flexibility and have reached a level of maturity where there is much more confidence in them these days. 

With the significant expansion of the open-source community, thousands of contributors are sharing their add-ons and solutions with the world, making everyone’s lives that much easier. 

For example, if you have LoadRunner for performance tests today, you can easily migrate to JMeter or Gatling which, from my point of view, is much better.

It’s important to note that in many cases, this does imply a large initial investment to migrate what you’ve got set up in one tool to another, but in the long term, it will generate cost savings. There are some other cases where the migration can be done automatically. For example, there is a converter by BlazeMeter that helps you to migrate from LoadRunner to JMeter.

Optimize Infrastructure and Tooling Costs

Review Licenses and Subscriptions

In times of abundance, we’re not quite as concerned with investments, especially small ones. You see a tool, a membership, a subscription to a service or magazine, and you just sign up, no questions asked because it’s under a certain threshold. When in crisis, it’s necessary need to review and cut out the inessentials. 

Tools are a big one here. Analyze the actual use being made of the tools you are paying for and perhaps adjust to a plan that better meets your needs. For example, check which features you routinely use and those which you don’t, seeing if there is a less expensive plan that covers most of the features you need.

Review the Use of Virtual Machines in the Cloud 

You may have cloud-based virtual machines (such as instances of Amazon, Azure, etc.) that you’re using that could be optimized in some way (having a single instance for two systems of little use, etc.), or turning off the ones you use only a few times per month. 

Optimize Training Costs

Encourage Internal Knowledge Sharing

At Abstracta, we’re very mindful of how we train our testers. For us, it’s a vital part of our operations, as we are constantly working to help our testers, especially juniors, grow (as senior testing roles can be hard to fill). We tend to hire more for potential and attitude since we’ve got training down pretty well. Many of us have experience teaching university courses and we’ve even launched our online learning platform, Abstracta Academy.

When it comes to expensive training packages and workshops from external providers, we generally sign up just for very specific topics and mostly for those of us in the company who possess senior roles. The reason for this is that our technical leaders and senior testers will have the best chance to get the most out of these training and they can then transmit what they learned to the others.

Under the same idea, and following our belief that juniors have a lot to learn from the rest of the team, we aim for their training to come directly from our seniors. This helps us to reduce costs on outside training and also allows seniors to develop important skills such as communication, leadership, public speaking, etc.

Consider Online Training Platforms

As I mentioned, we went all out and made our online platform, but, there are many software testing and development courses offered at affordable prices on Udemy, Codea, etc. Also, there are excellent courses free, such as those from Test Automation University and Blazemeter University

Optimize Process Costs

Last but not least, inefficiencies in processes lead to waste — a waste of time and money. So, here are some ways you could improve your processes:

  • Analyze parts of the development process that generate waiting for periods or bottlenecks, dependencies, unnecessary accumulation, etc. 
  • Analyze communication channels and the problems that may be occurring (there are always communication problems) to find ways to improve and clarify, avoiding rework, errors, etc. 
  • Take an agile approach. This implies avoiding the planning of large development cycles without getting feedback. Aim for short iterations, checking frequently with users or clients if expectations are being met. Analyze in each iteration how well the team has been working, aiming to make retrospective analyses that allow for future improvement.
  • Conduct a root cause analysis of recurring errors, not only to work on solving these issues but to understand the “why” behind them to avoid them in the future.

If Needed, Outsource Software Testing

Outsourcing is ideal for companies who need to focus their attention on their core competencies. If your team is not very mature in its test efforts or your software quality program and decisions are not delivering the desired outcomes, it may be wise to seek external help instead of prolonging the time spent using inefficient and ineffective processes.

When you do not have sufficient resources or skills in-house, it can be a better option than hiring someone directly due to the overhead costs savings and the outsourcing partner will be ready to go, with the ability to flexibly and seamlessly ramp up or down. Furthermore, added value can be extracted from outsourcing as you benefit from the collective expertise of the entire firm, not only that of the testers they dedicate to you.  

Lastly, outsourcing testing can help you uphold business continuity. When you hire someone in-house and they leave your company, or if they are the sole person in charge of testing and they take a vacation, you may be left scrambling. When you find someone else to fill the role, you have to enter the whole training process all over again. By outsourcing, the service provider will have several other team members prepared and available to fill in whenever needed and will do the work to onboard and train different testers for you. 

Of course, we speak from experience when it comes to outsourcing testing, as it’s what our team of over 100 testers are committed to delivering.

Conclusion

These are just some of the biggest things that come to our mind regarding optimizing test spend. Before making any of these changes, make sure to communicate with your team so that everyone’s on board. 

If you had to think about how to be more impactful with your testing with fewer resources, how would you go about it? Let us know!

Topics:
budget ,covid-19 ,performance ,performance and monitoring tools ,software development ,software testing ,test management

Published at DZone with permission of Federico Toledo , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}