Question: What do Heathrow’s Terminal 5 and NASA’s Mars Climate Orbiter have in common?
Answer: Software bugs that could have been avoided with proper testing and quality assurance (QA) during various software development processes.
The case of Heathrow Airport’s Terminal 5
In June of 2008, a number of significant, large-scale problems cropped up during the opening of Heathrow Airport’s new Terminal 5. After the brand new baggage handling system shut down, things went downhill. A total of 42,000 bags were left behind and 500 planes were left stranded at airports, causing flights to be canceled. This resulted in a loss of approximately £16 million as well as a large hit to British Airways’ reputation.
So, what was it that caused this series of unfortunate events?
Due to a lack of sufficient quality assurance, several real-life scenarios were not thought through during the opening of the terminal. First off, the loading staff were unable to log in to the baggage validation system. As a result, they resorted to validating bags manually, which caused flight delays. Another problem was the situation in which customers asked for their luggage, e.g. because they had left their passport in it - the airport system was not able to return the luggage.
Furthermore, Terminal 5’s system did not receive information about baggage transferred to British Airways from other airlines. Thus, unrecognized baggage was automatically sent for manual sorting at the terminal warehouse. Each of these oversights ultimately caused the system to become overloaded and cease to function.
The failed mission of NASA’s Mars Climate Orbiter
During a mission to Mars in 1998, NASA’s Climate Orbiter, a robotic space probe originally designed to study Martian climate and atmosphere, eventually went missing in space. After extensive investigation into the error, it was discovered that a subcontractor on NASA’s engineering team had failed to make a simple conversion from imperial to metric units.
This simple error caused the $125 million spacecraft to come fatally close to the surface of Mars after trying to stabilize a too-low orbit. Flight controllers believe the spacecraft fell into the Martian atmosphere, where the associated stresses crippled its communications, leaving it hurtling further through space in orbit around the sun.
These two stories have something in common: in both cases, their failures were caused by a lack of proper QA. They’re a testament to the power of QA itself, as well as the important roles of the engineers responsible for carrying it out. When solid QA is put into practice, it prevents errors that can result in financial or reputational loss. It also yields products that are delivered on time, designed according to business requirements, and are well documented and supported.
What are QA engineers responsible for?
In short, a QA engineer safeguards a company's success and reputation by making sure the product meets requirements.
Over time, quality assurance has undergone a transformation from testing to a QA process throughout the product development lifecycle. One responsibility of the person responsible for QA is to conduct tests and confirm that a given functionality meets requirements and is free from errors. However, there’s more to their work than just testing.
Importantly, QA engineers support project owners and development teams by conducting research on what should be tested as well as how and under which conditions the tests should be carried out. By doing this, QA engineers transform use cases into test cases. QA actively participates in the project by implementing the testing strategy, thus minimizing the risk of errors in the project.
While automated testing is performed by coding and running scripts (for example, written in JavaScript using Cypress), manual testing is an important activity performed by QA engineers. Manual testing allows for creativity in finding errors and inaccuracies, while automated testing will perform strictly defined operations described in the code. Automated tests can be executed more quickly, but at the beginning of development, their creation consumes a good deal of time.
By combining manual and automated testing, teams can bring about great results, increase the quality of the application they’re working on and implement new functionalities faster. What’s more, by mixing various testing methodologies, QA simultaneously creates test documentation and regression tests. These tests are used before each release to the product environment to scan for appearances of errors that could cause serious financial losses.
QA engineers make sure that appropriate tests are launched at the right time, integrating them with continuous integration (CI/CD) tools to speed up and largely automate the testing process. Importantly, QA starts the testing phase from the very beginning of work on a new functionality. It’s an iterative process: when functions are developed, QA engineers test them, send them back to developers if necessary, test them again and move them forward in the process. Eventually, the functions are developed and new features are deployed, and the process begins again.
Furthermore, QA makes sure that the acceptance criteria defined in the user story (in other words, a description of a software feature from a user's perspective) are provided before starting work on the functionality. Based on the story, QA creates a test case that describes in detail how to test the function, any necessary test data, and what is the pass or failure of the tested function. Rigorous application testing significantly affects the risk of failure in the production environment and contributes to the achievement of a high high-qualityquality system, and manual testing increases confidence in the quality of the software.
Why should you have a QA engineer in your team?
Put simply: Whenever it’s possible to do so, preventing problems altogether is cheaper than fixing them after the fact.
A quality assurance engineer is responsible for identifying errors, weaknesses and inconsistencies in the product in each of its stages. Therefore, QA safeguards not only the quality of the product, but also the reputation of your brand.
An efficient QA engineer will bring many unique qualities to your team:
- Through their investigative skills, QA engineers can find problems before they are critical
- Thanks to exploratory skills, they will identify a product’s needs beyond its formal requirements
- A QA engineer’s unique experience and empathy can offer multiple perspectives within a single situation
- QA engineers can work together with developers to transparently report bugs in order for them to be quickly and efficiently resolved, resulting in increased customer satisfaction
In today’s competitive business landscape, delivering software that meets customer requirements is paramount. The amount of technology that modern businesses make use of has grown to the point that without having proper quality processes in place, it’s virtually impossible to deliver top-tier software.
While many businesspeople think themselves capable of performing sufficient testing on their products, this is rather a task designed for qualified QA professionals. This is because more often than not, bugs that are invisible from the user's point of view (and that of a non-QA professional) are the cause of subsequent costly failures. Undetected flaws and defects can lead to serious business losses, which is why it's so important to have dedicated team members regularly carrying out QA processes. Finally, having a QA specialist on your team will make your development more productive and your developers work more efficiently.
The above knowledge paints a clear picture of how important QA is to satisfy customers and increase sales. In the past, QA services may be seen as an additional and unnecessary cost, but forming a deeper understanding of the product lifecycle and associated business needs have helped businesses across the globe appreciate the value of having proper QA in place.