Thursday, April 9, 2009

Software Testing Level

Identify these different defects require different skill set, different techniques and different type of test cases. Testing is divided into different types to reflect, what kind of defects can be uncovered by those activities. This division also helps management in managing these activities effectively. Also, it is very rare to have someone with skills in all the types of testing and this division helps in getting proper resources for team.
Hope you understand importance of this categorization and also how important it is to have understanding of different types. This understanding will enable you to spot more defects which in turn will improve quality and make you more effective software tester.
There are many ways/techniques in which software testing can be categorized. Some of them are described as follows: Categorization of testing based on the knowledge of system
· Black Box Testing
· White Box Testing
· Gray Box Testing
Categorization of testing based on the time it is executed in the Software Development Life Cycle
· Unit Testing
· Integration Testing
· System Testing
· User Acceptance Testing

Testing Type
Different types of testing can be categorized based on the purpose of testing.

This can be classified further into Functional Testing and Non Functional Testing.
Functional Testing: In functional testing, the focus of testing activities is on functional aspects of the system. In functional testing, test cases are written to check the expected output. Functional testing is normally performed in all the test phases from unit to system testing. 
The following types of test activities are normally performed under Functional Testing
Non-Functional Testing: In non-functional testing, the focus of the testing activities is on non functional aspects of the system. Non functional testing is normally carried out during the System Testing phase only. The focus of non functional testing is on the behavior and user experience of the system.
Performance, Load and Stress Testing
Usability Testing
Security testing
more to come..

Testing can also be categorized based on how it is executed. Execution could be in the form of verification or static analysis or it could be validation or dynamic analysis.

Verification and validation can be categorized further according to how it is done.

In very simple terms, verification is the human examination or review of the work product. There are many forms of verification which ranges from informal verification to formal verification. Verification can be used for various phases in SDLC and can be in the form of formal inspection, walkthrough or buddy-checking.
Validation or dynamic analysis is the most frequent activity that as a tester you perform. Whether you are doing black box testing, non functional testing or any type of testing, chances are that you are performing validation or dynamic analyses. Validation or dynamic analyses is associated with the execution, and could be related to the execution of test cases or testing in general. There are many ways in which testing can be executed, for example
Performance testing is normally used with Load testing and stress testing. Some people even use these terms interchangeably, which is not correct. Common factor among these testing type is the simulated load, but there are subtle difference in performance, load and stress testing. We will explore these in some detail and try to make the difference between these testing clear.
Performance Testing Performance testing is conducted after the completion of functional testing. Performance testing is normally conducted during the System Testing phase. Objective of performance testing is not to find functional defect in the system, it is assumed that functional defects have been identified and removed from the system. Performance testing is usually conducted for web applications. Main objective of performance testing is to get information with respect to response time, throughput and utilization under a given load. In order to perform performance testing on the web application, you need to know at least these two things
During performance testing whole system can be optimized at various levels.
It can be optimized at
· Application Level
· Database level
· Operating system level
· Network level
Performance testing can be performed as a white box or black box activity.

In white box approach, system is inspected and performance tuning is performed where ever possible to improve performance of the system.
In black box approach, test engineers can use tools that simulates the concurrent users/ HTTP connections and measure response time. When the result of the performance testing indicates that performance of the system is below the acceptable level, you start tuning application and databases. You need to make sure that system runs as efficiently as possible on the given hardware/OS combination. If even after tuning application, databases and other parameters performance of application is under acceptable level, probably it is time to scale your hardware, database and web servers.