Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Behatで行う、E2Eテスト入門

4.583 Aufrufe

Veröffentlicht am

2014年12月09日にヒカ☆ラボに登壇されたランサーズ株式会社の堀川氏のスライド資料です。

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Behatで行う、E2Eテスト入門

  1. 1. Behatで行う、 E2Eテスト入門。 ランサーズ株式会社 堀川 豊
  2. 2. 今日お話 すること
  3. 3. 今日お話すること3 • テストFW、Behatについて • 何でBehatを導入したのか • 導入時苦労したこと • 導入後の所感 • 今後の取り組み よろしくお願い致します。
  4. 4. 対象者
  5. 5. 対象者5 PHPでWebサービスを 開発されている方
  6. 6. 自己紹介
  7. 7. 自己紹介1 7 名前:堀川 豊 https://www.facebook.com/yutaka.horikawa.7 年代:1985年生まれ 略歴: (2006~2010)公式携帯サイト運営 (2011~2013)ソーシャルゲーム開発 (2014~)ランサーズWebアプリケーション エンジニアとしてJOIN
  8. 8. 自己紹介2 8 言語:Python,PHP,Ruby,Javascript DB:MySQL,PostgreSQL,SQlite KVS:Redis,TokyoTyrant,Memcached
  9. 9. 会社紹介
  10. 10. 会社紹介10 ランサーズ株式会社 設立2008年4月1日 事業内容クラウドソーシングサービス 「Lancers」の運営 ビジョン時間と場所にとらわれない働き方 の創出
  11. 11. クラウドソーシングとは? 11 • 米国で2000年頃に誕生したインターネットサービスの一つ • 仕事を頼みたい人や企業と、 自分のスキルや労働力を売りたい人をネット上でマッチングすること 満員電車にサヨナラする方法 ~時間と場所にとらわれない新しい働き方~ 秋好 陽介(著)
  12. 12. サービス紹介
  13. 13. サービス紹介「Lancers」13 日本初+国内最大手の クラウドソーシングサービス 依頼数: 依頼総額: 会員数: 47万件 373億円 41万人 依頼数ベースで 年間300%成長中
  14. 14. 依頼可能な仕事カテゴリは「141」14
  15. 15. 仕事タイプに合わせて選べる3つの依頼方式15 (
  16. 16. ( /
  17. 17. ( *$ #!*% /')* 42L'
  18. 18. (A 8-‐‑‒9!5-‐‑‒3,2 -‐‑‒ 4 ,.! # H- 0-‐‑‒ 497-‐‑‒ 9!5-‐‑‒ 3* %H- 0-‐‑‒ 497-‐‑‒9!5-‐‑‒ ( 8-‐‑‒ 9!5-‐‑‒12 -‐‑‒ 4 0F1 ( 8-‐‑‒
  19. 19. 9!5-‐‑‒12 -‐‑‒ 4 8-‐‑‒ 9!5-‐‑‒3,2 -‐‑‒4
  20. 20. 最近の取り組み:クラウドソーシング研究所16
  21. 21. 最近の取り組み:認定ランサー検索17
  22. 22. ランサーズを 支える技術
  23. 23. ランサーズを支える技術19 Web App DB Monitor CloudSearch はじめました EC2 RDS S3 CloudWatch CloudFront
  24. 24. Behat
  25. 25. Behat 21 Behat http://docs.behat.org/en/v2.5/ オープンソースの BDDテストフレームワーク テストシナリオを自然言語で記述し、 実効する機能を提供。 PHP5.3以上に対応 。BDDの話はしません
  26. 26. なにができるの? 22 • 自然言語に近い形でテストシナリオ が記述できる • ヘッドレスブラウザによるテスト • 自動テストツールとの連携
  27. 27. なにができるの? 23 手動のブラウザテストが 自動で出来るようになる! ざっくり言うとこんな感じ
  28. 28. なぜ導入したのか? 24 • アプリケーションが仕様を満たし ているかを確認するため。 • 手動テストの工数削減 • 影響範囲の明確化
  29. 29. とある機能のテスト項目書25
  30. 30. テストの実行回数26 924項目の テストを実行 132 * 7 テスト項目数 * 対応ブラウザ数 Oh...
  31. 31. なぜ導入したのか? 27 テスト導入でアプリケーションの 動作担保と開発スピードアップを 目指す!
  32. 32. インストール
  33. 33. インストール29 composerからインストール が可能。 設定ファイル(composer.json)を作成して、 php composer.phar installコマンドを実行すれば インストール完了! curl -sS https://getcomposer.org/installer | php  でcomposer.pharをDLできる。
  34. 34. composer.json 30 vendor-dirがインストールディレクトリ
  35. 35. モジュール
  36. 36. behatの周辺モジュール32 behat/mink ブラウザ抽象化モジュール ブラウザエミュレーションツールと組み合わせてテストを 行う機能を提供。
  37. 37. behatの周辺モジュール33 behat/mink-extension ブラウザ抽象化モジュール behatで利用できるテストの機能を追加したり、 テストケースで扱える言語を拡張。
  38. 38. behatの周辺モジュール34 behat/mink-goutte-driver ブラウザエミュレーション ヘッドレスブラウザ。 javascriptの実行はできない
  39. 39. behatの周辺モジュール35 behat/mink-selenium-driver ブラウザエミュレーション behatからseleniumを操作できる。 別途seleniumのインストールが必要
  40. 40. 設定
  41. 41. behat.yml 37
  42. 42. テストシナリオ
  43. 43. テストシナリオ39 自然言語(英語 or 日本語)に近い形で記述が可能
  44. 44. テストシナリオ40 フィーチャ このファイルに記述するフィーチャ(機能)に関して記述。その後ろは フィーチャの名前。 名前の下にフィーチャの説明が記載できる。
  45. 45. テストシナリオ41 シナリオ シナリオはひとつのテスト。 シナリオは複数のステップで 構成されている。
  46. 46. テストシナリオ42 ステップ テストを実行する命令。それぞれに対応したPHPのコードが 存在しそれらが実行される。
  47. 47. step一覧43 path/to/bin/behat -dl —lang=ja
  48. 48. step一覧44 小さくてよく見えない
  49. 49. テスト実行(ヘッドレスブラウザ) 45 path/to/bin/beht features/test.feature で実行
  50. 50. テスト実行(ヘッドレスブラウザ) 46 がああああああああああああああ
  51. 51. テスト実行(ヘッドレスブラウザ) 47 ただし ??
  52. 52. テスト実行(ヘッドレスブラウザ) 48 Javascriptは 実行できません! 泣ける
  53. 53. テスト実行(ヘッドレスブラウザ) 49 でも大丈夫 本当?
  54. 54. behat.yml 50
  55. 55. テストシナリオ51
  56. 56. テスト実行52 Seleniumと連携することで Javascriptの実行が可能! 複数ブラウザでのテストも可能に!
  57. 57. テストデータ
  58. 58. テストデータ54 DoctrineDataFixturesExtension https://github.com/vipsoft/DoctrineDataFixturesExtension PHP5.3.6以上に対応
  59. 59. Hook
  60. 60. hook 56 テスト実行前後に 任意の処理を実行できる。 処理を実行できるタイミングは8つ。 フックには任意のタグを付けることができ、 シナリオからタグで呼び出すことが可能。
  61. 61. hook 57
  62. 62. hook 58 BeforeSuite BeforeScenario BeforeStep AfterStep AfterScenario AfterSuite
  63. 63. 導入時 苦労した点
  64. 64. 導入時苦労したこと60 target=“_blank”のリンク 別タブや別ウィンドウになるとコントロールできなくなる。
  65. 65. 導入時苦労したこと61
  66. 66. 62 導入時苦労したこと 雑な解決方法 スマートなやり方知ってる方は是非教えてください…
  67. 67. 63 導入時苦労したこと テストデータモジュール 外部からCakeを起動するのに若干苦労した。
  68. 68. 導入時苦労したこと64 Cakeの定数定義して bootstrap.phpをrequire。
  69. 69. 導入後の所感
  70. 70. 導入後の所感66 • 手動テストに比べて工数が削減された • テスト項目をやり直さないでも良くなりリリース間際の 修正に余裕が持てる • シナリオテストが元々なかったので、仕様を満たすといっ た目的の担保がやりやすくなった
  71. 71. 導入後の所感67 • 独自ステップは必要になってくる • ドキュメントの情報量はそこまで豊富じゃない • 自動テストツールはほぼ必須
  72. 72. 今後の取り組み68 • CIでテストを自動実行 • 他メンバーへのラーニング やるぞー
  73. 73. エンジニア&デザイナー積極採用中69 お気軽にご連絡ください! jinji@lancers.co.jp 一緒に新しい働き方を創ってくれる方を募集しています! • 働きかたを変えたい方 • 素直でポジィティブな方 • 最新の技術が好きな方 • 世界に打って出たい方

×