Simple framework for regression tests

During a project development engineers should provide reliability of implemented system. It is worth to create a solution to automatically validate each module and the whole application. One of the method to taking care about the code are regression tests. Regression testing is a type of software testing that protect our existing code against the errors caused by the patches, enhancements or other changes. One of the main reasons for regression testing is to determine whether a change in one part of the software affects other parts of the same software.

How it works? Please take a look at the picture below. The most simple regression test framework will compare reference file with the current results.

Regression TestsThe problem is: how to create reference files? In most case we could use golden reference model – the reference library or create them manually. Sometimes we haven’t got any golden reference model or we don’t know exactly how specific module should work. In that case it should be considered to treat the current result as reference files. Such approach helps us to track results of our system during the implementation and either fix our code or update the reference files.

Continue reading

Memory management

One of the main reason of segmentation fault error is incorrect memory management, e.g freeing unallocated or static space, unauthorized access to unavailable memory. Unfortunately, it isn’t possible to figure out why our application doesn’t work after the segmentation fault message, without any additional tool.

Memory leeks are another problem, which refer to programs written in C/C++. It is especially important in case of embedded systems which are designed to permanently do specific tasks. Embedded C/C++ developers have to provide efficient solution for resource (e.g memory) management.

Continue reading

First steps with GIT

GIT is a distributed revision control system that allows to working with the versioned files locally and remotely. It is something different then SVN, but its main functionality is quite similar. GIT was designed to increase performance of typical, for each revision control system, operations like: merging, pushing, pulling branches.

There are a lot of books, e-books and articles about GIT, but for the people who never heard about it Pro GIT seems to be a very good choice. After reading Pro GIT we will be ready to start using this system.

Continue reading

Development Environment

When we are thinking about the development environment we should think about our comfort. Our efficiency depends on how we feel, so it is important to choose appropriate tools, install and configure them.

During my studies I used many applications which helped me to implement my final projects. Now I’m using Eclipse CDT. In my opinion, it is the best Integrated Development Environment for C/C++ languages. What about console? Vim? Emacs? Well… I’m not a conservative developer ;)

Why Eclipse CDT?

  • plugins – external tools inside the development environment
  • community – people who help with our problems
  • portability – works on many different platforms
  • refactoring – fast text and code processing
  • many different profilers, simple debugger

etc.

Except Eclipse CDT I always use: Valgrind, CUTE, eGIT. I will write about them soon.