Enhancing Software Quality: Testing Methods and Circuit Checks

18 March 2024 | Public Outreach team

Enhancing Software Quality: Testing Methods and Circuit Checks

18 March 2024 | Public Outreach team

IGLUNA Lunar Zebro rover Switzerland


Software testing methodologies are strategies or procedures used to test an application to verify how it behaves and whether it appears as expected. These don’t only include unit and system testing but also testing of the front and back end of the system. Testing is crucial to guarantee the correct operation of every line of code. In a university project like Lunar Zebro, learning is just as vital as building a fully functional rover.

Software testing

Using a wide variety of testing strategies during development helps guarantee that the project will run smoothly in as many settings as possible and on as many platforms as possible. Functional and non-functional testing are two common classifications for these. These tests are typically performed in the following sequence: 

– Unit testing 

– Integration testing 

– System testing 

– Acceptance testing 

All tests that aren’t concerned with the software’s functionality are included in non-functional testing. Among these are:

– Performance testing 

– Security testing 

– Usability testing 

– Compatibility testing 


To ship high-quality software, you need a solid testing framework that makes use of both functional and non-functional software testing techniques. 

Lunar Zebro employs a V-model to guarantee comprehensive testing across all levels of complexity. Therefore, we initiate with simple tests and progress to more difficult ones as necessary. Unit tests are done frequently since they require little effort and lay the groundwork for further testing. Higher stages of the V-model involve more complex testing procedures. These sorts of tests are sometimes referred to as integration tests. Integration tests are used by the software development team to ensure sensors like the radiation sensor are working properly. This isn’t done as often because of the extra work involved, but it’s sometimes important because it ensures the whole system is functioning as intended.

Testing electronics

When it comes to electronic circuits, which are designed from scratch in Lunar Zebro, there are two primary classes of defects: assembly faults and functional faults. Some examples of assembly faults are incorrect or missing parts, poor solder connections and sloppy wiring. All these problems may be traced back to flaws in the PCBA’s or system’s design. 

When there are structural problems, there will also be functional ones. When one or more parts are broken or don’t function as intended, the system will exhibit functional defects, also known as behavioral faults.  

Functional testing is necessary for identifying functional faults. It is difficult, if not impossible, to predict whether all potential structural flaws will be identified during a functional test. This is why it’s preferable to keep approaches for finding structural flaws distinct from those for finding functional ones. 

There are several methods for locating structural faults (assembly faults). Either electrical testing or inspection techniques, or both, may be applied. The board is “looked” at and examined by a human inspector, by means of (automatic) optical inspection techniques (AOI), or by means of X-ray. Electrical testing is a method of using electricity to confirm the existence of hardware. 

In summary, testing methodologies play a critical role in ensuring application reliability and functionality, encompassing a range of testing strategies, including unit, integration, system, and acceptance testing, along with non-functional testing. Lunar Zebro’s adoption of a V-model approach underscores the importance of comprehensive testing across all complexity levels. Furthermore, in the realm of electronics, the distinction between assembly faults and functional faults emphasizes the significance of employing various methods, such as electrical testing and inspection techniques, to maintain high-quality software development, ensuring robust and dependable systems.