Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

97 vues

Publié le

ソフトウェア基礎講座資料

Publié dans : Formation
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

  1. 1. 第3回「テスト・ケースの設計」 2011年6月24日(金) 服部 健太 ソフトウェア・テスト入門
  2. 2. テストの鍵 2011/6/24ソフトウェア・テスト入門32  可能なテスト・ケースのどのようなサブセットが もっともエラーを発見できる確率が高いか  われわれの探し求めているもの  テスト・データのセットをより賢明に選択できる一連の 思考過程  もっとも劣った手法  ランダム入力テスト(テスト・ケースを無作為に選ぶ)  ⇒最適なサブセットをさがしあてる確率は非常に低い  推奨する手法  ブラックボックス法をつかったテスト・ケースを開発し, ホワイトボックス法をつかって,必要なだけ補足的なテ スト・ケースを開発する
  3. 3. この章で論議する手法 ブラックボックス ホワイトボックス 2011/6/24ソフトウェア・テスト入門33  同値分割  限界値分析  原因-結果グラフ  エラー推測  命令網羅  判定条件網羅  条件網羅  判定条件/条件網羅  複数条件網羅
  4. 4. 命令網羅 2011/6/24ソフトウェア・テスト入門34  プログラムのすべての命令が少なくとも1回は実 行されること  必要条件ではあるが,十分条件ではない  テストの基準としては非常に弱い
  5. 5. 小さなプログラムの例 2011/6/24ソフトウェア・テスト入門35 def some_proc(a,b,x): if a>1 and b==0: x = x / a if a==2 or x>1: x = x + 1  経路aceをたどる1つのテ ストケースを書けば,す べての命令を実行可能  some_proc(2,0,3)  発見できないエラー例  andがorだったら  x>1がx>0だったら  xが変わらないのがバグ だったら a>1 and b==0 a=2 or x > 1 x=x/a x=x+1 True False True False a b c d e
  6. 6. 判定条件網羅(分岐網羅) 2011/6/24ソフトウェア・テスト入門36  それぞれの判定条件が真と偽の結果を少なくとも 1度ずつもつようにテスト・ケースを書く  それぞれの分岐方向が少なくとも1回はたどる  基本的にはすべての分岐方向が実行されれば,すべ ての命令が実行されることになるので,命令網羅よ りは強い基準  問題:  P.5のプログラムについて,判定条件網羅を行うに は,どのようなテスト・ケースを与えれば良いか?  また,このときP.5で示したエラー例のうち,発見 できるものはどれか?
  7. 7. 条件網羅 2011/6/24ソフトウェア・テスト入門37  判定におけるあらゆる条件で,すべての可能な結果 を少なくとも1回はとるようにテスト・ケースを書 く  例:  for (k = 0; k <= 50 && j + k < quest; k++)  k≦50, k>50, j+k<quest, j+k≧questの場合のテスト・ ケースを書く  j = 0, quest = 52とj = 0, quest = 10  判定条件網羅では,j+k<questが偽になる状況を調べる ことなく,k=0~51までループを実行させて満足してし まう  問題:  P.5のプログラムについて,条件網羅を満足するテス ト・ケースを考えよ
  8. 8. 判定条件/条件網羅 2011/6/24ソフトウェア・テスト入門38  条件網羅の基準では,if A and Bをテストする場 合,Aが真でBが偽,Aが偽でBが真という2つの テスト・ケースでも満たされる.  ⇒if文におけるthen節が実行されない  1つの判定条件において  それぞれの個別条件がすべての可能な結果を少なく とも1回はとるようにする  それぞれの条件判定が可能な結果を少なくとも1回 はとるようにする
  9. 9. 複数条件網羅 2011/6/24ソフトウェア・テスト入門39  それぞれの判定における条件付き結果の可能なすべ ての組み合わせをためすテスト・ケースを書く  例: i = 0; not_found = true while i < tbl_size and not_found: // search table i++ i < tbl_size not_found 備考 True True True False テーブルの途中で中身を見つける False True 中身が見つからない False False 中身がテーブルの最後にある
  10. 10. 問題 2011/6/24ソフトウェア・テスト入門310  P.5のプログラムにおいて,複数条件網羅基準を 満たすテスト・ケースを考えよ  それぞれの判定において条件付き結果のどのような 組合せが考えられるか?  それを満たすテスト・ケースは?
  11. 11. 同値分割 2011/6/24ソフトウェア・テスト入門311  可能な入力のうちのサブセットから,エラー発見の 確率が高くなるようなものを見つけるための手法  プログラムの入力領域を有限の数の同値のクラスに 分割する  同値クラスのなかの1つのテスト・ケースがエラーを発 見すれば,同じクラスの他のすべてのテストケースも同 じエラーを発見するだろう.  同値分割によるテストケースの設計 1. 同値クラスを識別する 2. テスト・ケースを定義する
  12. 12. 同値クラスの見わけ方 2011/6/24ソフトウェア・テスト入門312  それぞれの入力条件をとりあげ,2つ以上のグ ループに分割する  有効同値クラス  プログラムへの有効な入力をあらわす  無効同値クラス  あやまった入力値をあらわす  次のような表を作って列挙していく 入力条件 有効同値クラス 無効同値クラス
  13. 13. 見わけるための指標 2011/6/24ソフトウェア・テスト入門313  入力条件が値の範囲を指定する場合は1つの有効同 値クラスと2つの無効同値クラスを選んで指定  例:「項目数は1から999まで」  入力条件が入力値のセットを指定し,それぞれのプ ログラムの中で異なった扱いをされると考える理由 がある場合,それぞれに有効同値クラスを選び,1 つの無効同値クラスを選ぶ  例:「座席の種類は,S席,A席,B席がある」  入力条件が「ねばならぬ」という状況を指定する場 合,1つの有効同値クラスと1つの無効同値クラス を選ぶ  例:「名前の1文字目は英字でなければならない」  同値クラスのなかの要素が,プログラムで同一に扱 われないと思う理由がある場合,さらに小さく分割
  14. 14. テスト・ケースの見わけ方 2011/6/24ソフトウェア・テスト入門314 1. それぞれの同値クラスに一連の番号をつける 2. できるだけ多くのカバーされていない有効同値クラ スをカバーする新しいテスト・ケースを考えて書き, これをすべての有効同値クラスがテスト・ケースで カバーされるまでおこなう 3. カバーされていない無効同値クラスの1つをカバー するテストを書き,すべての無効同値クラスがテス ト・ケースでカバーされるまでつづける  ある種のあやまりをもつ入力値をチェックする場合, 他のあやまりをもつ入力値のチェックが隠されるかも しれない.  例:「製本の型式(上製本,並製本,ルーズリーフ)と数量 (1~9999)を入れよ」という指定に対して「XYZ, 0」
  15. 15. 例:WTLの作業線入力 2011/6/24ソフトウェア・テスト入門315 入力条件 有効同値クラス 無効同値クラス メインオーダコードは3 ケタの数字(ただし1文 字目は英字可) 333,E11 なし,1, 9999,1EE, サブオーダコードは3ケ タの数字 555 9999,0 開始,終了時間は15分 単位で指定 10:15 15:32, 26:00, 15:99 作業時間15分以上 10:30-13:00 10:15-10:15,10:15-9:15 作業区分は G,MA,CM,DB,TR G,MA,CM,DB,TR X 外出指定可能 指定のあり,なし 備考欄は20文字まで “休業”,なし “XX…XX”(21文字以上 の文字列)
  16. 16. 限界値分析 2011/6/24ソフトウェア・テスト入門316  限界条件とは,入力同値クラスと出力同値ク ラスの端の真上,あるいはその上かしたに位 置する状況.  同値クラスのばあいは,その代表としてどんな要素 をえらんでもよいが,限界値分析では,同値クラス のそれぞれの端がテストの対象となるように,1つ または複数個の要素をえらぶことが必要  入力条件に注意を集中させるだけでなく,テスト ケースは,また結果空間を考慮することによっても 得られる  限界値分析によって,たとえば,A+B>Cとな るところをA+B≧Cとコーディングされてし まったエラーを発見できる
  17. 17. 限界値分析の指標 2011/6/24ソフトウェア・テスト入門317  入力条件が値の範囲を指定する場合,その両端のテ ストケースと,それらを超えた状態の無効入力テス トケースを書く.  -1.0~+1.0であれば,-1.0, 1.0, -1.001, 1.001のテストケース を書く  入力条件がいくつかの値を指定するばあい,値の数 の最大数と最少数,そして1つ少ない数と多い数の テストケースを書く  入力ファイルが1~255のレコードを含む可能性があるときは, 0, 1, 255, 256レコードのテストケースを書く  個々の出力条件について,指標1をつかう.  たとえば,プログラムが月ごとの所得控除額を計算するとし て,最小値が0円で最大値が11万円ならば,0円と11万円が控 除されるようなテストケースを書く
  18. 18. 限界値分析の指標(2) 2011/6/24ソフトウェア・テスト入門318  個々の出力条件に指標2を適用する  情報検索システムが入力質問にたいしてもっとも関 係深い抄録を表示するとして,4件より多い抄録は 表示しないとした場合,プログラムが0件と1件と4 件の抄録を表示する場合のテストケースを書く,そ してプログラムがあやまって5件の抄録を表示する 可能性のあるようなテストケースを書く  プログラムの入出力が1組の順序データセット (順次ファイル,線形リスト,表)である場合, その1組の最初と終わりの要素に焦点をあわせる  くわえて,他の限界条件をみつけるための「カ ン」を働かせる
  19. 19. 限界値分析の例 2011/6/24ソフトウェア・テスト入門319  MTESTは選択式の試験を採点するプログラム  入力はOCRで読み込まれたファイルで80字のレコードを含む  学生数の最大200 題 1 80 質問数 1 3 4 9 正 答 1-50 10 59 6 0 2 8079 1 9 正 答 51-100 10 59 6 0 2 8079 … 学生番号 1 9 学生の答 1-50 10 59 6 0 3 8079 1 9 学生の答 51-100 10 59 6 0 3 8079 学生番号 学生の答 1-50 3……
  20. 20. 出力レコードの仕様  以下の4つの出力レコードがある  学生の名前順にならべた各学生の成績と等級の報告 書  成績順にならべた同様の報告書  成績の平均値,中央値,標準偏差をしめす報告書  質問番号順に,それぞれの質問の正答率 2011/6/2420 ソフトウェア・テスト入門3
  21. 21. 例題の限界値分析(入力限界)  空の入力ファイル  題名レコードがない  1字の題名  80字の題名  質問が1つの試験  質問が50の試験  質問が51の試験  質問が999の試験  質問が0の試験  質問数のはいるフィールドに数字で ない値  題名レコードのあとに正解レコード がない  正解レコードが1つ余分にある  正解レコードが1つたりない  学生数が0人  学生数が1人  学生数が200人  学生数が201人  ある学生レコードは解答レコード1 つもっているが,その正解レコード は2つある  上記の学生はファイルの第1番目の 学生  上記の学生はファイルの最後の学生  ある学生は解答レコードを2つもっ ているが,その正解レコードは1つ しかない  上記の学生はファイルの第1番目の 学生  上記の学生はファイルの最後の学生 2011/6/2421 ソフトウェア・テスト入門3
  22. 22. 例題の限界値分析(出力限界)  「報告書1,2」  (学生数が0人)  (学生数が1人)  (学生数が200人)  全ての学生は成績が同じ  全ての学生は成績がちがっている  すべてではないが,何人かの学生は 同じ成績  ある学生は0点  ある学生は100点  ある学生はもっとも低い可能な名称 値をもつ  ある学生はもっとも高い可能な名称 値をもつ  学生数は1ページの報告書に収まる のにちょうどよい数  学生数は1人の余分をのぞけば,他 の学生が1ページにおさまるような 数  「報告書3」  平均値は最高値をもつ  平均値が0となる  標準偏差値が最高値をもつ  標準偏差値が0となる  「報告書4」  (学生数が0人)  すべての学生は質問1を正しく答え る  すべての学生は質問1をあやまって 答える  すべての学生は最後の質問を正しく 答える  すべての学生は最後の質問をあや まって答える  質問数は,報告書がちょうど1ペー ジになるような数  質問数は,1人の余分をのぞけば報 告書がちょうど1ページになるよう な数 2011/6/2422 ソフトウェア・テスト入門3
  23. 23. 次回予定  日にち  2011年7月1日(金)  時間  10:30~12:00  場所  LB/2FA  内容  テストケースの設計(その2) 2011/6/2423 ソフトウェア・テスト入門3

×