Posted on

A Broad and Shallow Introduction to Unit Testing

Many software teams struggle with testing and verification of their code. There seems to be general confusion or misunderstanding around topics like unit testing, integration testing, functional testing, exploratory testing, test-driven development, test automation, and refactoring. When technical coaches introduce concepts like “levels” of executable checks, “testing strategies,” and the distinction between testing and checking, I notice many team members’ eyes glaze over. When the coaches show people how to write executable unit tests or how to do test-driven development, it seems as if they learn the mechanics in a rote way yet still aren’t sure where the various pieces fit into the bigger picture of effective software delivery. And they can’t easily judge which of the numerous topics may apply to their own workflow.

Continue reading A Broad and Shallow Introduction to Unit Testing
Posted on

What happened to the test automation pyramid?

In a February 2020 article on cucumber.io, “Eviscerating the Test Automation Pyramid”, Seb Rose points out some of the issues that ensue when people misunderstand the intent of the test automation pyramid (or triangle) originally proposed by Mike Cohn and interpret the model too literally. He suggests if we remove the various levels and labels that people have added on the inside of the triangle, and think about the shape as such, we’ll come closer to the original intent – many tests of small scope and fewer tests of larger scope.

Continue reading What happened to the test automation pyramid?

Posted on 6 Comments

Testing as the core discipline of software delivery

Of the basic disciplines involved in software development and delivery – analysis, design, programming, testing, management, deployment, operations, architecture, etc. – programming is usually seen as the most technically demanding and complicated to learn. Many people look primarily to programming when they assess the effectiveness of their software delivery processes. Historically, the knee-jerk response to slow delivery has been to hire more programmers. After all, software is code, right? Therefore, if there’s a problem delivering software, it must have something to do with the way it’s coded.

After some 36 years in the IT industry, most of it in a hands-on software development role, I’ve come to the conclusion that the core discipline in software development is not programming, but rather testing. Even if programming is objectively more time-consuming to master than the other disciplines, it seems to me that testing is more critical to success. Continue reading Testing as the core discipline of software delivery