← All articles

Testing For Developers Series

Kicking off a series untangling the confusion around unit, integration, functional, regression, and load tests, with my own opinionated definitions.

Donn Felker

Donn Felker

2008.09.19 · 2 min read

Over the next few weeks I’m going to cover some topics will help alleviate the pain of understanding the difference between different tests in application development.

The series will consist of the following articles:

Disclaimer: I’ve had to explain this so many times that I figured I might as well type it out on my blog and send people the link to save myself time and to give friends a place to bookmark for reference. Also, these topics carry quite the heavy controversial and opinionated crowd – to the point where some people have vastly different opinions on what each of these topics actually mean (and some people WILL disagree with me and I’m ok with that). These are my opinions that I have gleaned from my years in the field utilizing various testing methodologies.

As a developer, when you’re first getting into testing your code via a testing framework you will start to notice that testing terms are thrown around like they’re ingredients in code soup. Unit, integration, functional, acceptance, regression, load, etc… WHOA, hold the phone buddy. What the …?!?! Confusion sets in immediately. You probably have an idea of “what” you want to do but you’re not sure of the actual name for it.

A lot of time developers will say “yeah, there are unit tests backing it up” when in fact those unit tests are actually  repeatable “integration tests”. This is completely fine if this is what they meant to do. But unfortunately they don’t know what they are saying and they’re probably confusing themselves as well as their peers. I’m hoping this series will act as a reference for some people who are just getting started in testing from a developer standpoint. By no means is this a be-all/end-all series for testing, it is just meant as a springboard for developers just getting started. Testing (TDD in general) has a huge learning curve as it requires quite the paradigm shift to get started. This series will be refined as I find ways to improve it and it will be updated throughout time.

The end goal of this series is to help newcomers to the testing world identify the differences between the types of testing. I will also provide some examples of how to test in each of these scenarios (some more than others) and I will provide information about some of the tools that you can use in each of the testing categories.

Donn Felker

Written by Donn Felker

I've spent 25+ years shipping software, writing books, and running my own companies. I write about thinking clearly, working for yourself, and doing real work while AI rewrites the rules. New essays land here every week.

Get the newsletter

Keep reading