There is a widespread opinion and popular belief that both low-level testing and unit testing are one in the same. In this article, Kuppuswami Muralidharan Iyer puts forward his views on the subject as to why they are quite different.
I had these names of documents on hand. I was fully aware that I needed to brainstorm at my best to produce some meaningful contribution. Yes, I was supposed to give two separate documents namely Unit Test Case and Low Level Test Case. I knew it was going to be a sticky wicket, but then I always loved to play more on such unfriendly, hostile pitches! That was it.
Across a friendly chit-chat, I asked my friend what he thought of these two documents. He said, Dear, there is no big difference between these two. They are almost same. You can just forget about the low level test case as you are already through with the unit test case document.
My mind quickly grabbed two pairs of words, namely "no big difference" and "almost same". I decided that I would leave my friend at that. Indeed, I did as well. Never spoken to him about this at any point after that!
Yes, I can safely avoid preparing two separate documents citing they are "almost same" and "no big difference." But, what would be THE VALUE that I would be adding to this wonderful world of information? I continued my pursuit...
As always, I looked for my friend "GOOGLE." O! What a pity! Even HE had no answer. I just worked on and on slowly adding spice to the idea of bringing two separate documents to my management.
To give you a general analogy,
Though the resemblance of siblings looks similar, but it cannot be identical. In the same breath, though the terms “unit testing and low level testing” look same and give you a feeling that both are same, they are not really the one and the same. A good process management can really make a hell of a lot of difference between these two grossly misunderstood terms. In this article, I wish to put forward some of the subtle differences I can really make out of these two. I view this as one article that is certainly worth sharing with you all.
I invite my tech-savvy friends to step into this tricky ground and play your bit by contributing your valuable inputs through response to this article. I really appreciate it and highly regard that as well. Why do not you too share the great moments alongside? If you can throw constructive criticism, there is nothing like that and I would really thankful to you.
Sure, the comments you are going to give about this article will make a huge difference and would do to the tech community world of good!
The following table of text throws you some key differences that I could make out:
Low Level Testing | Unit Testing |
This is done by Testers of Quality Control (QC). This is the basic difference | Done by Developers who unit test their own code |
Considered as a base or granular level testing of QC | Should be considered a base level testing by the developers themselves to know that their code really works the way they wanted |
Should be considered level one testing of various test phases of Testing Life Cycle | Should be considered as “the right path” to be followed by developers towards the success of Low Level Testing |
You can freely talk about a solid term "Component" as test object whenever you talk of low level testing | You cannot really talk of anything like "component" as this is code centric and the apt word shall be "logic" |
Once the development of module is complete or a part of the logically grouped programs is over, this can safely be given to QC, where testers do their duty of testing such individual components that make up the module | You cannot really transfer to an independent body such as QC, because unit testing is considered “the job of developers” to check whether the code they write works rightly or not for the purpose for which it is written |
Already firmly in place of QC agenda | Most often unit testing does not take the centre stage and if the management is quite serious about this, then this can also be brought within the process scope of software companies. When this is done. this becomes a perfect launch pad for the success of much needed low level testing later |
Though named "Low Level Testing", relatively speaking, this is Higher level testing as this is done right after the "Unit Testing" | In the same relative terms, this is considered Lower level testing and in fact this should be considered the most basic of all testing efforts and the success of delivering quality software products start at this very point |
This can be made A MUST DO AFFAIR prior to integration testing of components | There is either no hard check or not taken this seriously so far. Mostly the developers take escape root. This must also be brought into the testing circle and every developer should be made accountable that they test before it goes out of their hands |
When this is done mandatory for each module, it would not throw any major surprise during the integration testing or later stages of testing | This must also be made mandatory for the developers. Now, they take this lightly and skip this |
You can easily add this to the test plan and find testers for the job of testing | It is difficult, but the developers must be made to realize the importance of unit testing. Once this is done, they know that they have a job on their head to do |
Control shifts to the independent people away from development and the effort can be explicitly stated | Nothing like that is in practice now. The entire effort implicitly revolves around development community and they invariably give this a last priority |
Therefore, the conclusion is that both Low Level Testing and Unit Testing are not same and we can have, comfortably, two separate documents: one for Low Level Test Case and another for Unit Test Case. These will no doubt strengthen the process of QA which eventually result in increased client satisfaction. I consider this article as one big walk that I treaded in this direction with the belief that this will surely has everything to trigger further interest among tech savvy friends.