Most passengers are blissfully unaware of the intricate, complex physics and computing that keep them aloft and deliver them to their destinations, ready for that vital meeting or to relax by the pool. They have played their small part in a beautiful aerial ballet and they hardly gave the process a thought.
During 2018 more than 210m international air passengers flew via the UK alone, either via originating flights or connecting flights. Look at the mobile app ‘FlightTracker24’, anyone can see the staggering number of aircraft in our skies at any one time.
Beyond the physics, the mechanical engineering and the hardware, all of which have undertaken a massive evolution over the past decades, the computing power available and the safety systems that now form an intrinsic part of every aircraft have taken huge leaps in complexity and reliability. A reliability backed up by proven processes within high integrity standards such as DO-178C that ensure that every part of the aircraft you travel on has been designed and tested to the highest applicable levels of reliability, robustness and redundancy. A lot needed to happen to take me from London to Ho Chi Minh City!
Of course, it’s not just the aircraft themselves. Much of the global infrastructure in place today relies on similar safety and mission-critical systems. How did you get to the airport for instance? Perhaps by train? Signalling, braking, monitoring and maintenance (HUMS), train separation and even door operation, are all managed by software. This software will have been designed and tested according to the EN 50128 international standard before being allowed to be operational in a passenger carrying environment.
Or perhaps the journey to the airport was in your car or a taxi? Drive-by-wire systems are now commonplace and there are no longer physical connections between the pedals and the braking systems. There was a time not that long ago when pressing on the brake pedal caused an actuation rod to pass through the bulkhead into a cylinder. This forced brake fluid into small pipes to activate the brake cylinders. Most of this mechanical activity still happens, but now when you push the pedal a pressure-sensitive sensor is activated. It sends a code to a computer which calculates the pressure and duration of the pedal push and commands a braking activity.
Anti-Lock Braking Systems, Traction Control, Electronic Dampers, Harmonics Control, Night Vision, Lane Assist, and many more systems found in a modern car, all require far more computing power than was used on the entire Apollo space vehicle. All of the safety-critical code in these systems will have been through rigorous testing in accordance with the ISO 26262 functional safety standard.
It’s amazing to think that an operator on Earth can precisely adjust the orbit of a spacecraft heading for Mars. Much closer to home, software that has been designed, qualified, tested and certified to standards such as IEC 62304 controls essential equipment in hospitals, such as incubators used to keep premature babies alive or drug-delivery systems to allow for pain management.
So how do we ensure that these safety-critical embedded systems will reliably do only what we want, when we want? How to do we make sure that they operate within accepted parameters and behave reliably?
We test, test, and test again!
Dynamic testing of code is required to meet industry and legal requirements for developing safety-critical software according to best practices. We test repeatedly using only the most reliable certified tools on the market, the tools that test the software that keeps you and I alive without us even being aware of their presence.
What do we mean by “Dynamic Testing”? When testing dynamically, code is executed to check the functional behaviour of the software system, its memory and CPU usage and overall performance of the system. The objective of this testing is to confirm that the software fulfils it’s brief and meets functional safety requirements.
“Does it do what it should, when it should and nothing else?”
Digital systems are only as good as their design and production values. Successfully reducing the risks inherent in safety-critical projects requires considerable expertise and experience. Thorough and high-quality testing of software helps to ensure that, as our reliance on these systems grows, our world becomes a safer place for humans.
Of course, the demands on software don’t end there. Business requirements for complexity, reliability and speed, coupled with pressures for an ever shorter “time to market” increase demand for software developers and exponentially increase the volume of testing needed. Testing requires millions of man-hours annually so automating testing processes wherever possible can be of huge benefit for both quality and profitability.
Automated test tools can far exceed manual testing to reduce overheads in achieving the required levels of Code Coverage, Unit Testing, Integration Testing and Systems Testing. Modern test tool feature sets such as Cantata AutoTest can even auto-generate a complete suite of unit tests from existing source code to dramatically reduce the test effort required. These automated techniques are applicable even at the highest safety integrity levels demanded by industry and expected by user groups.
The next time you drive to the airport, arrive safely, get on a plane, fly at great speed over vast distances and arrive relaxed and ready for a meeting. When a family member requires medical care or even when the lift at works gets to your floor and the door miraculously opens, remember that behind the scenes on every part of your journey, everything that kept you safe was controlled by software, tested to the highest standards by the best engineers in the world, using cutting edge tools and techniques.
The beautiful thing about important software is that the less it’s noticed, the more exceptional it is. Here at QA Systems, we’re happy to contribute our safety-critical testing expertise to keeping people safe in the air, on the ground and one day in space, whether they know it, or not.