Changes for page Tips and Tricks

Last modified by chrisby on 2024/04/01 13:11

From version 1.18
edited by chrisby
on 2023/06/03 18:22
Change comment: There is no comment for this version
To version 1.20
edited by chrisby
on 2023/06/03 18:24
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -11,7 +11,7 @@
11 11  * **More is better.** When in doubt, it is better to write one test too many than one test too few. Possible duplication is a lesser evil than not testing at all.
12 12  * **Keep test resources close to the tests** to make their use easy to understand. Test resources should be placed in the same location as the test if the resource is only needed by that test.
13 13  * **Avoid threads**
14 -** Concurrent programming is prone to introducing errors, very difficult to test and debug properly.
14 +** Concurrent programming is prone to introducing errors and very difficult to test and debug properly.
15 15  ** If threads are necessary, keep the amount of asynchronous code to a minimum.
16 16  ** Separate synchronous and asynchronous logic to test them separately.
17 17  ** Prefer thread termination conditions over fixed wait times, as this usually increases test performance dramatically.
... ... @@ -57,6 +57,6 @@
57 57  
58 58  * **Test Case Logging**: If certain production code needs to be called several times with slightly different arguments, it may be useful to iterate over a list of these arguments, calling the production code and then asserting the result on each iteration. It is then often good practice to print out each element before each assertion. If an element causes a test to fail, the terminal output will immediately show which element caused the error.
59 59  * **Bug Coverage Responsibility**: If you find a bug or a case that has not yet been tested, it is your duty to create a test that covers it, so that the software is stable against that problem from that moment on.
60 -* **Range-Based Assertions**: Inaccurate results should never be asserted against an exact value, but only within an expected range of approximation. This includes all floating-point numbers, which are always imprecise.
60 +* **Range-Based Assertions**: Inaccurate results should never be asserted against an exact value, but only within an expected range of approximation. This includes all assertions of floating-point numbers.
61 61  * **Avoid Cascading Validation**: It would be very cumbersome to perform input validations, such as the famous null checks, and corresponding tests for each unit. A common solution is to define a module consisting of several classes. The class at the top, which receives the input for the first time, validates it once. All subsequent classes can safely assume that the input is not null when processing it, and no longer need to explicitly check or write tests for such cases.
62 62  * **Stick to Performance Requirements**: Once a performance test is passed, there is no need to optimize the performance of the code. Any effort in that direction is a waste of resources.