Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Essentially it is a branch of software engineering but SE itself is too large an umbrella. I was curious if there was a title for the knowledge base that encompasses TDD, BDD, mocks/stubs/spys, unit tests vs. integration tests, code coverage, etc.

share|improve this question

closed as not constructive by Robert Harvey, MichaelT, BЈовић, Kilian Foth, Bart van Ingen Schenau May 5 '13 at 10:52

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
Software Testing. –  Robert Harvey May 4 '13 at 6:25
1  
@RobertHarvey: TDD and BDD have nothing to do with software testing, they are about software design and software development. –  Jörg W Mittag May 4 '13 at 9:02
1  
@JörgWMittag: That's funny, since TDD has the word "test" in it. You can say that it's a subset of TDD, but you can't defend the statement that it has nothing to do with it. My comment was a joke anyway; I despise these "arguing about terms" questions that ask for "the right word" without any interest in understanding the underlying concepts. –  Robert Harvey May 4 '13 at 14:57
    
@Robert Harvey: In my experience, software testing is performed by a tester who is not involved in the development. This is to ensure that testing and development are completely independent activities (developers will usually be biased when testing their own code). In this sense, I think it is hard to classify TDD as testing, I would rather classify it as implementing against an executable specification. –  Giorgio May 4 '13 at 15:35
    
@Giorgio: That's called Quality Assurance. Or Verification and Validation, if you like. The OP was asking about the overreaching term that encompasses all testing techniques. There isn't one, as far as I know, other than perhaps software testing. Agile doesn't work because tests are written outside of the agile environment. –  Robert Harvey May 4 '13 at 15:41
show 2 more comments

2 Answers

Software quality assurance (SQA) is probably a good term to use. A good discussion of of the different relevant practices may be found here.

SQA "examines and changes the software engineering process itself to reduce the number of faults that end up in the delivered software" (Wikipedia_software_testing). It is concerned with improving the software development process to reduce the 'defect rate', and this includes practices such as BDD and TDD.

share|improve this answer
2  
TDD and BDD have nothing to do with QA, they are about software design and software development. –  Jörg W Mittag May 4 '13 at 9:03
1  
I disagree. SQA "examines and changes the software engineering process itself to reduce the number of faults that end up in the delivered software" (en.wikipedia.org/wiki/…). It is concerned with improving the software development process to reduce the 'defect rate', and this includes practices such as BDD and TDD. –  Mauritz Hansen May 4 '13 at 9:46
    
But TDD and BDD aren't about reducing the defect rate. They are about increasing the rate of (possible) change. –  Jörg W Mittag May 4 '13 at 14:36
    
@JörgWMittag: That's funny, since unit testing is all about improving software quality and reliability. TDD is partly about having the functionality of code covered by unit tests, so that you can refactor without breaking things. If that increases the rate of change, it does it as a side-effect, and despite the fact that it provably takes longer to cover code with tests than it does just to write the code. –  Robert Harvey May 4 '13 at 14:54
add comment

You know that's a good question. I think that TDD and its ilk falls under the "Agile" umbrella. The concepts certainly were introduced by Agile proponents as means of providing a safety net that enables the other practices of Agile development.

share|improve this answer
    
No they were not. Unit testing was around before Agile was. Unit testing is the safety net you need to do any refactoring with confidence, whether you work in an Agile manner or not. Because Agile advocates YAGNI it also means you do a lot of refactoring when it turns out you do need something and you need to change your design for that. As a result Agile is a great proponent of unit testing, but that's all, they certainly didn't introduce it. –  Marjan Venema May 4 '13 at 9:47
2  
@MarjanVenema: Mike didn't say anything about unit testing. He talked about TDD. TDD and unit testing are completely orthogonal. TDD is a development practice that may or may not use unit tests in addition to integration tests, acceptance tests, system tests, functional tests, and a whole bunch of other kinds of tests. You can have unit tests without TDD and you can have TDD without unit tests. The two are completely independent. TDD was introduced by Kent Beck, very much in the context of what would later become "Agile". –  Jörg W Mittag May 4 '13 at 14:40
    
@JörgWMittag: TDD is implemented with unit tests. You can't defend the statement that it is completely independent, or even orthogonal. I don't know where you got the idea that TDD is entirely about design; if it is, it's an incomplete technique. Even Uncle Bob says that you can't grow a design from the ground up with TDD. –  Robert Harvey May 4 '13 at 14:52
    
Please remember that TDD can stand both for Test Driven Design as well as for Test Driven Development. I took it as the latter... And as Robert says TDD and unit testing are in now way orthogonal. –  Marjan Venema May 4 '13 at 15:02
    
@Giorgio: Yes, you can have unit test without doing anything else, but not the other way around. TDD (Test Driven Design) is built on TDD (Test Driven Development) and Test Driven Development cannot work without unit tests. –  Marjan Venema May 4 '13 at 15:42
show 4 more comments

Not the answer you're looking for? Browse other questions tagged or ask your own question.