超簡易的ソフトウェアテスト入門
(5分)
SEカレッジ
フィードバック
アジェンダ
1.はじめに…
2. テストとは
3.単体テスト(ユニットテスト)
4.いろんなテスト技法
5.まとめ
初めに…
• プログラムのバグ
• OSのバグ
• コンパイラのバグ
• フレームワークのバグ
バグは必ず潜んでいる!!
バグのないプログラムは作れない
テストとは
• テストでバグを潰せる
• システムの品質をあげるのはテスト
• テストはコードの冗長化ともいえる
テストは大事!
単体テストの位置づけ
要件定義
受け入れテスト
機能設計
コーディング
詳細設計
基本設計
単体テスト
結合テスト
システムテスト
ここ!!
単体テスト(ユニットテスト)とは
• 詳細設計通りの動作をするかどうかを確かめ
るテストのこと
(例)
消費税をかける関数
→100を渡すと108を返すかどうか
単体テスト(ユニットテスト)
• テストはプログラムの最少単位(ユニット)で行
われる。
- クラス、関数、1ファイルなど
いろんなテスト技法
• バグが潜みやすい場所
- 分岐/境界値/例外
これらを重点的にテストしよう。
いろんなテスト技法
• テスト項目の洗い出し
- ホワイトボックステスト
(プログラムの中身に着目)
- ブラックボックステスト
(プログラムの仕様に着目)
• 両方やってユニットテスト!
いろんなテスト技法
• ホワイトボックステスト
- 命令網羅[C0]
全ての命令
- 分岐網羅[C1]
全ての分岐
- 複合条件網羅[C2]
複合条件両方
• 基準はコードカバレッジ(網羅率)
- C2で100%にする(※無理なものは無理)
よ
り
細
か
い
いろんなテスト技法
• ブラックボックステスト
- 同値分割
同じ値を返す範囲(同値クラス)から
1つ値を抽出してテスト
- 境界値テスト
同値クラスの境界の前後値でテスト
• 両方出来れば良いが境界値だけやるプロ
ジェクトも多い
テストツール
• 単体テストは、プログラムを修正するごとに実
行する必要がある
• テストツールで自動化しよう!
テストツール
• Java->JUnit(Eclipse標準搭載)
• PHP->PHPUnit
• Ruby->RSpeck
• Python->Pspec
• その他,Geb,Spock
まとめ
• テストは大事!プログラムの冗長化!
• テストケースは効率良く洗い出す。
• 便利なツールは使う!
• テストは自動化!

ソフトウェアテスト入門