テストを次の順序で行う場合, システムテストの目的として, 最も適切なものはどれか。 単体テスト → 結合テスト → システムテスト → 運用テスト
平成23年度 特別試験 ITパスポート試験 問54
This question's explanation and your answers so far.
問 54
- ア
正解 The correct answer is ア. The order given in the question, “Unit testing → Integration testing → System testing → Operational testing”, is the standard way software testing proceeds: the scope of verification is widened step by step from the lower level to the upper level. Unit testing covers one program (module) at a time, integration testing covers the parts where modules and programs are joined together, and system testing covers the “entire system” in which all programs have been combined. System testing is the last test phase carried out by the developer side, and it is where the developed system is comprehensively checked against the specifications fixed in requirements definition. There are broadly two kinds of things to check. One is the functional requirements: whether all the necessary business functions are present and produce correct results, and whether abnormal data is handled appropriately. The other is the non-functional requirements: performance such as response time and throughput, whether the system can withstand large volumes of data and concurrent access (load testing), whether it can recover when a failure occurs, and whether there are security weaknesses. Choice ア, “The developer verifies the functions and performance of the entire system”, correctly states both the scope (the entire system) and the viewpoint of verification (functions and performance), so it is the most appropriate purpose of the system test. Also keep in mind the division of roles: after the developer has finished checking quality in the system test, the user side performs the final check from the business viewpoint in the operational test that follows.
Incorrectイ
“Confirm that there are no problems with the interfaces between programs” is the purpose of integration testing, the phase one step before system testing. In integration testing, modules and programs that have passed unit testing are combined, and it is checked whether they are called correctly and whether the data passed between them matches in items, types, number of records, and order. Its scope of verification is limited to the joints between programs and does not comprehensively evaluate the functions and performance of the whole system, so it is not appropriate as the purpose of the system test.
Incorrectウ
“Focus on the internal structure of a program to confirm that the program operates correctly” is the purpose of unit testing, the first phase. Testing that focuses on the internal structure is called white-box testing, and test cases are designed so that all control flows such as branches and loops are exercised (statement coverage, decision coverage, and so on). Its target is one individual program, not a phase that looks at the entire system, so it is not the purpose of the system test.
Incorrectエ
“The user uses the system in the production environment to verify that business operations can be carried out” is the purpose of operational testing (equivalent to acceptance testing), which is done after the system test. Here the party performing the test is not the developer but the user side, who checks whether daily business runs smoothly using the system under the real business procedures, business data, and operating structure. Both the party performing the test and the viewpoint of verification differ from the system test, in which the developer checks the quality of the system, so this choice is wrong.
- Matching each test phase to its purpose — unit testing verifies a single program by focusing on its internal structure (white-box testing); integration testing verifies the interfaces between modules and programs; system testing is where the developer comprehensively verifies the functional and non-functional requirements (performance, load, security, and so on) of the entire system; operational testing is where the user verifies that business can be carried out in the real business environment. The trick is to tell them apart by “who performs it”, “how wide the scope is”, and “from what viewpoint it is checked”.
- The viewpoints checked in system testing — system testing is the final test performed by the developer. In addition to confirming that the functions work as specified, it also covers non-functional requirements such as performance (response time, throughput), tolerance of large data volumes and concurrent access, recovery when a failure occurs, and security. Performance testing and load testing are carried out in this phase.