Testing Terminology

White Box, Black Box and Grey Box Testing

White Box, Black Box and Grey Box Testing
1. Black Box Testing :

Black box testing is a type of software testing in which the functionality of the software is not known. The testing is done without the internal knowledge of the products. It is also called Functional testing. Black-box testing focuses on software’s external attributes and behavior. This type of testing looks at an application’s software expected behavior from the user’s point of view.

2. White Box Testing :

White-box testing, or glass-box testing is a software testing technique that tests the software by using the knowledge of internal data structures, physical logic flow, and architecture at the level of source code. This testing works by looking at testing from the developer’s point of view. This testing is also known as glass box testing, clear box testing, structural testing, or non-functional testing. 

3. Gray Box Testing :

Gray Box Testing is a combination of the Black Box Testing technique and the White Box Testing technique in software testing. The gray-box testing involves inputs and outputs of a program for the testing purpose, but test design is tested by using the information about the code. Gray-box testing is well suited for web application testing because it factors in a high-level design environment and the inter-operability conditions.

Regression Testing

Repeated testing of an already tested program, after modification, to discover any defects introduced or uncovered as a result of the changes in the software being tested or in another related or unrelated software components.

Done at all levels

Test cases should be repeatable

Applies to functional, non-functional and structural testing

Run many times and evolve over a period of time

Strong candidate for automation

Usually, we do regression testing in the following cases :

–New functionalities are added to the application

–Change Requirement ( In organizations, we call it as CR )

–Defect Fixing

–Performance Issue Fix

–Environment change ( e.g. Updating the DB from MySQL to Oracle )

Testing conducts on modified build to make sure there will not be impact on existing functionality because of changes like adding/deleting/modifying features.

Unit Regression Testing –

•  Testing only the changes/modifications done by developer.

Regional Regression Testing –

•  Testing the modified module along with the impacted modules.

•  Impact analysis meeting conducts to identity impacted modules with QA & Dev

Full Regression –

•  Testing the main feature & remaining part of the application

•  Ex:Dev has done changes in many modules, instead of identifying impacted modules, se

•  Perform one round of full regression.

Re-Testing

Whenever the developer fixed a bug, tester will test the bug fix is called Re-testing.

Tester close the bug if it worked otherwise re-open and send to developer.

To ensure that the defects which were found and posted in the earlier build were fixed or not in the current build.

Example

 â€“ Build 1.0 was released, Test team found some defects ( Defect Id 1.0,1, 1.0.2 ) and posted

 â€“ Build 1.1 was released, now testing the defects 1.0.1 and 1.0.2 in this build is retesting.

Regression Testing and Re-testing Difference

Regression Testing
Regression and Retesting Difference
Example : Re-Testing Vs Regression Testing
Example : Re-Testing Vs Regression Testing

An application under test has there modules namely Admin, Purchase and Finance.

Finance module depends on purchase module.

If a tester found a bug on purchase module and posted. Once the bug is fixed, the tester needs to do Retesting to verify whether the bug related to the purchase is fixed or not and also tester needs to do Regression Testing to test the Finance module which depends on the Purchase module.

Smoke Testing Vs Sanity Testing

Testing done on stable or unstable application to check whether a major functions of an application is working fine or not is called as Smoke Testing.

Testing done on stable application to check whether a major functions of an application is working fine or not is called as Sanity Testing.

Smoke and Sanity Testing come into the picture after build release.

Smoke Testing Vs Sanity Testing Difference
Smoke Testing Vs Sanity Testing

Exploratory Testing

We have to explore the application, understand completely and test it.

Understand the application, Identify all possible scenarios, document it then use it for testing.

We do exploratory testing when the application ready but there is no requirement.

Test engineer will do exploratory testing when there is no requirement.

Drawbacks :

You Might misunderstand any feature as a bug (or) any bug as a feature since you do not have requirement.

Time consuming

If there is any bug in application, you will never know about it.

Adhoc Testing

Adhoc Testing

Testing application randomly without any test cases or any business requirement document.

Adhoc testing is an informal testing type with an aim to break the system.

Tester should have knowledge of application even though he doesn’t have requirements/test cases.

This testing is usually an unplanned activity.

Monkey/Gorilla Testing

Testing application randomly without any test cases or any business requirement document.

Monkey testing is an informal testing type with an aim to break the system.

Tester do not have knowledge of application.

Suitable for gaming applications.

Adhoc Testing Vs Monkey Testing Vs Exploratory Testing

Adhoc Testing Vs Monkey Testing Vs Exploratory Testing

Positive Testing

Testing the application with valid inputs is called as Positive Testing.

It checks whether an application behaves as expected with positive inputs.

For example –

Positive Testing

There is a test box in an application which can accept only numbers. Entering values up to 99999 will be acceptable by the system and any other values apart from this should not be acceptable.

To do positive testing, set the valid input values from 0 to 99999 and check whether the system is accepting the values.

Negative Testing

Testing the application with invalid inputs is called as Negative Testing.

It checks whether an application behaves as expected with negative inputs.

For example –

Negative Testing

Negative testing can be performed by entering characters A to Z or form a to z.

Either software system should not accept the values or else it should throw an error message for these invalid data inputs.

Positive Vs Negative Test Cases

Requirement :

 For example, if a text box is listed as a feature and in FRS it is mentioned as Text box accepts 6-20 characters and only alphabets.

Positive Test Cases :

 â€“ Textbox accepts 6 characters.

 â€“ Textbox accepts upto 20 characters length.

 â€“ Textbox accepts any value in between 6-20 characters length.

 â€“ Textbox accepts all alphabets.

Negative Test Cases :

 â€“ Textbox should not accept less than 6 characters.

 â€“ Textbox should not accept character more than 20 characters.

 â€“ Textbox should not accept special characters

 â€“ Textbox should not accept numerical

End-To-End Testing

Testing the overall functionalities of the system including the data integration among all the modules is called end-to-end testing.

End-To-End Testing

Globalization and Localization Testing

Internationalization (I18N) Testing

Globalization Testing :
  • Performed to ensure the system or software application can run in any cultural or local environment.
  • Different aspects of the software application are tested to ensure that it supports every language and different attributes.
  • It tests the different currency formats; mobile number formats and address formats are supported by the application.
  • For example, Facebook.com supports many of the languages and it can be accessed by people of different countries. Hence it is globalized product.
Localization Testing :
  • Performed to check system or software application for a specific geographical and cultural environment.
  • Localized product only supports the specific kind of language and is usable only in specific region.
  • It testes the specific currency format, mobile number format and address format is working properly or not.
  • For example, Baidu.com supports only the Chinese language and can be accessed only by people few countries. Hence it is localized product.

Maintenance Testing

Maintenance Testing
  • Maintenance testing is a type of software testing that is done after the planned releases of the software. Maintenance testing has three main goals: to find bugs in the released product, to diagnose any errors and fix them, and to ensure that changes made during post-release development are not causing problems with other parts of the system.
  • Maintenance Testing is also known as post-release software testing. This is a type of software testing that takes place when the software has been released into production and any changes have been made to fix bugs or add new features to the existing system.
Types of Maintenance Testing
Types of Maintenance Testing

When the maintenance testers are validating the application, they need to consider two things. Based on the test types

Confirmation Testing: 

On this confirmation maintenance testing, the Testers or QA have to mainly focus on the modified functionalities. They have to verify every aspect of the application is working as it should be.

Regression Testing: 

Testing the existing functionality to ensure that it is not broken or degraded by the new functionality.