Conference Video - Deep Stack – Tracer Bullets from ADC to Browser
A blank page can be very intimidating, even for a Test-driven developer. Where do we start? Write a test, right? Not always.
more...This training course helps you build knowledge, understanding and skill in the engineering practices needed to build great C++ code. You learn how to build flexible and modular software with very few defects, software that can have a long useful life. We teach you how to prevent defects and how to keep code clean over years of evolving needs.
Among other things, you'll learn the difference between Debug-Later Programming (the most popular programming technique on the planet) and Test-Driven Development.We learn new skills by doing, not just reading, listening, and thinking. Engineers are not so interested in changing how they work if the change does not help solve some identified problem. We’ve found this learning cycle to be invaluable to attendees of our courses.
In this course, we repeat this learning cycle, growing skills with each iteration. Our goal is to build new skills on top of the attendees' existing skills.
Module Objective: Software developers make mistakes. Mistakes undetected become defects
with potentially huge costs. In this section, attendees can learn the motivations
behind TDD and how the short test-driven cycles may help prevent defects.
During the debrief, we explore
what people liked about TDD and what concerns them. There is usually a lot to like,
but also serious concerns. It is important to bring the concerns into the open.
This is a rare opportunity to reflect on how we work and to envision how TDD may help us improve.
Module Objective: Look at what is special about your programming environment, and some of the current industry-standard practice inefficiencies. We hope to show that TDD is well suited for improving the product quality, as well as reducing some of the frustrations and waste when testing code in your environment.
Module Objective: The most valuable code you have (the code with the potential longest life) has dependencies. This code embodies what makes your product special. Automated tests help preserve your investment, allowing changes that have fewer unwanted side effects (defects!). We'll look at principles and techniques to guide developers in creating modular, testable, and tested embedded software. We'll introduce Spies and Fakes. You'll see how Spies and Fakes can fully exercise the code under test.
Module Objective: Tests have many valuable uses. One overlooked value of tests is that they are documentation. Tests provide an executable specification of the code under test. This document shows how the code is supposed to be used and how it is supposed to work. This document is unambiguous; it's code! This document warns you whenever the code differs from the specification. To get the most value from tests as documentation, tests must be written to be read and understood.
Module Objectives: There is more to test-stubs than the Spy and the Fake. We'll look at an overview of Test-Doubles and when to use them.
Module Objective: Mocking is an important tool for checking that the code under test is interacting properly with its dependencies.
For more depth in design and refactoring, you can follow our TDD course with SOLID Design and Refactoring for C++
Module Objective: Now we face the reality that we have code that was not created with TDD. We've seen how TDD can help guide creating tested, modular and loosely coupled software. The reality: our code has problems. We don't have time to stop all feature development and retrofit our code base with tests. We'll look at the pragmatic approach to incrementally improving your valuable code base.
This course will get you and your team well on the way to applying TDD in your C++ development efforts.
A blank page can be very intimidating, even for a Test-driven developer. Where do we start? Write a test, right? Not always.
more...Here is a short interview with James about TDD and embedded software from the deliver:Agile conference last spring.
more...Do you have some time to do a simple programming problem in C or C++ for my research?
more...My long-time good friend (Uncle) Bob Martin and I have fun programming together firing tracer bullets for distributed water pressure measurement system.
more...You can find a recording of the webinar presentation James Grenning gave with Jama Software on this page (once it is posted): Agile for Embedded -- Overview and Pitfalls.
more...James is the author of Test-Driven Development for Embedded C.
Have you read Test-Driven Development for Embedded C? Please write a review at
Amazon
or
Good Reads
.