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.


Monday, October 8, 2012

5 Months Testified

It’s been around 5 months working as a Quality Analyst. In these 5 months I have learned many things. Many tasks had been assigned to me which were completed successfully. The tasks that includes preparing test documents, test cases, bug reports & various other related reports. There are many important things I learned that I want to share with the new comers on my blog.


Quality Assurance OR Quality Control

Make sure before you join what are your responsibilities on the job. Quality Assurance and Quality Control are two different terms but in Indian IT companies, the truth is something different. In general, Quality Assurance is responsible for maintaining quality throughout the process of development, right from the project kick-off to the Acceptance testing. Testing is a part of Quality Assurance. Quality Control deals mainly with the testing of the developed product.

In India, the position mostly found is Quality Analyst or Software Quality Analyst, but what are the responsibilities of a QA, you need to confirm before joining. I was lucky I got the position in which I am getting opportunity to learn and implement the whole quality assurance process. I got a friend, who is also working as QA in some company and his work is to just create & implement the test cases. He is happy with it, YOU MAY NOT BE.


A Big Responsibility

When I was in my masters, I used to hear that testing is not an important task, it's an easy task, will have to invest lesser time, etc. Let me tell you people, if after listening to those things you want to come in testing, DON’T DO THAT.

First, it is definitely not an easy task, the developer had invested hours in developing a functionality, checked it thoroughly, the Senior Developer/TL has reviewed the project and then it comes for testing, and you need to find bug in that code. It’s definitely NOT AN EASY TASK.

Second, the responsibility is not less in this job. If you have tested a website and said that it is ready to go live. After that if from the client’s end a bug is found, which was not found by you, BE READY FOR RED EYES. Definitely, it matters that whether the bug was due to sales department, designing dept, development dept, etc. but why was it not caught by the QA Department will be the biggest question. Be ready to answer that.


Not Just Testing

Testing is an important part of a QA’s job but it is not the only important part. When the projects comes to the QA department and the bug report is filled, than it becomes responsibility of the QA department to take care that all those listed bugs has been properly solved. This sounds like a cup of cake but trust me it’s not.


Working With Developers

This is probably the most sensitive and difficult task that a QA executive handles. Getting the bugs solved by the developers is not at all an easy task. You will get replies from the development team such as It is not a bug, It doesn’t affect the functionality, It is a default bug we do not solve that, Its third party extension bug, It is not possible to solve in IE 7, It doesn’t appear in my pc, etc, etc, etc. the list continues.

There are two steps to deal with these issues.
Step 1: The QA executive need to be firmly confident that the bug listed is a valid bug and need to be solved.
Step 2: The QA executive should stand for his/her decision taken in Step 1.

 These two things are very important for getting bugs solved from the development team. The QA should also continuously follow up the bugs which are kept On Hold by the development team.


To all the Quality Assurance & Control Department people, I just want to tell you one thing….
BE PROUD of What You Are Doing :)

Thursday, October 4, 2012

Unit Testing

In testing terminology, the smallest testable part of the code is called Unit. Unit testing is the testing technique in which the units of code are tested to check whether they are functional according to the requirements or not. The code is tested thoroughly, thus we can say that it comes under the White Box Testing method.

Unit Tests are generally written and performed by the code programmers. It ensures the programmers that the piece of code they wrote is proper and functional.

Unit Testing also proves to be very useful at the time of integration. If the programmer has unit tested the program properly, the integration-time issues generally doesn't show up and if they do show up, they are solved too quickly as the programmer has a clear idea where the problem resides. One should keep in mind that a properly done Unit Testing makes the integration easier, but it doesn't replace the Integration Testing which is a very important part of the testing phase.

It is obvious that a small bug in a code, if left unsolved, can grow into a big issue as the system and code grows. Thus if a programmer solves the bug at the initial level through Unit Testing the code, it saves the extra time and efforts that the programmer will waste in solving the same grown-up issue at the later stage.


Advantages
  • If any error exists in the code, it is found and solved on the very initial level.
  • Proper unit testing makes the integration process easier.
  • It reduces the work load of QA department. If the Unit tests are properly done and test cases are maintained, the QA people can focus on other important aspects of testing the system.

Disadvantages
  • Unit Testing can be time consuming and tedious. Patience and dedication is required on the part of the development team.
  • It is not possible to find the integration bugs, system bugs, etc in Unit Testing


Unit Testing is a very important part of software development as it ensures the quality of the software from the beginning.

Wednesday, September 19, 2012

White Box Testing


The White Box Testing is also known as Structural Testing, Clear Box Testing, Open Box Testing, etc. White Box Testing is a technique where the tester tests the software’s internal coding & structure. The reason behind its name is because in this type of testing, in eyes of a tester the whole system is like a white box and the tester can look everything happening inside with the code when the system/software executes any task.

In simple words, during White Box testing, the tester tests whether the code is working perfectly. The tester should have a clear understanding about what exactly the code does before starting any type of White Box testing.

The tester in White Box Testing gives some input data and then check the data flow, as well as how the system/software is reacting to the data supplied at each and every point in the code. It is then compared with the pre-defined functionalities of the system. Testing is done by giving various inputs and checking whether the result is the pre-defined output or not.

Click here to read about Black Box Testing 


White Box Testing Levels

White Box testing methods are implemented in the following levels of testing:-

ü  Unit Testing
ü  Integration Testing
ü  System Testing

White Box testing methods are used more in the development and integration phase of the system development.


Advantages

§  Thorough testing is possible.
§  Testing can be started as and when the code is ready, even before the front end is created.
§  Through White box techniques, even the smallest bugs can be tracked and later solved.

Disadvantages

§  White Box Testing is essential but time & resource consuming.
§  This type of testing can be really difficult and redundant if the requirements keep on changing frequently.
§  Not easy for testers to understand codes. The testers who don’t belong to the programming background find it difficult to understand what a block of code wants to say.

I hope this article will help the new comers to understand the concept clearly.

Wednesday, August 15, 2012

Black Box Testing


The Black box testing is the testing method in which the tester does not know the internal design/structure of the functionality that is to be tested. It is also referred as Behavioral Testing.

In this method, the tester is not concerned about the inner structure of the system/program; the tester assumes it as a Black Box, he just gives input to the box and gets output from the box. That’s the reason why this method got its name “Black Box Testing”.

Click here to read about White Box Testing 



Black Box Testing Levels

Black box testing method is implemented on all the basic levels of testing. You can use Black box testing in:
  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing
As the system starts getting more and more complex, Black box testing is used more.

Advantages
  • Test cases can be prepared as soon as the specifications are finalized even before the programming starts.
  • Black box testing can be done by the testers who have no knowledge about the programming stuff.
  • Testing is done according to the END USER’s point of view.

 Disadvantages
  • If the specifications are not clear, preparing test cases becomes very difficult and misleading.
  • System/Program cannot be tested thoroughly.
  • Limited number of tests can be performed based on the inputs & outputs of the program that is to be tested.

Saturday, July 21, 2012

Ideal Test Case Format


          Designing a Test Case Format was among the first tasks given to me when I joined my first job as a Quality Analyst. I searched the internet and found many ready-made formats. But as I have said in my previous post that test case format varies from company to company depending on the type of solution they offer and also on their development process models, etc. Because of these reasons, I was not able to get a format which suits my company. So I decided to make a new format. It was a heck of a job but at last I was able to make a format which suits my company and its development process.

          Anyways, that’s a different story, but all these stuff inspired me to create an Ideal Test Case Format & upload it on my blog. The sole reason to do so is that it will/may help the new comers in the Quality Assurance/Control field if in case they face the same situation as me.

IDEAL TEST CASE FORMAT

TC ID :

Date :

Project Name :

Module Name:
Author :

Tester :
Objective :


Pre-Requisite :


Steps :



Input Data :


Expected Results :




Actual Results :




Status :


Bug ID :

Remarks :






This format can also be converted & managed in Excel format. Lets discuss the fields in brief:

TC ID :- The unique test case id

Date   :- Date of creating test case      

Project Name  :- Name of the project

Module Name  :- Name of the module to be tested

Author  :- Name of the person who created the test case

Tester   :- Name of the person who tested

Objective  :- The objective of the test case (for eg. Verifying & validating the login page)

Pre-Requisite  :- The pre-satisfied condition for the test case to be executed

Steps  :- Steps to be taken to execute the test case

Input Data  :- The data input valued for the test case

Expected Results  :- The expected results

Actual Results  :- The actual results achieved

Status  :- Pass/Fail

Bug ID  :- Bug Id (Is the test case failed)

Remarks  :- Remarks (if any)

I hope it will help the one who are new to the Quality Assurance/Control Field.

Wednesday, July 18, 2012

Importance of Test Cases

Test Cases are considered as one of the most important part of software testing. It is used by the quality team, development team as well as middle management executives. So why are they so much important? Or the question should be what makes Test cases so much important in the whole Testing/Quality Control/Quality Assurance process.

Test Cases: What are they anyways..??

If we look at the Quality point of view, then Test Cases are the conditions through which one assures that the product tested is up to the mark & ready to go live or not.

If we look at the tester’s point of view, Test Cases provide the condition through which he/she Validates & Verifies a particular functionality or feature of the system.

In general we can say that a test case tells us what need to be done to test a system. It gives us the steps which we executes in a system, the input data values which we enter in the system, it also gives us the expected results which should come when we execute a particular test case.  

Ideal Test Case Format

            One should be very careful while designing a test case format. Different companies design test case format in their own way which suits them. But what is an ideal format for a test case. Let’s have a look

·         Test Case ID
·         Project Name
·         Module Name
·         Pre Requisite
·         Steps
·         Input Data Values
·         Expected Results
·         Actual Results (according to OS & Browser’s)
·         Status
·         Bug ID (If Bug found)
·         Remarks

The above listed points are essential for any good test case format. One can add or delete the points as per the requirements.

Importance of Test Cases

            Test cases organize the whole testing process. If the test cases are prepared keeping in mind the requirements of a particular system then they really helps a lot in checking whether the requirements are fulfilled or not. While doing ad hoc testing, one may neglect or skip a functionality or a bug which will definitely be caught when the system or site will be live or when it will be tested from the client’s end and it is going to affect the company’s credibility.

            We have heard from Big Brains that no software is bug free. But care should be taken so that all the possible bugs should be eliminated from the system before it goes live. Test cases helps a lot in this. With the help of proper test cases, a Quality Assurance/Control Executive should make sure that the system’s features & functionalities should be working fine and are bug free.

Monday, June 25, 2012

Manual Testing / Automation Testing

First question that comes to a fresher’s mind when he(or she) joins the quality & testing field is that whether he should go for the Manual Testing or he should go for the Automation Testing. The same question came to my mind also when I joined my first job as a Quality Analyst.

So as I always do before taking any step about my career, I tried to gather information about both of these types. If we see in the market today, we will find (n) number of Test Automation Software Tools, some are free like Selenium and some are expensive like Quicktest Pro, IBM/Rational Robot, Telerik Test Studio, etc. But before going forward let’s understand what these terms actually mean.

Manual Testing

            In simple words, Manual Testing is a process where the tester interacts with the application as an end user and uses each and every functionality of the application to ensure that the application is bug free and behaves in a perfect and pre-decided manner. To optimize the manual testing process, the tester follows Test Cases written before the testing process starts. These test cases help the tester to completely test the whole application.

Automation Testing

            Again in simple words, In Automation Testing, the tester uses a test automation tool to test the application. Thus in automation testing, the tool or we can say a program runs the another program which is to be tested. The test automation tool gives input, conditions, etc and test whether the application behaves according to the pre-decided behavior or not.


            I talked to my friends working as a successful QA’s & Testers in the IT industry. And I came to know that whether we should use Manual Testing or Automation Testing, this decision depends on many factors including what testing we are going to perform as well as on the type of the application, the complexity of the application, the size of the application, etc.

            Today, there are many institutes offering testing courses which will help the students to get job in the Quality & Testing field. So the people coming in this field knows how to operate the software automation tools and how to write their scripts.

BUT DO THEY KNOW HOW TO TEST?”

I talked to one of my friend who is a Senior Quality Officer in a Multi-National company; I asked him that should I start learning & implementing the test automation tools. The answer I got was quite simple & understandable. He said that, “At the start of career, one should never start using test automation tools, rather one should implement manual testing as it will help him understand how testing should be done. Once a person is confident that he knows the soul of the testing process, he should go for using test automation tools.”

            After listening to this very good & experienced friend of mine, I became sure of what I have to start with. Manual Testing is the word. The newbies in this field should start with the Manual Testing is what I think and yes when you think you know how to test, you can use the test automation tools to do that work for you.

“Test Automation Tools should be used as a support tool but the main thing that should work when the tester tests is the Tester’s Mind.”


Friday, June 15, 2012

Browser Compatibility Testing


The first task that was given to me in my company was to do the browser compatibility testing of one site. As a fresher I got to know many things about the Cross Browser Compatibility Testing. I would like to share it.

 Variety of Browsers

In today’s internet world, there are many browsers available for a user to surf the websites. The most used browsers today include:-
Internet Explorer (IE 9, IE 8 & IE 7)
Mozilla Firefox
Google Chrome
Safari
Opera
There are many more browsers available in the market, but majority of the users’ uses one of the above mentioned browsers.
  
So… What’s The Issue?

          The problem starts when different users’ uses different browsers to surf a single website. Different browsers have different standards set by them to read an Html or Css code and display it on the screen. We are very grateful to the W3C and Web Standardization, because of which the differences between these standards are minimized but they are not finished yet.
The same designing code will act differently when executed by different browsers. And it can act differently up to an extent that sometimes a particular functionality stops working in one or more browser but it works perfectly fine in other browsers. Sometimes the text alignment changes, sometimes designing changes completely, etc. etc. Ultimately these problems can present the site with a messy look. These small (as well as large) problems can affect the end user’s experience interacting with the site up to a great extent, because the functionality will come next but if the designing & looks of the website is not good/decent/beautiful/catchy/professional, the user will… Just Close It.

Reason for This Issue

           There can be numerous reasons for cross browser compatibility issues. The smart developers always follow the defined standards while developing the website. But still there may be a small css block or a particular Html extension which can cause issues. Sometimes even the users have set some configurations in their browsers like font size, screen resolutions, etc. that can cause problems. But that’s not our point. Here we will discuss that what points should be kept in mind while doing a Cross Browser Compatibility Test for a particular website.

Important Points in Cross Browser Compatibility Testing

           I implemented this test on Internet Explorer (7, 8 and 9), Mozilla Firefox & Google Chrome. I have done it numerous times in my colleges and in my project companies but this was the first time I was doing it on job. While doing the cross browser compatibility test as a fresh tester, what I realized is that the latest browsers are having very few chances for these cross browser issues. I noted that the code was running and executing almost same on Firefox & Chrome Browsers.

          The IE Browsers were having much trouble. IE 9 was having the least issues. But if u run the same page in IE 8, there were some differences. And when you run it in IE 7, things starts getting messy.

          Slowly and gradually, it started getting clear to me that which browser is more prone to error for a particular functionality. It may sound surprising, but I did found some bugs in Google Chrome too.

          I listed all the bugs, checked it again by reproducing them, and carried out the procedure of reporting it to the development team. At the end, most of them were solved. ALL’s WELL THAT ENDS WELL