SlideShare a Scribd company logo
1 of 20
第1回「イントロダクション」
2011年6月10日(金)
服部 健太
ソフトウェア・テスト入門
自己診断テスト
2011/6/10ソフトウェア・テスト入門12
 このプログラムは,カードから3つの整数を読む.
この3つの値は,それぞれ三角形の3辺の長さを
あらわすものとする.プログラムは,三角形が不
等辺三角形・二等辺三角形・正三角形のうちのど
れかであるかをきめるメッセージを印字する.
 このプログラムをテストするのに十分と思われる
一連のテスト・ケースを書け.
チェックリスト
2011/6/10ソフトウェア・テスト入門13
1. 有効な不等辺三角形をあらわすテスト・ケースをもっているか
2. 有効な正三角形をあらわすテスト・ケースをもっているか
3. 有効な二等辺三角形をあらわすテスト・ケースをもっているか
4. 有効な二等辺三角形のばあいに,2つの等辺をふくむ3種類の組み合わせすべてをため
すことのできる少なくとも3つのテスト・ケースをもっているか
5. 1つの辺がゼロの値をもつテスト・ケースをもっているか
6. 1つの辺が負の値をもつテスト・ケースをもっているか
7. ゼロより大きい3つの整数をもち,そのうちの2つの和がそれ以外の1つと等しいよう
なテスト・ケースをもっているか
8. 7項において,1辺の長さが他の2辺の長さの和に等しいことを少なくとも3種類の順
列のすべてにたいしてためすことのできるテスト・ケースをもっているか
9. ゼロより大きな3つの整数のうち,2つの数の和がそれ以外の1つの数より小さくなる
テスト・ケースをもっているか
10. 9項において,少なくとも3種類の順列すべてを考慮することのできるテスト・ケース
をもっているか
11. すべての辺が0であるテスト・ケースをもっているか
12. 整数でない値をもつテスト・ケースを少なくとも1つはもっているか
13. 数値の個数がまちがっていることをためすテスト・ケースを少なくとも1つはもってい
るか
14. それぞれのテスト・ケースについて,入力の値にたいして予想される出力をしめしたか
プログラム・テストの
心理学と経済学
テストをするにあたっての適切な心構え
2011/6/10ソフトウェア・テスト入門14
「テスト」のあやまった定義
2011/6/10ソフトウェア・テスト入門15
 「テストとは,エラーがないことをしめしていく
過程である」
 「テストの目的は,プログラムが意図された機能
どおりに正しく動いてくれることをしめすことで
ある」
 「テストとは,プログラムが思いどおり動くこと
の確信をつくっていく過程である」
 思いどおりに動くプログラムであってもまだエラー
を含みうる(プログラムが意図されなかった動きを
するばあいにも,エラーが存在する)
 Etc.
「テスト」の適切な定義
2011/6/10ソフトウェア・テスト入門16
 「テストとは,エラーをみつけるつもりでプログ
ラムを実行する過程である」
 この目標にしたがうならば,テスト・データとして,
エラーを見つける確率の高いものを選ぶだろう
 プログラムはエラーをふくんでいるという仮定のも
とでテストを始めるべきである
 本来なら新しいエラーを発見したテスト・ケースを
「成功」と呼ぶべきだろう
テストの経済学
2011/6/10ソフトウェア・テスト入門17
 すべてのエラーを見つけるテストは可能か?
⇒「否」
 一般に,プログラムのすべてのエラーをみつけるこ
とは,非現実的であり,しばしば不可能でもある
ブラックボックステスト
2011/6/10ソフトウェア・テスト入門18
 プログラムを1つのブラックボックスとみなす.
 テストする人は,プログラムの内部構造と動作にいっさ
い関知しない.
 テスト・データは仕様書からだけ得られる
 このやり方で,プログラムの全エラーをみつけよう
とすれば,「徹底的な入力テスト」が必要.
 テスト・ケースとしてすべての可能な入力条件を使う.
 すべての「正しい」入力データだけでなく,すべての
「可能性のある」入力データを使ってテストしなければ
ならない.
⇒無限数のテスト・ケースが必要
ブラックボックステスト(2)
2011/6/10ソフトウェア・テスト入門19
 徹底的入力テストは不可能である
1. プログラムが,まったくエラーをもたないと保
障するようなテストはできない.
2. プログラム・テストの基本的な考え方には,経
済学的な見方が必要である.
 かぎられたテスト・ケースでみつけることのできる
エラーの数を最大にすべきである.
 たとえば,三角形のプログラムは,2,2,2を正三角
形とみれば,3,3,3のデータにたいしても,同じ働
きをするだろう
ホワイトボックス・テスト
2011/6/10ソフトウェア・テスト入門110
 テストする人は,プログラムの論理をしらべるこ
とによりテスト・データを引き出す
 すべての命令が少なくとも1回は実行されるよう
にすればよい?
 これだけでは不十分
 徹底的経路テスト
 テスト・ケースによってプログラムのすべての可能
な制御経路を実行すればそのプログラムは完全にテ
ストされたと言ってもよいことになる?
制御経路の数
2011/6/10ソフトウェア・テスト入門111
 たかだか20回の繰り返しループをもつ,一連のネス
トされた分岐があるようなプログラムのフロー
チャート
 520+519+…51通りの数
A
B
≦20
徹底的経路テストの欠点
2011/6/10ソフトウェア・テスト入門112
 経路の数が天文学的な値になる
 すべての経路がテストできたとしても,そのプロ
グラムはまだエラーをもっているかもしれない
 仕様と一致することを保証できない
 経路を抜かすことによるプログラムのあやまりがあ
りうる
 データに依存するエラーは発見できない
 例:if (a - b) < epsilon then …
 このエラーの発見は,aとbに与えられる値に依存している
テストの原則(1)
2011/6/10ソフトウェア・テスト入門113
 テスト・ケースの必須条件は,予想される出力ま
たは結果を定義しておくことである.
 予想される結果が事前に定義されていなかったら,
もっともらしくみえるがあやまっているという結果
を,正しい結果として判断することがある.
 それぞれのテスト結果を完全に検査せよ.
 テスト結果を注意深く検査することで,より多くの
エラーを発見できるようになる
テストの原則(2)
2011/6/10ソフトウェア・テスト入門114
 プログラマは自分自身のプログラムをテストしては
ならない.
 自分のエラーを見つけたいという態度を持ちにくい.
 プログラマの誤解にもとづくエラーをプログラムがふく
んでいるかもしれないため,自分のプログラムをテスト
しようとするときにも同様のあやまりをおかしやすい
 自分のプログラムをテストするのは不可能だと言ってい
るのではない.(他人がテストするほうが,より効果的
で成功するだろう)
 プログラム開発グループは,自分たちのプログラム
をテストしてはいけない.
テストの原則(3)
2011/6/10ソフトウェア・テスト入門115
 テスト・ケースは正しい予想できる入力条件ばかり
でなく,あやまった予想しないばあいも考えて書か
なければならない.
 プログラム作成時に突然発見されるようなエラーの多く
は,そのプログラムが,何か新しい予測できない状態で
つかわれたときにでてくる.
 予想しない誤っている入力条件をしめすテスト・ケース
は,正しい入力条件のためのテスト・ケースよりもエ
ラー発見率が高い
 プログラムをしらべるのに,それが意図されたよう
に動くかどうかをみただけでは,なかば成功したに
すぎない.残りの半分は,意図されなかった動きを
するかどうかをしらべることである.
テストの原則(4)
2011/6/10ソフトウェア・テスト入門116
 プログラムが本当に使い捨てのものでないかぎり,
そのテスト・ケースも使い捨てにしてはならない.
 テスト・ケースは価値のある投資である.
 すでに機能していた部分が修正によって故障したと
きは,そのエラーは見つけられなくなることがよく
ある.
テストの原則(5)
2011/6/10ソフトウェア・テスト入門117
 エラーはみつからないだろうという仮定のもとに
テストの計画をたててはいけない.
 プログラムのある部分でエラーがまだ存在してい
る確率は,すでにその部分でみつかったエラーの
数に比例する.
 エラーはまとまって存在し,場所によってエラーが
偏在する傾向がある.
 プログラムのある部分が他の部分より多くのエラー
をもっているようであれば,このエラーの多い部分
にテストを集中させることによって,テストの効果
があがる
テストの原則(6)
2011/6/10ソフトウェア・テスト入門118
 テストとは,ひじょうに創造的であり,知的に挑
戦しがいのある仕事である.
 大きなプログラムをテストするのに必要とされる創
造力は,そのプログラムを設計するときに必要な創
造力をしのぐ.
まとめ
2011/6/10ソフトウェア・テスト入門119
 テストとは,エラーを見つけようとしながら,プ
ログラムを実行する過程である.
 良いテスト・ケースとは,まだ発見されていない
エラーを検出する確率の高いものである.
 成功したテスト・ケースとは,まだ発見されてい
ないエラーを検出したものである.
次回予定
2011/6/10ソフトウェア・テスト入門120
 日にち
 2011年6月17日(金)
 時間
 10:30~12:00
 場所
 LB/2FA
 内容
 プログラムの検査,ウォークスルー,検討

More Related Content

More from Kenta Hattori

オブジェクト指向入門4
オブジェクト指向入門4オブジェクト指向入門4
オブジェクト指向入門4Kenta Hattori
 
オブジェクト指向入門3
オブジェクト指向入門3オブジェクト指向入門3
オブジェクト指向入門3Kenta Hattori
 
ソフトウェア・テスト入門2
ソフトウェア・テスト入門2ソフトウェア・テスト入門2
ソフトウェア・テスト入門2Kenta Hattori
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8Kenta Hattori
 
ソフトウェア・テスト入門7
ソフトウェア・テスト入門7ソフトウェア・テスト入門7
ソフトウェア・テスト入門7Kenta Hattori
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6Kenta Hattori
 
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5ソフトウェア・テスト入門5
ソフトウェア・テスト入門5Kenta Hattori
 
ソフトウェア・テスト入門4
ソフトウェア・テスト入門4ソフトウェア・テスト入門4
ソフトウェア・テスト入門4Kenta Hattori
 
ソフトウェア・テスト入門3
ソフトウェア・テスト入門3ソフトウェア・テスト入門3
ソフトウェア・テスト入門3Kenta Hattori
 
アルゴリズムとデータ構造15
アルゴリズムとデータ構造15アルゴリズムとデータ構造15
アルゴリズムとデータ構造15Kenta Hattori
 
アルゴリズムとデータ構造14
アルゴリズムとデータ構造14アルゴリズムとデータ構造14
アルゴリズムとデータ構造14Kenta Hattori
 
アルゴリズムとデータ構造13
アルゴリズムとデータ構造13アルゴリズムとデータ構造13
アルゴリズムとデータ構造13Kenta Hattori
 
アルゴリズムとデータ構造12
アルゴリズムとデータ構造12アルゴリズムとデータ構造12
アルゴリズムとデータ構造12Kenta Hattori
 
アルゴリズムとデータ構造11
アルゴリズムとデータ構造11アルゴリズムとデータ構造11
アルゴリズムとデータ構造11Kenta Hattori
 
アルゴリズムとデータ構造10
アルゴリズムとデータ構造10アルゴリズムとデータ構造10
アルゴリズムとデータ構造10Kenta Hattori
 
アルゴリズムとデータ構造9
アルゴリズムとデータ構造9アルゴリズムとデータ構造9
アルゴリズムとデータ構造9Kenta Hattori
 
アルゴリズムとデータ構造8
アルゴリズムとデータ構造8アルゴリズムとデータ構造8
アルゴリズムとデータ構造8Kenta Hattori
 
アルゴリズムとデータ構造7
アルゴリズムとデータ構造7アルゴリズムとデータ構造7
アルゴリズムとデータ構造7Kenta Hattori
 
アルゴリズムとデータ構造6
アルゴリズムとデータ構造6アルゴリズムとデータ構造6
アルゴリズムとデータ構造6Kenta Hattori
 
アルゴリズムとデータ構造5
アルゴリズムとデータ構造5アルゴリズムとデータ構造5
アルゴリズムとデータ構造5Kenta Hattori
 

More from Kenta Hattori (20)

オブジェクト指向入門4
オブジェクト指向入門4オブジェクト指向入門4
オブジェクト指向入門4
 
オブジェクト指向入門3
オブジェクト指向入門3オブジェクト指向入門3
オブジェクト指向入門3
 
ソフトウェア・テスト入門2
ソフトウェア・テスト入門2ソフトウェア・テスト入門2
ソフトウェア・テスト入門2
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
 
ソフトウェア・テスト入門7
ソフトウェア・テスト入門7ソフトウェア・テスト入門7
ソフトウェア・テスト入門7
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6
 
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5ソフトウェア・テスト入門5
ソフトウェア・テスト入門5
 
ソフトウェア・テスト入門4
ソフトウェア・テスト入門4ソフトウェア・テスト入門4
ソフトウェア・テスト入門4
 
ソフトウェア・テスト入門3
ソフトウェア・テスト入門3ソフトウェア・テスト入門3
ソフトウェア・テスト入門3
 
アルゴリズムとデータ構造15
アルゴリズムとデータ構造15アルゴリズムとデータ構造15
アルゴリズムとデータ構造15
 
アルゴリズムとデータ構造14
アルゴリズムとデータ構造14アルゴリズムとデータ構造14
アルゴリズムとデータ構造14
 
アルゴリズムとデータ構造13
アルゴリズムとデータ構造13アルゴリズムとデータ構造13
アルゴリズムとデータ構造13
 
アルゴリズムとデータ構造12
アルゴリズムとデータ構造12アルゴリズムとデータ構造12
アルゴリズムとデータ構造12
 
アルゴリズムとデータ構造11
アルゴリズムとデータ構造11アルゴリズムとデータ構造11
アルゴリズムとデータ構造11
 
アルゴリズムとデータ構造10
アルゴリズムとデータ構造10アルゴリズムとデータ構造10
アルゴリズムとデータ構造10
 
アルゴリズムとデータ構造9
アルゴリズムとデータ構造9アルゴリズムとデータ構造9
アルゴリズムとデータ構造9
 
アルゴリズムとデータ構造8
アルゴリズムとデータ構造8アルゴリズムとデータ構造8
アルゴリズムとデータ構造8
 
アルゴリズムとデータ構造7
アルゴリズムとデータ構造7アルゴリズムとデータ構造7
アルゴリズムとデータ構造7
 
アルゴリズムとデータ構造6
アルゴリズムとデータ構造6アルゴリズムとデータ構造6
アルゴリズムとデータ構造6
 
アルゴリズムとデータ構造5
アルゴリズムとデータ構造5アルゴリズムとデータ構造5
アルゴリズムとデータ構造5
 

Recently uploaded

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 

Recently uploaded (8)

ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 

ソフトウェア・テスト入門1