#49 Part-1 of Software Testing: Embedded Unit Testing for embedded systems and embedded software. #testing

  • Software testing is like Charles Darwin’s theory of evolution, where complex systems evolve from simpler ones.
  • Natural and artificial selection in testing is crucial, just like in the evolution of organisms.
  • Unit testing is an essential part of software development and can be done using simple tools like Embedded Test (ET).
  • ET allows developers to run tests on both host computers and embedded boards, enabling dual targeting for quicker evolutionary cycles.
  • The importance of regression testing and finding the right balance with the number of tests is essential for effective software development.

Hello and welcome to the system programming course! I’m Samic and in this lesson, I’d like to discuss testing, which is essential in software development. We will explore embedded unit testing and how to obtain the necessary tools for testing software on both computers and embedded targets.

The Fascinating Evolution of Complexity

Let’s start by examining complex systems, which generally come about because our understanding of the process of creating them has dramatically changed. Charles Darwin’s theory of evolution by selection offered a different explanation for the creation of living organisms. This theory presented the idea that organisms come into being through a gradual, incremental, and cumulative process of evolution from simpler to more complex forms.

The Forgotten Findings

  1. A system that works is invariably found to have evolved from a system that worked.
  2. A complex system designed from scratch does not work and cannot be made to work, you have to start over beginning with a working system.
  3. Embedded systems don’t work until everything works.

Takeaway: Evolution plays a crucial role in creating complexity, and this understanding is essential for software development.

The Rediscovery of Selection in Software Development

The importance of evolution by selection in creating complex systems was rediscovered several times, leading to the advent of agile software development, which embraced testing as the primary selection mechanism for software bugs to guide the process.

Artificial Selection and Software Testing

Software, like any complex system, requires a form of selection for its evolution. This led to the utilization of artificial selection, where humans actively evolved and transformed software through testing and iterations.

A Closer Look at Unit Testing

Unit testing is the most extensive testing that developers perform, and it involves testing the smallest software components individually. The artificially created habitat for unit testing is called a testing harness. In this lesson, we will focus on "Embedded Test" (ET), a simple yet powerful testing harness.

Understanding Embedded Test (ET)

ET simplifies testing and runs tests on host computers and embedded boards with minimal porting. It is a permissively licensed open source testing harness that allows for comprehensive unit testing.

Setting Up and Running Tests

To set up ET and run tests, you will need the necessary tools for building, testing, and running the code on both host computers and embedded boards.

Examples and Demonstrations

We’ll walk through a basic example of unit testing with ET, providing insights into the structure of tests and the process of ETKong your code to run on different platforms.

Dual Targeting for Embedded Code

The concept of dual targeting involves running the code on both the host and the embedded target, enabling a quicker evolutionary cycle and influencing the development of embedded code.

Testing on Embedded Boards

We’ll also explore the process of testing on embedded boards, including setting up and running tests on different embedded boards. The communication between the embedded boards and the host will also be discussed.

Guiding Software Evolution Through Testing

This lesson emphasizes the importance of evolving and testing software to create non-trivial systems. Taking a systematic approach to testing can help eliminate defects sooner and guide the software evolution effectively.

Balancing Quantity and Relevance of Tests

Finding the right balance and discarding less relevant tests while keeping important ones is crucial for the progress of software development.

In conclusion, software testing is an essential part of creating complex systems, and rigorous testing is necessary for guiding the evolution of software. If you found this lesson helpful, consider giving it a like and subscribing to stay tuned for more insightful content.

Key Takeaways:

  1. Artificial selection is vital for the evolution of software.
  2. Unit testing is crucial for testing small software components.
  3. Dual targeting influences the development of embedded code.
  4. A systematic approach to testing is essential for guiding software evolution.

FAQ:

  • How can ET be used for unit testing on embedded boards?
  • What are the benefits of dual targeting in software development?

Thank you for watching and happy testing! 🌐

About the Author

About the Channel:

Share the Post:
en_GBEN_GB