---
description: Introduction, Definition, Basics & Types
---

# What is Software Testing?

**Software testing** is a process, to evaluate the functionality of a software application with an intent to find whether the developed software met the specified requirements or not and to identify the defects to ensure that the product is defect free in order to produce the quality product.

Let’s see standard definition, software testing types such as manual and automation testing, testing methods, testing approaches and types of black box testing.

#### Definition:

According to **ANSI/IEEE 1059** standard – A process of analyzing a software item to detect the differences between existing and required conditions (i.e., defects) and to evaluate the features of the software item.

#### Software Testing Types:

**Manual Testing:** Manual testing is the process of testing the software manually to find the defects. Tester should have the perspective of end users and to ensure all the features are working as mentioned in the requirement document. In this process, testers execute the test cases and generate the reports manually without using any automation tools.

**Automation Testing:** Automation testing is the process of testing the software using an automation tool to find the defects. In this process, testers execute the test scripts and generate the test results automatically by using automation tools. Some of the famous automation testing tools for functional testing are QTP/UFT and Selenium.

#### **Testing Methods:**

1. Static Testing
2. Dynamic Testing

**Static Testing:** It is also known as Verification in Software Testing. Verification is a static method of checking documents and files. Verification is the process, to ensure that whether we are building the product right i.e., to verify the requirements which we have and to verify whether we are developing the product accordingly or not.

Activities involved here are Inspections, Reviews, Walkthroughs

**Dynamic Testing:** It is also known as Validation in Software Testing. Validation is a dynamic process of testing the real product. Validation is the process, whether we are building the right product i.e., to validate the product which we have developed is right or not.

Activities involved in this is Testing the software application

{% hint style="info" %}
Read more about [**Verification and Validation**](https://app.gitbook.com/@testplace/s/tutorials/verification-and-validation)
{% endhint %}

#### **Testing Approaches:**

1. White Box Testing
2. Black Box Testing
3. Grey Box Testing

**White Box Testing:** It is also called as Glass Box, Clear Box, Structural Testing. White Box Testing is based on applications internal code structure. In white-box testing, an internal perspective of the system, as well as programming skills, are used to design test cases. This testing is usually done at the unit level.

**Black Box Testing:** It is also called as Behavioral/Specification-Based/Input-Output Testing. Black Box Testing is a software testing method in which testers evaluate the functionality of the software under test without looking at the internal code structure.

**Grey Box Testing:** Grey box is the combination of both White Box and Black Box Testing. The tester who works on this type of testing needs to have access to design documents. This helps to create better test cases in this process.

{% hint style="info" %}
> Read more on [**White Box and Black Box Testing**](https://app.gitbook.com/@testplace/s/tutorials/white-and-black-box-testing)
{% endhint %}

#### **Testing Levels:**

1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

**Unit Testing:** Unit Testing is done to check whether the individual modules of the source code are working properly. i.e. testing each and every unit of the application separately by the developer in the developer’s environment. It is AKA Module Testing or Component Testing

**Integration Testing:** Integration Testing is the process of testing the connectivity or data transfer between a couple of unit tested modules. It is AKA I\&T Testing or String Testing. It is subdivided into Top-Down Approach, Bottom-Up Approach and Sandwich Approach (Combination of Top Down and Bottom Up).

**System Testing (end to end testing):** It’s a black box testing. Testing the fully integrated application this is also called as end to end scenario testing. To ensure that the software works in all intended target systems. Verify thorough testing of every input in the application to check for desired outputs. Testing of the users experiences with the application.

**Acceptance Testing:** To obtain customer sign-off so that software can be delivered and payments received. Types of Acceptance Testing are Alpha, Beta & Gamma Testing.

{% hint style="info" %}
Read more on [**Levels of Testing**](https://app.gitbook.com/@testplace/s/tutorials/levels-of-testing)
{% endhint %}

#### **Types of Black Box Testing:**

1. Functionality Testing
2. Non-functionality Testing

**Functional testing:** In simple words, what the system actually does is functional testing. To verify that each function of the software application behaves as specified in the requirement document. Testing all the functionalities by providing appropriate input to verify whether the actual output is matching the expected output or not. It falls within the scope of black box testing and the testers need not concern about the source code of the application.

**Non-functional testing:** In simple words, how well the system performs is non-functionality testing. Non-functional testing refers to various aspects of the software such as performance, load, stress, scalability, security, compatibility etc., Main focus is to improve the user experience on how fast the system responds to a request.

There are more than 100 types of testing. You can check this post where we have mentioned [100+ software testing types](https://www.softwaretestingmaterial.com/types-of-software-testing/).
