Testing
...

Software testing has the goal of assuring the quality of the build product.
Tests can be categorized by category and approach.
Each category tries to test different part of the entire system while each approach describes how to go about testing that part.
That said, tests can only show the existence of bugs, and never their absence.
Another axis on which tests can be ordered is whether they are deterministic or nondeterministic.

Tests are a core requirement for complex systems and help keeping the system flexible and malleable.

Deterministic Tests
...

Deterministic tests are tests which outcome does not change when you repeat them.

Nondeterministic Tests
...

Nondeterministic tests are tests which outcome can change when you repeat them.