ソフトウェアテスト
[4] ブラックボックステス
ト
Software Testing
[4] Black Box Testing Techniques
あまん ひろひさ ひろひさ
阿萬 裕久 裕久( AMAN
Hirohisa )
(C) 2007-2022 Hirohisa AMAN
1
テスト工程
(ウォータフォールモデルの場合)場合)
開
発
プ
ロ
セ
ス
要求分析
設計
外部設計
内部設計
実装(プログラミング)
テスト
運用・保守
(C) 2007-2022 Hirohisa AMAN
2
テストの場合)目的と内容と内容内容
目的と内容
ソフトウェアに存在するかもしれないエ存在するかもしれないエするかもしれないエエ
ラー(誤り,バグ)を見つけ出すり,バグ)を見つけ出すバグ)を見つけ出す見つけ出すつけ出す出すす
内容
ソフトウェアを見つけ出す実行し,バグ)を見つけ出す仕様通りの正しりの場合)正しし
いエ動ききを見つけ出すするの場合)かを見つけ出す確認するする
また,バグ)を見つけ出す仕様に存在するかもしれないエないエ状況に対しても障害がに存在するかもしれないエ対しても障害がしても障害がが
起こらないこらないエこと内容を見つけ出す可能な限り確認するな限り確認するり確認するする
(C) 2007-2022 Hirohisa AMAN
3
テストの場合)難しさしさ
設計者・開発者は,バグ)を見つけ出すもと内容もと内容仕様通りの正しりの場合)も
の場合)を見つけ出す作ろうとしたろうと内容した
仕様通りの正しりかどうかは,バグ)を見つけ出す仕様書に沿って確認に存在するかもしれないエ沿って確認って確認する
できる(ただし,バグ)を見つけ出すそれでも網羅は難しいは難しさしいエ)
仕様外に存在するかもしれないエついエては,バグ)を見つけ出すそもそも想定外であっ
たり,バグ)を見つけ出す気付かなかったりかなかったりするの場合)でチェック
は大変
(C) 2007-2022 Hirohisa AMAN
4
テストの場合)大事さ:さ:
テスト次第では防げたかもしれない事例では防げたかもしれない事例げたかもしれないエ事さ:例
AT&T の場合)ネットワークが全面停止でで750
万件の電話が不通の場合)電話が不通が不通りの正し( 1990 年)
原因: 更新時にプログラムを1行追加しただけに存在するかもしれないエプログラムを1行追加しただけを見つけ出す1行追加しただけ行追加しただけしただけ出す
だった
Ariane 5 ロケットが空中で爆発で爆発( 1996
年)
原因: 64 ビットの場合)数字をを見つけ出す 16 ビットで扱っていっていエ
た
※ 開発費 80 億ドル以上(1兆円近い)ドル以上(1行追加しただけ兆円近い)いエ)
火星調査機がが火星面へ墜落墜落 ( 1999 年)
(C) 2007-2022 Hirohisa AMAN
原因: 着陸のためのエンジン噴射の推力についの場合)ための場合)エンジン噴射の推力についの場合)推力についに存在するかもしれないエ
ついエ
5
用語:
テストケース,バグ)を見つけ出すテストスイート,バグ)を見つけ出すテスト
空間
テストケース( Test Case Case )
ある特定の場合)入力についデータ・条件の電話が不通(と内容期待される出される出す
力につい)
テストスイート( Test Case Suit Casee )
テストケースの場合)集合で,バグ)を見つけ出す一連のテストを実行するの場合)テストを見つけ出す実行する
もの場合)
テスト空間( Test Caseing Domain Domain )
プログラムを1行追加しただけに存在するかもしれないエ誤り,バグ)を見つけ出すりが無いことを保証できるいエこと内容を見つけ出す保証できるできるような
テストケースの場合)全集合
(C) 2007-2022 Hirohisa AMAN
6
テストの場合)例(1行追加しただけ):長さの変換さの場合)変換
※ 1行追加しただけキロメートル
= 0.621371 マイル
「キロメートル → マイル」変換プログラム マイル」変換プログラム変換プログラムを1行追加しただけ
【入力につい】 0 以上 10000 未満の実数とし,の場合)実数と内容し,バグ)を見つけ出す
小数点以下は は 2 桁まで有効まで有効(それより下は の場合)桁まで有効は
無いことを保証できる視)
【出す力につい】 マイルに存在するかもしれないエ変換した値で,小数点以下 で,バグ)を見つけ出す小数点以下は 3 桁まで有効
に存在するかもしれないエ切り捨てたものり捨てたものてたもの場合)
入力につい
期待される出される出す
力につい
入力につい
期待される出される出す
力につい
0
0.000
9.99
6.207
9999.99
6213.703
10
6.213
1
0.621
-1
エラー
1.001
0.621
10000
エラー
(C) 2007-2022 Hirohisa AMAN
他にも例外的に存在するかもしれないエも例外的と内容
な場合(数値で,小数点以下
以外を見つけ出す入力につい)
もあると内容よいエ
7
(※有名な問題)な問題)
テストの場合)例(2) :三角形問題
3 つの場合)整数を見つけ出す入力についと内容し,バグ)を見つけ出すそれぞれを見つけ出す辺の長さの場合)長さの変換さ
と内容した三角形を見つけ出す考える.そこで出来上がるのえる.そこで出す来上がるの場合)
が
二等辺の長さ三角形
正し三角形
不等辺の長さ三角形
の場合)いエずれなの場合)かを見つけ出す判定するプログラムを1行追加しただけに存在するかもしれないエついエ
て,バグ)を見つけ出すテストケースを見つけ出す考える.そこで出来上がるのえよ.
(C) 2007-2022 Hirohisa AMAN
8
三角形問題に存在するかもしれないエ対しても障害がするテストケース例
入力につい
期待される出される出す力につい
(2, 5, 5)
二等辺の長さ三角形
(5, 5, 5)
正し三角形
(3, 4, 5)
不等辺の長さ三角形
(0, 0, 0)
エラー ※点に存在するかもしれないエなってしまう
(3, 4, 7)
エラー ※線分に存在するかもしれないエなってしまう
(2, 5, 8)
エラー ※最長さの変換辺の長さの場合)長さの変換さ > 他の辺の長さの和 他にも例外的の場合)辺の長さの場合)長さの変換さの場合)和
(1.3, 4, 5) エラー ※実数がある(三角形と内容しての場合)不等式は成は成
立)
(-2, 4, 5) エラー ※負の数があるの場合)数がある
※ 三角形と内容しての場合)不等式は成: 最長さの変換辺の長さの場合)長さの変換さ
< 他の辺の長さの和
他にも例外的の場合)辺の長さの場合)長さの変換さの場合)和
さらに存在するかもしれないエは数値で,小数点以下 の場合)入力につい順序を入れ替えたものもあるとよいを見つけ出す入れ替えたものもあるとよいえたもの場合)もあると内容よいエ
(C) 2007-2022 Hirohisa AMAN
9
【演習1行追加しただけ】
整数の場合)ソーティングプログラムを1行追加しただけを見つけ出すテスト
せよ
いエま,バグ)を見つけ出す N 個の整数をソーティングするプロの場合)整数を見つけ出すソーティングするプロ
グラムを1行追加しただけが与えられているえられていエる
0 ≦ N ≦ 1行追加しただけ0000
入力についは(数列が格納されている)ファイルかが格納されている)ファイルかされていエる)ファイルか
ら
この場合)プログラムを1行追加しただけの場合)ための場合)テストケース(こ
こでは入力についだけ出すでよいエ)を見つけ出す考える.そこで出来上がるのえなさいエ
(C) 2007-2022 Hirohisa AMAN
10
【演習1行追加しただけ】 解答例
ランダムを1行追加しただけな数列が格納されている)ファイルか
{ 5, 1, 9, 2, 3, 7, … }
整列が格納されている)ファイルか済み数列み数列数列が格納されている)ファイルか
{ 100, 99, 98, 97, … }
{ 1, 2, 3, 4, … }
1 個の整数をソーティングするプロだけ出すの場合)場合,バグ)を見つけ出す N 個の整数をソーティングするプロを見つけ出す超える場合える場合
{ 2 }
{ 1, 2, 3, …, N, N+1 }
0 個の整数をソーティングするプロ
{}
他にも例外的に存在するかもしれないエもファイルが見つけ出すつからないエ,バグ)を見つけ出すオープン
に存在するかもしれないエ失敗する等の例外も考えるとよいする等の場合)例外も考える.そこで出来上がるのえると内容よいエ
(C) 2007-2022 Hirohisa AMAN
11
テストで重要なこと内容
結果をを見つけ出す記録する
どの場合)テストケースでどういエった不具合が見つけ出す
つかったの場合)か,バグ)を見つけ出すそれは誰がいつ見つけたがいエつ見つけ出すつけ出すたの場合)
か
後で修正するときに重要で修正しすると内容きに存在するかもしれないエ重要な情報となると内容なる
単に存在するかもしれないエ「動きかないエ」変換プログラムと内容
適切り捨てたものに存在するかもしれないエ伝えるえる
いエう報となる告するのは大事だが,伝え方も大事であるだけ出すでは無いことを保証できる
意げに開発者へ提示すべきではな味
曖昧な情報では役に立たないな情報となるでは役に立たないに存在するかもしれないエ立たないエ
不具合を見つけ出す報となる告するのは大事だが,伝え方も大事であるするの場合)は大事さ:だが,バグ)を見つけ出す伝えるえ方も大事であるも大事さ:である
不具合を見つけ出す見つけ出すつけ出すたこと内容を見つけ出す得意げに開発者へ提示すべきではなげに存在するかもしれないエ開発者へ墜落提示すべきではなすべきではな
いエ
(C) 2007-2022 Hirohisa AMAN
12
作ろうとしたった本人しか分からない苦労もあるので人間関係も大切にしか分からないエ苦労もあるので人間関係も大切に
もあるの場合)で人しか分からない苦労もあるので人間関係も大切に間関係も大切にも大切り捨てたものに存在するかもしれないエ
テスト容易性( t Caseest Caseabilit Casey )
テストの場合)容易性(やりやすさ)は
テストに存在するかもしれないエ費やされるコスト(工数)の場合)削減
テスト期間の場合)短縮
に存在するかもしれないエ直結する重要な特性
当然ながら品質の向上につながるながら品質の向上につながるの場合)向上に存在するかもしれないエつながる
(C) 2007-2022 Hirohisa AMAN
13
テスト容易性の場合)向上
設計や実装での場合)考える.そこで出来上がるの慮が不可欠が不可欠
どの場合)機が能な限り確認するがプログラムを1行追加しただけの場合)どの場合)部分に存在するかもしれないエ対しても障害が応して
いエるの場合)かが明確に存在するかもしれないエなるように存在するかもしれないエ作ろうとしたること内容が大事さ:
テストに存在するかもしれないエ配慮が不可欠した設計に存在するかもしれないエする
例:うまく関数に分ける関数に存在するかもしれないエ分け出すること内容で独立してテス
トできる
作ろうとしたる時にプログラムを1行追加しただけに存在するかもしれないエはテストを見つけ出す念頭に置くに存在するかもしれないエ置くく関数に分ける
テストで誤り,バグ)を見つけ出すりが見つけ出すつかってもすぐに存在するかもしれないエ対しても障害が処できでき
るよう,バグ)を見つけ出す何をやっているのかを見つけ出すやっていエるの場合)かが分かりやすいエ
ように存在するかもしれないエ作ろうとしたる
その場合)場しの場合)ぎ(「と内容りあえず動きけ出すば
OK 」変換プログラムの場合) 14
(C) 2007-2022 Hirohisa AMAN
感覚)で作ろうとしたるの場合)は,バグ)を見つけ出すはっきり言ってって時にプログラムを1行追加しただけ間と内容労もあるので人間関係も大切に
V モデルでの場合)対しても障害が応
単体・結合テスト: モジュールの場合)動き作ろうとした確
認する
システムを1行追加しただけテスト以降: システムを1行追加しただけの場合)動き作ろうとした確
確認する・検証できる
認する要求分析
受入れ・運用テス
外部設計
内部設計
実装
ト
システムを1行追加しただけテス
ト
単体・結合テス
ト
(プログラミン
グ)
(C) 2007-2022 Hirohisa AMAN
15
モジュール( module )
モジュールと内容は分離可能な限り確認するなプログラムを1行追加しただけの場合)単
位が違った
その場合)レベルで差し替えができるし替えたものもあるとよいえができるようなプログ
ラムを1行追加しただけの場合)かたまり(ソフトウェア部品)を見つけ出す意げに開発者へ提示すべきではな味
する
C 言って語では「関数」変換プログラムまたは「いエく関数に分けるつかの場合)関数
を見つけ出すまと内容めたもの場合)(通りの正し常は1個のプログラムは1行追加しただけ個の整数をソーティングするプロの場合)プログラムを1行追加しただけ)」変換プログラムがこ
れに存在するかもしれないエ該当する
Java の場合)ようなオブジェクト指向言って語の場合)場合は
(C) 2007-2022 Hirohisa AMAN
16
,バグ)を見つけ出す「クラス」変換プログラムがこれに存在するかもしれないエ該当する(※「関数」変換プログラムに存在するかもしれないエは
単体テスト,バグ)を見つけ出す結合テスト
単体テスト
1行追加しただけ つの場合)モジュールに存在するかもしれないエついエて,バグ)を見つけ出すさまざまな入
力についを見つけ出す与えられているえ,バグ)を見つけ出す適切り捨てたものな出す力についが得られるの場合)かを見つけ出す確
認する
結合テスト
複数の場合)モジュール(単体テスト済み数列み数列)を見つけ出す組
み数列合わせ,バグ)を見つけ出す結合関係も大切にを見つけ出す持った状態でモった状態でモでモ
ジュールが適切り捨てたものな入出す力についを見つけ出す行えるかを見つけ出す確認する
(C) 2007-2022 Hirohisa AMAN
17
システムを1行追加しただけテスト,バグ)を見つけ出す受入れ・運用テス
ト
システムを1行追加しただけテスト
システムを1行追加しただけが仕様通りの正しりに存在するかもしれないエ動き作ろうとしたするの場合)かを見つけ出す確認する
受入れテスト・運用テスト
システムを1行追加しただけテストと内容同様であるが,バグ)を見つけ出す実際の運の場合)運
用 環境下は での場合)テスト,バグ)を見つけ出す顧客によるテストに存在するかもしれないエよるテスト
の場合)意げに開発者へ提示すべきではな味
実際の運に存在するかもしれないエ運用してもらう(仕事さ:で使ってもらってもら
う等)
(C) 2007-2022 Hirohisa AMAN
18
テストの場合)分類
ブラックボックステスト
プログラムを1行追加しただけの場合)中で爆発身は見ないもの(ブラックボッは見つけ出すないエもの場合)(ブラックボッ
クス)と内容して,バグ)を見つけ出す仕様に存在するかもしれないエ基づいたづいエた動き作ろうとしたテストを見つけ出す行
う
ホワイトボックステスト
プログラムを1行追加しただけの場合)内部構造(主にフローチャート)に存在するかもしれないエフローチャート)
に存在するかもしれないエ基づいたづいエた動き作ろうとしたテストを見つけ出す行う
ランダムを1行追加しただけテスト
テストケースを見つけ出すランダムを1行追加しただけに存在するかもしれないエ(無いことを保証できる作ろうとした為に)作成に存在するかもしれないエ)作ろうとした成し
て動き作ろうとしたテストを見つけ出す行う
(C) 2007-2022 Hirohisa AMAN
19
ブラックボックステスト手法(1行追加しただけ)
同値で,小数点以下 分割法( equivalence part Caseit Caseionin
g Domain )
テストケースを見つけ出す効率的と内容に存在するかもしれないエ設計するため
一種のの場合)同値で,小数点以下 関係も大切にに存在するかもしれないエ基づいたづいエて入力につい空間を見つけ出す分割
1行追加しただけつの場合)分割を見つけ出す「同値で,小数点以下 クラス」変換プログラムと内容いエう
同値で,小数点以下 クラスは,バグ)を見つけ出す入力につい条件の電話が不通ごと内容に存在するかもしれないエプログラムを1行追加しただけか
ら同じ扱いを受けるはずのもの扱っていいエを見つけ出す受け出するはずの場合)もの場合)を見つけ出すまと内容めたも
の場合)
(同値で,小数点以下 クラスは2種の類)
有効同値で,小数点以下 クラス: 入力についと内容して有効なもの場合)
無いことを保証できる効同値で,小数点以下 クラス: 入力についと内容して無いことを保証できる効なもの場合)
(C) 2007-2022 Hirohisa AMAN
20