Part1 テスト設計技法の全体を理解する
来源:互联网 发布:h5 微信投票 源码 编辑:程序博客网 时间:2024/05/16 01:14
テスト設計の三つのポイント「より少ないテスト・ケース」「より多くのバグが見つかるテスト」「漏れがないようにテスト対象を網羅」について,テスト設計技法を紹介します。 テスト設計を簡単におさらいしましょう。テスト設計とは,「どうやってテストするか」を考える作業です。テスト戦略,テスト分析,テストのアプローチを元に,テスト設計技法を活用してテスト・ケースを作成していきます。テスト設計には,「より少ないテスト・ケース」で,「より多くのバグが見つかるテスト」を行い,「漏れがないようにテスト対象を網羅」する,という三つのポイントがあります。この三つのポイントを上手に行うためのテクニックがテスト設計技法です。まず,テスト設計技法にはどのようなものがあるのかを整理しましょう。 「漏れがないようにテスト対象を網羅」する方法として,「ソフトウエア・テストの基本を学ぼう」にて,コード・ベース,設計ベース,要件ベースという三つの視点でテスト対象を分析することで,漏れの無いテスト設計ができるということを説明しました。これらの視点でテスト設計をした際には,漏れがないようにテストできたかどうかを判断するために「カバレッジ」という指標を使い,網羅度合いを判断します。 ここでのテスト設計においては,カバレッジを測定できるようにテスト対象のソフトウエアやシステムの全体像を把握することがポイントになります。大きく分けて,「リスト」「マトリクス」「グラフ(モデル)」(図1)の利用が考えられます。 図1 リストは,いわゆるチェックリストです。マトリクスはその名の通り,二つの対象の組合せを確認するものですが,デシジョン・テーブルのようなものも該当します。グラフを使う場合は,テスト対象をフローチャート,状態遷移図,シーケンス図のようなモデルで表現し,処理の流れや振る舞いを網羅するようにします。 「より少ないテスト・ケース」では,基本的な考え方として「同値クラス」があります。テスト範囲を「同値」という一定の塊で分割し,無限大になってしまう可能性のあるテスト数を減らす考え方です。それ以外には,ブール論理で優先度の高い組み合せを導き出す「原因-結果グラフ」や,三つ以上のパラメータがあった場合にすべての値(選択枝)の組み合わせをテストするのではなく,二つのパラメータ間の値の組み合せを網羅するようにテスト・ケースを設計する「All Pairテスト」や「直交表」というテスト設計技法がこの分類に当てはまります。 「より多くのバグが見つかるテスト」では,境界値分析という技法があります。境界値分析を使って設計する方法を境界値テストと呼びます。また,境界値テストの考え方を発展させて,二つの変数の組み合せから境界値を見つけ出す方法としてドメイン・テストという技法もあります*1。また,より多くのバグを見つけるその他の方法としては,過去の不具合傾向を整理することで類似した不具合を狙い撃ちするエラー推測という技法があります。 テスト設計技法を「テスト設計の三つのポイント」で分類して説明しましたが,他に「ホワイトボックス」と「ブラックボックス」に分ける,古くからある有名なテスト設計の分類方法もあります。 ホワイトボックスは,ソフトウエアやシステムの内部構造に着目して,データの流れや制御を確認できるようテスト・ケースを作成する方法です。一方ブラックボックスは,要件や仕様通りにソフトウエアが動作するか確認できるようテスト・ケースを作成していく方法です。ホワイトボックスとブラックボックスの違いは図2のようになります。 図2 実際にテストする際は,ホワイトボックスでもブラックボックスでも,データを入力してソフトウエアを動作させて確認します。両テストの違いは,動作結果の確認方法にあります。ブラックボックスでは,仕様で定義した振る舞い通りに動作しているかを確認します。一方,ホワイトボックスでは,ソフトウエアの構造を理解し,狙い通りの処理経路を通って結果が正しく返ってくるかを確認します。 テスト設計の三つのポイントで示したテスト設計技法を,ホワイトボックスとブラックボックスの視点で整理すると図3のようになります。 図3 次のPart2では,ホワイトボックスとブラックボックスの代表的な技法について具体的に説明していきます。 テスト設計技法
- Part1 テスト設計技法の全体を理解する
- Part1 ERPパッケージの歴史と基本的な仕組みを理解する
- 技法の穴をふさぐ:工数編 --技法の穴をふさぐ:工数編
- 技法の穴をふさぐ:コスト編 --人月単価は案件ごとにバラバラ公表データで相場を知る
- 理解项目编辑器---part1:使用
- HTML4.01文書の全体構造
- 技法の穴をふさぐ:規模編--技法のルールは分かりにくい数え方の“迷い”をなくす
- part1
- PART1
- PART1
- 理解项目编辑器---part1:创建项目编辑器
- (四)Spark源码理解之BlockManager---part1
- (六)Spark源码理解之RDD----part1
- (七)Spark源码理解之TaskScheduler----part1
- (八)Spark源码理解之DAGScheduler---part1
- Part1 コンビニエンス・ストア編(1)---基本的な業務を知る
- 我对C++ Traits编程技法的一点点理解
- 带你深入理解STL之迭代器和Traits技法
- Windows Mobile 连接SQL SERVER数据库 SqlClient
- Char FX 7 VB
- JAVA系统下的FLASH,FLV视频应用解决方案
- ASP.NET中常用功能代码总结(6)——XML文件操作篇
- oracle 找出两表之间非重复数据
- Part1 テスト設計技法の全体を理解する
- javascript变化的时钟
- JS attachEvent和addEventListener 使用方法
- ExtJs2.0学习系列(1)--Ext.Window
- 大O记号法分析执行时间
- 与冯大辉谈数据库架构(InfoQ)
- oracle 找出两表之间重复数据
- 在Linux 64位系统中安装MySQL-Python-1.2.2的问题
- sprintf,你知道多少?