保守時の回帰テスト
稼働中の Web システムが利用しているライブラリに脆弱性が見つかったので,修正版のライブラリに更新した。この保守作業で実施する回帰テスト(リグレッションテスト)として,最も適切なものはどれか。
- ア脆弱性の検証用コード(PoC)を更新後のシステムに対して実行し,脆弱性が解消されたことを確認する。
- イ想定を超える大量のリクエストを与えて,更新後のシステムが処理できる限界の量や過負荷時の挙動を確認する。
- ウ更新前に合格していた既存機能のテストケースを更新後のシステムで再実行し,結果が更新前と変わっていないことを確認する。
- エランダムに生成した不正なデータを大量に入力し,更新後のライブラリに未知の脆弱性がないかを確認する。
正解と解説を見る
正解 ウ
この問題の基礎知識
- 回帰テスト(リグレッションテスト)は,プログラムや利用するライブラリなどを変更した後に,以前合格したテストを再実行し,変更していない部分に意図しない影響が生じていないかを確かめるテストである。
- 確認テスト(再テスト)は,修正の対象とした不具合が解消したかを確かめるテストであり,回帰テストとは目的が異なる。保守での変更では両方を行うことが多い。
- 負荷テストは処理能力の限界や過負荷時の挙動を確かめるテスト,ファジングは不正なデータを大量に入力して未知の脆弱性や異常動作を検出するテストである。
ア脆弱性の検証用コード(PoC)を更新後のシステムに対して実行し,脆弱性が解消されたことを確認する。
修正の対象とした不具合が解消されたかを確かめるテストであり,確認テスト(再テスト)に当たる。回帰テストは,変更していない既存の機能に意図しない影響が生じていないかを確かめるものである。
イ想定を超える大量のリクエストを与えて,更新後のシステムが処理できる限界の量や過負荷時の挙動を確認する。
負荷テストの説明である。性能面の確認として行うことはあるが,既存の機能が変更前と同じように動作するかを確かめる回帰テストではない。
ウ更新前に合格していた既存機能のテストケースを更新後のシステムで再実行し,結果が更新前と変わっていないことを確認する。正解
回帰テストは,変更の後に以前のテストを再実行し,正しい機能が保たれていることを確かめるテストである(NIST SP 500-235)。ライブラリの更新は,そのライブラリを利用する既存の機能に影響し得る。
エランダムに生成した不正なデータを大量に入力し,更新後のライブラリに未知の脆弱性がないかを確認する。
ファジングの説明である。未知の脆弱性の検出に有効だが,既存の機能が変更前と同じように動作するかを確かめる回帰テストではない。
検証用の出典出典照合済み
IPA 情報処理安全確保支援士試験 シラバス追補版(科目A-2)Ver.4.0(中分類12 4.(11),6.(1)) / NIST SP 500-235 Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric照合の根拠(4 件)
- ウ(正解): 変更後に以前のテストを再実行し,正しい機能が保たれていることを確かめる。ア(脆弱性の解消の確認)は新たに対象とした変更の確認であり,既存テストの再実行ではない
it is best to rerun all of the old tests after making modifications to software. The outputs should be examined to make sure that correct functionality was pre- served and that modified functionality conforms to the intended behavior.
NIST SP 500-235 · Section 11.4(新しいタブで開きます) - ウ(正解): 保守では既存のシステムを維持しつつ修正するので,回帰テストで既存機能への影響を確かめる
保守では問題の発生,改善,機能拡張要求などへの対応として,既存システム及び/又は既存ソフトウェアの安全性を維持しつつ修正や変更を行うことを理解する。
IPA 情報処理安全確保支援士試験シラバス追補版(科目A-2)Ver.4.0 · 中分類12 6.(1) 保守のタスク(新しいタブで開きます) - イ(誤り): 負荷テストは回帰テストとは別の種類のテストである
テストの種類(機能テスト,非機能要件テスト,性能テスト,負荷テスト,セキュリティテスト,回帰テスト(リグレッションテスト),探索的テストなど)
IPA 情報処理安全確保支援士試験シラバス追補版(科目A-2)Ver.4.0 · 中分類12 4.(11) システム検証テスト(新しいタブで開きます) - エ(誤り): 不正なデータを入力するのはファジング(ファズテスト)である
Similar to fault injection in that invalid data is input into the application via the environment, or input by one process into another process.
NIST CSRC Glossary(fuzz testing) · Definitions(新しいタブで開きます)