CSE 270: Software Testing - Reading Material

3.2 Testing Methods Explained

Just like developers use algorithms, data structures, and design patterns in order to effectively create software, so too do testers have a variety of techniques in their arsenal to attack the problem of software testing. In this section we will explore a variety of ways that functional testing may be accomplished. Nonfunctional testing techniques will be covered in later chapters.

White Box Testing

Overview

White box testing, also known as structural or glass box testing, focuses on the internal logic, code structure, and implementation of the software. Testers, armed with knowledge of the internal workings of the application, design test cases to scrutinize the code at a granular level.

Objectives

Process

Examples

Black Box Testing

Overview

Black box testing, also known as functional testing, examines the software's functionality from an external perspective. Testers are unaware of the internal code, focusing on inputs, outputs, and the application's behavior without knowledge of the internal structure.

Objectives

Process

Examples

Boundary Value Analysis

Overview

Boundary value analysis focuses on testing values at the edges of input domains, aiming to uncover defects that may arise at boundaries or transitions between different input ranges.

Objectives

Examples

Equivalence Partitioning

Overview

Equivalence partitioning involves dividing input data into equivalent classes, reducing redundancy in testing by selecting representative values from each class.

Objectives

Examples

Regression Testing

Overview

Regression testing involves re-executing previously executed test cases to verify that existing functionalities remain unaffected after code changes, additions, or bug fixes.

Objectives

Examples

Comparison Testing

Overview

Comparison testing involves running the same set of inputs on two systems and comparing their outputs to identify any discrepancies or differences.

Objectives

Use Cases

Example

Consider a financial system where a new algorithm for calculating interest rates is implemented. Comparison testing would involve running the same set of test cases on both the old and new systems and comparing the calculated interest rates to ensure they match.

Random Testing

Overview

Random testing, as the name suggests, involves generating random inputs for a system and observing its behavior. Unlike systematic testing, this approach aims to explore unforeseen scenarios and induce unexpected behavior in the software.

Objectives

Examples

Fuzz Testing

Overview

Fuzz testing, a specialized form of random testing, involves feeding a system with malformed, invalid, or unexpected inputs to assess its response. The goal is to discover vulnerabilities such as buffer overflows or input validation errors.

Objectives

Examples

Code Review

Overview

Code review is a collaborative process in which team members systematically examine source code to identify defects, ensure adherence to coding standards, and promote knowledge sharing among team members.

Objectives

Process

Examples

Static Analysis Testing

Overview

Static analysis testing involves examining the source code without executing it, using automated tools to identify potential defects, security vulnerabilities, and adherence to coding standards.

Objectives

Process

Examples

Unit Testing

Overview

Unit testing involves testing individual components or functions of the software in isolation, verifying that each unit behaves as intended.

Objectives

Process

Examples

Integration Testing

Overview

Integration testing assesses the interactions between multiple units or components, ensuring they collaborate effectively and produce the expected collective outcome.

Objectives

Process

Examples

End-to-End Testing

Overview

End-to-end testing evaluates the entire system's functionality, simulating real-world user scenarios to ensure that all integrated components work seamlessly together.

Objectives

Process

Examples

User Acceptance Testing (UAT)

Overview

User Acceptance Testing (UAT) involves validating the software's functionality from the end user's perspective, ensuring it meets user requirements and expectations.

Objectives

Process

Examples

Alpha Testing

Overview

Alpha testing is an early phase of software testing conducted by the internal development team. It aims to identify defects, assess functionality, and gather initial feedback on the software's usability.

Objectives

Process

Examples

Beta Testing

Overview

Beta testing is the phase where the software is released to a limited group of external users or customers. The goal is to collect feedback, identify potential issues in real-world scenarios, and refine the product before its official release.

Objectives

Process

Examples

A/B Testing

Overview

A/B testing, also known as split testing, involves comparing two versions of a webpage, application, or feature to determine which performs better. It enables data-driven decision-making by evaluating user responses to different variations in real-world scenarios.

Objectives

Process

Examples

Dynamic Testing

Overview

Dynamic testing involves assessing a software system's behavior during execution. Unlike static testing, dynamic testing evaluates the software in action, considering various inputs, outputs, and system states.

Objectives

Process

Examples

Conclusion

The previous list is by no means exhaustive, and there are other ways of testing that many not have been mentioned here. However, the previous list includes many of the more commonly known and implemented types of testing techniques that are used along the journey of software development.