(前NTTデータ フェロー システム科学研究所長)山本 修一郎
今回は、テストの十分性について考察しよう。テストでは、ソフトウェアの実装が要求を満足することを示す証拠を確認できる必要がある。このためソフトウェアの実装が、要求を満足すると判断できるだけの根拠を示すためのテスト項目を要求から抽出できなければ、テストが十分ではないことになる。
テストの十分性を確認するためには、システムを必要とする発注者、システムを実装する開発者、実装されたシステムが要求を満たすことを確認する検証者との、テスト項目についての合意が必要である。
保証ケース(Assurance case)では、立証したい主張を証拠に基づいてステークホルダ間で議論することによって、主張についての合意を形成できる[1]。保証ケースはこれまで、テスト結果を証拠としてシステムの安全性を確認するために用いられてきた。最近では、システムのディペンダビリティを確認するために、ディペンダビリティケース(Dependability case)と呼ばれることもある。筆者らも、ディペンダビリティケース(D-Case)と称している。しかし、テストの十分性自体を保証ケースによって確認する方法については研究されていない。このため本稿では、保証ケースを用いてテスト項目が必要な確認内容を含むという主張を証拠によって立証することにより、テスト項目の十分性を保証する方法を紹介する。
テストの目的
IEEE Std. 829-2008[2]によれば、システムとその関連生産物に対して、以下の条件を満たすように、具体的な証拠を提供することがテストの目的である。
a)要求をシステムが満足すること
b)物理法則、ビジネス規則、前提条件に基づいて適切に問題を解決すること
c)意図された利用とユーザニーズをシステムが満足すること
保証ケースとテストの関係
保証ケースとテストの関係には、保証ケースの証拠としてテスト結果を用いる方向と、保証ケースを用いてテストの十分性を確認する方向がある。
前述したテストの目的に対する保証ケースの例を示すと図1のようになる。
図1 テスト目的に対する保証ケースの例(クリックで拡大)
テストの十分性に対する保証ケース作成手順
テストが十分であることを説明するためには、①システムが前提条件の下で要求仕様を満足することと、②前提条件からの逸脱に対してシステムが不具合を生じないことを確認するために、十分なテスト項目が用意されていることを示す必要がある。
最初の条件①が正常系テスト項目に、次の条件②が例外系テスト項目に対応する。例外系テスト項目を抽出するためには、要求仕様の逸脱(要求逸脱)を分析する必要がある。ユースケースなどによる仕様記述では自然言語で記述されているため、十分に要求逸脱を抽出することが困難である。このため、ISO/IEC/IEEE std.29148[3]に基づいた要求記述表を利用することにより、要求仕様の逸脱を識別する必要がある。
このような準備に基づいて、テストの十分性を確認するための保証ケースの作成手順をまとめると、図2のようになる。
図2 テストの十分性の保証ケース作成手順(クリックで拡大)
要求記述表では、表1に示すように、主体、対象、条件、機能、制約を記述する。主体として、要求を満たそうとするシステムを記述する。対象として、システムが要求に従って操作する資源(データ、被制御装置など)を記述する。
表1 要求記述表の構成(クリックで拡大)
条件部では、主体状態、対象状態、イベント条件、入力条件を記述する。
イベント条件では、機能を実行する契機となるイベントの内容とタイミングについての条件を記述する。
機能部では、入力に基づいて出力を生成する機能の内容を記述する。
制約部では、機能を実行する上での条件として、応答制約、出力制約、値制約を記述する。イベント事象に対応する応答事象の内容とタイミングについての制約条件が応答制約である。
要求逸脱分析表では、表2に示すように、要求仕様ごとにパラメータ、ガイドワード、逸脱とその重大性、識別IDを表形式で系統的に記述する。
表2 要求逸脱分析表(クリックで拡大)
パラメータには、要求記述項目に基づいて、システム、対象、イベント事象、入力、出力、応答事象を記述する。パラメータの逸脱を分類するガイドワードとして、なし、以外、部分、冗長、遅い、早いなどを用いる。ここで、パラメータの逸脱に起因する影響の重大性を評価することによって、テスト項目を選択することができる点に留意してほしい。これによって、重要性の高いテスト項目を優先して選択できる。
テストの十分性を確認するための保証ケースの構成例を図3に示す。
図3 テストの十分性を確認する保証ケースの概要(クリックで拡大)
この図では、まずシステムが要求を満足することを要求ごとに説明している。次に、各要求をシステムが満たしていることを示すために、要求ごとに正常系と異常系テストに分けて説明している。この図では、要求R-1についてだけ分解して示している。異常系については、逸脱種別として、条件逸脱、機能逸脱、制約逸脱に分けて、テストの十分性を説明するようにしている。
続きは本誌でご覧頂けます。→本誌を購入する
ご購入のお申込みは電話(03-3507-0560)でも承っております。
- 60:要求とアーキテクチャ
- 61:要求と保守・運用
- 62:オープンソースソフトウェアと要求
- 63:要求工学のオープンな演習の試み
- 64:Web2.0と要求管理
- 65:ソフト製品開発の要求コミュニケーション
- 66:フィードバック型V字モデル
- 67:日本の要求定義の現状と要求工学への期待
- 68:活動理論と要求
- 69:ビジネスゴールと要求
- 緊急:今、なぜ第三者検証が必要か
- 71:BABOK2.0の知識構成
- 72:比較要求モデル論
- 73:第18回要求工学国際会議
- 74:クラウド時代の要求
- 75:運用要求定義
- 76:非機能要求とアーキテクチャ
- 77:バランス・スコアカードの本質
- 78:ゴール指向で考える競争戦略ストーリー
- 79:要求変化
- 80:物語指向要求記述
- 81:要求テンプレート
- 82:移行要求
- 83:要求抽出コミュニケーション
- 84:要求の構造化
- 85:アーキテクチャ設計のための要求定義
- 86:BABOKとREBOK
- 87:要求文の曖昧さの摘出法
- 88:システムとソフトウェアの保証ケースの動向
- 89:保証ケースのためのリスク分析手法
- 90:サービス保証ケース手法
- 91:保証ケースのレビュ手法
- 92:要求工学手法の再利用
- 93:SysML要求図をGSNと比較する
- 94:保証ケース作成上の落とし穴
- 95:ISO 26262に基づく安全性ケースの適用事例
- 96:大規模複雑なITシステムの要求
- 97:要求の創造
- 98:アーキテクチャと要求
- 99:保証ケース議論分解パターン
- 100:保証ケースの議論分解パターン[応用編]
- 101:要求発展型開発プロセスの事例
- 102:参照モデルに対する保証ケース
- 103:参SEMATの概要
- 104:参SEMATの活用
- 105:SEMATと保証ケース
- 106:Assure 2013の概要
- 107:要求の完全性
- 108:要求に基づくテストの十分性
- 109:システムの安全検証知識体系
- 110:機能要求の分類
- 111:IREB
- 112:IREB要求の抽出・確認・管理
- 113:IREB要求の文書化
- 114:安全要求の分析
- 115:Archimate 2.0のゴール指向要求
- 116:ゴール指向要求モデルの保証手法
- 117:要求テンプレートに基づく要求の作成手法
- 118:ビジネスゴールのテンプレート
- 119:持続可能性要求
- 120:操作性要求
- 121:安全性証跡の追跡性
- 122:要求仕様の保証性
- 123:システミグラムとドメインクラス図
- 124:機能的操作特性
- 125:セキュリティ要求管理
- 126:ソフトウェアプロダクトライン要求
- 127:システミグラムと安全分析
- 128:ITモダナイゼーションとITイノベーションにおける要求合意
- 129:ビジネスモデルに基づく要求
- 130:ビジネスゴール構造化記法
- 131:保証ケース導入上の課題
- 132:要求のまとめ方
- 133:要求整理学
- 134:要求分析手法の適切性
- 135:CROS法の適用例
- 136:保証ケース作成支援ツールの概要