Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第4章 自動比較

1,910 views

Published on

システムテスト自動化標準ガイド読書会で発表した資料です。

Published in: Technology
  • Be the first to comment

第4章 自動比較

  1. 1. 第4章 自動比較 第二回 システムテスト自動化標準ガイド 読書会 1 2015/05/23 @toku_toku3
  2. 2. 全体の流れ • 4.01 検証、比較、そして自動化 • 4.02 比較ツールは何を比較するか? • 4.03 動的比較 • 4.04 実行後比較 • 4.05 単純な比較 • 4.06 複雑な比較 • 4.07 テストの感度 • 4.08 異なるタイプの比較結果 • 4.09 比較フィルタ • 4.10 比較のガイドライン • 4.11 まとめ 2 3章で紹介した テスティングによる 実行結果と期待結果を 「比較」する手法 についての章
  3. 3. 4.01 検証、比較、そして自動化 3
  4. 4. 比較による検証 • テストの結果が正しかったのかどうか • 「検証」する必要がある 4 • 検証ってなにすればいいの • 実行結果と期待結果を「比較」して検証する
  5. 5. ご比較は計画的に • 自動化を検討する際は、 • 「何を」「どれくらいの粒度で」比較するのか • を考える必要がある ! • それらはテストの実装や、 • メンテナンスコストに大きな影響をもっている 5
  6. 6. ご比較は計画的に • 「正しい結果になっている事を確認する」 ! • 正しいってなに?どういう表示になればいい? ! ! ! 6
  7. 7. 結果の予想と実行結果の検証 • 参照テスト • 自動テストの期待結果として使えるかどうか、 • テスト実行の結果を手動で検証すること ! ! ! ! ! ! ! 7 • 期待結果を前もって用意するか参照テストするかは、 • 以下の項目を検討して決めるほうがよい• • • • • 1)期待結果の程度 • 2)期待結果の予想可能性 • 3)テスト対象のソフトウェアが利用可能か • 4)検証の品質
  8. 8. なぜ比較を自動化するのか • 単調な作業の繰り返し、大量の数値の比較は • 人間が得意な分野ではない
 • • 比較はテストの中で最も自動化しやすい ! • すべての比較を自動化する必要はない • 比較作業が一目でわかるものなら、テストの実行のみ自 動化するのもあり 8 ミスが起きやすい
  9. 9. 何を比較するべきなのか • 出力画面、ログファイル、DBなど、チェックすべき対 象は様々 ! • 手動によるアドホックなテストだと漏れが生じてしま う可能性がある ! • 自動化しておけば項目を追加することでテスティング 自体の品質を改善できる 9
  10. 10. 自動比較の限界 • 自動比較は実行結果と期待結果を単純に比較してい • るだけである ! • 柔軟ではないし、期待結果が変わるたびに • メンテナンスコストがかかるかもしれない ! • それでも、手動で比較するよりも何倍も正確に、早•
 く比較することはできる 10
  11. 11. 4.02 比較ツールは何を比較するか? 11
  12. 12. 比較ツールは何を比較するか? • 自動比較ツールは通称コンパレータと呼ばれる ! ✓ 何が比較できるか • テキスト、ファイル、データ、画像など ✓ 比較で何がわかるか • 比較された2つのデータが同じかどうか • またその差分 ✓ 比較でわからないものは何か • テストが成功しているかどうか 12
  13. 13. Q. 比較ツールは 何を使っていますか? 13
  14. 14. 4.03 動的比較 14
  15. 15. 動的比較とは • テストケースを実行しながら比較する手法のこと ! • 色々なツールでサポートされており、 • 人がチェックするのと同じように、画面に表示され るものをチェックするのに適している 15
  16. 16. デモ 16
  17. 17. テストケースへの工夫 • もしテストケースが対象に合わなくなってしまったら、 • そのテストケースは使用しない方がよい ! • もしかすると他のテストケースで使用するデータを • 破壊してしまうかもしれない ! ! • 動的比較なら、振る舞いを変えるための工夫を • スクリプトに加える事ができる 17
  18. 18. 4.04 実行後比較 18
  19. 19. 実行後比較とは • テストケースを実行した後に行われる比較のこと ! • 生成されたファイルやDBなど、画面出力以外のもの を比較する際によく用いられる ! • サポートしてるテスト実行ツールがあまりないの で、個別のツールを利用することが多い 19
  20. 20. デモ 20
  21. 21. 実行後比較 • 動的比較と違い、比較対象の選択ができる ! • 大まかにチェックして失敗していたら、 • それ以上細かい比較を行う必要はない ! • 不必要な比較を省くことで、 • 時間を節約することができる 21
  22. 22. 能動的/受動的な実行後比較 • 受動的な実行後比較 • 今まで説明してきた比較のこと • テストケース実行結果のうち、比較できるものをなんでも比較 する単純な手法 ! • 能動的な実行後比較 • 実行後比較で必要になる(関心のある)結果を、 • テストケースの実行時に保存して利用する手法 • 動的比較を行った際に着目するポイントと同じになるはず 22
  23. 23. 能動的/受動的な実行後比較 • 動的比較に比べて、 • 能動的な実行後比較には以下のようなメリットがある ! • 1)実行結果が保存される • 2)オフラインで比較できる • 3)様々な比較ツールが使える • 4)他の出力も保存できる ! 23 • が、一般的に動的比較によるテストを行うほうが多い
  24. 24. –システムテスト自動化標準ガイド P139より “テストケースが終わってから検証するよりも、 テストケースを実行している最中に その出力を検証する方がよい” 24
  25. 25. Q. 動的比較と能動的実行後比較 どちらを採用していますか? 25
  26. 26. 実行後比較の実装 • 実行後比較の実装は思うほど単純ではない • テスト実行ツールが、 • 実行後比較のための比較ツールを扱えるかはわからない ! ! ! ! ! ! • 手動で解決するのは自動化できてないので良くない 26
  27. 27. ! ! ! ! ! • 現実 • テスターが気合いで頑張る テスト実行と実行後比較 の結合の4つの方法 • 理想 • テスト実行ツールと自動比較ツール間の • インタフェースがシームレス ! 27
  28. 28. テスト実行と実行後比較 の結合の4つの方法 ! • テストハーネス • テスト実行ツールや自動比較ツールだけで対応できないタスクやイ ンタフェースを実装したもの • 必要に応じてテストメーターが自分で用意する ! • 具体的にこれ、というものは無いので、 • ハーネスの実装はバッチファイルやツールの拡張言語、通常のプロ グラムだったりと様々になる 28
  29. 29. テスト実行と実行後比較 の結合の4つの方法 ! • テストハーネス ! ! ! ! ! ! ! 29
  30. 30. 4.05 単純な比較 30
  31. 31. 単純な比較とは • 実行結果と期待結果が完全に同じかどうか比較する ! ✓ どんなに些細な違いでもすべて検出する ✓ シンプルゆえに誰でも理解しやすい ✓ 実装やメンテナンスのコストが低い ✓ 無視していい差異もすべてハイライトされてしまう 31
  32. 32. たとえば 32 diffツール (画像はWinMerge)
  33. 33. 4.06 複雑な比較 33
  34. 34. なぜ複雑な比較が必要になるか • 複雑な比較とは、実行結果と期待結果を • 「既知の違い」を使って比較する方法のこと ! • たとえば • * 会員毎に表示される固有のID • * ページを表示している日付 • などは差分として検知してほしくない場合がある 34
  35. 35. 4.07 テストの感度 35
  36. 36. センシティブかロバストか 36
  37. 37. テストの冗長性 • センシティブな比較を複数のテスト結果で行った場 合、多くのテストケースで同じ欠陥によって失敗す ることがある ! • 想定外の欠陥は別として、 • 1つの欠陥につき • 1つのテストケースが失敗するのが望ましい 37
  38. 38. テスト感度の戦略 • テストケースにおけるセンシティブとロバストの度合いはとても重要 ! • オススメ戦略1 • 「ソフトウェアの変更時に行われる基本的なチェック」は主にセンシ ティブな比較を行い、 • 「より詳細レベルのチェック」に大してはロバストな比較を用いる ! • オススメ戦略2 • テストケースのうち1、2個はセンシティブな比較を行い、 • 残りはロバストな比較にする 38
  39. 39. 4.08 異なるタイプの比較結果 39
  40. 40. 異なるタイプの比較結果 • • • • テキストファイル、DB、バイナリファイルの比較 ! • 文字列、GUI、画像の比較 ! • マルチメディアアプリケーション、 • 通信アプリケーションの場合はどうするのか 40
  41. 41. 4.09 比較フィルタ 41
  42. 42. フィルタとは? • 本当に得たい差異を取得するために、 • 実行結果と期待結果に1つずつ適用する変更/編集処理のこと ! ! ! ! ! ! • なじみのある例だと、sed/awk/grepのようなコマンドや、 • Perlの正規表現などを用いた処理がフィルタになる 42 比較プロセス
  43. 43. フィルタの長所と短所 • 長所 • 1)テキスト操作ツールを利用できる • 2)再利用できる
 3)比較の標準がより厳格
 4)実装とデバッグがより簡単 • 5)複雑な比較も実行可能 43
  44. 44. フィルタの長所と短所 • 短所 • 1)作成にプログラミング能力が必要 • 2)定期的なメンテナンスとデバッグが必要 • 3)再利用のためにドキュメントと継続的な管理が必要 44
  45. 45. 4.10 比較のガイドライン 45
  46. 46. 基本的な原則 ✓ シンプルにする ✓ ドキュメントに残す ✓ できるだけ標準化する ✓ 分割統治 ✓ 効率性を心がける ✓ ビットマップの比較を避ける ✓ センシティブ/ロバストなテストのバランスをとる ✓ 適用するプロジェクトの性質を理解する 46
  47. 47. 4.11 まとめ 47
  48. 48. 第4章 自動比較 • テストの実行結果を次回実行時の期待結果とすることが多い ! • 比較ツールはただ比較しているだけである • 期待結果が正しいかどうかをチェックすること ! • センシティブ/ロバストな比較のバランスを考える ! • テストは常にシンプルで、効率性を高めるためのものでなく てはならないことを念頭におくこと 48
  49. 49. ご清聴ありがとうございました。 49

×