Inadequate software testing is known to result in longer development times, leading to delays in time to market. That’s what we dive into in this article, part 2 of our series on the costs of missing tests. In a previous post of this series, we’ve already covered how bugs and software errors can be the breaking factor in a project.
Software errors slowing down the development lifecycle
Project delays are all too well known for software teams. It’s far from uncommon for a software project to experience the dreaded delay, leading to a lengthier time to market and escalating costs. While several reasons contribute to such delays, one of the key factors is the time it takes to correct bugs and errors that may have been avoided with sufficient testing.
In a piece of 2021 research, 32% of developers said they spent up to 10 hours a week fixing bugs, and 44% claimed that fixing software bugs and errors was their number one pain point. (A piece of fun fact for you: 21% even claimed they would rather go to the dentist than fix broken code…)
Time spent fixing errors, of course, is time that could instead be spent delivering new functionality by the release deadline. Worse still, bugs discovered and/or fixed later on in the development lifecycle may lead to other problems: camouflaging or even leading to other bugs, causing wasted effort due to duplicate work, and derailing project plans altogether. (Since debugging is a fact of life, we wrote a guide to fixing bugs in software applications – read the series to learn key techniques!)
If a “showstopper” bug (e.g. an error that causes an unacceptable failure of the software product) goes unnoticed or untreated for too long, it will delay product release, hurting the company’s bottom line. Worse still, if a safety-critical product contains bugs, that could lead to tragedies, lawsuits, and product recalls, all of which will no doubt impact the company’s profitability. That’s exactly what happened to Boeing with their 737 Max model.
Software issues in the Boeing 737 Max causing tragedies
Aiming to stay ahead of the curve (and its main competitor Airbus), Boeing developed the new 737 Max jet built on the existing platform of the 737. This move enabled the company to save engineering costs and lots of development time. But it had engineers equip a dated platform with all the shiny new gadgets that a modern aircraft needs.
One of these gadgets was a newly developed piece of flight control software called MCAS, or Maneuvering Characteristics Augmentation System. It was a malfunction of this component that led to two crashes in 2018 and 2019 killing a total of 346 people, and had all 737 Maxes grounded for 21 months between March 2019 and December 2020.
MCAS was designed to compensate for new engines used in the airplane’s design, a key selling point leading to record sales before the plane was even released. However, the MCAS system relied on data from a single angle of attack sensor to detect when the plane was in steep climb. In such cases, MCAS would kick in, engaging an automatic nose-down trim to help stabilize the aircraft – in theory. But a lack of redundancy in the design and missing adequate testing for business reasons ended up causing hundreds of deaths, significant delays before Boeing could put a safe 737 Max on the market, and unimaginably high costs.
The fault ended up costing Boeing a $40 billion drop in market capitalization, and an estimated $9.2 billion in losses. By March 2020, the company’s stocks fell by a whopping 71% from its 2019 high point before the first 737 Max accident.
All in all, Boeing was trying to cut some development time by going the fast way, building a new model on an existing platform and not allocating sufficient time for testing. The model was released on time – but all 737 Maxes were then grounded for almost 2 years until Boeing could fix the problem, vastly increasing the product’s total time to market.
Avoiding bugs through adequate testing
The sad but insightful story of the Boeing 737 Max is a dark parable depicting the importance of testing (even though, of course, testing is not the only thing that went wrong there). However, even if you’re not working on safety-critical products, software bugs and errors can still cause problems: they can lead to a longer time to market and therefore, reduced profitability for the company. And for you as a developer, they are likely to mean a constant headache, making you wish for a visit at the dentist…
A properly designed testing strategy and the use of modern testing tools can help avoid such issues. Your testing strategy should combine multiple levels of testing as necessary. Learn more about the various levels of testing as well as the different types of testingin our previous blog posts.
Whatever testing strategy you end up deciding on, it generally makes sense to base your testing on unit tests. Unit tests provide a good foundation for any testing approach and enable you to find errors that, if missed, could later on cost significant time to fix. Then, you’ll want to make sure testing best practices are followed on all subsequent levels of testing.
Make sure all our future posts about software development & testing get to you by signing up for our newsletter and by following us on Twitter, LinkedIn or Facebook!