Monday, March 8, 2010

Software Testing Demystified Part 1

Many of times, I have felt that majority of the testing community are aware of different terminologies used in software testing, but do not really understand what the significance of these are! This is not a real good sign for us testers. That is the motive that I came up with this topic of demystifying the types of testing.

To start with, let us talk of Software Testing as such. Software testing could be defined as the process of verifying and validating the software against the requirements, as well as the industrial needs, respectively. Many of the proclaimed testing universities have got their own definitions for testing. But to put it down in simple words, for a Test Engineer, Software Testing should be the process of finding out bugs.

Nothing in this world could be error-free. Can you think of some bugs in God’s designs? If you ask a doctor, he can explain at least a million diseases that a human can be prone to. This according to us would be a Bug, isn’t it? This should be the basic type of attitude that a Software Tester possess. Being Doubtful is the basic quality that one needs to have in order to become a good tester. An engineer is not a good tester, till the time he can find bugs in the most efficient code. Even testers miss out bugs from the software that they test. But that is a design issue with the human brain. So an ideal bug-less software product seems to be an unapproachable task! I used the word unapproachable task because, we can see that when the software comes back after bug fixes, we can still find and file some new bugs which are introduced into the code as part of the fix.

How or why should we categorize testing then? It would certainly be a question that comes into your minds. To evolve to the answer to this question, let us think of another question. What are the features that the software is associated with? The main feature of software is its functionality. That is the main and important feature of any software. Software development decision is made up from the functional requirements. What ever comes other than the functionality, we can call them as non-functionality related. Software Testing has been categorized based on different perspectives. If we think in a very wide sense from Software’s perspective, then Testing could be of two basic categories - Functional and Non-Functional Testing. There could be various methods by the virtue of which we can achieve these tasks. You might have already heard of Boundary Value Analysis, Equivalence Partitioning etc., which fall under the category of methods to achieve Testing. So broadly, we can classify Software Testing into Functional and Non-Functional Testing.

Functional Testing is the process of testing the software against its functional requirements. Both the processes of verification against requirements as well as validation against industrial necessities would come under this broad field of Functional Testing. This is the most important category of testing that one can think of. If not functionally correct, then what is the use of using it? Through Functional testing, the code which interprets the complete functional requirement gets tested. Functional testing could be done either at the code level or the application level. Each individual units, or modules, or the system as such has its own functionalities and should be tested against its completion.

Apart from the functionality, the other features of the software could be how it behaves when used in different environments, the performance of the software, its responsiveness etc. Non-Functional Testing is when we validate the software against these types of non-functional requirements. I used the term validation because these tests, more often are not tested against requirements, but against the industrial compliance and necessities.

I will come up with more on the classifications of Software Testing in the coming posts. 

To be Continued ....

Labels:


Comments:

Post a Comment

Subscribe to Post Comments [Atom]





<< Home

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]