David Rodenas PhD
2 min readMar 21, 2023

--

Hi Leonardo,

I did not though about that before, so thanks a lot for opening that point of view. If I am right, you are saying that given that:

- London TDD School makes Unit Tests that verify that the behavior is satisfied by adding spies inside the code implementation details.

- Chicago TDD School makes Unit Tests that verify that the behavior is satisfied by checking the result of the code.

So, probably, I am not wrong, you are claiming that what I name QA-Unit Tests are the firsts from London TDD, and the Agile-Unit Tests are the ones from the Chicago School.

Although, I am not sure because both focus on verifying a behavior, not the code itself.

In my case, what I claim as a QA-Unit Tests is what Ward Cunningham describes in his wiki as Unit Tests (see http://wiki.c2.com/?UnitTest) «Under the strict definition, for QA purposes, the failure of a UnitTest implicates only one unit. You know exactly where to search to find the bug.», you can see clearly that he adds the word QA to make it more clear, and to distinguish about what the developers need to do. And the key is "implicates only one unit". Later in DeveloperTest, he adds more clearly: "This is so the failure of one UnitTest implicates one and only one unit."

In the other case, the Agile-Unit Test is what Ward Cunningham describes as Developer Tests (http://wiki.c2.com/?DeveloperTest ). He says that it implicates the last edit: «Under TestDrivenDevelopment, the failure of a DeveloperTest should implicate only the last edit. (Tip: Revert it!) This is why DeveloperTests should not abuse MockObjects.» And because what this last sentence says about MockObjects, I guessed that you map this second to Chicago, and the first to London. But I give the name Agile-Unit tests, not because what Ward Cunningham says, but for what the Agile Alliance says ( https://www.agilealliance.org/glossary/unit-test/ ): «The outcome of a unit test is binary: either “pass” if the program’s behavior is consistent with the recorded expectations, or “fail” otherwise.», and it explicitly states that it is different from the one used in System Testing (aka QA): «The term Unit Testing has a different meaning in the industry, denoting an activity or phase in the classical Software Development Life Cycle, which distinguishes it from (for instance) System Testing»

So, if I am not wrong, both, London and Chicago schools are means to test behaviors, not units of code. So, both fall under the classification of Agile-Unit Testing (test one behavior), better than QA-Unit Testing that focuses on testing one unit of code regardless of the intended behavior of the application.

But, please, correct me if I am wrong.

--

--

David Rodenas PhD
David Rodenas PhD

Written by David Rodenas PhD

Passionate software engineer & storyteller. Sharing knowledge to advance our skills. Join me on a journey of discovery in the world of software engineering.

Responses (1)