SlideShare une entreprise Scribd logo
1  sur  11
ブラウザ自動化ツール
カオスマップ風
システムテスト自動化カンファレンス2018
自己紹介
• Twitter アカウント: @hnz
• フロントエンドエンジニア
• ここ数年テスト自動化ツールを開発
発表の概要
• ブラウザ自動化ツール、たくさん
• 自分のためにカオスマップ風に整理しました
• 他にもおすすめのツールなどありましたらぜひおしえてください!
• JavaScript をページに流し込んでブラウザを操作する
• 😃実行早め
• 😃セットアップ簡単
• 😐マルチブラウザ対応はツールによりけり
• Nightmare - https://github.com/segmentio/nightmare
• Cypress - https://github.com/cypress-io/cypress
• TestCafe - https://github.com/DevExpress/testcafe
• Chrome や Firefox の開発者ツールの API を
使ってブラウザを操作する
• ☺️ セットアップがほぼ不要ですぐに使え
る
• ☺️ CI 環境で動かしやすい
• 😐 多ブラウザ対応はできない
• Puppeteer / Puppeteer for Firefox - https://github.com/GoogleChrome/puppeteer
• Gauge - https://gauge.org/
• taiko.js - https://taiko.gauge.org/
• ブラウザの動きを Node.js で再現!
• ☺️ ブラウザでしか動かない単体テストを
CI上で気軽に実行できる
• 😐 本物のブラウザではないので用途を選ぶ
• Zombie.js - http://zombie.js.org/
• ブラウザの拡張機能を作るための機能を使って、ブラウザを操作
• 😃他では自動化しにくいことが自動化できる
• 😃Web 標準の機能を使っているのでマルチブラウザも期待できる
• 😐まだ実用例が見当たらない
• Remote Browser - https://github.com/intoli/remote-browser
• ブラウザ自動操作のウェブ標準である
Webdriver API を利用
• 😃マルチブラウザ
• 😃広く使われている
• 😐セットアップが面倒(なのも多い)
• 😐テスト実行のオーバーヘッド大きめ
• selenium-webdriver - https://seleniumhq.github.io/selenium/docs/api/javascript/index.html
• Nightwatch.js - http://nightwatchjs.org/
• WebdriverIO - http://webdriver.io/
• Intern - https://github.com/theintern/intern
• Leadfoot - https://github.com/theintern/leadfoot
• Protractor - https://www.protractortest.org/
• WD.js - http://admc.io/wd/
• Gemini - https://github.com/gemini-testing/gemini
• Nemo - http://nemo.js.org/
まとめ
• 何がいいかは時と場合によるので、いろいろ知っておきたいですね

Contenu connexe

Tendances

ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争
goccy
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 

Tendances (20)

ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争ぼくとJenkinsおじさんの360日戦争
ぼくとJenkinsおじさんの360日戦争
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
backlogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見るbacklogsでもCI/CDする夢を見る
backlogsでもCI/CDする夢を見る
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
組み込み開発でのシステムテスト自動化の一つの考え方(STAC)
 
Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在Redmineの開発状況のこれまでと現在
Redmineの開発状況のこれまでと現在
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 
人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説人は一ヶ月でエンジニアになれるのか - 詳細解説
人は一ヶ月でエンジニアになれるのか - 詳細解説
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 

Similaire à ブラウザ自動化ツール カオスマップ風 - STAC2018 LT

Twitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hackTwitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hack
Mocel Mocelic
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
Etsushi Ishii
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 

Similaire à ブラウザ自動化ツール カオスマップ風 - STAC2018 LT (20)

Twitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hackTwitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hack
 
ゲームの自動テストを 作ってみた
ゲームの自動テストを 作ってみたゲームの自動テストを 作ってみた
ゲームの自動テストを 作ってみた
 
第3回 開発ツールチラ見せ♡ナイト オープニングプレゼン
第3回 開発ツールチラ見せ♡ナイト オープニングプレゼン第3回 開発ツールチラ見せ♡ナイト オープニングプレゼン
第3回 開発ツールチラ見せ♡ナイト オープニングプレゼン
 
パワーユーザー必携の海外の拡張機能20選+α
パワーユーザー必携の海外の拡張機能20選+αパワーユーザー必携の海外の拡張機能20選+α
パワーユーザー必携の海外の拡張機能20選+α
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
 
sensuのちょっと進んだ使い方
sensuのちょっと進んだ使い方sensuのちょっと進んだ使い方
sensuのちょっと進んだ使い方
 
Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introduction
 
ツールを使い倒せ!公開版 : (Use the tool to defeat it! : Public version)
ツールを使い倒せ!公開版 : (Use the tool to defeat it! : Public version)ツールを使い倒せ!公開版 : (Use the tool to defeat it! : Public version)
ツールを使い倒せ!公開版 : (Use the tool to defeat it! : Public version)
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Hachiojipm31
Hachiojipm31Hachiojipm31
Hachiojipm31
 
RustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使うRustでWebSocketな自社APIを使う
RustでWebSocketな自社APIを使う
 
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはChrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
 
[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
気が狂わないサーバ増設x10
気が狂わないサーバ増設x10気が狂わないサーバ増設x10
気が狂わないサーバ増設x10
 
Firefoxの開発ツール
Firefoxの開発ツールFirefoxの開発ツール
Firefoxの開発ツール
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
Xamarin 概要 @ 2014/10/18 わんくま同盟 東京勉強会 #92
 
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
速度改善のためにフロント:アプリ:インフラ エンジニアが使うツールについて
 

ブラウザ自動化ツール カオスマップ風 - STAC2018 LT

Notes de l'éditeur

  1. 少し自己紹介をさせてください。 名前は西島と言います。 このアイコンで Twitter をやっています。 JavaScript と CSS が得意なフロントエンジニアです。
  2. それでは、本日のLTなのですが、ブラウザの自動化ツール、色々増えすぎていてわからん! ということで、カオスマップ風に整理してみました。 このLTでは、自分が整理してみたやつを紹介して、他にもこんなのあるよ、とか、そういうのをいただけると嬉しいな、と思っています。
  3. というわけで、まとめてみました。 僕がJS系のエンジニアなので JS のやつです。 Github上でそこそこ星がついていて、今もメンテがされているやつをリストアップしたつもりです。 ツールの自動化のアーキテクチャと、ブラウザの互換性の観点で分類しています。 分類ごとに駆け足で紹介していきたいと思います。
  4. まず、JavaScript Injection系。 これらのツールは、ブラウザについている自動化の機能を使うのではなく、JavaScript をページに流し込んで操作するアーキテクチャをとっています。実行が早く、セットアップが楽ですが、ブラウザの制約でできることが限られる場合もあり、思わぬところではまったりします。 マルチブラウザ対応はまちまちで、TestCafe はほとんどのブラウザに対応してますが、Nightmare は Electron の WebView 、Cypress はもろもろ対応予定はあるようですが現状 Chrome のみです。
  5. 次、devtool protocol 系。 これらのツールはChromeやFirefox の開発者ツールの機能を通してブラウザを操作する仕組みです。使いやすいですが、仕組み上マルチブラウザは期待できないです。 Puppeteer はよく使われているように思います。実験的ではありますが、 Firefox 実装もきのう公開されてかなり話題になっていました。 Gauge (ゲージ)は Thoughtworks が作っているテストフレームワークです。 中で使われている taiko.js が chromium と devtool protocol で動きます。個人的には結構イカすツールだと思っています。
  6. 次Headless Browser 系。 Phantom.js やSlimmer.js や Casper.js など、一時代を築いた Headless Browser はほとんどメンテが終了しているのですが、そんななか Zombie.js だけは元気です。 このツールはブラウザといっていいのかはわかりませんが、Headless browser を名乗っているのでリストアップしておきました。ちょっとスペース空いて見栄えも悪かったので。
  7. 次は、WebExtensions API を使っているやつ。 ブラウザの拡張機能を作るための Web 標準である、WebExtensions API を使ってブラウザを操作します。 複数のタブの同期的な処理など、他のツールでは難しいこともできるのではないかと思います。 ただ、まだ実用的かというと、そうでもないのが現状だと感じています。
  8. 最後、 Webdriver 系。Webdriver API というブラウザ操作のウェブ標準を使うやつです。 Yandex のビジュアルテスト用ツールのGemini 、Angular の Protractor、Paypal が作っている nemo は他の Webdriver 系ライブラリをもっと便利に使うためのツールなのでここに載せるかは迷いましたが、みっちり感を少しでも出したかったので入れました。 個人的なお気に入りは Intern とそのWebdriver クライアントの Leadfoot です。 TypeScriptでモダンな作りですし、セットアップ要らずで使えるのがすごく良いです。正直使われているのを見かけたことがないです。