It only took around 145,000 lines of code to land on the moon in 1969. What’s staggering though, is that no software bugs were ever known to have occurred during any crewed Apollo missions.
Who was responsible for this? Her name is Margaret Hamilton. This is a testament to her rigorous QA process, and with lives on the line, there wasn’t room for error. Although the process for testing software used in spaceflight has much more at stake, this is the benchmark set for launching with Simplestream. Plus, we don’t want any of our client’s customers to endure a cold meal due to a buggy app.
What is QA testing?
Quality Assurance (QA) testing is the process that ensures your product is the greatest possible quality for your customers. This involves techniques used by QA testers that meticulously check and prevent any issues with a software product or service prior to launch.
This is the QA process:
💡 Initial project meeting and test strategy
➡️ User story planning
➡️ Test data preparation
➡️ Test scenario writing
➡️ Build-ready 👉 User acceptance testing
➡️ Bug fixes and retesting
We’re here for every step of the journey. This is key to building a comprehensive test plan and understanding the requirements of each build. Working closely with our developers so that we can test in line with their build schedule.
How do you identify edge cases in testing?
When Margaret Hamilton was running a simulation of the Apollo 11 mission, her young daughter helped her find a bug which would have wiped all navigation data. She had selected a program which was meant to run prior to launch, instead selecting it while the craft would have already been on its way to the moon. Quite the problem when you’re aiming for something that's... 384,400 km away. At the time, Margaret’s superiors told her that the astronauts were too highly trained to make this mistake - but were proved wrong when one did exactly that in the following mission.
For a software tester, this is an ideal example of what we call ‘edge cases’. These would be what the user is least likely to do while using the applications. Now, this is a standardised part of any rigorous QA testing model. Stressing the applications and attempting to break them – even imitating how children (or astronauts) may use them – is essential. An example of this is boundary testing, where testers validate the ends of a range of inputs.
The importance of testing your QA tools
The testing we do isn’t limited to the applications we build on App Platform. QA testers need to know whether the tools they’re using for testing are reliable and accurate. When trying out a new cross-browser testing tool, our QA team found that it didn’t work with our stream APIs. Had they not tested this, a false positive would have been possible and the developers would waste their time working it out.
Think about building applications like space travel, would you prefer to have a rocket you’d built yourself with no prior experience, or would you ask NASA or SpaceX to build it for you?
Choose wisely, and you can shoot for the moon 🚀🌕