TDD for Embedded C++
2017-08-04 13:49:33 UTC
Most useful learnings:
1) The reason behind doing TDD in the first place; it helps you to write bug free software so that with a little extra time up front you can save unlimited time on the back end since you no longer have to track down and fix bugs. They are fixed as soon as they are added.
2) The concept that we are not testing code operation but code paths, thus we can ignore timing constraints, external interfaces, etc. These can all be faked or mocked so that we can determine how the code actually works. Those other operations can be done as integration tests.
Concepts v exercises:
Presentation v discussion:
Our company has projects in both C and C++ thus we had to split the legacy portion into how to work with C and how to work with C++. This would be better to focus on one or the other, perhaps split the legacy into two separate classes, but this is not James' fault and I believe that he handled it the best that he could.
I thought the exercises were good at introducing the concept, showing how to implement it and showing the benefits. The projects chosen were meaningful and easy to understand and somewhat similar to objects found in our own code base, thus they were very useful. I honestly can't think of how they could be improved.
James was very knowledgeable and able to find a way to work with problems we encountered while trying to develop tests for our legacy code base. He was patient and allowed us to discover our own solutions and only suggesting why our solution may not be the best. As I stated at the end of the class, James did not teach me anything I couldn't have learned on my own by reading books or looking on the internet but he did save me 3 to 6 months of fumbling around before I discovered the correct way to perform TDD. A very useful class.
I already have; I have continued with the legacy code example to create meaningful unit test for a section of our code that will be ported to our next gen platform while also needing some work.
Challenges to applying:
The biggest challenge will be taking the time to develop a useful suite of automated unit tests for our existing code bases. It probably doesn't make sense to do this for everything but at least start with those components that will either be changed in the future or will be ported to the next gen platform.
I thought this course was extremely helpful and will improve my development results since I should be able to deliver more bug free code than in the past.
Legacy code workshop:
Recommend to others: