Software testing

Milan Brankovic
4 min readJul 15, 2021

Software testing is an important thing when building a product. It can find out issues before it reaches customer, it can also reduce cost of fixing the issue if found early enough. Let's dive deep in ways of testing. We will use picture which are powerful enough to express the meaning of testing strategy.

Boundary value testing

# Normal boundary value testing

# Robust boundary value testing

# Worst-case boundary value testing

# Robust worst-case boundary value testing

# Random testing

Equivalence class testing

# Traditional equivalence class testing

# Weak normal equivalence class testing

# Strong normal equivalence class testing

# Weak robust equivalence class testing

# Strong robust equivalence class testing

# Edge testing

Hybrid of boundary value analysis and equivalence class testing

Decision table-based testing

Path testing

# Statement testing

# DD (decision-to-decision) path testing

# Simple loop coverage

# Predicate outcome testing

# Dependent pairs of DD-paths

# Complex loop coverage

# Multiple condition coverage

# Statistically significant coverage

# All possible paths coverage

Data flow testing

Similar to path testing, but with the difference that it is focused on data. Data flow testing refers to forms of structural testing that focus on the points at which variables receive values and the points at which these values are user (or referenced).

# Slice testing

Life cycle-based testing

# Traditional waterfall life cycle testing

# V model waterfall life cycle testing

# Agile testing

  • Extreme programming (XP)
  • Test-driven development (TDD)
  • Scrum

Model based testing

The essence of this type is summarized in the following steps:

  1. model the system
  2. identify threads of system behavior in the model
  3. transform these threads into test cases
  4. execute test cases and record results
  5. revise the model as needed and repeat the process

Integration testing

# Decomposition based testing

  • top-down integration testing
  • bottom-up integration testing
  • sandwich integration testing

# Call graph based testing

  • pairwise integration testing
  • neighborhood integration testing

# Path based integration testing

System testing

# Operational profiles

# Risk-based testing

# Stress testing

Exploratory testing

This is just a high level overview of different types of software testing. In order to explore more and get better understanding of each and every one you can find a lot of great books and articles online. Also you can find good courses and certifications online (if you to become certified tester).

--

--

No responses yet