radioc@?

レディオキャットハテナ

【勉強会メモ】E2E Test Automation Day 2019 with Selenium (Osaka)

seleniumjp.connpass.com

  • 日時:2019/07/20(土) 13:00 〜 19:00
  • 場所:楽天株式会社大阪支社

Selenium Conf Tokyo をきっかけに関西にも広げようということで、楽天さんバックアップでの関西初開催でした。E2Eテスト関連は昨今需要が増えてきているものの関西の勉強会ではあまり取り上げられない分野なので非常にありがたいイベントでした。内容もとても充実していて、今後の現場で活かしたいと思える内容でした。

余談ですが、懇親会で伊藤さんとお話した時に何年か前に私が投稿したSeleniumの記事を覚えて頂いていて感激とともに恐縮してしまいました。それ以降Selenium関連であまりアウトプットできていないので今日もらった知見をまた今後につなげていきたいです。

conf.selenium.jp

E2E Test Automation Day 2019 with Selenium

Woohyeok Kim さん

www.slideshare.net

Selenium Conf Tokyo のKeynote概要

  • Selenium 4
  • WebDriverのW3Cの標準化に対応
  • Docker環境でも安定性を担保
  • Chromeでのデバッグサポート
  • 公式ドキュメント拡充

Multi-Browser Testing Strategy Map

Sekine Yasufumi(mercari Inc) さん

speakerdeck.com

マルチブラウザの自動テストの必要性は高まっているが簡単ではない

ブラウザシェア

⇒日本はIESafariの割合が高い

DevOpsでのテスト

  • どの場面でも行う必要がある
  • 自動テストは必須

マルチブラウザの自動テストが重要

W3C WebDreiver

www.w3.org

  • 標準技術として取り入れられた
  • Webブラウザの標準機能としてブラウザベンダーがサポートしていく
  • Safari,Edge、など主要ブラウザサポート
  • iOS13 iOS Safariでもサポートアナウンス
  • IEW3C未サポート
  • Selniumコミュニティがサポート

マルチブラウザのテストの難しさ

問題点1:W3Cに準拠していないケースまだある

  • SafariではGet Element Textの仕様を満たしていない
    • Safari:HTMLタグを覗いたテキスト
    • W3C:表示されているままのテキスト
  • W3Cの判断が分かれるケース

    • 見えない領域のSelectボックスのクリックChromeFirefoxだけ可
  • 準拠していないケース

  • 仕様の判断が分かれるケース
  • ブラウザ独自の対応が必要
  • 対応ブラウザを増やすほど難易度があがる

問題点2:OSとブラウザの組み合わせ

  • デスクトップ
    • ChromeFirefoxはOSによる差異は少ない
    • EdgeとSafariは特定のOSでしか動かない⇒開発環境やCI環境への影響
  • モバイル

問題点まとめ

  • デスクトップモバイル全てに対応すると組み合わせが非常に多い
  • 開発環境、CI環境の構築・メンテナンスが難しい

Multi-Browser Testing Strategy Map

  • Fidelty
    • ブラウザとOSの組み合わせをどれだけ増やすか
  • Feedback
    • 実行の時間を減らす

初期段階

  • 片手間で導入の段階を抜けるにはSpecialistが必要
  • ここは早く抜けたほうが良い

次のステップ

  • Feedbackレベルを上げる⇒Functional…1ブラウザだけでも構築

最後のステップ

  • Fideltyを上げていく
    • 最大限にすることが良いとは限らない
  • SaasのBrowser Test
    • 同時実行数で決まるため高速化xブラウザxOSはけっこうな利用料がかかる
    • 20並列だと月40万

tech.mercari.com

別の戦略

  • Fidelityだけを上げるパターン⇒NonDevOps
    • 時間をかけてでも品質を上げたいケース⇒SIerなど?
    • あまり推奨しない

メルカリでは?

  • プルリクエス
    • Functional Testing
    • Chrome, Chrome Mobile Emulate
    • テストケースを絞る、APIをモック化
  • QA環境デプロイ
  • 本番リリース時
    • 上記に加えてテストケースをある程度絞り
    • Safari, Safari Mobile, EdgeをSaasで実行

自動化テストを始める前に

Yadori Yohei(Rakuten Inc) さん

www.slideshare.net

テストに関する最近のトピックス

  • フロントアプリのRegressionテストが86%自動化
  • モブテスト設計

フロントエンドチームは過去に2度テストの自動化に失敗している

  • 最初から完璧な素晴らしいテスト自動化を目指しすぎた
  • 案件の差し込みやプロジェクトの予定変更が多く、健全な計画が組めない
  • 20にんで支えていたシステムを急に5人で支える事になった
  • 信頼貯金はマイナス
  • また自動化すると言いにくい

どうやったらテスト自動化できるか?

盗塁しよう

  • ピッチャーが気づかないうちに進塁
  • いつの間にかできている状態になればベスト
  • 成果が出ればアピールできる

盗塁の準備

  • タイムボックス⇒10%ルール
  • 自分の好きな改善をしていいルール
  • Minimum Vialble Productを意識
  • ある程度形になるまでのコストを気にしなくても良い

担当者⇒モブ

  • 1人でやるにならない
  • 考え方の共有
  • フラットな組織と文化の醸成

振り返り⇒Retro/Pro-spective

  • ビジョンが見えるようになる
  • 目指す目標を定期的に確認
  • 前向きになれる

成果

  • 全ページエラーチェック
  • スクショでの新旧比較
  • 全体の86%テスト自動化

将来

  • レグレッションテスト100%
  • Dockerに入れて自動化

まとめ

  • 小さな成果から
  • モブは一体感を出すのに最適
  • 過去と未来の話はバランス良く

Appiumを製品のコアに活用する

Ito Nozomi(TRIDENT Inc) さん

www.slideshare.net

Appium

  • OSSのUI自動テスト
  • Seleniumと同じAPI体型
  • iOS&Android
  • Web,ハイブリット、ネイティブ
  • いろんな言語

Magic Pod

magic-pod.com

  • Saas
  • コードレス
  • バックエンドはAppium

直面した課題

  • ユーザーはAppiumに慣れていない
  • 品質への要求がシビア
  • Magic Podのコマンドは基本的にAppiumコマンドのラッパー
  • 一部のコマンドの実装は複雑

遅延ロード要素のScroll/Swipe

  • 課題
    • Appiumには特定の要素が表示されるようにスクロールする機能
    • XCUITest Driver:遅延ロードされる要素が見つかるまでスクロールできない
    • UiAutomator:一部の要素で動かない
  • 対策
    • swipeToコマンドを作っている
    • 要素が見つかるまでスワイプしている

github.com

なんでもWait

  • 課題
    • 待ち処理の記述は難しい
    • 何を待つのかわからない
  • 対策
    • waitWholeRendered
    • 画面キャプチャの結果が変わらなくなるまで待機
    • 人間の感覚と同じ
  • 残っている課題
    • スクリーンショットを撮るのはすぐ終わるがイメージの比較に時間がかかる
    • ロードアニメーションがないと困る

iOS picker wheel

  • iOSの課題
    • pickerに特定の値をセットするのが面倒
    • Pickerの移動方向が現在の値によって変わる
  • 対策
    • inputToPicker
      • 少しずつスワイプすることで値をセット
      • スワイプ方法を自動計算可能
  • 今後の改善
    • 数値以外の判定
    • 曜日、都道府県、国名

iOSの高速なsource XML取得

  • 課題
    • 巨大のツリーの取得に時間がかかる
    • タイムアウトで空になることも
    • テキスト中の改行が含まれない
  • 対策
    • YAMLっぽいAppleオリジナル書式のものから高速に取れる
      • パースが難しい
      • 書式は将来変更されるリスクあり

AIロケーターの活用

  • Deep learning画像認識で要素を特定
  • Magic PodはAIロケーターを活用
    • NN+OCR
    • UI map
  • AIロケーターによる要素検索
  • AIの認識結果が常に安定しているわけではない

tech.mercari.com

キーボードを隠す for 日本語

  • 最後のキーを探して押す

Appiumをもっと安定して信頼できるものにする

github.com

  • デグレの防止
    • Appium自体のテストを用意
    • Magic Podに重要な機能のテスト
    • 実機やエミュレーターでテスト
  • コミッターとのコラボレーション
  • バグ報告機能を搭載
    • 多くの問い合わせは実際にはバグではない
    • 問題を切り分けてAppium開発コミュニティへ報告

将来の計画

  • Espresso DriverとUiAutomator2 Driverの併用
  • WebdriverIOに以降
  • AIモデルをappium-classfier-pluginに移行

ポスト「テスト自動化」を見据えて ~水平思考と探索的テストの世界~

Masanori Kawarada さん

speakerdeck.com

なぜ探索的テストの話をするのか?

理由1

  • 探索的テストが未来のテスターのしごとになる
    • テスト自動化の進歩が著しい
    • UIテスト自動化+APIテスト自動化⇒手を動かすテストがどんどんなくなる
    • プログラムだから開発者がテストを理解しテスト自動化を推進するようになる
  • 品質専門家の需要は無くならない
    • 最適な品質保証の形は各業界。各社・書くプロジェクトで異なる
    • それぞれに応じたQAプロセルを作り出せる
    • スタートアップは早くから品質の重要性
    • QAは水先案内人

理由2

  • 日本語で手に入る探索的テスト情報が少ない
    • Google検索結果
      • 探索的テスト:372万
      • Exploratory Testing:3,710万
    • 日本語の書籍も無い

探索的テストのアプローチとしての水平思考

テクニック・技法・実践

  • テストチャーター
  • タイムボックス
  • ペアテスト

⇒ググれば出てくる

アプローチ・原論・理屈

例)選手32人のトーナメントは何試合あるか?

  • 垂直思考
    • 32人の半分が1回戦⇒その半分が2回戦…
  • 水平思考
    • 32人のうち1人が優勝で残り31人は1回負けるので31試合

ポストテスト自動化を見据えて

  • 形式的テスト⇒チェックを埋める
  • 探索的テスト⇒コンパス的に探す

World Quality Report 2018-19

www.microfocus.com

QA・テスト戦略の目的第1位は「顧客満足

テストとは

  • 知っていることと知らないことのギャップを埋める
  • 形式的テストと探索的テスト
    • 形式的テストは自動化しやすいが探索的テストは自動化しにくい

頭をつかう必要がある

  • 頭を使わなくていいことは機械にやらせる
  • 頭をつかわなければならないことは人間がやる

頭をつかわなければならないこと?

  • 専門のテストエンジニアが探索的テストをやる

世界で最も優れているテストツールは人間の頭脳


LTは簡単なメモのみです。

Introduction to Cypress

Shiiba Mitsuyuki(Rakuten, Inc.) さん

speakerdeck.com

www.cypress.io

Test Assistant Pro のSelenium対応

Ishikawa Tatsuya さん

www.codeer.co.jp

Groovy Test Fixture

Kitamura Kandai さん

  • Testcontainers
    • テストコード内でDocerコンテナを起動
  • Wiremock
    • モックのAPIサーバを立てる

Effective Android UI Testing

Lindsay, Diarmaid さん

世界のカンファレンスから~次に世界に飛ぶ人へ~

mkwrd さん

speakerdeck.com