Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Interaction Tests, Mocks & Refactoring in Embedded Software
Rating: 4.1 out of 5(146 ratings)
773 students

Interaction Tests, Mocks & Refactoring in Embedded Software

Dr. Surly’s School for Mad Scientists: Advanced Test Driven Development for Embedded & System Software in C
Last updated 12/2020
English

What you'll learn

  • Develop an entire embedded project in C using Test Driven Development
  • Interaction-based testing with stubbing and mocking
  • Wield the open source tools CMock and Ceedling like an expert
  • Refactoring working code with testing support
  • Strategies and techniques for Unit Testing tricky code
  • Strategies for prioritizing and planning an embedded project

Course content

6 sections57 lectures7h 1m total length
  • Welcome2:58

    So... what is this class about?

  • How This Course Works3:18
  • Preparing for World Domination10:44

    A screencast of setting up and using the course development environment. This video shows the steps of the next lecture put into action.

  • A Little Help From Our Friends—Setting Up Your Development Environment4:16

    For your local development environment we’ll be using a single, custom-made Docker container created just for this course. Instead of the messy process of installing a bunch of separate tools and runtimes, you only need to install Docker and fetch the image we’ve prepared for you.

  • Log All The Bits3:02

    An introduction to the course project.

  • Preparing for the Meeting0:46

    Reviewing the project requirements before the Requirements Review Meeting

  • Iteration 0—The Requirements Review Meeting9:01

    Transforming requirement specifications into feature lists.

  • Iteration 0—Getting Ready to Start1:12

Requirements

  • A basic proficiency in C programming.
  • Some experience with Embedded or Systems Programming. If you’ve ever dealt with a register or bit mask, you’re our kind of people!
  • Experience with basic unit testing, particularly in C using Unity. If that’s not you, yet, try our first course: ‘Unit Testing & Other Embedded Software Catalysts’.
  • There are tools required, but they’re all free. We’ve packaged them for easy installation, and we’ll guide you through their set up.

Description

Welcome (Back) 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 material builds on the foundation of our first course, Unit Testing & Other Embedded Software Catalysts. If you’ve taken our first course or you’re already familiar with TDD and xUnit frameworks, this course 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:

  • Learn interaction-based testing with stubbing and mocking in a real-world project.

  • Use new tools! CMock & Ceedling complement the C testing tool Unity.

  • Iteratively refactor already working code with the support of your test suite.

  • See techniques and patterns for unit testing tricky code.

  • Try strategies for prioritizing and planning an embedded project.

  • Encounter big idea philosophies for process, design, and testing.

  • Connect with a supportive community.


Learn by Doing—Build a Real-World Project from Start to Finish

The end result of this course is an actual, functional application that can run on real hardware. No simplistic exercises or toy examples. The hardware isn’t necessary for this course, but if you do have the hardware, it will serve as final proof that your code works. And, the final deliverable might just be handy for other projects too.

The project is the mechanism for learning in this course. We’ll grow the project from requirements using a structured, iterative process much as you would in a real project. We teach development, testing, design, and process skills as we build this project, showing where they are applicable in real life.

You will learn key concepts first from us demonstrating the skills by example, then through guided use, and finally as homework assignments that allow you to practice the skill on your own as you implement your project.


This Course Includes:

  • 0x01 (1) Large project from requirements to finished product

  • 0x19 (25) Code-centered lectures

  • 0x0D (13) Code-exercises contributing to the main project

  • 0x1F (31) Helpful resource-packed supplemental primers, guides, and how-to’s

  • 0x195 (405) Minutes of thorough video lectures

  • Links, quizzes, helpful hints, and more


Have questions? 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 generally or programming for hardware specifically, this course may be too advanced for you.