機能安全に触れる機会があり、技術・手法群についてもとても勉強になりそうであったため、一つずつ理解していきたい
IEC 61508-3:2010 附属表B
IEC 61508-3:2010 附属表Bにおいて、要求安全度水準に従って採用すべき技術・手法が規定されている。
以下の表はIEC 61508-3:2010 附属表Bより引用
https://kikakurui.com/c0/C0508-3-2014-01.html
評価 | 説明 |
---|---|
HR | この安全度水準には、技法又は手段を使用することを強く推奨する。この技法又は手段を使用しない場合は、使用しない理論的根拠について、附属書Cを参照して安全計画時に詳述しなければならず、またアセッサと合意しなければならない。 |
R | この安全度水準には、HR推奨より低い推奨事項としての技法又は手段が望ましい。 |
— | 技法又は手段を使用することに関しては、推奨も反対もしない。 |
NR | この安全度水準には、技法又は手段を使用することを積極的には推奨しない。この技法又は手段を使用する場合は、使用する理論的根拠について、附属書Cを参照して安全計画時に詳述しなければならず、またアセッサと合意することが望ましい。 |
表B.2− 動的解析及び動的テスト
https://kikakurui.com/c0/C0508-3-2014-01.html
ID | 技術及び手段(a) | 参考文献 | SIL 1 | SIL 2 | SIL 3 | SIL 4 |
---|---|---|---|---|---|---|
1 | 境界値解析からのテストケース実行 | IEC 61508-7のC.5.4 | R | HR | HR | HR |
2 | エラー推定からのテストケース実行 | IEC 61508-7のC.5.5 | R | R | R | R |
3 | エラーシーディングからのテストケース実行 | IEC 61508-7のC.5.6 | — | R | R | R |
4 | モデルベーステストケース生成からのテストケース実行 | IEC 61508-7のC.5.27 | R | R | HR | HR |
5 | 性能 モデリング | IEC 61508-7のC.5.20 | R | R | R | HR |
6 | 同値クラス及び入力分割テスト | IEC 61508-7のC.5.7 | R | R | R | HR |
7a | 構造テストの範囲 (エントリ点) 100% b) | IEC 61508-7のC.5.8 | HR | HR | HR | HR |
7b | 構造テストの範囲 (ステートメント) 100% b) | IEC 61508-7のC.5.8 | R | HR | HR | HR |
7c | 構造テストの範囲(分岐) 100% b) | IEC 61508-7のC.5.8 | R | R | HR | HR |
7d | 構造テストの範囲(条件, MC/DC) 100% b) | IEC 61508-7のC.5.8 | R | R | R | HR |
IEC 61508-7:2010
IEC 61508-7:2010にて ”構造テスト” は以下の定義が示されている
C.5.8 構造テスト
注記1 この技術及び手法は,JIS C 0508-3の表B.2で引用されている。
目的:プログラム構造の幾つかのサブセットを実行するテストを適用する。
説明:プログラムの解析に基づき,大きな割合(大抵,あらかじめ目的として定められている。)を占めるプログラムコードを実行するために,一連の入力データを選ぶ。コードカバレッジ(E.13参照)は,要求する厳密さの水準によって次のように異なる。全てのケースにおいて,選択するカバレッジメトリックを100 %目標とすることが望ましい。100 %の範囲を達成できない場合は,100 %を達成できない理由をテスト報告書に文書化する(例えば,ハードウェアの問題が発生したときだけに入力する防御的コード)。次に示す最初の4技術は,JIS C 0508-3の表B.2の推奨事項として特に記述しており,テストツールによって広く支援されている。残りの技術も考慮に入れてもよい。
− エントリー点(コールグラフ)カバレッジ 全てのサブプログラム(サブルーチン又は機能)を1回以上(これは,最小限に厳格な構造的カバレッジ値である。)コールしていることを確実にする。 注記2 オブジェクト指向言語には,動的ディスパッチングによって呼び出すことができる,多様型の各種変異型(上書きされるサブプログラム)に適用する同一名のサブプログラムが幾つかある。これらの場合,上書きされる全てのサブプログラムを個々にテストすることが望ましい。
− ステートメント コード内の全てのステートメントを,1回以上実行したことを確実にする。 − 分岐 全ての分岐の両端をチェックすることが望ましい。ただし,幾つかの種類の防衛的コードに対しては実行が難しい場合がある。
− 複合条件 複合条件付き分岐(すなわち,AND/ORによってリンクしている分岐)における,全ての条件を実行する。MC/DC(modified condition/decision coverage,参考文献DO-178B)を参照。
− LCSAJ 線形コードシーケンス及びジャンプは,ジャンプによって終了する,条件付きステートメントを含むコードステートメントの線形シーケンスである。多くの潜在的サブパスは,その前のコードの実行によって課せられる入力データに対する制約のために,実行不可能となる。
− データフロー 実行経路,例えば,同一変数を書き込み,かつ,読み込むパスを,データ使用に基づいて選択する。
− 基礎パス 全ての経路が含まれる,開始から終了までの有限パスの最小セットの一つ(この基礎セットの中でパスの重なり合う組合せによって,プログラム部分を通るパスを形成することができる。)。全ての基礎パスのテストは,エラー位置を突き止めるために有効であることが示されている。参考文献: The Art of Software Testing, second edition. G. J. Myers, T. Badgett, T. M. Codd, C. Sandler, John Wiley and Sons, 2004, ISBN 0471469122, 9780471469124 Software engineering: Update. Ian Sommerville, Addison-Wesley Longman, Amsterdam; 8th ed., 2006, ISBN 0321313798, 9780321313799 Software Engineering. Ian Sommerville, Pearson Studium, 8. Auflage, 2007, ISBN 3827372577, 9783827372574 RTCA, Inc. document DO-178B and EUROCAE document ED-12B, Software Considerations in Airborne Systems and Equipment Certification, dated December 1, 1992
https://kikakurui.com/c0/C0508-4-2012-01.html
詳説
各コードカバレッジの説明は以下が分かりやすかったです
求める安全度水準に基づいて、要求されるカバレッジの網羅性・テスト強度が上がります。SIL4では、MC/DCカバレッジを求められます
作成する単体テストの規模に直結することから、ソフトウェア開発初期に安全要求水準が更新され次第、単体テスト用の工数は見直されるべきです