Changes for page Testing Concurreny

Last modified by chrisby on 2023/11/30 21:29

From version 1.4
edited by chrisby
on 2023/11/30 20:02
Change comment: There is no comment for this version
To version 1.5
edited by chrisby
on 2023/11/30 21:29
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,12 +1,12 @@
1 1  #### Problems
2 2  
3 -* Testing for concurrency is very difficult, which is why concurrency should be avoided in the first place.
4 -* In general, this requires a lot of iteration, which makes it resource-intensive.
5 -* The result is architecture dependent (OS, hardware), which introduces randomness and makes error detection unreliable.
3 +* **Hard for Developers**: Testing for concurrency is very difficult, which is why concurrency should be avoided in the first place.
4 +* **Resource Intensive**: In general, this requires a lot of iteration, which makes it resource-intensive.
5 +* **Undeterministic**: The result is architecture dependent (OS, hardware), which introduces randomness and makes error detection unreliable.
6 6  
7 7  #### Solution Approaches
8 8  
9 9  * **Monte Carlo Testing**: Write flexible, adaptive tests that can be executed with a variety of test settings, such as the number of threads used, types of operations, order of operations, and so on. Run these tests repeatedly on a test server, randomly varying the test settings. If something fails, then there is a problem with the code, and the settings used should be logged.
10 -* Do Monte Carlo Testing early to gain tests ASAP for your test repertoire or CI server. Run tests on each platform over time to either confirm the correctness of the production code or to uncover bugs in the test code.
11 -* Run the tests on a single machine, simulating application loads whenever possible.
12 -* There are tools for testing concurrent code, such as ConTest.
10 +* **CI Integration**: Do Monte Carlo Testing early to gain tests ASAP for your test repertoire or CI server. Run tests on each platform over time to either confirm the correctness of the production code or to uncover bugs in the test code.
11 +* **Frequent Execution**: Run the tests on a single machine, simulating application loads whenever possible.
12 +* **Tools**: There are tools for testing concurrent code, such as ConTest.