Development teams so often find themselves rushing to get a release out on time. When it comes time for testing, the software works fine in the lab. But, when it's released, customers report a bunch of bugs. How does this happen? Why weren't the flaws found in QA?
Welcome to defect fatigue, a common issue that occurs when testers execute the same repetitive automated and manual tests and as a result, skip over or miss defects. Testers need to get creative and investigative to find these well-hidden defects before they slip past QA and into the hands of customers.
Be an Investigator and Break Things
The purpose of exploratory testing is to find defects by breaking application functionality using manual and automated techniques without repetition. The "without repetition" piece is key, and the idea is that teams test to break, rather than confirm. Testers should manipulate connectivity, security, configuration settings, and different user navigation, among others. Other techniques include:
■ creating mind maps to find testing areas to investigate
■ forcing the application to function outside the known paths
■ triggering unexpected errors to discover missing error messaging paths
■ exercising back-end processing and third-party software integrations to see what can be interrupted or failed by unexpected user actions
If an application supports different user roles, testing should be done from these different perspectives and with their respective settings. Testers can also utilize existing browser development tools to find errors that are not always visible in the application UI, and to test and edit to see how the application responds.
Consider the People Element
Testers are also people that use applications every day. They should draw on their own personal experiences with typical application defects to try and break functionality. They should also consider the habits and behaviors of the members of the software development team.
As developers and product managers work more with an application over time, they start to develop habits that may influence how they interact with the software. For example, some developers may only develop code on a local machine while others may only do code reviews instead of pre-testing in a test environment. These are work habits that can lead to defects. On the product side, many product managers habitually create user stories and requirements in the same way, unintentionally leaving out a relevant workflow or configuration setting.
Finding hidden defects requires testing against the grain rather than verifying a function performs as expected. It also requires testing all possible paths that customers might take. Crowdtesting can supplement existing techniques by using real people to serve as proxies for customers. They can test for quality, user-experience and functionality outside the lab, and provide instant, useful feedback.
Testing repeatedly only to have bugs unearthed later by customers is a frustrating and potentially costly endeavor. When testers mix existing techniques with creativity and an understanding of human behavior, they will be able to dig deeper to find bugs and friction points that ultimately improve quality and customer experience before release.