Catalog
concept#Quality Assurance#Software Engineering#Observability#Reliability

Software Testing

Systematic verification of software using manual and automated tests to find defects and ensure quality.

Software testing is the systematic evaluation of software to detect defects and ensure quality.
Established
Medium

Classification

  • Medium
  • Technical
  • Design
  • Intermediate

Technical context

CI/CD servers (e.g., Jenkins, GitHub Actions)Test management tools (e.g., TestRail)Issue trackers (e.g., Jira)

Principles & goals

Early and frequent testing reduces cost and risk.Prioritize automation where repeatability and speed matter.Tests should be independent, deterministic, and reproducible.
Build
Team, Domain, Enterprise

Use cases & scenarios

Compromises

  • Flakiness leads to loss of trust in test suites.
  • Insufficient tests leave critical defects undetected.
  • Overhead from too many slow tests slows development.
  • Follow the test pyramid: more unit tests, fewer UI tests.
  • Keep tests independent and deterministic.
  • Ensure maintainability via clear test data strategies.

I/O & resources

  • Requirements and acceptance criteria
  • Accessible code and build artifacts
  • Test environment and test data
  • Test reports and metrics
  • Defect and risk analysis
  • Release decision or rejection

Description

Software testing is the systematic evaluation of software to detect defects and ensure quality. It includes manual and automated tests, test planning, execution and result analysis. The goal is to reduce risk and increase reliability across development and operations. It is a core practice in modern software engineering.

  • Early defect detection reduces remediation cost.
  • Improved system reliability and stability.
  • Faster feedback for developers and product decisions.

  • Complete coverage is rarely achievable; residual risks remain.
  • Automation requires initial effort and maintenance cost.
  • Performance tests need realistic environments and data.

  • Test coverage

    Share of code/requirements covered by tests to estimate risk.

  • Defect density

    Number of defects found per area/time unit for prioritizing quality activities.

  • Mean Time To Detect (MTTD)

    Average time to detect a defect after its introduction.

Unit tests in microservices

Microservice teams use unit and component tests to ensure fast feedback loops.

UI automation with Selenium

Selenium suites perform end-to-end checks for critical user flows.

Load testing before scaling

Load tests identify bottlenecks and inform capacity decisions.

1

Define test strategy and scope

2

Design and prioritize test cases

3

Implement automation and integrate into CI

4

Run regularly, monitor and maintain tests

⚠️ Technical debt & bottlenecks

  • Legacy tests without structure and high maintenance effort
  • Missing test infrastructure for reproducible load tests
  • Manual checks instead of automated verifications
Test data provisioningUnstable test environmentsFlaky tests
  • Using test suites as a safety net instead of designing quality upfront
  • Introducing automation without maintenance budget
  • Using metrics like coverage as the sole quality goal
  • Blind trust in green builds without result inspection
  • Insufficient test data leads to false sense of security
  • Tests become outdated and no longer provide value
Test design and test case formulationScripting/automation (e.g., Python, Java)Knowledge of CI/CD and test infrastructures
Fast feedback cyclesAutomatability and repeatabilityScalability of test infrastructure
  • Time pressure in releases
  • Limited resources for test automation
  • Legacy systems without test APIs