This is the second of a three video series to show you how to quickly get started with Ceedling, by test driving a simple "FizzBuzz" example.
In this video we test drive a simple FizzBuzz example in C -- writing the tests as we go -- and using Ceedling to run the tests. Read More
This is the first of a three video series to show how to quickly get started with Ceedling, by test driving a simple "FizzBuzz" example.
In this video we introduce our example problem, create Ceedling project, create a source code module (easily using Ceedling!) and look at how to run the tests. Read More
Have you tried to use Ceedling recently, but got this error when you tried to run rake?
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) Read More
Do your embedded applications ever save any data to flash memory (aka EEPROM)? This where you typically store non-volatile information that needs to preserved if the device is powered down.
This sort of thing is tough to test in the traditional way -- by loading code onto the target and running it -- because it's hard to set and _re-set_ the data in flash for testing. It can also be harder to inspect the data when it's in flash memory. Read More
I don't know about you, but a very natural way for me to think about designing embedded software is from the "outside in". I've been thinking about this a bit recently, and I'm not so sure that's the best approach. Read More
So you write embedded software in C and you think that unit testing might help you do it better. You already know about creating well-defined software modules and how this makes it easier to write unit tests. But what else can you do to make these modules easier to test? What are some more coding patterns that make unit testing easier? Read More
So you write embedded software in C and you've read about unit testing. You think unit tests will help you write better software, but how do you actually write code that's testable? What are some coding patterns that make unit testing easier? Read More
You want to try unit testing your embedded software but there's a problem -- you've got an existing project and a whole lot of code already written. Maybe it's even embedded legacy code. Read More
If you want to do embedded test-driven development (TDD), running your automated unit tests on the target is too slow. When you're test-driving, you're running the tests very frequently. You will not want to wait for the tests to download to the target. It will disrupt your flow and you'll get more easily distracted. Read More
I've created a plug-in for Ceedling which lets you use the Fake Function Framework (instead of CMock) to automatically create the mock interfaces used in your unit tests. You can find the plug-in (along with complete instructions for how to use it) in the GitHub repository. Read More
Do you write embedded software? Looking for an introduction to unit testing?
I've written a bit of an introduction to unit testing, especially for embedded systems developers. Read More
Catch is a unit testing framework that has some interesting (better!) ways to write tests for C and C++.
Instead of naming your tests with function calls, you can write your tests as a nested series of Given-When-Then statements. Read More
Did you know you have options when it comes to creating mocks for your C-language unit tests?
I've been spending a lot of time working with CMock -- since it's used by Ceedling -- but I've just been checking out FFF (the "fake function framework"). It's well done and I think it deserves a closer look. Read More
How can you unit test your embedded software? What about your hardware dependencies?
The secret is mocking.
We can mock the interfaces to our hardware so that we don't need the actual hardware to test. Read More
The first principle behind the Agile Manifesto is:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
It's the highest priority! This has got to be really important, but why? What good is delivering software that can't do everything the customer wants? Well... Read More
If you're on board with unit testing, but not quite sure about test-driven development, I want to share my experience for why I think writing the tests first is the way to go. Read More
For embedded test-driven development in C, you need to use a unit test framework to make testing easier. This can take some work to set up. I've created a reproducible environment with Vagrant that you can start using in just a few simple steps. Read More
All of your source code is in your version control system, but what about your build environment?
If your development machine crashed, would you be able to recreate your build environment? Read More
Unit testing is not widely used in embedded software, but it should be. In my experience the best way to learn is to start writing some unit tests right now. Read More