TestingGeek

Learn, Share and Keep Learning

Home Testing Types

Testing Types

Have you ever thought why do you need to categorize software testing into different types? What is the benefits of dividing software testing in different types? One of the main purpose of software testing is to identify defects in the software. Defects in software testing can be defined as variance from requirement or user expectation. Based on this simple definition, it is very easy to categorize defects. For example:
  •  If system is not functioning properly, its a functional defect.
  • If system is not performing well, its a performance defect.
  • If system is not usable, its a usability defect
  • If system is not secure, its a security defect
  • and so on..

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 in which software testing can be categorized. Some of them are described as follows.

Gray Box Testing

Grey box testing is the combination of black box and white box testing. Intention of this testing is to find out defects related to bad design or bad implementation of the system.

In gray box testing, test engineer is equipped with the knowledge of system and designs test cases or test data based on system knowledge.

For example, consider a hypothetical case wherein you have to test a web application. Functionality of this web application is very simple, you just need to enter your personal details like email and field of interest on the web form and submit this form. Server will get this details, and based on the field of interest pick some articles and mail it to the given email. Email validation is happening at the client side using Java Scripts.

Read more...
 

White Box Testing

White box testing is very different in nature from black box testing. In black box testing, focus of all the activities is only on the functionality of system and not on what is happening inside the system.

Purpose of white box testing is to make sure that
  • Functionality is proper
  • Information on the code coverage

White box is primarily development teams job, but now test engineers have also started helping development team in this effort by contributing in writing unit test cases, generating data for unit test cases etc.

Read more...
 

Blackbox Testing

Probably this is what most of us practice and is used most widely. This is also type of testing which is very close to customer experience. In this type of testing system is treated as close system and test engineer do not assume any thing about how system was created.

As a test engineer if you are performing black box test cases, one thing that you need to make sure is that you do not make any assumptions about the system based on your knowledge. Assumption created in our mind because of the system knowledge could harm testing effort and increase the chances of missing critical test cases.

Read more...
 

Equivalence Partitioning

Equivalence partitioning is a software testing technique to minimize number of permutation and combination of input data. In equivalence partitioning, data is selected in such a way that it gives as many different output as possible with the minimal set of data.

If software behaves in an identical way for a set of value, then the set is termed as equivalence class or a partition. It can be assumed safely that functionality of the software will be same for any data value from the equivalence class or partition. In equivalence partitioning, input data is analyzed and divided into equivalence classes which produces different output.

Read more...
 

Boundary Value Analysis

Boundary value analysis is the technique of making sure that behavior of system is predictable for the input and output boundary conditions. Reason why boundary conditions are very important for testing is because defects could be introduced at the boundaries very easily. For example, if you were to write code to simulate following condition -

" Input should be greater than equal to 10 and less than 50"

Probably you will write something like

Read more...
 

User Acceptance Testing

Acceptance Testing is the formal testing conducted to determine whether a software system satisfies its acceptance criteria and to enable buyer to determine whether to accept the system or not.Acceptance testing is designed to determine whether software is fit for use or not. Apart from functionality of application, other factors related to business environment also plays an important role.
Read more...
 

System Testing

System testing is probably the most important phase of complete testing cycle. This phase is started after the completion of other phases like Unit, Component and Integration testing. During the System Testing phase, non functional testing also comes in to picture and performance, load, stress, scalability all these types of testing are performed in this phase.
Read more...
 

Hybrid Integration Testing

Top-down and bottom-up, both the types of testing have their advantages and disadvantages. While in top-down integration testing it is very easy to follow the top-down software development process at the same time in bottom-up testing, the code is used mostly is tested repetitively. 
 
Read more...
 

Bottom Up Integration Testing

In bottom up integration testing, module at the lowest level are developed first and other modules which go towards the 'main' program are integrated and tested one at a time. Bottom up integration also uses test drivers to drive and pass appropriate data to the lower level modules. As and when code for other module gets ready, these drivers are replaced with the actual module. In this approach, lower level modules are tested extensively thus make sure that highest used module is tested properly.

Read more...
 

Top Down Integration Testing

Top down integration testing is an incremental integration testing technique which begins by testing the top level module and and progressively adds in lower level module one by one. Lower level modules are normally simulated by stubs which mimic functionality of lower level modules. As you add lower level code, you will replace stubs with the actual components. Top Down integration can be performed and tested in breadth first or depth firs manner.
Read more...
 

Big Bang Integration Testing

In big bang Integration testing, individual modules of the programs are not integrated until every thing is ready. This approach is seen mostly in inexperienced programmers who rely on 'Run it and see' approach. In this approach, the program is integrated without any formal integration testing, and then run to ensures that all the components are working properly.

Read more...
 

Integration Testing

Objective of Integration testing is to make sure that the interaction of two or more components produces results that satisfy functional requirement. In integration testing, test cases are developed with the express purpose of exercising the interface between the components. Integration testing can also be treated as testing assumption of fellow programmer. During the coding phase, lots of assumptions are made. Assumptions can be made for how you will receive data from different components and how you have to pass data to different components.
 

 

Read more...
 

Unit Testing

I have heard some people saying that Unit testing is done primarily by the developers and test engineers need not know about Unit testing. But this is not the case, Unit testing is as important for test engineers as it is for developers.

Probably developers will write the unit test cases but your understanding of the framework and unit testing can certainly help him/her in designing the flow for unit test cases, generating test data and making good reports. All these activities will ultimately help you in the long run as product quality will increase significantly because of the efforts you put in on the unit testing. So if you think as a test engineer, you should also learn/know about unit testing read on.

Read more...
 

Software Testing - Penetration Testing

Penetration testing is security testing in which evaluators attempt to circumvent the security features of a system based on their understanding of the system design and implementation. The purpose of penetration testing is to identify methods of gaining access to a system by using common tools and techniques used by attackers. Penetration testing should be performed after careful consideration, notification, and planning.
 
Penetration testing can be overt or covert. These two types of penetration testing are commonly referred to as Blue Teaming and Red Teaming. Blue Teaming involves performing a penetration test with the knowledge and consent of the organization's IT staff. Red Teaming involves performing a penetration test without the knowledge of the organization's IT staff but with full knowledge and permission of the upper management.
Read more...
 

Software Testing - Vulnerability Testing

Vulnerability scanners take the concept of a port scanner to the next level. Like a port scanner, a vulnerability scanner identifies hosts and open ports, but it also provides information on the associated vulnerabilities. Most vulnerability scanners also attempt to provide information on mitigating discovered vulnerabilities.
 
Vulnerability scanners can also help identify out-of-date software versions, applicable patches or system upgrades, and validate compliance with, or deviations from, the organization's security policy. To accomplish this, vulnerability scanners identify operating systems and major software applications running on hosts and match them with known exposures. Scanners employ large databases of vulnerabilities to identify flaws associated with commonly used operating systems and applications.

 

Read more...
 

Software Testing - Security Testing

Security Testing is very important in today's world, because of the way computer and internet has affected the individual and organization. Today, it is very difficult to imagine world without Internet and latest communication system. All these communication systems increases efficiency of individual and organization by multifold.

Since every one from individual to organization, uses Internet or communication system to pass information, to do business, to transfer money it becomes very critical for the service provider to make sure that information and network are secured from the intruders.

Read more...
 

Usability Testing

Software usability testing is an example of non functional testing. Usability testing evaluates how easy a system is to learn and use. There are enormous benefits of the usability testing but still there is not much awareness about the subject.
Read more...
 

Performance Testing

In the current era, when you hardly have any stand alone desktop application Performance, Load and stress Testing becomes key to the success of your application. Performance testing comes under non functional testing.

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.
Read more...
 

API Testing

Before dwelling into the subject of API Testing, we should understand what is the meaning of API or, Application Programming Interface.  An API (Application Programming Interface) is a collection of software functions and procedures, called API calls, that can be executed by other software applications.  API testing is mostly used for the system which has collection of API that needs to be tested. The system could be system software, application software or libraries.

Read more...
 

Internationalization Testing

World is flat. If you are reading this page, chances are that you are experiencing this as well. It is very difficult to survive in the current world if you are selling your product in only one country or geological region. Even if you are selling in all over the world, but your product is not available in the regional languages, you might not be in a comfortable situation.  Products developed in one location are used all over the world with different languages and regional standards. This arises the need to test product in different languages and different regional standards. Multilingual and localization testing can increase your products usability and acceptability worldwide. 
Read more...
 

Accessibility Testing

Accessibility testing is the technique of making sure that your product is accessibility compliant. There could be many reasons why your product needs to be accessibility compliant as stated above.

Typical accessibility problems can be classified into following four groups, each of them with different access difficulties and issues:

  • Visual impairments

  • Such as blindness, low or restricted vision, or color blindness. User with visual impairments uses assistive technology software that reads content loud. User with weak vision can also make text larger with browser setting or magnificent setting of operating system.
Read more...
 

Upgrade & Backward Compatibility Testing

In any software program, new releases or new versions are inevitable. Organization spend lots of money and resources to improvise the existing software. Continuous improvisation is necessary for any software product so that they can remain competitive in the market. On an average, every software is upgraded at least once in every year. 

Read more...
 

Regresstion Testing

As some one has said, changes are the only thing constant in this world. It holds true for software also, existing software are either being changed or removed from the shelves. These changes could be due to any reason. There could be some critical defects which needs to be fixed, there could be some enhancements which has to happen in order to remain in the competition. 
Read more...
 

Installation Testing

Installation Testing is one of the most important part of testing activities. Installation is the first interaction of user with our product and it is very important to make sure that user do not have any trouble in installing the software.

It becomes even more critical now as there are different means to distribute the software. Instead of traditional method of distributing software in the physical CD format, software can be installed from internet, from a network location or even it can be pushed to the end user's machine.

Read more...
 

Model Based Testing

It is true that in order to test any system effectively, we need to first understand what the implementation under test is supposed to do. With continuously increasing complex software, testers can use models to understand the system and support test design process.

Dr. Kaner has rightly suggested that testing is a technical investigation; this view is similar to the observation mage by Binder (2000) in ‘Testing Object Oriented Systems’ where he looks at the testing as a search problem. In the vast amount of input, we are looking for just few inputs which will trigger the defect or faulty behaviour of the system. According to the model based testing approach, this search should be systematic, focused and automated.

Read more...
 

Automated Testing

Automated testing is the concept of automation applied in the testing. Automation can be applied on the various parts of the testing process including test cases management, defects management, reporting, and test case execution and so on.

This section will look at the automation in the context of execution of test cases without or minimal human intervention only.

Read more...
 

Exploratory Testing

Exploratory testing is defined as simultaneous learning, test design and execution by its one of the most prominent proponent, James Bach. Before 1990 and even till now, in some parts of the industry, exploratory testing is also known as ad-hoc testing.

Read more...
 

Manual Scripted Testing

Manual scripted testing is the oldest and most rigorous type of software testing. In this particular type of testing, test cases are designed and reviewed by the team before executing it. There are many variation of this basic approach, test cases can be created at the basic functionality level or they can be created at the scenario level.
Read more...
 

Could not Find?

Stay in touch

Enter your email address:

Delivered by FeedBurner

Your Opinion Matters

Defect found by testers is
 

Follow Me - Twitter

Follow me on Twitter @ TestingGeek

Services.

Do you need reliable and efficient testing services covering all aspects of software testing? Contact Atlantis Software for all your software testing needs.