ソフトウェア開発におけるシステムテストに関する記述のうち, 適切なものはどれか。
平成24年度 秋期 ITパスポート試験 問33
This question's explanation and your answers so far.
問 33
- ア
正解 The correct answer is ア. System testing is the test in which software that has finished integration testing is assembled into a complete system together with the hardware, the network and so on, and is carried out by the development side (the developers) at the final stage of development. Its purpose is for the development side to take responsibility for confirming that the system satisfies what was agreed in the system requirements definition ── not only functional requirements, such as whether all the necessary functions are present, but also non-functional requirements, such as performance (response time, number of transactions processed), whether it can withstand the load, whether it recovers correctly when a failure occurs, and whether it meets the security requirements. Seen through the V-model, unit testing corresponds to program design, integration testing corresponds to software architectural design, and system testing corresponds to the “system requirements definition”, and that correspondence is exactly what choice ア describes as confirming whether the system requirements are satisfied. All three points match ── the party that carries it out is the development side, it is located at the final stage of the development process, and what it confirms is the system requirements ── so ア is the most appropriate.
Incorrectイ
“Confirming whether there are any excesses or deficiencies in the system requirements definition” is the role of the review carried out in the requirements definition process itself (validation and approval of the requirements definition document). System testing is the process that takes the fixed system requirements as a “measuring stick” and measures whether the finished system fits that stick; it is not the process that inspects the stick side (the content of the requirements definition itself) for excesses or deficiencies. Finding omissions in the requirements for the first time at the testing stage causes a large amount of rework, and it is also wrong in terms of how the work is divided among the processes.
Incorrectウ
Unit testing is the test that confirms whether each individual module (program) works correctly on its own, and integration testing is the test that combines modules that have passed unit testing and confirms whether the interfaces and cooperation between the modules are correct; both are separate processes that come before system testing. Moreover, since integration testing combines what has passed unit testing, the two are carried out in sequence and not at the same time. This choice is not a description of system testing, and it is also wrong as an ordering of the testing processes.
Incorrectエ
“Users conduct it independently of the developers, confirming the completed system's suitability for the business operations” is a description of acceptance testing (also called operational testing or delivery-inspection testing). Acceptance testing takes place after system testing, with the user, who is the ordering party, acting as the main body, in order to judge whether the actual business operations run without problems and whether what was delivered matches what was ordered. Both the fact that the party carrying it out is the user side and the fact that what is confirmed is suitability for the business operations differ from system testing, which the development side carries out to confirm that the system requirements are satisfied, so this choice is wrong.
- Memorize the testing processes by mapping them onto the development processes in the V-model: unit testing ↔ program design, integration testing ↔ software architectural design, system testing ↔ system requirements definition, acceptance testing ↔ requirements definition (business requirements). System testing is the final test performed by the development side, and it verifies not only functional requirements but also non-functional requirements such as performance, load and security.
- The quickest way to tell the choices apart is to use two axes: who carries it out and what is confirmed. Carried out by the development side and looking at whether the system requirements are satisfied → system testing; carried out by users independently and looking at suitability for the business operations → acceptance testing (operational testing). Mixing up these two is the most frequent trap.