Vital pointofseleniumdesignpatternsandpractices

313
-1

Published on

http://seleniumjp.connpass.com/event/24206/

「Seleniumデザインパターン & ベストプラクティス」の勘所

の資料です。

#seleniumjp

Published in: Software

Vital pointofseleniumdesignpatternsandpractices

  1. 1. + 「Seleniumデザインパ ターン & ベストプラク ティス」の勘所 2016/02/06 第3回Selenium勉強会 株式会社SHIFT 太田健一郎 & 玉川紘子
  2. 2. + アジェンダ  どちらかというとアンチパターン なデザインパターン  テストコードを改善するデザイン パターン  更なる改善のために  Seleniumデザインパターン & ベスト プラクティス  自動テストウェアのアーキテク チャー  手動テストをそのまま自動化すると ありがちなテストコード
  3. 3. + Selenium Design Patterns and Best Practices  残念なテストコードから始めて各種 のデザインパターンとベストプラク ティスを適用しながら品質の高いテ ストコードへと変えていく手法が見 事です  書籍のコードはRubyですが、Web上 にJavaリソースもあります  2015/09に太田&玉川監訳でオライ リーさんから翻訳書として出版さ せて頂きました  Seleniumを使ったGUIテストのデ ザインパターンとベストプラクテ ィスを解説した書籍です
  4. 4. + 自動テストウェアのアーキテクチャー http://www.infoq.com/articles/gui-automation-patterns より
  5. 5. + 手動テストをその まま自動化すると ありがちなテスト コード  まずは問題のあるコードを見てみ ましょう  https://github.com/ootaken/Seleniu mBestPracticesBook
  6. 6. + どちらかというと アンチパターンな デザインパターン  Record and Playback パターン  Spaghetti パターン  Chain Linked パターン  Big Ball of Mud パターン
  7. 7. + Record and Playback パターン  利点  テストコードを素早く作成できます  プログラミングの経験が不要です  画面要素の検索が不要です  欠点  生成されるロケーターが分かりにくいです  テストコードの柔軟性がありません  テストデータが固定値で記録されます  生成されるテストコードが構造化されてい ません  生成されるコードが重複しています  概要  キャプチャ&リプレイ・ツールを 使って記録したスクリプトをそのま ま利用するパターンです  再実行のための一部定数の変数化や 実行前の置換は実施します
  8. 8. + Spaghetti パターン  利点  早くテスト自動化が始められます  テストコード自体が小さくなる可能 性があります  スモークテストには向いているかも しれません  欠点  このデザインパターンは長期的なテスト自 動化にはアンチパターンです  テストコード間の結合度が高すぎます  テストを並行実行できません  最初の方のテストで失敗するとテスト スィート全体が失敗します  他のテストの失敗が別のテストの失敗に繋 がります  概要  テスト自動化アーキテクチャと設計があり ません。そのため、  テストコードが構造化されていません  テストケース依存関係がある場合があり ます  テストケースを個別に実行できない場合 があります  Record and playback パターンを使って生 成されたテストコードの多くがこのパター ンで実装されています
  9. 9. + Chain Linked パターン  概要  Spaghetti パターンを改善し、テストコード 自体はDRY テストパターンを始めとする各 種のパターンで構造化したものです  ただし、依然としてテストケース間に依存 関係があります  依存関係に伴うSpaghetti パターンが抱える 欠点を引き継ぎます
  10. 10. + Big Ball of Mud パターン  概要  Spaghetti パターンにHermetic テス トパターンを適用し、テストコード 自体は独立しています  このため、個別実行、並行実行、 ランダム実行は可能です  しかし、テストコード全体としては 構造化されておらず、テスト自動化 アーキテクチャが不在のため、以下 の問題が発生します  部品となるテストコードやテスト データの変更によって、意図しな いテストケースの失敗が発生しま す  共有部品が保守困難なGod Class 化する可能性があります
  11. 11. + テストコードを 改善するデザイ ンパターン  DRY テストパターン  Hermetic テストパターン  ランダム実行順序原則
  12. 12. + DRY テスト パターン  利点  テストコードが部品で構築されるよ うになります  テストコードの重複が減ります  テストコードの修正が早くできるよ うになります  欠点  テストコードのプロジェクト構造が複 雑になります  適切なIDEのサポートが必須です  DRYを維持し続けるのは大変です  メンバー全員にプログラミングスキル が必要です  概要  テストコードにおいてDon't Repeat Yourselfを実践するパターンです  必要なコードは一つの場所に正しく まとめます
  13. 13. + Hermetic テスト パターン  利点  各テストケースはまっさらな状態で開始しま す  テストがまとめて失敗することがなくなりま す  テストコードが部品で構築されるようになり ます  テストのランダム実行が可能になります  テストの並行実行が可能になります  欠点  事前に設計と部品の開発が必要にな ります  テストの実行時間が増加します  テスト実行時のリソースの消費が増 加します  概要  テストケース間の依存関係を廃する パターンです  直接管理ができない外部への依存関 係を廃します
  14. 14. + ランダム 実行順序原則  利点  テストケース間の暗黙的な依存関係を 防ぎます  他のテストケースの結果が別のテスト ケースに影響を与えるのを防ぎます  テスティングフレームワークによって は標準で組み込まれています  欠点  テストコードに大量の修正が必要です  テストケースの失敗を追うのが困難で す  チームのフラストレーションがたまる 可能性が高いです  ランダム実行をサポートしていないテ スティングフレームワークが多いです  概要  テストケースを常にランダムに実行 します  パターンと言うよりは原則といえま す
  15. 15. + 更なる 改善のために  振る舞いをテストする  Write Once, Test Everywhere パター ン  Page Object パターン  Test Tool Independence パターン  テストスイートを成長させる  テストスイートを書くための戦略  スモークテストスイート→新機能 戦略→リグレッションスイート  データ駆動テスト  Default Values パターン  テストを安定させる  Action Wrapper パターン  Back Hole Proxy パターン
  16. 16. + ぜひ、 お手元に一冊!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×