Thursday, April 18, 2013

Various Types of Testing

Testing is a wide domain with numerous testing types and techniques. With gaining experience, a tester also starts knowing about various testing techniques which are not used in each and every project but are important. Depending on the project requirements the tester may need to implement Gorilla Testing, Equivalence Partitioning Testing, Volume Testing or Negative Testing, etc.

Let’s have a look at some less popular but important testing techniques.


Equivalence Partitioning Testing

Equivalence Partitioning is black box testing technique in which input data is divided into different equivalence partition/data classes. Main goal of dividing input data is to reduce the number of test cases and select the right test case which covers all possible scenarios. It ensures that both negative and positive conditions are tested.


Boundary Value Testing

This testing technique is used to identify errors at boundaries rather than finding in the center of the input data. In most application errors occurs at the boundaries of input domain. If a field accepts value from 1 to 100, testing is done for values 0, 1, 2, 99, 100 & 101.


Gray Box Testing

Gray Box Testing type is combination of black box and white box testing types. In this type, tester has not full but some knowledge of internal structure and coding. Tester writes test cases on basis of that knowledge and then system is tested on those test cases.


Gorilla Testing

In Gorilla Testing, a particular feature/module/functionality of the project is tested exhaustively by multiple people to ensure that it works perfectly according to the requirements specified.


Monkey Testing

In this testing type, tester jump from one functionality to another to check the hidden errors in the system. Tester does not follow any test cases to perform this testing type. Tester randomly applies valid and invalid data (e.g. 31-Feb-2013) on the system to find defects.


Fuzz Testing

Here the tester input random data in the system without any formation to check that system is going to fail or hang. On basis of that tester approve the system as pass or fail.


System Integration Testing

Also know as SIT, in this technique the focus it to find bugs in the system as it integrates with different services, applications as well as third party applications.  This testing technique is used when your software interacts extensively with other services, third party applications, etc.


Recovery Testing

Recovery Testing is the process of testing that how fast and how efficiently an application can recover after experiencing software crash as well as hardware crash.


Security Testing

Security Testing tests the ability that how system prevents from unauthorized or malicious threats. Here the modules like authorization mechanism, data confidentiality, authentication process, etc. are thoroughly tested.  This testing is of utmost importance in software applications which deals with important data like online banking sites, etc.


Comparison Testing

Comparison Testing is the type of testing in which tester test the system’s strength and weakness with other competitive systems available in the market to make its own system better from the others.


Volume Testing

This type of testing focuses on finding the response of the software or application when different size/volume of data is being received, sent or processed by the software/application.  


Usability Testing

Usability Testing is performed to understand the user-friendliness of the software. End users are associated in this testing type and their response as well as feedback is taken into consideration to make software more user friendly.


Configuration Testing

Configuration Testing is generally associated with performance tuning. It is undertaken to find the optimal configuration settings in which the software/application can work at it best.


Error Handling Testing

Error Handling Testing primarily tests the software’s capabilities on handling expected and unexpected errors. This testing helps in making software ready to face any error which occurs during online/ongoing operations.


Negative Testing

Negative Testing implements “Test to Break” attitude. Entering incorrect data, uploading incorrect files, etc. are done to break the software; hence it helps in building very tough software which is hard to break.



A tester does not implement all these types of testing in each and every project, rather it completely depends on what the project expects from the tester. We will be discussing these techniques in detail in my future posts.

Thursday, February 28, 2013

STLC - Software Testing Life Cycle


Software Testing Life Cycle (STLC) is a very important concept that we need to know if we wants to understand testing process in detail. Many people think testing is a static task and finds it boring, but it is definitely not. STLC shows the different phases which are essential for quality control of any software project.

Every company follows its own Software Testing Life Cycle. STLC is affected by the Software Development Life Cycle (SDLC) implemented by the company as well as the management’s views towards Quality Assurance & Control activities. In this post we will discuss about the different stages/phases of STLC.


1.    Requirement Analysis/Review

·         This is a very important phase in STLC. Here the focus is on understanding the requirements of the system with the viewpoint of testing in mind.

·         In this phase the QA interacts with the Business Analyst, System Analyst, Development Manager/Team Lead, etc. or if required the QA may also interact with Client to completely understand the requirements of the system.

·         During this phase the QA takes many important decisions like what are the testing types & techniques to be performed, feasibility for automation testing implementation, etc.


2.    Test Planning

·         In this phase the QA/QA Lead/QA Manager plans for the complete testing process. Important documents like Test Strategy, Test Plan and Effort Estimation are derived from this phase.

·         Everything regarding testing like selection of the testing tools, test efforts estimations, planning resources, determining roles and responsibilities of the personnel involved in the process, planning for the training required, etc. are decided in this phase.

·         This phase is very important as any small mistake in this phase can result in major issues in the project regarding time, money, efforts, etc.


3.    Test Designing

·         Creation, Review & Update of Test Cases as well as Test Scripts are done in this phase. The test cases prepared by the QA team are reviewed and approved.

·         Test data may also be created in this phase by the QA team if test environment is available to them.


4.    Test Environment Setup

·         Test Environment is the actual system/environment/setup where the testing team will be testing the application. Test environment is prepared by understanding the required system architecture, software & hardware requirements, etc.

·         Many times it happens that testing team is not involved in setting up the test environment. In such scenarios, it is preferable that the testing team should implement Smoke Testing to verify the readiness of the test environment before starting the actual testing.


5.    Test Execution

·         The test cases which were prepared earlier are executed in this phase. In this phase, the testers test the websites. Different testing techniques as well as methods are implemented and executed on the software/application to break the system and find bugs.

·         Bugs are reported to the development team. The development team resolves the bugs and the system is retested to ensure that it is bug free and ready to go live.


6.    Test Closure

·         When the testing team is confident that all the reported bugs are resolved and the system is ready according to the client’s requirements, the software testing life cycle enters the last stage ie. Test Closure stage.

·         In this stage, evaluation is done for the complete testing cycle, test closure reports are prepared, proper analysis and documentation is done for the major or critical bugs so that such situations can be handled efficiently and effectively in future projects, etc.

Each of these phases of STLC has their Entry & Exit criterias. We will put a detail article on the Entry & Exit Criterias of different stages of Software Testing Life Cycle in coming days. Hope this article will help you in understanding the Software Testing Life Cycle in detail.



Friday, January 18, 2013

About The Author



Hello Friends,

This is MohmadSoyebAlam Ansari, you can call me MS.

“Quality Assurance & Control for delivering a good product & building good professional relationship” is what I believe.

I am a highly quality-demanding QA, involved in Quality Assurance as well as Quality Control activities at my work, Expertise in Developing, Reviewing and Executing Test cases in E-Commerce Domain, Indulge in different levels of testing and implementing numerous testing techniques.


You can contact me on:


Phone : +91 9726 005 706

Skype : hello_shoaib

You can follow me on:

Facebook     : www.facebook.com/msa.ansari

Twitter         : www.twitter.com/iam_msa

LinkedIn      : www.linkedin.com/in/soyebansari

Saturday, January 5, 2013

General Principles of Testing


While testing one should never forget the general principles of testing. These principles has been derived from decades of practice and accepted by the industry leaders. Let’s have a quick look.

1.    Testing Shows the Presence of Defects, Not Their Absence

Testing tends to show the defects in the system. But it doesn’t guarantee that the system is defect-free. If adequate & proper testing is done, the probability is that most of the defects will be detected and solved, but it doesn’t prove that no other defect exists in the system. There may be defects present which are still not discovered.


2.    Exhaustive Testing Is Not Possible

Testing done with all the possible inputs and their combination, as well as taking into consideration the entire preconditions, Is Not POSSIBLE. If we try to do this, we will get numerous tests cases, and finding and executing all these tests is not feasible. Thus, testing process should be perfectly planned and controlled so that we can get maximum defects from its implementation. Test Planning is very important.


3.    Testing Activities Should Start As Early As Possible

When Testing activities are started early in the software development phase, defects are found at their primitive stage. Thus fixing those defects is comparatively easy and less time/cost/effort consuming than fixing those bugs in the later phase of software development.


4.    Defects Tend To Cluster Together

Defects tend to cluster. If one finds some defects in a particular place then there are maximum possibilities that more defects will be hidden there. Thorough & In Depth testing must be done on those parts of the software to find the hidden defects.


5.    The Pesticide Paradox

This principle states that the testing should not be static rather dynamic. If the testing is static, it will lose its effectiveness eventually. As the already undetected defects will not appear if same test cases/scripts are run again and again on the system. The tester must keep modifying the test cases/scripts as well as test data while implementing test cycles.


6.    Test Is Context Dependent

Testing is always context dependent. No two systems should be tested in a same way. Testing will change with each system. You cannot test a social networking application, ecommerce application & accounts management software in same manner. Test process should be adaptive of the type of the system as well as the levels of the system.


7.    The Fallacy of Assuming That No Failures Means a Useful System

Testing finds defects and those defects get solved, but this doesn’t mean that the system is foolproof or up to the mark. To ensure these things we can take preventive measures by implementing proper process which includes user involvement, risk assessment, etc.