Tuesday, March 30, 2010

Software Testing Demystified part 5

There are quite a number of ways in which we can categorize Software Testing other than the types which are already discussed. Let me try to throw some light into the software testing classification based on the exposure of the application. The major classification of software testing are (this should have been covered earlier though) Black-Box Testing and White-Box Testing. This categorization, as I mentioned, is typically based on the exposure that a tester has to the application. All of the previously discussed categories of Software Testing come under these two basic and broad categories of testing.

How can we identify software, based on its exposure time to time? The answer is quite simple and easy! Think about the different phases of testing cycle which we already know, those which are classified as part of the processes. They start form unit integration testing phases and navigate through system testing, alpha testing etc. What is the difference in exposure of the software in these phases? The unit and integration testing phases provides us with access to the code. We require the knowledge of the Control and Data Flows in order to carry out these tests. And going upwards, while doing system testing, we do not really require the detailed knowledge of how the data flows within the code, or how the various controls of application is being taken care of! We just test the functionality of the software. The tester needs to have the knowledge of functional requirements, in order to carry out his tests. So in this phase, the software is opaque to the tester, similar to a Black-Box, and the other one where the code, and its flows are known behaves as a White-Box. It is thus we categorize White-Box and Black-Box testing. 

White-Box Testing is the first phase of testing that comes in a testing cycle in any institution. It is this phase when we cover Unit Testing and most of Integration Testing and some parts of the System Testing as well. So the most types of testing that we discussed in these phases fall under the cap of White-Box Testing. Typical White-Box testing techniques like static analysis, which include 
And so on could be counted as part of White-Box testing techniques. The input for white box testing is the Software Design documents, and actual implementation. This makes this set of test cases rapidly changing, because every time the implementation technique changes, tests need to adapt the changes. White-Box testing requires the tester to be excellent with common implementation techniques, and also with the language in which it is being coded. One more aspect that differentiates it from the black-box testing is the lesser interaction of Hardware. There are quite a number of tools available to perform white-box testing like the Rational PurifyPlus which already has been mentioned. There are quite a number of frameworks available as well like the JUnit.

Black-Box Testing is the technique which most of us, the testing community, perform. This phase of testing requires little knowledge of the code, or its working mechanism. The software remains like an opaque box for the tester. The tester is concerned about the expected output that the software provides for his input, rather than how the software manages to give it! It does not mean that unit testing phase cannot include a Black-Box test. Black-Box Testing could be defined as a testing technique, in which the significance is on output of the software to a certain input, rather than how the software works. Typically, Black-Box testing techniques could be  
And so on. Typically most of the Institutions, when they talk about testing, refer to Black-Box testing. This is because of the fact that the high-level requirements get tested in Black-Box testing only. White-Box testing makes sure that the implementation of the software program is correct, but not whether the requirement has been met or not! This can have another outlook as well that Black-Box testing can unmask unimplemented requirements, but does not make sure that all the existent paths are tested. This proves the requirement of both forms of tests.

Typically, most of the process based phases make use of both White-Box as well as Black-Box Testing techniques, but Alpha Testing mostly bends towards Black-Box testing. We will discuss more of this in coming posts.

Labels: , ,


Comments:

Post a Comment

Subscribe to Post Comments [Atom]





<< Home

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

Subscribe to Posts [Atom]