Quick Reference Study Notes for Blackbox Testing (Advanced)

Black Box Testing
 

Introduction:
Black box testing is the Software testing method which is used to test the software without knowing the internal structure of code or program. These tests can be functional or non-functional, though usually functional.



 

Levels of Black Box Testing:



Unit Testing
: Unit Testing is a level of software testing where individual units/ components of a software are tested. The purpose is to validate that each unit of the software performs as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output. In procedural programming, a unit may be an individual program, function, procedure, etc.

Integration Testing: Integration Testing is a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing.

System Testing: System Testing is a level of software testing where a complete and integrated software is tested. The purpose of this test is to evaluate the system’s compliance with the specified requirements.

Acceptance Testing: Acceptance Testing is a level of software testing where a system is tested for acceptability. The purpose of this test is to evaluate the system’s compliance with the business requirements and assess whether it is acceptable for delivery.

Techniques :
Following are some techniques that can be used for designing black box tests:

Equivalence Class Testing: It is used to minimize the number of possible test cases to an optimum level while maintains reasonable test coverage.

 


Boundary Value Testing: Boundary value testing is focused on the values at boundaries. This technique determines whether a certain range of values are acceptable by the system or not. It is very useful in reducing the number of test cases. It is most suitable for the systems where the input is within certain ranges.


Decision Table Testing: A decision table puts causes and their effects in a matrix. There is a unique combination in each column.




Types of Black Box Testing:

1.Functional Testing: Functional testing is a type of testing which verifies that each function of the software application operates in conformance with the requirement specification. This testing mainly involves black box testing, and it is not concerned about the source code of the application.


Examples of functional Testing:

Unit Testing: Unit Testing is a level of software testing where individual units/ components of a software are tested. The purpose is to validate that each unit of the software performs as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output. In procedural programming, a unit may be an individual program, function, procedure, etc.


Integration Testing: Integration Testing is a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing.

System Testing: System Testing is a level of software testing where a complete and integrated software is tested. The purpose of this test is to evaluate the system’s compliance with the specified requirements.

Smoke Testing: Smoke Testing is done to make sure if the build we received from the development team is testable or not. It is also called as “Day 0” check. It is done at the build level.

 

Sanity Testing: Sanity Testing is done during the release phase to check for the main functionalities of the application without going deeper. It is also called as a subset of Regression testing. It is done at the “release level”.

Interface Testing: Testing conducted to evaluate whether systems or components pass data and control correctly to one another. This testing process is usually performed by both testing and develo­pment teams.

Regression Testing: Type of software testing that seeks to uncover software errors after changes to the program (e.g., bug fixes or new functi­ona­lity) have been made, by retesting the program. This testing process is performed by the testing teams.

Locali­zation Testing: Part of the software testing process focused on adapting a globalized applic­ation to a particular cultur­e/l­ocale. This testing process is normally done by the testing teams.

Global­ization Testing: Testing method that checks proper functi­onality of the product with any of the cultur­e/l­ocale settings using every type of intern­ational input possible. This testing process is performed by the testing team.

2.Non-functional Testing
 Non-functional testing is a type of testing to check non-functional aspects (performance, usability, reliability, etc.) of a software application. It is explicitly designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing.

Examples of Non-functional Testing:

Perfor­mance Testing: Functional testing conducted to evaluate the compliance of a system or component with specified perfor­mance requir­ements. This testing process is usually conducted by the perfor­mance engineer.

Volume Testing: Testing which confirms that any values that may become large over time (such as accumu­lated counts, logs, and data files), can be accomm­odated by the program and will not cause the program to stop working or degrade its operation in any manner. This testing process is usually conducted by the perfor­mance engineer.

Usability Testing: Testing technique which verifies the ease with which a user can learn to operate, prepare inputs for, and interpret outputs of a system or component. This testing process is usually performed by end users.

Load Testing: Testing technique that puts a demand on a system or device and measures its response. It is usually conducted by perfor­mance engineers.

Stress Testing: A testing technique which evaluates a system or component at or beyond the limits of its specified requir­ements. This testing process is usually conducted by the perfor­mance engineer.

Scalab­ility Testing: Part of the battery of non-fu­nct­ional tests which tests a software applic­ation for measuring its capability to scale up – be it the user load supported, the number of transa­ctions, the data volume, etc. This testing process is conducted by the perfor­mance engineer.

Compat­ibility Testing: Testing technique that validates how well a software performs in a particular hardwa­re/­sof­twa­re/­ope­rating system­/ne­twork enviro­nment. This testing process is performed by the testing teams.

Recovery Testing: Testing technique which evaluates how well a system recovers from crashes, hardware failures, or other catast­rophic problems. This testing process is performed by the testing teams.

Security Testing: A process to determine that an inform­ation system protects data and maintains functi­onality as intended. It can be performed by testing teams or by specia­lized securi­ty-­testing companies.

Endurance Testing: Type of testing which checks for memory leaks or other problems that may occur with prolonged execution. This testing process is usually performed by perfor­mance engineers.

Portability testing: It refers to the process of testing the ease with which a computer software component or application can be moved from one environment to another, e.g. moving of any application from Windows 2000 to Windows XP. This is usually measured in terms of the maximum amount of effort permitted. Results are measured in terms of the time required to move the software and complete the and documentation updates.

Maintainability testing: It basically defines that how easy it is to maintain the system. This means that how easy it is to analyze, change and test the application or product.

Efficiency testing: Efficiency testing test the amount of code and testing resources required by a program to perform a particular function. Software Test Efficiency is a number of test cases executed divided by the unit of time (generally per hour).

Reliability testing: Reliability Testing is about exercising an application so that failures are discovered and removed before the system is deployed. The purpose of reliability testing is to determine product reliability and to determine whether the software meets the customer’s reliability requirements.

*NOTE : "This study material is collected from multiple sources to make a quick refresh course available to students."
 

This website uses cookies to improve user experience. By using our website you consent to all cookies in accordance with our Cookie Policy. More info. I Agree