The software development went through significant changes since the first software was created. Bigger and more complex softwares were made, which were created by multiple developers in most cases. In addition, the number of areas where softwares are used is increasing. The time for development is getting shorter so the code must be reusable and modular. Furthermore, the softwares often do safety-critical functions, such as in the automotive or aviation industry, which adds additional requirements on the software.
The development methods must adapt to changing needs, just think of the more and more helpful development environments or version control systems. The testing methods must do the same. While a small program can be tested manually by the programmer, this can't be done with a complex software, because it would take a lot of time and its accuracy is questionable.
Robert C. Martin, the author of the highly acclaimed book of Clean Code writes about software testing in this way: "Without tests every change is a possible bug." It's obvious that you can't test everything manually after every modification, that's why frameworks for automated testing were created .
Despite the safety-critical applications are mostly related to embedded systems, little is said about the testing of these softwares. The testing of a software which is running on a microcontroller has many difficulties, because the software is tightly connected to the hardware and the operating system, so the testing of external events or time critical actions are complicated.
My thesis gives a solution for testing embedded software. The reader will get an insight into the various test types and their role in the development of a system. The unit test frameworks play a significant role in the thesis and they're examined from the point of view of an embedded software developer. The best framework for the task will be selected and it's followed by the description of the software and hardware which realizes the automated testing.