Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Personal Development Mindfulness Personal Transformation Meditation Life Purpose Coaching Emotional Intelligence
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Google Analytics
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Analysis Data Modeling Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Freelancing Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee

This course includes:

  • 7 hours on-demand video
  • 23 articles
  • 25 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
IT & Software Other IT & Software TDD Test Driven Development

Interaction Tests, Mocks & Refactoring in Embedded Software

Dr. Surly’s School for Mad Scientists: Advanced Test Driven Development for Embedded & System Software in C
Bestseller
Rating: 4.5 out of 54.5 (34 ratings)
204 students
Created by Mark VanderVoord, Mike Karlesky
Last updated 12/2020
English
English [Auto]
30-Day Money-Back Guarantee

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

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.

Course content

6 sections • 57 lectures • 7h 1m total length

  • Preview02:58
  • How This Course Works
    03:18
  • Preparing for World Domination
    10:44
  • A Little Help From Our Friends—Setting Up Your Development Environment
    04:16
  • Log All The Bits
    03:02
  • Preparing for the Meeting
    00:46
  • Preview09:01
  • Iteration 0—Getting Ready to Start
    01:12

  • The First Iteration
    17:25
  • Iteration 1: Homework 1: LED Init
    00:40
  • Forget What Your Mama Said. Mocking Is Just Fine.
    41:11
  • Mocks
    6 questions
  • How is it doing that? Under the hood.
    17:59
  • Architecting 101
    12:46
  • Feature #2—Let’s Get Digital
    20:32
  • Iteration 1: Homework 2: LED Toggle & Digital Get
    00:34
  • CMock Under the Hood [Optional]
    00:22
  • Blinken Lights!
    09:46
  • Why Start Where? (Iteration 1 Wrapup)
    08:24

  • The Second Iteration
    02:09
  • Iteration 2: Homework 1: Analog Spike
    00:28
  • Preview25:06
  • Let's Play "Model Conductor or Hardware"
    5 questions
  • Reuse—The Rare Unicorn
    13:31
  • Iteration 2: Homework 2: Testing Filtered Analog Values
    00:21
  • Why Mock? A Recap.
    05:02
  • Filtering Correctly—Refactoring Is So Much Fun!
    09:51
  • Iteration 2: Homework 3: Finish Timer Subsystem
    00:17
  • Checking Our Progress (Iteration 2 Recap)
    00:50

  • The Third Iteration
    01:29
  • HCH—A Pattern by Any Other Name…
    20:23
  • Iteration 3: Homework 1: Version Command
    00:15
  • Return Thru Pointer & ExpectAnyArgs
    3 questions
  • Reuse—The Magical Unicorn
    27:19
  • Iteration 3: Homework 2: Handling Errors & Packing Messages
    00:26
  • It’s a Wrap—Using the Adapter Pattern
    18:56
  • Iteration 3: Homework 3: Finish Usb Driver
    00:04
  • A Little More About the Adapter Pattern
    00:03
  • Look, We Can System Test! [optional]
    00:35
  • It’s About Time—Our Second Command Handler
    07:37
  • Command Wrangling—Managing Complexity with Refactoring
    12:22
  • Pack It Up—Returning Variable Data
    02:23
  • Iteration 3: Homework 4: Results Command
    00:37
  • Check Our Progress—Iteration 3 Recap
    00:39

  • The Fourth Iteration
    03:58
  • Public Service Announcement
    00:13
  • Gotta Catch ’em All (Refactoring Our Capture System)
    08:23
  • Iteration 4: Homework 1: Capture Refactoring
    00:06
  • What Would You Expect?
    3 questions
  • Code Aspirin—Reducing Future Pain
    13:10
  • Armed—Triggers Are Wonderful Things
    08:57
  • Iteration 4: Homework 2: An Arm and a Leg
    00:09
  • Babel Fish—Translations Are Wonderful
    20:22
  • Iteration 4: Homework 3: Getting Triggered
    00:16
  • Configuration—Our Parameter System
    23:13
  • Using and Configuring :treat_as:
    00:35
  • Param Set—Being Observant
    13:25
  • Iteration 4: Homework 4: A Few Details
    00:07
  • More Levers! (Configuration For Everything!)
    08:15

  • Project Retrospective
    03:42
  • Learning More…
    00:56

Instructors

Mark VanderVoord
Maker of Things in Ones and Zeroes.
Mark VanderVoord
  • 4.4 Instructor Rating
  • 359 Reviews
  • 936 Students
  • 2 Courses

    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. 

Mike Karlesky
Helping People and Computers Get Along
Mike Karlesky
  • 4.4 Instructor Rating
  • 359 Reviews
  • 936 Students
  • 2 Courses

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.

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.