ランダムテストにおける問題改善手法の事例報告

株式会社ＤＴＳ
清水有樹 田処将司
2012年10月26日©2012 DTS Corporation. All rights reserved.

1プロジェクト紹介• 開発対象：Mobile FeliCa IC チップ Firmware• 開発形態：派生開発• 開発言語：C言語、アセンブリ• 開発規模：約128,000 Step(実行コード)• 開発人員：44名• 開発期間：2011/10 ～©2012 DTS Corporation. All rights reserved.

2

Mobile FeliCa について
• Mobile FeliCaとは？
一枚のカードで複数の機能を持つことが出来るFeliCa技術を携帯電話組み込み用ICチップで実現したもの• 利用シーン
電子マネーや定期券など、生活基盤を支える機能を提供=>システムやサービスにトラブルが発生した場合の社会的影響は計り知れない©2012 DTS Corporation. All rights reserved.

3

テスト対象評価製品

テスト対象F/W
入力・コマンドパケット※ コマンド数は131コマンド

更新参照

出力・レスポンスパケット内部状態・不揮発メモリ・揮発メモリ©2012 DTS Corporation. All rights reserved.

4

品質に対する取り組み• 実施しているテスト– 機能テスト– ユースケース、シナリオテスト– インターフェーステスト– タイミングテスト
etc.
=> 様々な観点でテストを行っているが、検出すべき欠陥がすべて取り除けるのか？
テスト間の隙間で漏れている観点がないか？

©2012 DTS Corporation. All rights reserved.

5

想定テストケース数• 想定テストケース数（概算）
入力の組み合わせパターン数を下記の式で算出
入力種類 ＊（ 水準 ＾ 因子数）
= 131 ＊ （4 ^ 8） = 8585216 通り
更に内部状態（揮発メモリ・不揮発メモリ）やコマンドの組み合わせが絡むとテストケース数が爆発してしまう=> 膨大なテストケースを全評価するのは不可能©2012 DTS Corporation. All rights reserved.

6

ランダムテストの導入• 膨大なテストケースを全評価するのは不可能• 2因子間の組み合わせ=> All-Pair法を使って別テストで実施• 多因子間の組み合わせ網羅的にバリエーションを持たせて実施できないか？
=> ランダムテストを導入©2012 DTS Corporation. All rights reserved.

7

ランダムテストの目的• パラメータの組み合わせの充実
他のテストだけでは網羅できていない多因子のパラメータを組み合わせたテストを実施• 他のテストの十分性の確認
ランダムテストの実施で検出した欠陥を分析し、他のテストで検出されるべき欠陥が検出されないことを確認することで、他のテストの十分性や品質を確認する©2012 DTS Corporation. All rights reserved.

8一般的なランダムテストの課題• テスト実施の効率性
無作為にテストの入力を作成すると下記のようなテストケースが出現してしまう• 重複したテストケース• 実施不可能なテストケース=> 期待するテスト空間をテストし終わるまでに時間を要する©2012 DTS Corporation. All rights reserved.

9一般的なランダムテストの課題• 結果確認の困難性
無作為にテストの入力を作成し、テストを実施すると、どのような出力になるか不明=>テスト結果の期待値の作成が困難になり、確認内容が限定的になる©2012 DTS Corporation. All rights reserved.

10実施した改善策<ランダムテストのサイクル>
テストケースの決定②テスト要素に同値分割を導入①選択比率の制御を導入

テストの実施③期待値エンジンとしてVDMを利用
結果の確認©2012 DTS Corporation. All rights reserved.

11

①選択比率の制御＜改善内容＞• テストケースやテスト種類の選択比率の制御– 状態に対応した入力の選択– 正常系・異常系の選択

＜目的＞
••
•
•

事前の条件ではじかれないように！
重複しないように！偏らないように！
複雑な条件が評価可能なように！
目的に合わせてテストが行えるように！

©2012 DTS Corporation. All rights reserved.

12

①選択比率の制御
＜具体例＞

コマンド
選択比率

テーブルによるコマンド選択

合計

状態1アアアイイイ

状態2ウエオウエオ

コマンドA

124121

1217

コマンドB1313173212コマンドC

25213221412

コマンドD

23227234

コマンドE

42410392624

コマンドF

4462532441100

100100100100100©2012 DTS Corporation. All rights reserved.

13

②同値分割の導入＜改善内容＞
コマンドの作成にて、要素ごとに同値分割を導入＜目的＞• 効率的に作成できるように！
• ランダム性を活かせるように！
• 実施したテストケースが把握しやすいように！

©2012 DTS Corporation. All rights reserved.

14

②同値分割の導入＜具体例＞• 正常系の作成– 全要素で同値分割を行い、その時点の内部状態で作成可能な値で組み合わせを行う
コマンドコード

要素A

要素B

要素C

• 異常系の作成– 正常系を作成した後に１箇所または複数個所を不正な値に置き換える©2012 DTS Corporation. All rights reserved.

15

③期待値エンジン＜改善内容＞
様々な入力に対応した期待値の作成が正確に行える期待値エンジンの導入– 形式仕様記述言語 VDM++＜目的＞• 正しい期待値が生成できるように！
• 結果の確認を自動化できるように！
• 細部まで結果の確認が行えるように！

©2012 DTS Corporation. All rights reserved.

16

③期待値エンジン
期待値エンジン

レスポンス

内部状態

比較

比較

コマンド

評価対象

レスポンス

内部状態

正しく動作する期待値エンジンを用いて、比較する©2012 DTS Corporation. All rights reserved.

17その他の改善• 評価開始初期状態の制御
初期状態に近い条件 => 評価される可能性が高い
初期状態から遠い条件 => 評価される可能性が低い
評価開始初期状態を制御することで、満遍なく評価を実施
評価空間

評価密度：低評価開始位置
評価密度：高©2012 DTS Corporation. All rights reserved.

18

その他の改善• シナリオパターンの導入
複雑な組み合わせが実行されないと到達しない条件=> 評価される可能性が低い
複数コマンドをシナリオとして登録し、評価を実施
評価空間到達条件困難空間
評価開始位置シナリオによる到達条件困難空間への遷移©2012 DTS Corporation. All rights reserved.

19

テスト実施条件と方法＜テスト実施方法＞
1週間の走行を複数台で各イテレートで実施＜テスト開始の条件＞・2因子間網羅のテストが実施済みであること・運用で想定されるシーケンステストが実施済みであること＜テスト終了の条件＞
・前後２コマンドの組み合わせがすべて発生していること
・同値分割したパケット要素の全同値が出現していること©2012 DTS Corporation. All rights reserved.

20

テスト実施結果• テスト実施
のべ走行時間 5500 時間
実施件数
4883094 件
検出欠陥数
13 件

• 欠陥の内訳
欠陥の分類

件数

2因子組み合わせ１件

多因子組み合わせ４件

入力間組み合わせ

４件

その他

４件

©2012 DTS Corporation. All rights reserved.

21

結果• ランダムテストの目的に対する結果– パラメータの組み合わせの充実• 多因子組み合わせの欠陥が検出できており、組み合わせの充実させる目的は満たせた– 他のテストの十分性の確認• ２因子間組み合わせで欠陥が１件発生したが、 2因子間網羅のテストの評価拡充のインプットとすることができた©2012 DTS Corporation. All rights reserved.

22

結果• ランダムテストの課題に対する結果– テスト実施の効率性• 1環境で1週間の走行で、約15万件のテストが実施できており、実施時間の効率性は十分に図れた• 重複や実施不可をテーブルや比率で事前に省くことで、全コマンドの組み合わせと全同値の出現を比較的短時間で確認することができた– 結果確認の困難性• 期待値に仕様書として記述しているVDMを用いることで正確な期待値を自動で確認することができた©2012 DTS Corporation. All rights reserved.

23

所感• ランダムテストと他テストの関係– テストの品質確保はレビューなどを実施して確保することが多
いが、すべてのテストが間違いなく行えている保証はない– テストを間引くこと、重複をなくすことも重要であるが、別観点のテスト同士が補完しあうことも重要• ランダムテストと仕様・設計・実装の関係– 設計時にテストを意識するよう働きかけることはテスターとして重要– 仕様で形式仕様などを作成しているのであれば、テストへの活用も検討すると良い©2012 DTS Corporation. All rights reserved.

24ご清聴、ありがとうございました

株式会社ＤＴＳ
ＩＣＴ事業本部ＩＣＴ第三部
清水 有樹
E-Mail：yu-shimizu@dts.co.jp
田処 将司
E-Mail：m-tadokoro@dts.co.jp©2012 DTS Corporation. All rights reserved.

25