SDReyes
SDReyes

Reputation: 9954

TDD: Unit testing focus

Could TDD be oriented to another kind of testing different from unit testing?

Upvotes: 7

Views: 943

Answers (7)

Rogério
Rogério

Reputation: 16390

Certainly! TDD does not require unit tests, not at all. Unfortunately, this seems to be a common misunderstanding.

For a concrete example, I drive the development of an open source mocking library of mine (for Java) entirely with integration tests. I don't write separate unit tests for internal classes. Instead, for every new feature or enhancement I first add a failing acceptance (integration) test, and then change or add to existing production code until the test passes. With the eventual refactoring step, this is pure TDD, even if no unit tests get written.

Upvotes: 0

yoosiba
yoosiba

Reputation: 2206

If you concentrate on idea, not technical realization, than yes. What I'm saying is if,just for a moment, you forget about unit testing, and focus on idea of writing tests first, before writing implementation in order to achieve clearer design than it can be done even on system level.

Imagine this, you have some requirements. Based on that you write User Acceptance Testing tests - tests on high level that capture functionality. Next you start development - you already have use cases in form of UAT test. You know exactly what is expected, so it is easier to implement desired functionality.

Other example is project based on scrum. In planning meeting you discuss/create/have user stories that are later developed during sprint. Those user stories can actually be UAT tests.

Anyway way I see TDD as way of specifying design upfront, not application testing cycle/phase/methodology. Reason why TDD is perceived as synonym for unit testing is that unit tests are as close to developer as possible. They seem natural way for developer to express functional design of a class/method.

Upvotes: 0

Carl Manaster
Carl Manaster

Reputation: 40356

The red-green-refactor cycle of TDD is supposed to be quick, really quick. Fast feedback keeps you in the groove. I've seen approaches to TDD that take a full story, express it as a test, then drive development to pass that (large-ish) test. It's nominally TDD (or maybe BDD), but it doesn't feel right to me. Tiny steps, unit tests, is how I learned TDD, how I think of it, and how it works best for me.

Upvotes: 3

mtmk
mtmk

Reputation: 6326

Of course YES. TDD relies on automated tests which is an orthogonal concern to the 'type' of tests.

Upvotes: 2

Jakob Borg
Jakob Borg

Reputation: 24505

While that might be possible under some interpretation of TDD, I think the main point of TDD is to write the tests before any production code. Given that, you won't have a large system to write integration or functional tests for, so the testing is necessarily going to be on the unit level.

Upvotes: 5

Jorge Córdoba
Jorge Córdoba

Reputation: 52133

Technically TDD is a way of doing things, not just about unit testing, in theory it should drive all the development process.

In theory the philosophy is that testing drives development, for a more complex scenario, like integration between systems, you should define the integration test, then code to pass those integration tests (even if the test are not automated)...

Upvotes: 2

Erin Dees
Erin Dees

Reputation: 1677

Behavior-Driven Development (BDD) applies the ideas of TDD at the integration testing and functional testing level.

Upvotes: 4

Related Questions