Wiki source code of Enhance Test Execution Speed
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | Fast-executing tests require less time and are executed more frequently, contributing to improved code quality. Therefore a high test execution speed is important. |
| 2 | |||
| 3 | |||
| 4 | === Measures === | ||
| 5 | |||
| 6 | * **Test type segregation**: Unit tests typically run much faster than other types of tests. For large test suites, consider running unit tests regularly on the developer's local machine, while scheduling more resource-intensive tests to run at a fixed rate in a continuous integration environment, for example. | ||
| 7 | * **Partial testing**: You don't have to run all tests every time. Often, it is sufficient to run only the tests related to recently changed code. | ||
| 8 | * **Mock slow dependencies** to minimize code execution time, especially operations such as I/O, transaction management, and networking. | ||
| 9 | * **Prefer in-memory databases during testing** for cleaner and faster operations compared to standard databases. | ||
| 10 | * **Identify performance bottlenecks** by increasing the number of threads: | ||
| 11 | ** If execution time remains constant, CPU is the bottleneck. Mitigate with faster CPUs, more cores, or additional machines. | ||
| 12 | ** If execution time decreases, I/O is the bottleneck. Use more threads, faster memory (such as SSDs), or additional storage. | ||
| 13 | * **Improve I/O speed by using RAM disks**, such as Linux's tmpfs tool. Configure your tests to direct all file interactions to the RAM disk. | ||
| 14 | * **Parallelize test execution.** Multiple threads can improve execution speed even on single-core processors by keeping the CPU busy while other threads wait for disk I/O. | ||
| 15 | * **Offload CPU-intensive tasks** to cloud-based computing resources: | ||
| 16 | ** Upload project files to the cloud. | ||
| 17 | ** The cloud service builds the project, runs tests, and generates a test report. | ||
| 18 | ** Upon completion, download the test report from the cloud. |