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.

#STAC2014 システムテスト自動化ハンズオン

17,039 views

Published on

STAC2014

Published in: Technology
  • Be the first to comment

#STAC2014 システムテスト自動化ハンズオン

  1. 1. STA Introduction 2014/12/14 kyon_mm
  2. 2. Self Introduction kyon_mm Test Architect TDD/BDD Expert 27 years old.
  3. 3. Time Table 11:50 : Ice break, deploy, test 13:15 - 14:15 work 14:30 - 15:30 work 15:50 - 16:35 work 16:35 - 17:00 closing
  4. 4. Agenda Today’s Goal System Test Automation About today’s Challenge Geb+Spock
  5. 5. Today’s Goal
  6. 6. 目的 練習する事 効果の高いものに集 中する 一通りやってみる
  7. 7. 目的 練習する事 テスト対象の見極め テスト設計 優先順位 プロセス
  8. 8. Testing! 「あなたたちが持つテスト技術 によってこの製品をより良くす る」ということが使命です。 今回は手始めにテストレベルが 高いものからやってみるという 状況で考えてみてください。
  9. 9. Testing! 「開発者の怠惰サポート」より 「気づきにくい問題の発見」を 「生成可能なテスト」より「生 成しづらいテスト」を 「特定コンテキストだけ」より 「複数コンテキスト」を
  10. 10. Agenda Today’s Goal System Test Automation About today’s Challenge Geb+Spock
  11. 11. System Test Automation
  12. 12. System Test Automation System Test Automation Process
  13. 13. System test システム全体を動作させてのテ スト。コンポーネントテスト、 統合テストでは検出されないよ うなバグを検出するためのテス トになります。自然とJSTQBの ようなステージング環境が想定 され、実際のシナリオが必要に なります。
  14. 14. Test Level ユニット コンポーネント 統合 システム 受け入れ
  15. 15. Automation 設計 実行 レポート バグ分析
  16. 16. Process 計画 設計 実装 実行
  17. 17. Share Tool Google SpreadSheet, Document HipChat, Idobata, Kato.im GitHub + Issue + Wiki Paper + Pen
  18. 18. Process 計画 設計 実装 実行
  19. 19. Plan 「どんなテスト」を「どれくら いの時間」で「何を」「どれく らい網羅」して「どの順番」で やる リスク分析、対処法、見積もり、 実現可能性を合わせて「テスト の全体像と進め方」を共有し、 今後も変更しやすくしたもの。
  20. 20. Design テストスイートやテストケース の設計。 デシジョンテーブル、状態遷移 図で整理したり 「何を」「どれくらい」網羅す る 「怪しいところ」を組み合わせ る
  21. 21. Implementation 実行出来るテストケースを記述 する いわゆるテストを実行する手順 を記述する 必要なサポート(クラスや別テー ブルなど)も記述する
  22. 22. Execute テストを実行して、結果を見る。 テストを直したり、新しいテス トをつくったり 計画に反映したり プロダクトに反映したり
  23. 23. Process 計画 設計 実装 実行
  24. 24. Share Tool Google SpreadSheet, Document HipChat, Idobata, Kato.im GitHub + Issue + Wiki Paper + Pen
  25. 25. Testing! 「あなたたちが持つテスト技術 によってこの製品をより良くす る」ということが使命です。 今回は手始めにテストレベルが 高いものからやってみるという 状況で考えてみてください。
  26. 26. Testing! 「開発者の怠惰サポート」より 「気づきにくい問題の発見」を 「生成可能なテスト」より「生 成しづらいテスト」を 「特定コンテキストだけ」より 「複数コンテキスト」を
  27. 27. About today’s Challenge
  28. 28. Challenge Application Testing Tool
  29. 29. Application
  30. 30. Test Case Manage テストケースにタグをつけて管 理できるWebGUIアプリ ログイン認証
  31. 31. 未ログイン トップ ログイン済み ※ヘッダを介して遷移する ダッシュボード テストケース ユーザー管理 (管理者用機能) テストタグ
  32. 32. Application Code Grails Groovy Java Postgres SQL Heroku Mandrill
  33. 33. Inside Screen 画面間の動作は同期 画面内の動作は非同期 未ログインで各ページにアクセ スしたら、トップページ表示し て、ログイン後に元のページを 表示する。
  34. 34. Outside Screen ユーザー情報を変更するとメー ル通知がくる システムのログはherokuに垂れ 流している
  35. 35. Tag name : 250, unique description : 1000
  36. 36. TestCase name : 250 scenario : 1000 tags : 0 - n
  37. 37. User username password email enabled
  38. 38. Challenge Application Testing Tool
  39. 39. Background テストケース専用の管理ツール をつくって今後、テストプロセ セスをよくしていきたい。 そのためのプロトタイプができ たので、評価してほしい。 継続的な開発をする前提。
  40. 40. Testing! 「あなたたちが持つテスト技術 によってこの製品をより良くす る」ということが使命です。 今回は手始めにテストレベルが 高いものからやってみるという 状況で考えてみてください。
  41. 41. Testing! 「開発者の怠惰サポート」より 「気づきにくい問題の発見」を 「生成可能なテスト」より「生 成しづらいテスト」を 「特定コンテキストだけ」より 「複数コンテキスト」を
  42. 42. Testing Tool
  43. 43. Geb Spock GroovyでWeb Driver をラップしたライブ ラリ
  44. 44. Geb Spock Groovyでパラメタラ イズしやすいテスティ ングフレームワーク
  45. 45. Geb Basic Test, Page, Module $(), css selector, jQuery like Navigator
  46. 46. Test, Page, Module
  47. 47. TestClass JUnit,Spock,TestNGを 使ってブラウザを動作 させるコードを書く JUnit → @Test Spock → extends GebReportingSpec, GebSpec
  48. 48. PageObject 画面毎につくるクラス テストから利用する URL 画面オブジェクト 不変条件 画面に必要な操作
  49. 49. Module テーブルや、複数画面 で共有したい画面オブ ジェクトを定義する PageObjectの画面オブ ジェクトに利用する
  50. 50. URL このページを表示させ るURLの相対パスか、 絶対パス。 ルートとなるURLは GebConfig.groovyに書 く。
  51. 51. at to TestCasePageやat TestCasePageとしたと きにassertする内容 ページの不変条件。
  52. 52. content ページ中でアクセスす る各オブジェクトを定 義する。
  53. 53. table <table>の内容を取る 例
  54. 54. General ヘッダーのような共通 的なものを定義する例
  55. 55. Geb Basic Test, Page, Module $(), css selector, jQuery like Navigator
  56. 56. Navigator 画面オブジェクトへアクセスす るためのクラスや操作のことで す。
  57. 57. jQuery like Navigator $(tagName, attribute:value | index) $(tagName.class, attribute:value | index) $(“div”, name:”description") $(“div.main”, name:”description”) $(“input”, name:”create”)
  58. 58. Geb Infra src/test/resources/ GebConfig.groovy baseUrl, wait Driver htmlUnit, Chrome, FireFox, IE, PhantomJs
  59. 59. Geb Reference http://gebish.org http://kyon-mm.hatenablog.com
  60. 60. Deploy https://github.com/kyonmm/ grabbit click [deploy to heroku] input mandrill-api-key deploy!
  61. 61. Test Project Template https://github.com/kyonmm/geb-template download zip OR git clone

×