|
| 1 | +# Testing System |
| 2 | + |
| 3 | +A testing system allows building an application that can run on different architectures and platforms (operating systems). |
| 4 | +For real testing, the application must run on a system with the appropriate architecture and platform. |
| 5 | +The testing system provides configurations that enable local builds followed by deployment of the resulting application (and necessary files - build artifacts) to a dedicated system for testing. |
| 6 | +The test result is returned to the local (build) system. |
| 7 | + |
| 8 | +Answer the following questions with "True" or "False" and justify your answer. |
| 9 | +Justifications should be simple, 2-3 sentences for each response. |
| 10 | + |
| 11 | +1. The application cannot be compiled on another architecture or platform, it must be compiled on the running system, not locally. |
| 12 | + - **Answer:** False |
| 13 | + - **Justification:** Cross-compiling suites, along with build systems or containers, can be used to create a build environment for testing on another platform or architecture. |
| 14 | + |
| 15 | +1. Testing systems can be virtual machines. |
| 16 | + - **Answer:** True |
| 17 | + - **Justification:** Yes, the application can be tested on a virtual machine. |
| 18 | + While there may be performance penalties, it is possible to test effectively on virtual machines. |
| 19 | + |
| 20 | +1. The testing system will be significantly more performant if written in a compiled language (C, Go, Rust) compared to an interpreted one (Python, JavaScript, Ruby). |
| 21 | + - **Answer:** False |
| 22 | + - **Justification:** The testing system invokes the application (via fork-exec). |
| 23 | + The choice of a compiled or interpreted language does not significantly impact this process. |
| 24 | + |
| 25 | +1. The testing system must run with privileged permissions. |
| 26 | + - **Answer:** False |
| 27 | + - **Justification:** The system performs operations such as compiling, running, and copying files over the network, all of which can be executed by non-privileged users. |
| 28 | + |
| 29 | +1. The build process in the testing system is CPU-intensive. |
| 30 | + - **Answer:** True |
| 31 | + - **Justification:** The build process involves compiling, linking, and other operations that are CPU-intensive. |
| 32 | + |
| 33 | +1. The testing system's runtime process can be CPU-intensive or I/O-intensive depending on the application's nature. |
| 34 | + - **Answer:** True |
| 35 | + - **Justification:** The nature of the application dictates whether the testing system's runtime process will be CPU-intensive or I/O-intensive. |
| 36 | + |
| 37 | +1. The testing system would benefit from a multi-threaded implementation. |
| 38 | + - **Answer:** False |
| 39 | + - **Justification:** The testing system launches other processes (build, application). |
| 40 | + A multi-threaded implementation would not significantly alter the overall behavior or efficiency. |
| 41 | + |
| 42 | +1. The local (build) system and testing systems can communicate using a network file system. |
| 43 | + - **Answer:** True |
| 44 | + - **Justification:** Yes, and it is recommended for efficient and easy transfer of build artifacts and test results. |
| 45 | + |
| 46 | +1. Testing systems can be used by multiple local (build) systems. |
| 47 | + - **Answer:** True |
| 48 | + - **Justification:** This is both possible and recommended to save resources, especially since testing systems may remain idle part of the time. |
| 49 | + |
| 50 | +1. Testing the application runtime is facilitated if the application is compiled into a static executable. |
| 51 | + - **Answer:** True |
| 52 | + - **Justification:** A statically compiled application does not require dependent libraries, making it easier to test by simply copying and running the executable. |
| 53 | + |
| 54 | +1. Applications built for a different architecture can be tested locally in a container without significant performance penalties. |
| 55 | + - **Answer:** False |
| 56 | + - **Justification:** Running an application built for another architecture locally requires an emulator, whether in a container or not. |
| 57 | + Emulators are typically slow, leading to significant performance penalties. |
0 commit comments