MCF > Detailed Design and Analysis > Flight Software >
Scope and Description
This topic covers testing of smallsat flight software. This includes testing of all software running on the flight computer and responsible for command and data handling (C&DH) for the entire spacecraft - from the operating system to the application layer. Software flaws are one of the most common sources of on-orbit failure in small satellites. Therefore, high-quality testing flight software testing is an essential component of any smallsat development effort.
Resources in this topic area are primarily documents presenting traditional test requirements/procedures that can inform your processes and software tools for smallsat flight software testing. Note that this topic does not include operating systems and their development environments, which usually include integrated testing frameworks and tools. These resources can be found on the Flight Software > Development topic page.
Best Practices and Lessons Learned
- Test flight software with flight-like hardware as soon as possible - on flight computer hardware and then end-to-end (e.g., on a complete flatsat) as soon as possible.
- Institute an independent testing program if possible - a software developer should not test their own code.
- Require the development of comprehensive, automated unit tests for each subroutine as they are developed. Institute DevOps processes that include regular, continuous testing of the entire code-base.
- Hardware-in-the-loop testing (e.g., with dummy loads and solar array simulators) is a powerful tool for detecting failure or fault modes correctible in software and and otherwise difficult or impossible to identify.
- Leverage high-quality open source software for testing (including relevant simulation tools) as much as possible. In general, this will reduce cost, increase quality, and provide community resources to inform your test processes and help debug problems. Look for mature, stable open source tools with an active user community, as evidenced by a significant number of past and recent commits, appearances in publications, and age (preferably >12 months).
"This Standard establishes the environmental and structural ground testing requirements for launch vehicles, ... upper-stage vehicles, space vehicles, and their subsystems and units. In addition, a uniform set of definitions of related terms is established."
A web-based software engineering handbook designed to provide guidance for the implementation of safe ... and reliable software on satellite projects. This handbook includes software engineering resources such as NASA standards, guides, lessons learned, and references for acquiring, developing, and maintaining NASA software systems.
NOS3 is an open-source software tool developed by the NASA Independent Verification and Validation (IV&V) ... Independent Test Capability (ITC) team. It is a collection of Linux executables and libraries used to test software for small satellites. This tool can be licensed under the NASA Open Source Agreement.
Stephen A. Jacklin
This document details current trends and techniques for the verification and validation (V&V) of software ... flown on smallsats. This article provides a more smallsat-specific perspective on the V&V process to be used alongside the traditional handbooks and standards on flight software testing.
This NASA standard provides detailed information on the implementation of quality assurance, safety, ... and verification and validation (V&V) for software specifically made for and by NASA. While this is a detailed NASA standard which may be too stringent to implement on a smallsat project, smallsat teams can use the requirements to inform their policies for effective software assurance and safety. Table 2 provides a valuable causes and controls to consider when determining the root cause of various software-related faults (or designing the system to prevent them).
This NASA guidebook provides software safety procedures and guidance for the development and quality ... assurance of safety-critical software. This resource also provides software acquisition guidance for both commercial off-the-shelf (COTS) software and software developed under contract.
This resource provides general and detailed requirements for software development on space systems. This ... document covers design, development, integration and testing for flight software and embedded software/firmware.