Building data integrity in the public sector
Optimize your spend by adopting a comprehensive data testing...
Accelerating your software delivery cycle is impossible unless you also accelerate and enhance your approach to software testing. In another article we described the eight steps of the journey to transform your organization into a modern testing organization.
This article will focus on defining your test strategy. You’ll learn about the importance of adopting agile practices. We’ll also walk you through the levels of testing activities, outline the components of a test strategy, explain what goes into a modern tooling strategy, and summarize what it will take to establish your strategy.
Defining your test strategy
A test strategy is an outline that describes the testing approach a company will take in its software development life cycle (SDLC). Because many of today’s teams follow the principles of agile development, they should also follow the principles of agile testing. To that end, adopting to agile testing is a key element of defining a test strategy:
Agile testing encompasses the same test types that testing teams have become accustomed to using in the testing cycle. The difference is that in agile testing, teams must perform these tests more often within a shorter period.
Teams may also choose to perform non-functional testing, such as security testing or load and performance testing. Because agile development requires teams to execute each of these types of testing much more frequently, it will be ideal for teams to automate as much as possible.
Automation can not only help you meet the need for speed in agile testing but also help you deal with increasing complexity. Agile teams often must face:
As you scale testing across your organization, challenges like these will result in more dependencies, less efficiency, and higher costs. If you are going to continue meeting your customers’ quality standards, you need to transform your testing practices now with a mind for simplicity and efficiency.
We can begin to remove the complexity from scaling up our testing activities by understanding the three levels of testing activities that companies typically perform: team, program, and enterprise. These levels of testing would be simple enough to perform if companies had only one team and one application under development at a time. But your company probably has multiple teams working simultaneously on various programs—and as you expand your testing footprint, your testing activities will become more complex and require more effort. Keep in mind that, depending on the size of your company, certain activities may shift left or right between these levels.
At the Team level, teams perform unit and system testing. They execute API and contract tests, test microservices and databases, and validate your features and functions. Teams should perform this testing in an isolated environment. Some of the components can be virtualized, but everything is tailored to the needs of the team.
There are two central roles involved in testing at the Team level:
At the Team level, automation specialists and test analysts should strive to:
At the Program level, teams test the user interface, business processes, and the integrations between systems. Testing may include virtualized components.
There are three central roles involved in testing at the Program level:
Testing at the Enterprise level involves testing across multiple testing stages. One example would be testing customer transactions across different applications. Enterprise-level testing may also be called end-to-end testing. It incorporates functional and non-functional testing and may encompass load and performance testing. At this stage, the environment begins to closely resemble the production environment. Testing combines the artifacts of different teams into end-to-end tests handed over to a specialized team (system team) for further testing. On top of end-to-end testing, business users will perform user acceptance testing, which incorporates a business perspective into the testing results.
There are three central roles involved in testing at the Enterprise level:
At the Enterprise level, testing team members should strive to:
Once you’ve clarified the three levels of testing activities your teams will perform, you can begin to define your testing practice.
Your testing practice form the core of your testing strategy. It is how you determine whether your software is ready for release. Your testing strategy is defined by these layers: people, process, and technology.
At the people layer, shared teams operate at different levels. Here, the system team will perform end-to-end tests using the artifacts delivered by other teams.
How can we modernize our test organization?
Define responsibilities. Give everyone clear instructions about their role in continuous testing.
How can we collaborate efficiently?
Maximize collaboration. Set clear expectations about what each team member can expect from others and what they will be expected to deliver.
How will we scale testing to other teams?
Enable end-to-end testing. Use the responsibilities and deliverables you’ve established to set a framework for end-to-end testing.
How can we all become more agile?
Address governance. Assign governance to a dedicated Enterprise Enablement team.
At the process layer, your teams will focus on establishing consistent, accurate measurement of your testing activities so that they can provide useful feedback to stakeholders. They will also develop your strategy in ways that help accelerate and prioritize testing.
How can we unify our testing?
Increase traceability with a state-of-the-art test management tool.
How can we measure our transformation?
Unify reporting across teams, applications, tools, and business processes.
How can we reduce waste?
Unify testing tools to enable end-to-end collaboration.
How can we shorten our release or testing cycle?
Leverage synergies by removing duplicate systems, processes, and work.
You’ll also tighten your continuous testing strategy by:
At the technology layer, your teams will enhance functional testing by focusing on automated test case execution, service virtualization, user interface testing, API testing, and test data management. They’ll also evaluate non-functional testing such as performance testing, seeking to incorporate as much automation as possible.
How can we increase release frequency?
With Automated test case execution, teams will reduce manual work and ensure the team gets speedy notifications when any issues are introduced into the application. By doing so, they can increase coverage and reduce risk.
How can we increase quality?
Performance testing automates the tests that verify your application’s speed, robustness, reliability, and correct sizing.
How can we test unreliable, evolving, or not yet completed applications?
With service virtualization, teams will shift testing left and increase the frequency of tests and deployments. They’ll democratize testing by creating services that can be shared by different teams throughout all stages of the testing cycle.
How can we simulate and test customer behavior?
User interface testing aims to improve the overall product experience for testers as well as business users and customers.
How can we reduce waste?
With good test data management, they’ll free up time for your testers and streamline manual, slow, and costly processes.
How can we optimize costs through operational excellence?
In API testing, teams will test the migration of microservice-based applications, APIs, and more.
If your organization is serious about achieving high-speed releases, you need to optimize and orchestrate quality across teams, projects, and applications. Once you’ve determined the components of your testing strategy, focus on building your tooling strategy. A modern tool strategy should be driven by specific objectives and be capable of fulfilling many different requirements.
These specific objectives should include:
This is where tooling comes into the picture. You can support these objectives by implementing the right tools. Look for solutions that are highly integrated, so that they will enable and foster collaboration among your teams. More specifically, your solutions should provide:
You’ve defined your testing strategy and tools. Now it’s time to implement your strategy. This is where your Enterprise Enablement team will get involved.
The Enterprise Enablement team includes architects and engineers from the Enterprise level who set teams’ testing strategies across the organization by:
At its essence, building your test strategy simply involves determining how many testing activities you want to perform, what your team is capable of, and what kinds of tools you need to implement to empower your teams. Throughout this process, you’ll strive to unify your teams, increase their collaboration, and remove the complexity from everything they do by standardizing tools and processes to the greatest possible extent.
Remember: the goal here isn’t initial perfection—it’s constant improvement.