プログラミングを学習し始めて間もない初学者がソフトウェアテストについて学んだことをいかに記述しています。
以下の書籍で学習した内容のまとめです。(1〜3章まで)
高橋寿一『知識ゼロから学ぶソフトウェアテスト』翔泳社
https://www.amazon.co.jp/dp/B00HQ7S5CA/ref=cm_sw_em_r_mt_dp_U_LgFfEbBB2SVR7
テストケースは膨大なので、完全なテストは存在しない
テストは限られた時間内でもすべての機能をテストしなくては行けないので、どの手法を用いるべきか常に考えるべき
ホワイトボックステスト
全てのソフトウェアテストの基礎となる手法。
プログラムの論理構造が正しいかテストする。ソフトウェアの使用が間違っていて発生するバグは発見できない。
制御パステスト法
制御パスは命令と条件分岐の組み合わせのこと。
制御パスの総数はとても多いので、以下の手法を用いて、網羅する基準にしたがって実施する。
■ステートメントカバレッジ手法
カバレッジ(カバー(網羅)してる範囲、テストが終わった範囲)
ステートメント(命令文)
命令文をテストする手法で、条件分岐でのバグは発見できない、非常に弱いテスト手法
■ブランチカバレッジ手法
分岐コードに対して、判定がTRUE、FALSEの結果を少なくとも1回ずつ持つようにテストケースを書く手法
網羅するという点では優れているが、テストケースの数が増えるのが難点
■カバレッジ基準
一般の商用ソフトウェアなら60%〜90%で十分だが、人命に関わるソフトウェアなら100%、つまりソフトウェアによる。
■テスト駆動開発(TDD/Test-Driven Development)
①赤:小さい動作しないテストを書く
②緑:そのテストを通すコードを書く
③リファクタリング:コードをきれいにする
TDDで開発するとテストを書く時間がないとか言うことにならない。
ブラックボックステスト
プログラムを1種のブラックボックスに見立てて、ソースコードを見ずに様々な入力を行ってテストする手法
・ソフトウェアの4つの振る舞い
●入力を処理する
●出力を処理する
●計算を行う
●データを保存する
この4つの動きしかしないので、この4つの振る舞いをテストすれば良い。
★同値分割法・境界分析法(ブラックボックステストの基本)
4つの振る舞いのうち、入力処理と出力処理をソフトウェアが正しく処理しているかテストする。
ユーザーからの入力だけでなく、ネットワーク経由のデータの受信など様々な入力も含む
■同値分割法
入力領域を同値クラスと言う部分集合に分割して、その部分集合に含まれる値を等価とみなす作業
例:
入力A:1〜5まで入力可
入力B:1〜5まで入力可
出力C:A ✕ B
6 __ __ __ __ __
5| |
4| |
3| 有効同値 | 無効同値
2| |
1|__ __ __ __ __|
0 1 2 3 4 5 6
【有効同値のテストケース】 A=3、B=4 |
---|
【無効同値のテストケース】 A= 6、B= 6 A= 6、B= 6 A=-1、B=-1 A= 0、B= 0 |
⭐0は特別な数値でバグになりやすいので必ずテストする
■境界値分析法
「境界」(無効同値と有効同値の間、有効同値と有効同値の間)
プログラム上、境界には必ず条件分が必要で、その条件分の間違いを境界分析法でチェックする。
●包括関係バグ
> と >= の間違い
●On-Offポイント法
境界値のバグを見つけるために、境界のどの値をチェックするか考える手法
有効同値 | 無効同値 | 境界値 | |
---|---|---|---|
入力A | 1から5 | 0以下6以上 | 0,1,5,6 |
入力B | 1から5 | 0以下6以上 | 0,1,5,6 |
【テストケース】
●0 0は特別な数値でバグになりやすいので必ずテストする
●1 有効な値の下限
●3 有効な値の真ん中
●5 有効な値の上限
●6 無効な値の下限
■ディシジョンテーブルテスト
すべての入力の組み合わせを表にして、その入力に対する動作、出力を明記する。
多数の入力処理に対して、多数の出力処理をテストするというような手法。
■状態遷移テスト
状態(state)、遷移(transition)
状態遷移マトリックスという表をさくせいして、ソフトウェアがその項目道理動作しているかチェックする手法
期待していない状態に遷移するバグ、ある状態からある状態に遷移できないバグが発見できる。
※状態の数が多いと、モデルが複雑すぎて、モデリングに時間がかかるしテスト項目も多すぎるという問題点がある
■ランダムテスト
何ら考えもなしに入力や操作を行う手法。
(アドホックテスト、アドリブテスト、モンキーテストなどとも呼ばれる)
★ブラックボックステストまとめ
●入力ダイアログボクスがあれば「境界値テスト」を行う※まず行う
●復数の入力ダイアログボクスがあれば「デシジョンテーブルテスト」を行う
●ダイアログボックスの遷移があれば「状態遷移テスト」を行う