software-engineering testing

Definition

Intelligent Testing

The use of automated tools and algorithms to improve the quality of the test suite, rather than just running manually written tests.

Techniques

1. Test Case Generation

Tools automatically generate test inputs to maximise coverage (e.g., Path Coverage).

  • How: Symbolic execution, genetic algorithms, or random fuzzing.
  • Benefit: Finds edge cases humans overlook.

2. Mutation Testing

Testing the tests.

  • Concept: The tool intentionally introduces bugs (“mutants”) into the source code (e.g., changing a + b to a - b).
  • Goal: Run the test suite. If the tests pass (Green), the mutant “survived” (Bad: your tests are weak). If the tests fail, the mutant was “killed” (Good).
  • Metric: Mutation Score = Killed Mutants / Total Mutants.