Recently I’ve encountered several places which discussed the different type of tests. Here are some terms I’ve seen:
1) Unit tests – the most widely used term, which still I’m afraid is open to interpretation. Up until now I haven't seen a good definition of what is a “unit”. Is it a single class? Is it a single component? where lies the line between different units?
2) Integration tests – again kind of vague, but mostly it means a test which encompass several “units” sometime the entire system.
3) Developer tests – this is a more broader term which means test written by developers. I myself don’t see much value in using it since it doesn’t give any indication to the tests nature . (also what are none developer tests? how to refer to manual tests done by developers? how to refer to UAT written by a developer? )
4) Manual/Automated tests - Distinguish how the test are executed.
5) User Acceptance tests(UAT) (also referred to as Verification tests) - tests whose main goal is to “convince” the user that the system behaves as it should.
Are we confused yet? here’s a little something I found on the net.
The point is, that such a wide terminology, tend to lead to much confusion and misunderstanding. Before starting any sort of discussion, my advice would be to make sure that the all parties share the same meaning and terminology. I’ve spend too much time argueing only to find that the person I was arguing with just used a different meaning than myself.
1 comments:
Hi,
Must say, that I found it easier to think about classification of tests by following this thinking:
1) There's a continuum of tests. At one end high-level-tests, at the other low-level-tests.
2) Each test can be placed somewhere on this continuum. Thus, UAT will be close to the high end, where a single class tests are closer to the other hand.
This makes much more sense when I try to explain TDD to others.
Just my two cents.
Post a Comment