Unit Testing & Other Embedded Software Catalysts (Udemy.com)
Dr. Surly’s School for Mad Scientists: Introduction to Test Driven Development for Embedded & System Software in C
Created by: Mark VanderVoord
Last updated December 2020
Our take
Based on the ratings of 685 students and a sample of their written reviews. No course pays to be reviewed.
This is a short introduction to test driven development for C on embedded and system code, built around the open source Unity test framework. The description lists 29 lectures and five development projects, and the whole thing runs about 2.9 hours. Mark VanderVoord, one of the creators of Unity, teaches it alongside Mike Karlesky. It is aimed at C developers who have not done unit testing before, and it warns that people new to C or hardware may find it too advanced.
Reviewers like the light tone and the bite sized, practical examples. One embedded developer says they typed along with every example, and another says the techniques work on any micro with a C compiler. The complaints are consistent. Some want more, such as managing large test suites, testing natively versus on target, and mocking hardware dependencies. One reviewer found it so slow that TDD looked pointless, and another missed the Ruby scripts that automate test registration. A few say the promised follow-on parts never arrived, and that the SourceLair sandbox trial was shorter than advertised.
The last update was in 2020. Treat it as a starting point, not a full curriculum. People who are new to unit testing get the most from it. Anyone who already knows the basics will likely find it slow and light, and the authors point to a separate mocking course for the next step.
Pros
- Taught by a co-creator of Unity, so the framework advice comes from the source
- Code-centered lectures, and one reviewer typed along with every example
- Reviewers say the techniques apply to any microcontroller with a C compiler
- Light-hearted tone keeps a dry topic engaging, according to several students
Cons
- Only about 2.9 hours, and reviewers say it stops just as it gets going
- Last updated in 2020, with no CMock, Ceedling or test automation scripts covered
- Reviewers say the promised follow-on parts never arrived and the SourceLair trial ran short
This course helped me start applying TDD to embedded in ways I never thought possible. The instructors and content also kept me engaged, and I typed along with every example.
All Levels is generous. It suits C developers new to unit testing, not people still learning C or hardware.
What you will learn
- Develop Embedded and System Software in C using Unit Tests.
- Apply Test Driven Development practices and design patterns to your own projects.
- Produce quality, maintainable, and self-documented software designs through test-first thinking.
- Understand how to use the open source Unity test framework
- Take over the world.
How it compares
Against the other 281 rated Udemy courses in Software Testing on CourseDuck:
- Rating4.5 out of 5higher than 51% of them
- Reviews685#157 of 282 by number of reviews
- Length2.9 hoursshorter than 78% of them
- Last updatedDecember 2020earlier than 82% of them
Course Description
Unit Testing and Test Driven Development help smart, capable developers like you create robust, reliable, and maintainable software that lets you sleep soundly at night. In this course you will apply these concepts to embedded code and system software in C.
This course introduces the Unity framework, key principles, and a variety of techniques so that you can apply Unit Testing and Test Driven Development in complex and low-level C code. Once youve completed this material or if youre already familiar with TDD and xUnit frameworks our course Interaction Testing, Mocking & Embedded Software in C is a great next step.
Dr. Surlys School for Mad ScientistsWhen youre trying to take over the world you learn two things quite quickly. First, you end up building lots of technology like death rays and such that requires high quality firmware. Second, minions, climate-altering satellites, and lairs are expensive. While Dr. Surlys lab has become quite proficient at software design and testing, supplemental revenue to fund all manner of villainy is a necessary evil. Its all part of the standard world domination business model, and you get to benefit.
In This Course You Will:
Develop in C using Test Driven Development. Write real, executable tests on your first day.
Learn concepts from Agile, XP, Scrum, and Lean practices for producing well designed, high quality, scope-managed, and self-documented code.
Utilize the free, open source tool Unity in real-world testing scenarios. No toy examples.
Follow us through real-world programming examples and see techniques and patterns for unit testing tricky code.
Encounter big idea philosophies for process, design, and testing.
Apply your new skills to challenging practice problems.
Connect with a supportive community.
Learn How To Apply Unit Testing To Your Embedded and System C SoftwareYou will learn skills that have become staples in higher level languages but are sadly underutilized in the C world. In particular, you will learn to write unit tests in the uniquely challenging setting of embedded and system software.
Of course, the test-driven techniques you will learn produce code that enables thorough, smart testing. But, a happy side effect of TDD is code that tends to adhere to generally good design principles. You wont only be learning testing in this course but also good design.
This Course Includes:
0x1D (29) Code-centered lectures0x05 (5) Development projects0x12 (18) Helpful resource-packed supplemental primers, guides, and how-to'sLinks, quizzes, helpful hints, and moreCant decide? Need something more? Please write us at tdd@throwtheswitch.
orgJoin us in our mission to take over the world (with quality embedded software)!
Who this course is for:
This course is for C developers seeking to learn Unit Testing and Test Driven Development. If you are new to the C language or programming for hardware, this course may be too advanced for you.
Instructor Details
- 4.5 Rating
685 Reviews
Mark VanderVoord
Hi. I'm Mark. I've been developing awesome things with embedded software for 20 years and I help other people do the same. I've worked on self-guided lawnmowers, automotive electronics, color measurement devices, bluetooth beacons, and much more. I'm one of the creators of the open source tools Unity and CMock, which help people test C code. I'm one of the founders of Throw The Switch, an online community dedicated to making embedded software better.
More courses by Mark VanderVoord
Interaction Tests, Mocks & Refactoring in Embedded Software (2020)
4.1 (146 Reviews)
Provider: Udemy
Time: 7h
$129.99
More Software Testing courses
ZeroToHero TestNG Framework - From Basics to Advanced (2026)
4.9 (828 Reviews)
Provider: Udemy
Time: 6.2h
$59.99
Selenium WebDriver with Java- Basics to Advanced + Framework (2026)
4.9 (620 Reviews)
Provider: Udemy
Time: 35.5h
$84.99
Karate DSL: API Automation and Performance from Zero to Hero (2026)
4.8 (4,652 Reviews)
Provider: Udemy
Time: 7.2h
$10.99
API Testing in detail using Postman - Test Automation (2026)
4.8 (423 Reviews)
Provider: Udemy
Time: 7.8h
$10.99
Quick Introduction to Postman and API Testing for Beginners (2025)
4.7 (23,113 Reviews)
Provider: Udemy
Time: 3.2h
$13.99
Software Testing Masterclass (2026) - From Novice to Expert
4.7 (12,622 Reviews)
Provider: Udemy
Time: 9.9h
$149.99
Reviews
By Tony O'Callaghan on 10/24/2020
Everything is very well explained
By Alessandro Benini on 10/19/2020
Very clear.
By Peter Vollaard on 10/16/2020
Mostly covering the basics that I was already familiar with, but the material was well explained, so it was a nice refreshment session. Hoping that the follow-up course provides some new knowledge.
By Andries Holtrop on 10/4/2020
Well explained in little steps at the time, so easy to follow. Very good articulation and understandable English (American). You need to know I'm Dutch originally albeit with a good understanding of the English language. Small sessions which you can take in as a whole in one go before your mind explodes with new information.
By Alexandru Balmus on 9/25/2020
This course only covers Unity Assertions.
This is only useful for simple modules which do not interact with other modules.
There's nothing about mocks which help test complex modules which interact with other modules.
The Embedded word in the title is only marginally relevant.
The quality of the material presented is good though.
I dislike the style of the videos.
By Brooks Anderson on 9/11/2020
Good introduction. I didn't care for the GPIO module project because the module was hardcoded for the specific application.
By IT Link Benelux on 7/25/2020
Great course for Unit Testing and TDD!
By Yeswanth Gadde on 7/16/2020
being able to practice simultaneously is good
By Ritesh Lal on 7/8/2020
excellent
By Kevin Kramb on 7/6/2020
I'm an experienced embedded software developer and I want to learn more about TDD in general and Unity in particular. This course was great for me. I feel like I've been properly introduced and can now use the techniques covered in the course and can continue to learn on my own. This course is just an introduction though. I expect I still have much to learn. The course does not cover CMock or Ceedling and I'd like to learn more about those. I may purchase the 2nd course from ThrowTheSwitch after digesting what I've learned. I wasn't able to use SourceLair for this course. I signed up for a SourceLair account but was unable to get a public key that would allow me to checkout the BitBucket repository that I forked. SourceLair did not respond to one request for help. I ended up using my own setup, which is Windows 10 with WSL2, then Ubuntu, gcc, etc. I would recommend Windows 10 users go the WSL2/Ubuntu route. It's not that hard to setup and will be much more useful than SourceLair going forward.
By Frank Philippot on 6/19/2020
a very good pratical course
By Chris Migut on 6/11/2020
Forum link is broken that links to throwtheswitch for help.
But, liking the course so far.
Quality Score
No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.
Overall Score : 90 / 100







