Changes for page Testing Principles

Last modified by chrisby on 2024/04/01 12:52

From version 1.10
edited by chrisby
on 2023/05/29 12:27
Change comment: There is no comment for this version
To version 2.1
edited by chrisby
on 2023/05/29 12:28
Change comment: Renamed back-links.

Summary

Details

Page properties
Content
... ... @@ -7,7 +7,7 @@
7 7  * **Strictness**: If at least one test fails, it requires the developer's attention. He is not allowed to proceed with other work until that problem is fixed, and all tests must pass without exception.
8 8  * **Falsifiability** = The ability to fail.
9 9  ** Wrongfully failing tests are easy to detect, because a good developer will pay attention to all failing tests and fix the problems before moving on.
10 -** Wrongfully passing tests lack the ability to fail properly and are hard to detect because everything seems fine, which is why it is so important to focus on preventing them. They do damage by appearing to validate functionality that they do not. A properly executed Test Driven Development workflow is one of the best ways to avoid these kinds of problems, which are described in [[this article>>doc:Tutorials and Guides.Test-Driven Development Workflow with Git.WebHome]].
10 +** Wrongfully passing tests lack the ability to fail properly and are hard to detect because everything seems fine, which is why it is so important to focus on preventing them. They do damage by appearing to validate functionality that they do not. A properly executed Test Driven Development workflow is one of the best ways to avoid these kinds of problems, which are described in [[this article>>doc:Software Architecture.Testing.Test-Driven Development Workflow with Git.WebHome]].
11 11  * **Determinism**: Repeated tests should always produce the same result. The success of tests should never depend on anything other than the production code. Avoid sources of randomness that could cause the test to fail even though the production code is fine. These include random number generators, threads, host-specific infrastructure (operating system, absolute paths, hardware: I/O speed or CPU load), networking over the local network or Internet (since the network or other hosts may sometimes be down), time/timestamps, pre-existing values in the database or files on the host system that are not in the source code.
12 12  * **Single Action Execution**: The entire setup and testing process should require a single click or shell command. Otherwise, they will not be used regularly, which reduces the quality assurance of the production code.
13 13  * **Independence**: Tests should be independent and not influenced by other tests; the order in which tests are executed should not matter.