Unit Testing & Other Embedded Software Catalysts
What you'll 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.
Requirements
- You should have basic proficiency in C programming.
- You should have some experience with Embedded or Systems Programming. If you've ever dealt with a register or bit mask, you're our kind of people.
- No prior testing experience is required.
- While certain tools are required for this course, they're all free, and we'll guide you through all necessary installation and configuration as we go.
Description
Welcome to Dr. Surly’s School for Mad Scientists!
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 you’ve completed this material or if you’re already familiar with TDD and xUnit frameworks our course Interaction Testing, Mocking & Embedded Software in C is a great next step.
Dr. Surly’s School for Mad Scientists
When you’re 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. Surly’s lab has become quite proficient at software design and testing, supplemental revenue to fund all manner of villainy is a necessary evil. It’s 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 Software
You 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 won’t only be learning testing in this course but also good design.
This Course Includes:
0x1D (29) Code-centered lectures
0x05 (5) Development projects
0x12 (18) Helpful resource-packed supplemental primers, guides, and how-to's
Links, quizzes, helpful hints, and more
Can’t decide? Need something more? Please write us at… tdd@throwtheswitch.org
Join 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.
Instructors
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.
Hi. I’m Mike. I’ve been working on crazy software projects for a couple decades—everything from weather balloons to smart rear view mirrors to EEG-based versions of Pong to gesture-based security systems. I’m one of the creators of the open source tools Unity, CMock, and Ceedling that help people unit test C code. I’m also one of the founders of Throw The Switch, an online community dedicated to making embedded software better.
I’ve trained and coached lots of people in good software development and software testing techniques. This has included a variety of teams, conference attendees, a Tier 1 auto supplier, and even an intelligence agency of the U.S. Government.
I lost my mind and did a doctorate in Computer Science with a speciality in Human Computer Interaction. Before that my education was Electrical Engineering and, well, other Computer Science. A theme throughout my education and work is building systems that work for people and helping people build systems that work.