Opinions expressed by Contractor the contributors are theirs.
Even the best funded and most innovative development teams face software challenges. Just look at the recent unforeseen software glitch that delayed a long-awaited test flight and temporarily kept the Mars Ingenuity rover on the ground.
If it can happen with tens of millions of dollars invested and the eyes of the whole world, you bet it can happen to startups and small businesses. While they may not be for the purpose of exploring alien worlds, their software, whether it is a product itself or part of a supporting ecosystem, may be. equally critical. But if NASA can’t even prevent a failed launch, how can small businesses expect it?
The answer is a thorough and detailed QA testing strategy. This is the only way to be sure that the software in which you invest your time, money and reputation (and that of your investors) can take off successfully.
Why quality assurance testing is often abandoned
Many companies bypass proper quality assurance testing processes in an attempt to bring innovative products to market quickly. Startups especially tend to leave software testing on the back burner, and for understandable reasons: First, most new businesses want to disrupt. Their game is to go fast, break things and make waves. They quickly develop and iterate on their software. And a thorough QA testing process could slow that momentum.
Plus, software testing can make it seem like it’s just one more thing to add to a growing checklist. Developers are busy and regularly bogged down with very high responsibility and deadline lists. When companies assume that busy developers or product teams will take care of testing, they simply create another checkbox on these already massive lists. Most developers and product teams won’t have the ability to check every detail and perform QA testing as thoroughly as they should.
That’s not to say that startup founders and software developers don’t shy away from buggy software. They’ve run into software issues before and know they don’t want to burn their reputation by creating bad user experiences. At the same time, they are not used to setting up a QA department or integrating software testing strategies into their daily routine. Without these metrics and analytics, however, they put their business, and even users, in some cases, at serious risk.
Related: “Why Quality Assurance Testing Can Be a Problem for Your Business”
The cost of de-prioritizing appropriate tests
From a financial standpoint, the lack of testing by a dedicated QA team amounts to sheer misallocation of resources. Asking developers to execute a QA strategy is extremely expensive, as developers tend to get paid generously. Expecting them to spend their time performing QA testing when they might be in development makes little tax sense. (They, too, generally don’t enjoy work.)
Another risk concerns brand and quality. Companies that market substandard products often get bad press, bad reviews and a bad reputation. This makes it much more difficult to secure future investments or bring more products to market with confidence. If the buggy product causes a major problem for the user, a lack of software testing could also turn into a legal liability.
Take the well-known computer ethics case of Therac-25. The machine was designed to deliver radiation therapy to cancer patients using an on-board computer. While earlier successful models relied more on hardware for security checks, the Therac-25 relied on software. The developers released the product in 1982, but five years later it was recalled when patients reported being “burned” by the machine. It turns out that Therac-25 exposed six patients to radiation overdoses, killing four and leaving two with serious injuries. A subsequent review by regulatory agencies revealed inadequate software testing as part of the problem.
Related: “The Curious Case of AI and Legal Liability”
Of course, as one of the most disastrous software bugs in history, Therac-25 is an extreme example of what can go wrong. But it does highlight that even small bugs in software can cause huge problems. Yet, many companies don’t know where to start in building an effective software testing strategy. The following steps can help you:
1. Make QA testing a priority in the planning stages
Overlaying QA testing over an existing software development strategy can present significant challenges. It is easier to add quality assurance at the beginning, even if the end of the game is not to hire a person, team or an outsourced agency dedicated to quality assurance. Really, having a structured and consistent process is more than half the battle when it comes to quality assurance testing.
In my software development company, we are starting to integrate testing into the development process with user stories. Basically, these are just high level descriptions of specific requirements. We integrate user stories into each new project so that everyone is clear on the expectations. These user stories include objective acceptance criteria that we must meet before we consider the story to be over. Without user stories and acceptance criteria, product requirements become ill-defined and problematic. The implementation of user stories avoids communication problems regarding when a product is actually finished and if it does what it is supposed to do.
Take the case of a product manager who writes a user story describing the function of the product but not identifying any acceptance criteria. The engineer could misinterpret the user’s story, developing a product that does not match the vision intended by the product manager. Without anyone or a way to confirm that the product has met the original requirements, the product continues to be passed on without any assurance that it is really on the right track. Acceptance criteria provide a clear set of expectations on which to test.
2. Develop quality assurance test plans and checklists early on
Early in my business, we relied on our developers (or worse, our customers) to test our products. That was before we had a QA team or any kind of software testing procedure. One night a customer called to say their site was a blank page. After investigation, we discovered the root of the problem: the version we deployed only worked when people were already logged in to the site. Those who were disconnected experienced immediate failure. Our developer had only briefly checked the site when it was logged in.
It was not a good idea for our company at the time, but the experience was a great incentive to institute quality assurance testing checklists. After all, if we had gone through a testing process, we would never have deployed a site that was down for almost all users.
Product managers need to put in place pre-deployment and post-deployment checklists to keep everything working as expected. If you are not familiar with the practice of effective and creative checklists, take a look at Atul Gawande’s book The Checklist Manifesto. Gawande describes how major industries, including medicine, use checklists to avoid complacency and boost quality. At the same time, he gives great advice when it comes to ensuring that a quality assurance software testing checklist doesn’t get drowned in fine detail and become untenable.
Related: “The Air Force Checklist Will Help You Build a Team That Lasts”
3. Configure a pipeline to report and track issues
No QA testing process is complete without a strong framework for reporting and tracking issues and fixes. Developers need a convenient way to see bugs and other issues reported by testers and customers and track progress towards their resolution.
An issue tracker like Jira, GitLab, or GitHub can keep everyone up to date with reported issues and responses. GitHub actually has a code analysis tool to alert developers to issues in their work. These tools also keep a complete history of the discussion around the user story or bug being addressed. This ensures that you will always have inherited knowledge and context for the entire development and innovation process.
No matter how good your development team is, there is simply no such thing as bug-free code. But a thorough and detailed QA testing strategy that’s built into the process from the start can help protect your reputation and ensure your investments pay off.