Skip to content
QualityLogic logo, Click to navigate to Home

Building a Resilient Software Testing Framework

Home » Blogs/Events » Building a Resilient Software Testing Framework

Let’s be real here. I’m not a writer or natural blogger. I’ve got a marketing director who comes to me and says, “I’d like you to write about building robust quality assurance frameworks that can deal with fast-paced development.”

At this point, my brain makes computer beep-boop noises and rejects the prompt due to insufficient data to produce a decent topic. At this point, a basic GPT, of course, would regurgitate a bland response covering some high points, which might approach accuracy. What it wouldn’t do is decline to create the article because of insufficient data.

I asked some follow-up questions and got some direction on where this should go. So now, I’m going to talk a fair bit about test automation, but will also focus on the key dependencies necessary for the automation framework to succeed.

Preparing Your QA Team and Manual Testing Processes

If we want a robust framework that can support fast-paced development, the SDLC itself must be healthy. There are many questions that go into whether there is a healthy SDLC in place, and here are some of my favorites:

  • How often does the QA phase delay the release?
  • How often do hot fixes happen?
  • Are the number of defects found in production increasing, decreasing, or staying level?
  • Is the number of defects in the backlog increasing, decreasing, or staying level?
  • How many test cases have been created, and how many are already automated?
  • On a typical test automation run, what is the flake / issue rate?
  • How many tests in the automation framework are marked as “skip” because they are flaky?
  • Is the automation run tied to PR / MR in the code repository?

These questions help paint a picture of the health of the QA process as a whole and provide insights into how effective any existing automation is. When we want to accelerate and improve the test automation to increase release velocity, we have to decide first whether the ROI will be there.

Automation isn’t a low-cost investment at this time, and the best automation is built on rock rather than sand. In this case, “sand” is defined as a stressed and under-documented test process that isn’t capturing defects before production release. Adding automation to that scenario is only going to end up costing time and resources with very little to show for it.

Step 1 is getting the QA house in order. This means ensuring your QA team is staffed to handle the manual effort, establishing a strong strategy for adding test cases, and building a library of existing test cases to serve as the source of truth for the automation team. Care must also be taken to ensure that the test cases themselves are well thought out, with clear assertions and expectations, so the automation engineer can focus on developing the code rather than trying to figure out what the product should do.

Setting Realistic Timelines and Automation Milestones

Step 2 is setting reasonable timelines and milestones. If you are starting at zero, don’t expect automation to rock your QA world in just a couple of weeks. The creation of test automation code is a development effort, and development takes time to establish the core framework.

It is possible to build test automation quickly if good architecture is set aside, but then there should be an expectation that maintaining that code is going to be a bit of a nightmare. Take the time and do it right. Use good abstraction in the automation code to make those tests readable, and easier to maintain. This is typically what people call Page Object Model, but it doesn’t have to follow that precisely.

The key is logical and sensible abstraction that enables engineers to code clear and fast cases.

Establishing the Right Infrastructure for Test Automation

Step 3 is to ensure that there is reasonable infrastructure for running and maintaining the automation code.

A lot of people who have “been there and done that” like to hook that core framework with GitHub Actions or some other CI/CD framework, and shoot for an initial suite of smoke tests that can be run on every PR. That approach provides the fastest ROI for any group.

Implementing, Iterating, and Maintaining Your Framework

Step 4 is just implement, iterate, and maintain. The test automation aspect of any SDLC is only going to bring value if the test coverage grows and that the code is maintained.

Achieving Real-Time Automation Coverage

Step 5, and this really is the final step, is to bring the automation coverage to real time, so that as developers are building code, the automation engineers are building the tests.

This real time generation of coverage is where releases get truly fast, and typically reliable. When your QA engineers build a relationship with the developers so they mutually agree on selectors in advance of the code being written, there will be a magical moment when the automation engineer can actually code the test without ever seeing the development code being built. When the developer merges the code and the test just works, release is imminent. If that is paired with the manual test and a demo to the product owner, your release strategy is about as fast as it is possible to go.

At some point in all these steps, it does become possible to reduce or reassign manual QA. We have often helped manual QA teams make the leap to automation engineers. A lot of the time, though, the reality is that we simply enable existing QA team members to actually have the time needed to thoroughly test the product rather than rushing and cutting corners.

Tailoring Your Test Automation Strategy

This all may sound like a lot, and it can be overwhelming. If you want help with this process, you can reach out to us. We love working with teams to tailor a strategy that is right for their company.

These are high level steps and are general truths, but every situation has some unique elements. We’d love to help you on your own journey in building an effective and efficient automation strategy that fits your goals.

Author:

Paul Morris, Director of Engineering & Accessibility Services

Paul Morris started his career as a chemist with the United Kingdom’s Laboratory of the Government Chemist (LGC). During his tenure at the LGC, he developed an aggressive degenerative eye condition called retinitis pigmentosa, a genetic disorder of the eyes that eventually causes a loss of vision, and he had to leave the chemistry field. However, along with the change, came opportunity. While Paul transitioned to an administrative position with the UK Ministry of Defense, he also began teaching himself how to code. As the course of his career evolved, in 1999, he moved to the United States, where he was offered a job as a test technician for QualityLogic. Now, more than two decades later, Paul is QualityLogic’s Director of Engineering and Accessibility Testing Services.

During his career with QualityLogic, Paul has had the opportunity to explore all aspects of QA testing, while simultaneously benefitting from the use of assistive technologies. He is recognized as an accessibility subject matter expert for both user experience and development and is certified in JAWS technology, a screen reader developed by Freedom Scientific that provides speech and Braille output for computer applications. Paul also has expertise in Ruby, JAVA, Python, and is an SQL administrator.

While a shift from chemistry to a career in software testing may have seemed unlikely, Paul is grateful for the course his life has taken. QualityLogic has inspired his passion to solve the problems he sees now and discovers the challenges yet to come. Paul shares his experiences in QA Engineering and Digital Accessibility often through blogs, presentations, and training of his team and QualityLogic clients.