Tip

Speed vs. quality in software testing: Can you have both?

Testing can slow development and quick releases can come at the price of quality. Teams should not have to choose. Learn to efficiently pursue quality in development and testing.

The goal of most software development teams is to release high-quality applications quickly without sacrificing quality, which can be a difficult balance to strike.

Both speed and quality are important. Fast releases are a business reality and a means of ensuring the product reaches the market quickly. High-quality applications give users a positive experience and generates sales. However, balancing both by consistently releasing quality application code at high speeds is challenging and can sometimes feel like a utopian dream.

Fast and efficient releases often sacrifice quality for speed. When push comes to shove, a business's need to release software frequently outweighs the concern for software quality. Many organizations release to beat competitors to market, then plan to address quality over time. However, application quality can make or break the application.

Teams need to try to effectively balance speed with high-quality application code.

Speed vs. quality in software testing and development

Speed refers to the time a team takes to develop and test an iteration or sprint's worth of application features and deploy the updates to production. Quality, on the other hand, refers to how well the application performs. If customers find defects that impede use, notice poor performance or have difficulty using new features, then user experience suffers.

Customers typically want fast access to new features and functionality. They also want the application to work with high performance and without defects. Usability must be high so customers can intuitively figure out how to use new features without reading any documentation. Depending on the complexity of an application, satisfying customers' needs for speed and quality can be difficult.

Choosing speed over quality

There are valid instances where QA testers and development teams focus primarily on release speed.

For example, Agile teams focus on speed over quality when doing the following:

  • Testing or developing applications for social media engagement.
  • Identifying new applications new and ones that have few competitors.
  • Releasing old applications or applications without many customers to a stagnant market.
  • Developing applications for entertainment purposes only.
  • Focusing on deployment over testing.

The Agile methodology speeds up development by breaking it into iterations. Teams run tests during each iteration to ensure the application meets quality standards. Speed-focused teams typically concentrate on unit tests from developers and QA-supported test automation to identify critical defects early in the SDLC.

QA testers don't typically execute regression or other testing types unless included within continuous test automation. QA testers often use exploratory testing to test usability manually. Some organizations might also employ external QA teams to test user acceptance at the sprint's end to gauge customer quality.

There are several advantages to choosing speed over quality:

  • Customers receive tested builds rapidly.
  • Teams push defect fixes directly to the next build.
  • Products become active in the market quickly.

Disadvantages of a speed-first approach include the following:

  • More releases with bug fixes increase testing needs and unstable application code.
  • Inconsistent user experience from defects.
  • Poor application performance resulting in customer loss.

The more complex or integrated the application, the more likely issues will arise in production. Complex applications require a higher level of quality and thorough testing. If a software development team is experienced with test automation and continuous testing in a continuous integration/continuous deployment model, then testing is likely more code-based and defects are less visible to customers.

Choosing quality over speed

Teams should prioritize quality over speed when producing applications that use sensitive personal data, are highly integrated or must meet specific regulatory standards.

If an application cannot afford to fail, then quality must come first. Many organizations in the following industries focus more on quality than speed:

  • Banking.
  • Financial.
  • Healthcare.
  • Retail.
  • IoT.
  • Aerospace.

Applications that handle sensitive and private data require extensive security, functional testing and performance testing. Additionally, applications also require backup and failover systems to ensure the functionality runs when a system failure occurs. In these sensitive contexts, applications are critical to ensuring customers can use the system without encountering any significant errors.

A graphic depicting the types of functional testing.

Additionally, applications in these industries are interconnected. For example, many healthcare applications include connectivity with financial or payment systems, image processing, communication systems and messaging. Thorough testing is critical to ensure quality in every release and maintain the integrity of highly integrated systems.

Software development teams that choose quality over speed still enforce efficiencies in testing and development. Teams still work in Agile iterations but with an increased focus on testing that plays a significant role in safeguarding quality. QA testing teams define and create efficient test processes to save time and keep testing focused on delivering a quality application. Agile teams can deliver high-quality applications rapidly due to organized testing that is planned, effective and efficient.

The advantages of putting quality first include the following:

  • Higher-quality releases with fewer defects.
  • Improved usability and user acceptance testing for positive user experiences.
  • Fewer defects or issues with security, performance or visible issues.

Disadvantages of putting quality first include the following:

  • Software development and testing cycles take more time.
  • Release dates might be affected by testing results or defect fixes.
  • Technical debt accumulates when a team cannot fix all defects within an iteration.

How to balance speed and quality in software testing

Developing efficient QA testing processes is the best way to provide customers with quality applications. The purpose of the testing role on a software development team is to ensure testing is organized, planned and timely. Agile testing emphasizes both speed and accurate testing practices. Software development teams that make testing an integral part of every sprint or iteration build consistent levels of quality while still releasing frequently.

Teams can improve test execution speed by doing the following:

Agile testing practices involve working collaboratively with the development team. When teams communicate effectively, they waste less time trying to find answers alone and can find answers quickly in a collaborative team environment. Teams should develop an automated testing framework to create, execute and troubleshoot automated tests. Testers can use automation to complete regression testing within sprints or in TDD to run functional tests on new features.

Teams can improve testing efficiency by doing the following:

  • Practicing test planning.
  • Creating test instances through automation and refreshing test data quickly.
  • Practicing parallel testing.
  • Using exploratory testing to support test automation.
  • Embracing process automation wherever possible.

Creating a test strategy or plan improves efficiency by organizing the testing team and effort. The team knows from the plan what needs doing, where and by whom -- testers don't waste time trying to figure out what to test. If possible, teams should create QA test instances using process automation so they can spin up instances as needed. Every QA instance must deliver accurate test data that's easily refreshable. Teams should use parallel testing on different QA instances to execute more tests in the same amount of time.

Determine the acceptable quality level for every application release and then set the release schedule. Teams must work together and create thorough and efficient testing practices to effectively balance speed and application quality.

Process automation can greatly improve the efficiency and speed of testing. Teams should use exploratory testing as needed to test without documenting the steps. Exploratory testing has no constraints, so testers can use their experience and creativity to find defects that may otherwise go undetected.

The debate of speed versus quality will continue. Teams should balance the two by using QA testing. Every software development team wants to meet realistic release dates with a quality release. No team wants to manage customer complaints or defect reports unless necessary.

Every application benefits from a level of testing. Determine the acceptable quality level for every application release and then set the release schedule. Teams must work together and create thorough and efficient testing practices to effectively balance speed and application quality.

Amy Reichert is a 20-plus-year professional QA tester and a QA lead, specializing in test development, execution and management techniques. Her experience comes from a variety of sources, including ERP systems, architectural design, e-commerce and healthcare software.

Dig Deeper on Software design and development