Looking back at the previous post, I really like the term. I'm sure it would come handy I wonder if I can make this one stick???
Agile Software Development, Automated Unit Testing (TDD), .NET.
Looking back at the previous post, I really like the term. I'm sure it would come handy I wonder if I can make this one stick???
I've talked about the trend of developers to use ready made solutions.
The idea is simple enough. There is no need to reinvent the wheel. Almost every problem a developer encounters, someone else has already coded a solution.
When taken to the extreme, we end with a development technique which can be termed "Copy Paste Programming" (CPP in short).
Like anything in life there's a risk involved in this. In many cases code produced using this technique is less understood then code developed from scratch. And in most cases (I have seen) the ready made solution solves a slightly different problem then the one it is applied to. Which at the end leaves us with a piece of code that almost works but we don't know why.
Its not that I'm against using other people code. In many cases its the most effective and fastest to get the job done. However when doing so, I take the time to carefully understand the piece of code I'm CPPing into my .NET application.
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.

