seleniumjp
http://seleniumjp.connpass.com/event/9222/
- 作者: Satya Avasarala,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/09/18
- メディア: 大型本
- この商品を含むブログ (1件) を見る
日本の書籍が初めて。
◯コミュニティー 1回め勉強会 193人 ↓ 2回め勉強会 340人
【玉川竜司さん】Seleniumをもっと知るための本の話
Ruby、Pythonは少ない。 本の売上が良いので関心が集まっている。 セキュリティ会社勤務。普段は大阪。
楽天のカンファレンス10/25
Google BigQuery Analyticsが来年に出る。
「実践Selenium WebDriver」ができるまで
自社の回帰テスト(レグレッションテスト)に使用開始 2005年あたりにソフトウェアデザインの本に出てきた。
Selenium 1系とSelenium 2系の情報が混在してる?
W玉川本
英語の技術書を読む話
翻訳本だけでは不可能。 Amazon.comのsoftware testのカテゴリでseleniumを検索すると20件以上、日本語は1件のみ。
総合的な本を翻訳で読み、後は英語に当たる。 「翻訳書があると英語で読む動機が下がるのでは。」 おおよその概念がわかればあとは、英語で読めばいい。 「映画のDVDで勉強」は勘違い 英語の技術書を読むのは、英語へのチャレンジとしてはもっとも楽なチャレンジです
英語を読む上で、お薦め2つの道具”Kindle"と”Safari(ブラウザのではない)"
Fire HDX 8.9最高です http://www.amazon.co.jp/gp/product/B00KQNTJ1W?ie=UTF8&camp=1207&creative=8411&creativeASIN=B00KQNTJ1W&linkCode=shr&tag=noctushinrsdi-22
※AndroidのKindleもいい 画面の大きさは大事 ※7インチは小さい
単語長押しで辞書引けるのが非常に便利
年間4万円くらいでO'Reillyの電子書籍購読サービス #seleniumjp オフラインボックスも有る。 出版社を色々カバー。
Seleniumの本の紹介
イギリスの出版社 PACKT publishing Safariで読める。
・Selenium Design Patterns and Best Practices Seleniumそのものよりも、テストの書き方に重点。 http://www.amazon.co.jp/gp/product/1783982705?ie=UTF8&camp=1207&creative=8411&creativeASIN=1783982705&linkCode=shr&tag=noctushinrsdi-22
・Selenium Webdriver in Python http://www.amazon.co.jp/gp/product/B00IZZ0GSS?ie=UTF8&camp=1207&creative=8411&creativeASIN=B00IZZ0GSS&linkCode=shr&tag=noctushinrsdi-22
Kindleで読める。 女性の方。
砂漠のものだったが、人気がなかったのか表紙が女性のものでRuby版。
Selenium Webdriver in Ruby http://www.amazon.co.jp/Selenium-Webdriver-Ruby-Sagar-Salunke-ebook/dp/B00MJ1GP6Q/ref=sr_1_3?s=digital-text&ie=UTF8&qid=1413609275&sr=1-3
C#版もやる。
Selenium IDE Automation Testing Tutorial http://www.amazon.co.jp/Selenium-IDE-Automation-Testing-Tutorial-ebook/dp/B00J7ZT0LE/ref=sr_1_8?s=digital-text&ie=UTF8&qid=1413609444&sr=1-8&keywords=selenium Selenium: Questions and Answers StackOverflowのSeleniumのQ&Aをそのまま書籍化
Q「電子版出ますか?」A「要望は理解してますが、予定はないです」
1000〜2000位に入った。一瞬3桁になったことも有る。かなりいい。
SliverLightで翻訳したいとオライリーへ電話したのがきっかけ。 Microsoftの記事を個人で翻訳してWebで載せてた時に翻訳を認めてられた。 金額的にも余りおすすめしない、何を求めてやるかが十余。 1日4〜5ページの翻訳。
1日2日で英語の本をザーッと読むのはいい。流れがつかめる。
【玉川紘子さん】脱・独自改造!GebでWebDriverをもっとシンプルに
株式会社SHIFT 第三者検証。 技術開発部。
※竜司さんとは親戚ではありません
ちょっとしたことを書くにも長い(Javaでは) テキスト入力に3行 プルダウンの選択3行
◯OSSで提供されているライブラリ ・FluentLenium(Java)ふるーえんとれにうむ フランスの女性開発 ・Geb(Groovy)
・FluentLeniumについて http://grimrose.bitbucket.org/blog/html/2013/12/03/java_advent_calendar_2013.html
Geb・・・ジェブ http://www.gebish.org/ Webドライバのラッパー、上書きするものではない
テスト業界で有名な、テスト自動化研究会@kyon_mmさんから
ブラウザ操作|WebDriver|Geb| テスティングフレームワーク|JUnit、TestNG|Sock 言語|Java|Groovy
メリット①:記述量の少なさ
import geb.Browser Browser.drive { go "http://myapp.com/login" asset $(“h1”.text() == "Please Login") $(“form.login”).with { username = “admin” password = “password” login().click() } assert $("h1”).text() == "Admin Section" }
jQueryらいくなセレクタ css selectorも浸かる。 ネームが「login()」となっているボタン。
メリット②:「あるある」が解決済み
・テキスト入力のシンプル化
1行で出来る。
$(“#hoge”).value(“fuga")
※プルダウンとかも同様
・インスタンスの生成処理の外出し
GebConfig.groovyに集約
・要素を見つけるときの待ち時間の変更
// WebDriverインスタンスの生成 driver = { new FirefoxDriver() }
// 要素を見つけるときの待ち時間 waiting { timeout = 10 retryInterval = 0.5 }
・テスト環境URL
// テスト環境のURL baseUrl = ‘http://localhost:8000/example'
メリット③もちろんPageObjectもサポート
PageObjectパターン!
atは今いるかどうかをチェックする。
GroovyやSpockの機能が使える。
・4つのテストケースが有ると言われる。
・setup 前提条件 ・when 操作 ・then 検証 ・cleanup 後片付け
メンテナンスしやすいコードはこれがしやすい。
メリット④ Groovy/Spockの嬉しい機能が使える
データ駆動テストがシンプルに書ける Cucumberみたいに表形式でかける。
モジュールが使える。Groovyの機能。
Javaの資産がそのまま扱える。 importが使える。
・Syntaxの省略に注意
IDE上の補完に頼りたければ、多少長くなっても型を明記
Implicit Assertionの使い方に注意
// 省略できないケース if (/* 条件 /) { assert #〜〜〜 }
if文はテストケースでは入れるべきではない?
getter/setterを作らなくても動かせるので、ついつい生の処理を書いてしまいがち。
失敗時のスクリーンショットの取得 Jenkinsを夜間で回した時にわからなくなる。 RunListenerがSpockにある。
Jenkinsだけで失敗する場合など、一部だけテストするようにTestSuiteをつくると便利。
Jenkinsのパラメタで%TEST_CLASS%を置換。
Gebを使うと独自改造を減らすことが出来る。
static content={xxx} みたいな書き方は、 「staticメンバにたいするテンプレートメソッドパターン」 と思えばいいんでしょうか?
Gebの本たちのページ、これですか http://www.gebish.org/manual/current/
◯jQueryライクについて GebではXPathはサポートしていない。jQueryでできることと同等のことは結構できる
$(“p”, text:”hoge”) テキストの内容を指定。 containみたいなのはできると思う。
https://www.jetbrains.com/idea/download/
【伊藤望さん】海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外に目を見けてみたらいい感じでは。
伊藤 株式会社TRIDENT
www.trident-qa.com テスト自動化研究会
サイモンスチュアート
Sales-force、テストにSelenium
・Grouponのエンジニアの発表 Selenium Design Patterns and Best Practicesの著者
Selenium-Grid-Extras https://github.com/groupon/Selenium-Grid-Extras
・Mozillaのエンジニア FireFoxの次世代版を作っている W3Gの標準化のテストをする。
・Joomla!コントリビュータ
Cucumber.js https://github.com/cucumber/cucumber-js
WebDriverJS https://code.google.com/p/selenium/wiki/WebDriverJs
・Jim Evans氏 WebDriverの機能がIEに取り込まれている!
・Geb
・BrowserStackのエンジニア
シミュレータではなく実機でテストスべきなのか
シミュレータジャックはどう酷いか。
・セキュリティ
Linkedinのエンジニア IronWASP OSS、Webサイトに脆弱性がないかどうか。
・Page Objectを超えるデザインパターン WebFormパターン ItemListパターン IframeWrapパターン
・ビジネスレイヤーオブジェクトに更にレイヤーを重ねる?
・Selenium RCからWebDriverに移行
・QTP/UFT(HP社)からSeleniumへの移行 80%の実行時間削減
・Yandex(ロシアの検索・ポータルサイト大手)
・Allureフレームワーク 見やすいHTMLレポート https://www.youtube.com/watch?v=xrlS-7mLm0E https://github.com/allure-framework/allure-core
Allure Test Report(DEMOリポート) http://allure.qatools.ru/
エラー原因だけリストアップ。 「どのプログラミング言語でも使える!」と強調
・「OSSを使い早く失敗するために、エンタープライズの手法の上に築かれたドラゴンをどう調教したか」 Dragon≒やっかいごと? https://www.youtube.com/watch?v=Pcroql20wFI
【宮田淳平さん】ハイパフォーマンスSeleniumテスト@サイボウズ(仮)
kintoneというB2Bサービス https://kintone.cybozu.com/jp/
17人で開発。 サーバ:Java、23万行 クライアント:JS、33万行
実行時間は長くなりがち。 ブラウザを通すので、長い。
・Jenkins + Pipeline Plugin Gitのメインブランチにマージされるたびにすべてのテストが実行される 継続的デリバリー
Selenium WebDriver + Selenium Grid 36並列
全部流すのに30分ほどかかる ・体感的には20分切るとストレス
・実行時間が長くなると
テスト自動化のメリットは素早くいつでも素早く繰り返し実行できる事
1日かかると1日に1回しか出来ない もし失敗すると修正後の確認にまた1日
・実行期間短縮の基本戦略
余計なテストを作らない メインシナリオのテストぐらいが無難 単体テスト、APIテストなどでカバーする 並列化 Selenium Grid
並列化はリソースとの戦い 1マシンで起動できるブラウザは1つまで 複数起動もできるけど、フォーカスの関係でテストが不安定になるのでおすすめしない 複数のバージョンのIEに対応すると更に大変
◯並行実行環境の構築 ・クラウドサービス Sauce Labs、TestingBot、BrowserStack ・VMテンプレートを作って量産 ・docker 高速デプロイ&軽量 ただし環境は限られる Windows Severはdocker対応するらしいので期待 MSの記事 http://www.publickey1.jp/blog/14/dockerwindows_serverdockermicrosoft_azuredocker_hub.html
テストの実行順序 ・長い順に実行できれば理想値に近づく
並列実行してもテスト実行時間に注意。 テストケースを調整してテスト実行時間を均一化する必要がある。 テストのクリティカルパス(遅いテストの実行順)考えないと、 並列実行した分のパフォーマンスでない。
だけどこれやろうとすると色々手入れないとね
並列化日から入れるほうが効果が大きい 初期データの作成、ブラウザの起動、認証処理など
DBのdump ・速い ・スキーマ更新時が大変
API ・そこそこ速い(ネットワークを通す) ・副作用としてAPIテストに使いまわせる ・APIが整っているなら一番おすすめ
安定性の話 ・バグじゃないのにテストが落ちることが有る ・バグの可能性もあるので原因調査に時間を取られる ・辺に慣れてしまうとテストが落ちても誰もきにしなくなってしまう
安定性を高める手法。
リトライ:安定性に問題があるものは後で分かるようにして分析する・ 明示的なWait:findElementなどは不安定に失敗することがあるので対処が必要。
明示的なWait
メンテナンス性
メンテナンス性が低いと? メンテナンスに時間が取られる
手動の方がいいんじゃない?
メンテナンス性の高める。PageObjectパターン必須。 スクリーンショット・録画があると原因調査が楽になる。 テストコードの品質、大事
UI変更があり得るなら必須
・失敗時のスクリーンショット、録画 原因調査が楽になる
・テストコードの品質は製品と同じくらい大事 命名規則作ったりレビューしたり DRY原則とかKISS原則とかYAGNIとか
まとめ
Seleniumテストの運用はパフォーマンスとの戦い 自動化するテストは重要なものに絞る 実行時間短縮は並列化してその効果〜
失敗から始めるSelenium
http://developer.cybozu.co.jp/tech/?p=5499
継続的デリバリー
実践アジャイルテスト テスターとアジャイルチームのための実践ガイド
「テストコードのヒンシツは製品と同じくらい大事」とても同意。テストコードもちゃんとレビューしないとほんとダメ。
きちんとテストしてから実行
チームで勉強した本
実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects’Archive ソフトウェア開発の実践)
- 作者: Janet Gregory,Lisa Crispin,榊原彰,増田聡,山腰直樹,石橋正章
- 出版社/メーカー: 翔泳社
- 発売日: 2009/11/28
- メディア: 大型本
- 購入: 3人 クリック: 142回
- この商品を含むブログ (52件) を見る
・ビデオ録画もしているどうやって?
Pythonの画面録画するライブラリ
成功したら削除 Vnc2swf ?
IE以外は安定。 Windosも安定しない? sockerをLinuxにして動かすのがいいと思う。
【松尾和昭さん(@Kazu_cocoa)】クックパッドアプリの開発を支援するAppiumの話
@Kazu_cocoa
JaSST’14 Hokkaido
モバイルアプリ開発体制の
Appium・・・モバイルアプリを自動化テスト
Turnip・・Cucumberの正規表現の部分を取り払ったようなもの http://magazine.rubyist.net/?0042-FromCucumberToTurnip
Selenium Remote Control (RC)
サーバサイドのWeb API
Turnip・・Cucumberの正規表現の部分を取り払ったようなもの
Appiumのよいところ リリースビルドがテストできること。 言語が選べる。 アプリ操作をシミュレートできること。
インターフェースなので柔軟性ある。 Appiumのよくないこと 実例がない。 実行に時間がかかる。 環境構築が手間(SauceLabsはいいとこついてる)。
「これ以上は頑張っていない」のは業務(じゃないけど)ロジックなどはUnitTestでだいたい済ませているから。
Appiumでやっていること。 夜間に最新ソースコードをビルドしてテストしている。 画面遷移、レイアウト崩れをチェック。 100ケース×2〜3capabilityを実行しており、現時点では並列化はしていない。
UIテスト自動化しようとすると sleep 入れることになる。は仕方ない気がしてきた。
iOS/Androidはアニメーションが入るので無視してテストを作成すると落ちる! (ラッパーでウェイトを入れる、など対処が必要)
iOS 8対応が大変