Approach your next QA Automation project with confidence, clarity, and vision of success using this step-by-step strategy plan. Understand the stages of successful QA Automation project implementation and things to consider on every step of the way so you’ll never have to say,
“Oh, we’ve tried test Automation and failed! The tests were flaky, it was too time-consuming to maintain, so we gave up…”
I’ve heard this way too many times over my almost 20 years of QA Automation project implementation.
So how should the organization approach QA Automation to implement it successfully? What makes QA Automation project successful i.e. scalable, robust, maintainable, and actually working and making the difference, bringing the value and ultimately resulting in higher software quality and exceptional customer experience?
Whether you want to implement QA Automation for your unit or integration testing or functional, UI smoke/regression testing, your API testing or go beyond for data integration validations, Robotic Process Automation (RPA), Performance (load or stress) testing, or a combination of the above and anything in between, the strategy outlined below will help your team kickstart your QA Automation practice the right way.
Additionally, if your organization already has a Continuous Integration/Continuous Development (CI/CD) pipeline in place, a streamlined and clear QA Automation process will significantly cut the time for your organization to integrate Automated Testing into your existing release process.
The strategy I lay out at the start of every successful QA Automation project involves the following areas.
Define QA Automation Requirements:
- Understand project requirements
- Envision the final product
- Establish the project owners
- Define Roles and Responsibilities
- Assess potential integrations
At this stage, you would want to list all the areas where you want automation to be implemented (unit, integration, API, functional (smoke/regression), non-functional (performance/stress/load)), and decide which one you would want to be the first. This will drive the rest of the process and may have different outcomes based on the types of testing required.
QA Automation is a development effort that will go through the SDLC and should be treated as such.
The roles that would be involved in the automation development process are:
- QA Manager: Overall project direction and big picture view of QA Automation place in organizations IT process.
- QA Analyst: Document and manage manual test cases, define test data requirements, determine the scope, and set priorities.
- Automation Developer: Translate manual tests into automated tests, set up automated test data architecture, setup and manage automation environments and batch executions, set up integrations with upstream/downstream systems in CI/CD Pipeline.
At this stage, it’s important to understand roles, and how responsibilities are divided among the roles. Are there manual test cases already documented and if not who is going to take on that task? Are you planning to have a dedicated QA Automation resource or that person’s responsibility will also include manual testing?
What kind of manual test case management your organization already have in place? What tool(s) is used for Manual test management and what customizations might be required for Automation development, scope, traceability, status, and progress? Will automated testing become a part of your CI/CD pipeline? If so how’s that integration is going to go?
- Assess Automation Tool(s), Application(s) Under Test Compatibility
- Create Proof Of Concept
- Confirm Tool(s)/Obtain Licenses
- Define Automation Environment Requirements
- Build/Configure Automation Development Environment
At the end of this stage, you would have a pretty good idea of what Test Automation tool or set of tools makes sense in your particular situation. Whether you decide to go with out-of-the-box Automation tools or use Selenium and therefore require to build a framework around it (which essentially means developing your own QA Automation Software) at this stage you should have a pretty good idea of software and hardware requirements. Also, now would be a good time to think of setting up any file shares, system backups/snapshots etc.
Define Scope/ Specific Requirements
- Identify/Prioritize automation candidates
- Identify Application Environments
- Identify Application User Accounts
- Define Data Strategy
- Establish Development Status/Progress tracking
At this stage, you would have a pretty good understanding of what you are automating, individual tests as well as test suites. You would have a working automation development environment and set up access to your application environment for automation development. This may include a dedicated user account(s)/permissions. You would also have an idea for data requirements and if data is consumable or reusable. And if data is consumable what would be your data creation and cleanup approach.
Develop Automated Tests
- Design Automated tests
- Develop Automation Components
- Set up Data Parameters/Values
- Set up Error Handling
- Develop End-to-end Scenarios
- Keep Status/Progress tracking
At this stage, you would start building a library of reusable components, completed tests, and have a solid test data architecture. As new automation tests are being developed, project owners would start running them on a regular basis which would help flash out any automation errors as well as establish any error handling that might be required for application errors. You would also set up Status/Progress tracking based on the scope defined in the previous step and have a good idea of your project progress and if it’s time to start tackling the next test area you’d like to have automated.
Setup Batch Execution
- Set up Batch Execution Tool/Environment
- Deploy Automated Tests
- Set up Data Entry
- Set up Logging/Results
- Set up batch (unattended) execution
Handover to Project Owners
- Create Automation Data Entry instructions
- Create Automation Execution instructions
- Create Automation Results/Logs view instructions
- Create Troubleshooting/Error handling instructions
- Handover to project owners
- Continue Automation development
- Handle execution issues/errors
- Assist with Defect Investigation
- Monitor Automated Testing adoption
- Continuously Improve, Reduce Time, Refactor
At this point, running automated tests should become a regular task for a project owner (i.e. QA Analyst for a particular project). Test Automation execution can be scheduled and done automatically or triggered manually, on-demand. The project owner would have a pretty good idea of how to execute the automated tests, set up data, interpret execution results, whereas Automation Developer can focus on further development and expansion of Automated Testing and continuous improvement and efficiency of implemented QA Automation Solution.
Congratulations! Now you have a working Automated Testing project that is bringing value and helping to complete more testing each release cycle by providing more reliable and comprehensive testing and allowing manual testers focus on other testing activities, such as testing new features, doing exploratory testing, and anything else that is not covered by automation.