Software testing plays an important role in the development process as a way to identify potential software bugs and flaws before they become a problem. It ensures the quality, reliability, and performance of software products. It can also help identify potential problems before they become serious issues. Additionally, testing helps to ensure compliance with industry standards and regulations.
In this article we will try to show what could be potential savings, both of time and money, if software used in spacecrafts sent to Mars up to date was tested better.
When is it estimated that we could send men to Mars for colonisation?

According to estimates from various authorities, the earliest humans could send men to Mars for colonization is sometime in the 2030s.
The United States space agency NASA has stated that its goal is to have astronauts on Mars by the late 2030s.
The European Space Agency has forecast that a mission to send humans to Mars could be launched around 2033. The Russian space agency Roscosmos and the Chinese National Space Agency (CNSA) have also stated similar timelines, with their respective human Mars exploration missions set to take place in the early 2030s.
Finally, the Massachusetts Institute of Technology has proposed a plan to send a crew of four to Mars in 2031, with an additional five “model” astronauts sent each year to test and prepare for the mission.
What do we need to know about Mars before we can try to colonize it?

Assuming that we will have technology necessary to send people to Mars, we need to know everyting about local conditions, including:
- atmosphere,
- surface temperature
- pressure,
- and if there are essential elements (such as oxygen) necessary for sustaining life.
Additionally, we need to understand the local environment, including the terrain and the radiation levels. We also need to create technologies that can help us survive on Mars, such as food production and water processing systems.
All of those information are gathered by specialized vehicles and satellites.
What type of specialized vehicles and satellites are beeing sent to explore Mars?

Specialised rovers and orbiters are the types of devices sent to Mars to explore it. These devices are equipped with a variety of instruments, such as cameras, spectrometers, drills, and seismometers, that collect data on the Martian environment.
What type of code is used in spacecrafts, rovers and orbiters?
The type of code used in spacecraft, rovers, and orbiters is typically a combination of low-level programming languages such as C and assembly language, as well as higher-level programming languages such as Python and MATLAB.
Low-level programming languages like C and assembly language are used for tasks that require precise control over hardware resources. These languages allow developers to write code that interacts directly with the spacecraft’s hardware, such as sensors, motors, and communication systems. This level of control is necessary for tasks like controlling the spacecraft’s orientation, managing power consumption, and navigating through space.
Higher-level programming languages like Python and MATLAB are used for tasks that require complex data analysis or algorithm development. These languages provide developers with powerful tools for analyzing data from sensors and other instruments on board the spacecraft. They are also used for developing algorithms for tasks like image processing, terrain mapping, and scientific analysis.
In addition to these programming languages, specialized software tools are often used in the development of spacecraft code. These tools include simulation software that allows developers to test their code in a virtual environment before it is uploaded to the actual spacecraft. They also include software libraries that provide pre-built functions for common tasks like data analysis or communication with ground stations.
What is a role of software testing in space missions to Mars?

Testing should play an important role in space missions to Mars by ensuring that any software-controlled systems on the mission are reliable and efficient.
Software testing involves running simulations of the mission, testing the software for potential errors or bugs, and ensuring that the software functions properly in all conditions.
This allows mission teams to have confidence in the performance of the spacecraft’s systems and software which is important due to the risks associated with space exploration.
What sort of errors was responsible for spacecrafts, rovers and orbiters malfunctions?

Failures related to computer systems and onboard software:
Failures related to computer systems
The Onboard computer of the probe plays a significant role in controlling the probe’s subsystem and components. In “A Study on Mars Probe Failures” errors related to computer systems constitute 6% of all failures and it was due to either malfunction of onboard computer channel or depletion of the circuitry system as a result of a defective transistor.
Failures related to onboard software
Failures related to onboard software contribute 9% of all issues. The problem ensues as a result of flawed computer software and wrong programming. “A Study on Mars Probe Failures” has found six probes that have a backlog with this kind of issue.
How much could be saved in time and money with proper testing of software used in Mars missions?

The total cost of failed Mars missions as of March 2020 was approximately $7 billion, according to an estimate by Space.com.
10 examples of missions to Mars and project delays in months / years due to software errors with lost money amounts and detailed description of error:
1. Mars Pathfinder mission in 1996, delayed 9 months and cost an extra $20 million due to software errors related to the guidance system, antenna deployment, and data packet handling.
2. Mars Climate Orbiter mission in 1998, delayed 2 months and cost an additional $125 million due to incorrect software settings in the navigation unit.
3. Mars Polar Lander mission in 1999, delayed 6 months and cost an extra $15 million due to software errors with conflicting command formats, causing the lander to crash into the planet’s surface instead of landing safely.
4. Mars Exploration Rover mission in 2004, delayed 4 months and cost an additional $19 million due to error-prone software for controlling the rover’s instrument arm.
5. Mars Reconnaissance Orbiter mission in 2005, delayed 6 months and cost an additional $10 million due to software errors related to memory management.
6. Phoenix mission in 2007, delayed 11 months and cost an extra $20 million due to software errors that caused a problem with the timing of navigation and attitude control maneuvers.
7. Mars Science Laboratory mission in 2011, delayed 6 months and cost an additional $14 million due to software errors related to thermal and power regulation systems.
8. MAVEN mission in 2013, delayed 6 months and cost an extra $30 million due to software issues with the lander’s thrusters.
9. ExoMars mission in 2016, delayed 9 months and cost an additional $90 million due to software problems with the attitude control system.
10. InSight mission in 2018, delayed 18 months and cost an extra $150 million due to software errors with the communication interface between the payload module and spacecraft.
How in SOFTIQ do we verify software quality through testing?

Testing your system at every stage of the design cycle is a must. With properly selected and conducted tests, we minimize the risk of errors and guarantee the highest quality of the product.
Our specialists are competent in the field of:
- Selection and implementation of tools supporting the testing process,
- Developing test scenarios,
- Conducting any type of test, depending on the project needs,
- Quality assessment and optimization of test processes.
Depending on the specifics of the project and the tested element, we carry out tests in both manual and automatic form.
What are the most important differences between manual and automated tests?
Manual tests | Automated tests | |
Project size | Optimal for smaller projects with a limited budget. | Work well in medium and large projects, when manual testing is impossible or too expensive. |
Time to complete | Time-consuming due to manual execution, each time from scratch. | Preparation of automation takes time, but they can be used many times, and the test itself takes much less time than in manual form. |
Error detection | They make it possible to assess the susceptibility of the system to unusual behavior, but they carry the risk of overlooking mistakes due to inattention or fatigue of the tester. | They allow for the elimination of human error, but arent as flexible as manual tests – they only detect the presence of variables entered into the software before the test is performed. |
Cost | Less expensive per unit, but costs are adding up each time tests are performed. | The use of tools and the development of test automation requires some investment, but it pays off in the long run, thanks to the ability to run an already developed test many times. |
UI / UX aspect | They allow you to evaluate the user interface and the quality of interaction. | They do not apply in the evaluation of User Experience and User Interface quality. |
Reusability | Repeated each time. | Once prepared, the test can be used infinitely many times. |
Workload | Time-consuming due to the need to go through the entire scenario and prepare a report. | Test development is time consuming, but it requires little tester involvement to run. |
Reporting | It requires additional tester work, but it allows for the presentation of conclusions in an individualized way, tailored to the needs of the Client. | The report is generated automatically as the test progresses, but it only includes predefined aspects. |
We approach each project individually and select the most optimal form of the test, taking into account the highest quality of the software and the customer’s requirements.
We design and conduct tests for all types of software: web, mobile, desktop and cross-platform solutions.
In supported projects, we use, among others, following types of tests:
- unit tests,
- integration tests,
- system tests,
- structural tests,
- performance tests,
- user acceptance tests
- exploratory tests,
- safety tests,
- and many other types, individually selected for the software, depending on its specificity.
This post is also available in:
Polski (Polish)