$30 off During Our Annual Pro Sale. View Details »

アペルザの品質を支えるE2Eグレートジャーニー


 アペルザの品質を支えるE2Eグレートジャーニー


SASAKI Kunihiko

November 19, 2020
Tweet

Other Decks in Programming

Transcript

  1. アペルザでは、障害レベルを設定 していて、障害レベルに合わせて 頻度を変えてスケジュール実行し ています。 レベルSは毎日実行していて、 レベルA、B、Cは週1で実行して います。 また、ログイン・ログアウトなど データの登録・更新を行わないテ ストについては、本番環境に対し

    ても実行しています。 &&Λಈ͔͢λΠϛϯάͳͲ 障害 レベル S • クリティカルパスの機能において、ユーザーがアク ションを完了することができず、代替手段もない場 合。 • 個人情報・機密事項漏洩の可能性がある A • Sと同じ内容のトラブルだが、代替手段がある場合。 • Sより重要度は低いが、ユーザーがアクションを完了 することができず、代替手段もない場合。 • ごく限定的なユーザにレベルSのトラブルが発生した 場合 B • アクションを完了することができないが、代替手段 がある場合 C • 上記以外
  2. ೥ͷؒʹ࣮ߦ؀ڥΛճม͑·ͨ͠ • 2017年〜 Java(JUnit) + Selenium (Selenide) PageObjectPatternで実装 • 2018年〜

    Gauge + Selenium (Selenide) • 2020年〜 mabl(2020年9月にスタートアッププラン から エンタープライズプラン に変更) ※切替中は平行運用しています。
  3. +BWB +6OJU  4FMFOJVN 4FMFOJEF 1BHF 0CKFDU1BUUFSO • 良いところ ◦

    JavaとJUnitは使い慣れていたので、はじめやすかったです。 ◦ SeleniumのラッパーであるSelenideを利用することで簡潔に書くこ とができました。
  4. +BWB +6OJU  4FMFOJVN 4FMFOJEF 1BHF 0CKFDU1BUUFSO • 問題点 ◦

    失敗した時にテスト結果を確認するのが大変でした。 ▪ 失敗時の画面の状態がわかりにくい (画面キャプチャ撮ってファイルに保存してました) ◦ Page Object Pattern が使いにくかった。 ▪ 例えば、ログインボタンを押した後の状態は、ログイン成功とログイン失敗がある と思いますが、上手く表現できなかった。 ◦ テストケースを増やすにはJavaが書ける必要があった。 ◦ テストコードを書くのが面倒で、なかなか増やす気になれませんでした。
  5. (BVHF 4FMFOJVN 4FMFOJEF • 問題点 ◦ Chromeがアップデートなど、環境変化によりテストに失敗することがありました。 ▪ どうせまたChromeの更新の影響なんじゃないの?とテスト結果の確認を後回しにして、 バグを見逃すことも起きました。

    ◦ 並列実行ができていないため時間がかかっています。 (Gaugeは並列実行をサポートしてるけれど環境を用意できなかった) ◦ IEの実行環境を用意できませんでした。 ◦ E2Eを想定した実装になっていないので、要素の指定が難しい。 (idが振っていないなど、拡充するためにテスト用のdata属性の追加を検討していました) ◦ CSSに関連するデグレが見つけられない。 ◦ ローカルに実行環境を構築するのが非エンジニアには難しい。 (JavaとGaugeのインストール)
  6. NBCM • 改善したこと ◦ 実行環境の保守からの開放! ◦ 並列実行による実行時間の短縮! ◦ コードが書けない人も作れる! ◦

    要素の指定に悩むことがなくなった。 ◦ IEテストができるようになった。 ◦ Visual Changeを検出してくれるので、スタイルの変更も検知できるようになった。 • 問題点 ◦ IEでの実行を安定させるには工夫が必要。
  7. ͭͷൺֱ ʙΞϖϧβͷ4&5ͷྺ࢙ʹͳͧΒ͑ͯʙ ※1 並列実行も可能だと思いますが環境構築の作業をやりませんでした。 ※2 Gaugeの結果画面は見やすいですが、さらにステップ毎に画面キャプチャを撮るようにしています。 サービス名 実行環境 実行環境の メンテナンス

    実行時間 結果確認 ケース作成 ができる人 ケース作成 Selenium 社内のPC 必要 長い (直列実行 ※1) 大変 Javaコード を書ける人 大変 Gauge 社内のPC 必要 長い (直列実行 ※1) ◎簡単 ※2 作成済の部品(Java)が あれば誰でも ◯簡単 (でも要素の指定は大変) mabl クラウド ◎不要 ◎短い (並列実行) ◎簡単 ◎誰でも ◎簡単