More Related Content
KEY
PDF
Machine learning CI/CD with OSS PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル) PPTX
PDF
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える PDF
PPTX
[DL輪読会]Explainable Reinforcement Learning: A Survey What's hot
PDF
開発者が語る NVIDIA cuQuantum SDK PDF
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 PDF
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催 PDF
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術 PDF
PDF
PDF
レコメンドアルゴリズムの基本と周辺知識と実装方法 PDF
PDF
PDF
PDF
PDF
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M... PDF
PDF
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021 PDF
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料) PDF
Similar to reg-suitとQA Wolfを活用したVisual Regression Test
PPTX
SWETの取り組むImage Based Testing PDF
GUI Test is (not) necessary PDF
5分でわかるVISUAL TESTING FOR HTML5 PDF
PDF
1時間で分かるSTA (Software Test Automation) #stac2014 PDF
PPTX
JaSST2017_大規模業務システムにおける再利用可能なテスト自動化の取り組み PDF
PPTX
PDF
PDF
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし PDF
PPTX
20190424 q ameetup-m -publish PDF
PPTX
画像認識ベースのUI自動化フレームワークを用いた取り組み PDF
PDF
PDF
PDF
PDF
超スマート社会時代のシステム&ソフトウェア品質知識体系 - SQuBOK 2020 における AI、IoT、クラウド、オープンソース、アジャイル、DevO... reg-suitとQA Wolfを活用したVisual Regression Test
- 1.
- 2.
おはなし
❏ 自動E2Eテストの現実 -つらみ-
❏自動E2Eテストの現実に立ち向かう -目視確認-
❏ 目視確認のための自動化
❏ Visual Regression Testの世界へ
❏ reg-suitで手軽にVisual Regression Test
❏ QA Wolfでスクリーンショットを取得
❏ Unit Test同様にCIで実行
❏ 現場の声
❏ まとめ
- 3.
- 4.
自動E2Eテストの現実 -つらみ-
❏ 自動E2Eテストの現実
❏テストNGの時、自動テストの不備をまず疑う
❏ テストNGなのに、対象システムにバグがあると言いきれない
❏ 自動テストもプログラムに過ぎず、テスト自身のバグの可能性
❏ 自動テスト用環境が原因の可能性
❏ 自動テスト用技術が原因の可能性
❏ リトライしたら動いてしまうような、一時的な問題の可能性
❏ 保守が追いついておらず、常にNGとなる状態のままの可能性
- 5.
自動E2Eテストの現実 -つらみ-
❏ 自動E2Eテストの現実
❏暗黙で目視確認してるような観点は、自動テストで意外と漏れてる
❏ ログイン機能のテスト
❏ ID、パスワードを入力してログインできることを確認
❏ ログインできるとは?
❏ URLがログイン後ページのものになっているだけでいい?
❏ レイアウトが崩れていてもいい?
❏ 当然ダメだけど、プログラムで確認しろというのは辛い
❏ 自動テストは書いたことしかテストしない(自動化8原則の3)
- 6.
自動E2Eテストの現実 -つらみ-
❏ 自動E2Eテストの現実
❏自動テストが動かなくなったら、そのままになる
❏ 何よりリリース優先
❏ 開発者としてはテストしてもらえればよく、手段は手動自動を問わない
❏ 自動テストが動かない時は、動くように修正ではなく手動テストをする
❏ リリースを終えても次のリリース対応になり、修正しないままになる
- 7.
自動E2Eテストの現実 -つらみ-
❏ 自動E2Eテストの現実
❏とはいえ、自動テストをまったくしないという選択肢はない
❏ 同じテストが繰り返し求められる
❏ 短期間で広範囲のテストを求められる
❏ 飽きやすい単調な定型テストをミスなく実施が求められる
❏ 影響がないと言いきれないところはテストが求められる
❏ 勤務時間内にこなせるテスト量が限られてしまう
❏ 上記状況に対して有用なのは間違いなく、現実的な手法ではある
- 8.
- 9.
- 10.
- 11.
- 12.
自動E2Eテストの現実に立ち向かう -目視確認-
❏ 自動E2Eテストの現実に立ち向かう
❏テストNGの時、自動テストの不備をまず疑う現実
❏ 目視確認できる状態なら、自動化側の不備から疑うことはないはず
❏ 暗黙で目視確認してるような観点は、自動テストで意外と漏れてる現実
❏ 修正影響を目視確認できる状態にするところまでを、自動化する
❏ 自動テストが動かなくなったら、そのままになる現実
❏ 修正が行われればいい(それはそう)
❏ 修正影響を目視確認できる状態の維持を、開発者の責務とした
❏ すんなりと受け入れられた
- 13.
自動E2Eテストの現実に立ち向かう -目視確認-
❏ 自動E2Eテストの現実に立ち向かう
❏テストNGの時、自動テストの不備をまず疑う現実
❏ 暗黙で目視確認してるような観点は、自動テストで意外と漏れてる現実
❏ 自動テストが動かなくなったら、そのままになる現実
❏ 目視確認テストを追加した
❏ 修正影響を目視確認できる状態にするところまでを、自動化した
❏ 修正影響を目視確認できる状態の維持を、開発者の責務とした
❏ 状態の維持実現のため、Unit Test同様にCIで実行されるようにした
- 14.
- 15.
Visual Regression Testの世界へ
❏Visual Regression Testとは
❏ 視覚的な手法で行うRegression Test
❏ 修正前後を画像比較して差分がなければ、テストOKとなる
❏ 画像取得、画像比較、比較結果レポートができるツールを使う
- 16.
Visual Regression Testの世界へ
❏Visual Regression Testとは
❏ 視覚的な手法で行うRegression Test
❏ 修正前後を画像比較して差分がなければ、テストOKとなる
❏ 画像取得、画像比較、比較結果レポートができるツールを使って行う
❏ 修正影響を目視確認できる状態にするところまでの自動化に使った
❏ ツールのテストOK/NG判定は、差分なし/差分ありと読み替えた
❏ 修正により想定される差分なら、目視確認時にテストOKとした
- 17.
Visual Regression Testの世界へ
❏Visual Regression Test用のツール
❏ Awesome Visual Regression Testing
❏ https://github.com/mojoaxel/awesome-regression-testing
❏ 3種類
❏ 画像取得、画像比較、比較結果レポート All-in-One
❏ BackstopJS (Star:5.6k)
❏ 画像比較、比較結果レポート のみ
❏ reg-suit (Star:0.7k)
❏ 画像比較 のみ
❏ Resemble.js (Star:3.7k)
- 18.
Visual Regression Testの世界へ
❏Visual Regression Test用のツール
❏ BackstopJS(All-in-One)
❏ 利用できるブラウザが限定される
❏ 自分で用意した画像で画像比較ができない
❏ 画像取得の方法が独特で辛い
❏ URLを設定ファイルに記載するだけで完結するのがウリ
❏ スクリーンショットを取得するURLを記載
❏ Post処理が必要なURLの場合は、DSLで処理を記載
❏ ログインが必要なURLの場合は、DSLで処理を記載
❏ URLを設定ファイルに記載するだけで完結とは?
- 19.
- 20.
Visual Regression Testの世界へ
❏Visual Regression Test用のツール
❏ reg-suit(画像比較、比較結果レポートのみ)
❏ 自分で用意した画像で画像比較ができた
❏ 見やすい比較結果レポートで目視確認ができた
❏ 画像取得はブラウザ操作ツールで自動化できる
- 21.
- 22.
reg-suitで手軽にVisual Regression Test
❏reg-suitのコア機能
❏ 2つの画像(期待値と現在)を比較
❏ ピクセル単位の差分を検知
❏ 新規画像(現在のみ存在)、削除画像(期待値のみ存在)を認識
❏ 比較結果をHTML形式でレポート
❏ 差分あり一覧、差分なし一覧、新規一覧、削除一覧
❏ 差分の詳細
❏ プラグインで機能拡張できる
- 23.
- 24.
- 25.
reg-suitで手軽にVisual Regression Test
❏初期設定
❏ npx reg-suit init
❏ 追加するプラグインの選択
❏ ワーキングディレクトリの指定
❏ 期待値画像を置くディレクトリなどが含まれる
❏ 現在画像を置くディレクトリの指定
❏ 比較の敏感さの指定
❏ 差分ありと判定する敏感さ
❏ ex.) 1ピクセルの差でも差分ありなのか
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
reg-suitで手軽にVisual Regression Test
❏プラグインのインストール
❏ npx reg-suit init
❏ 追加するプラグインの選択
❏ ワーキングディレクトリの指定
❏ 期待値画像を置くディレクトリなどが含まれる
❏ 現在画像を置くディレクトリの指定
❏ 比較の敏感さの指定
❏ 差分ありと判定する敏感さ
❏ ex.) 1ピクセルの差でも差分ありなのか
- 36.
reg-suitで手軽にVisual Regression Test
❏プラグイン込みの実行
❏ npx reg-suit run(3コマンドを連続実行するコマンド)
❏ npx reg-suit sync-expected
❏ 期待値画像をストレージから取得
❏ npx reg-suit compare
❏ 比較
❏ npx reg-suit publish -n
❏ 比較結果、比較に使用した現在画像をストレージに保存
❏ 比較結果を通知
- 37.
- 38.
- 39.
QA Wolfでスクリーンショットを取得
❏ QAWolfとは
❏ ブラウザ操作コードの自動生成ツール
❏ ブラウザ操作を記録して、Playwright、Jestのコードを自動生成する
❏ エンジニアでなくてもブラウザ操作を自動化できる
❏ 保守性の高いコードは生成されない
❏ が、ブラウザ操作の一時的な自動化としては十分使える
❏ ex.) 今日1日同じ操作繰り返すから自動化しよう
❏ Chromium、Firefox、Webkitでの実行を1コマンドで行える
- 40.
QA Wolfでスクリーンショットを取得
❏ Playwrightとは
❏ブラウザ操作ツール
❏ ヘッドレス含むChromium、Firefox、Webkitに対応している
❏ WebDriverを利用していない
❏ スクリーンショットを取得できる
❏ クリックなどの操作ができるようになるまで自動で待つ
❏ ページ描画のための画像リクエストやjsリクエストを制御できる
❏ リクエスト停止、モック化、レスポンス受信まで待つ、etc.
- 41.
QA Wolfでスクリーンショットを取得
❏ Playwrightとは
❏プロキシを利用できる
❏ Shadow DOM、アップロード/ダウンロードなどにも対応できる
❏ デバイスをエミュレートできる
❏ UserAgent、Viewport、スケール、カラースキーム
❏ 座標、ロケール、オフラインモード
❏ モバイル端末モード、パーミッション(notificationsなど)
❏ etc.
- 42.
- 43.
- 44.
QA Wolfでスクリーンショットを取得
❏ コード自動生成
❏https://time.is/Tokyo にアクセスするコードを生成
❏ npx qawolf create https://time.is/Tokyo xxxx
❏ xxxx.test.jsというファイルが生成される
❏ 指定のURLでブラウザが立ち上がる
❏ ブラウザ操作するとコードが追加される
- 45.
- 46.
- 47.
QA Wolfでスクリーンショットを取得
❏ スクリーンショット取得処理を自分で追加
test("timeis",async () => {
const page = await context.newPage();
await page.goto("https://time.is/Tokyo", { waitUntil: "domcontentloaded" });
行った操作
await page.screenshot({
path: 'directory_contains_actual_images/timeis.png',
fullPage: true
});
});
- 48.
- 49.
- 50.
- 51.
Unit Test同様にCIで実行
❏ 自動E2Eテストの現実に立ち向かう
❏テストNGの時、自動テストの不備をまず疑う現実
❏ 暗黙で目視確認してるような観点は、自動テストで意外と漏れてる現実
❏ 自動テストが動かなくなったら、そのままになる現実
❏ 目視確認テストを追加した
❏ 修正影響を目視確認できる状態にするところまでを、自動化した
❏ 修正影響を目視確認できる状態の維持を、開発者の責務とした
❏ 状態の維持実現のため、Unit Test同様にCIで実行されるようにした
おさらい
- 52.
Unit Test同様にCIで実行
❏ 開発の流れ
❏開発者がコードをcommitする
❏ CIにより様々な処理が行われる
❏ 利用ライブラリの脆弱性チェック
❏ 静的コード解析
❏ Unit Test実行
❏ etc.
❏ 問題がなければコードレビューを依頼
❏ 問題がなければテストを依頼
- 53.
Unit Test同様にCIで実行
❏ 開発の流れ
❏開発者がコードをcommitする
❏ CIにより様々な処理が行われる
❏ 利用ライブラリの脆弱性チェック
❏ 静的コード解析
❏ Unit Test実行
❏ Visual Regression Test実行
❏ etc.
❏ 問題がなければコードレビューを依頼
❏ 問題がなければテストを依頼
- 54.
Unit Test同様にCIで実行
❏ CIへの組込
❏Dockerイメージの準備
❏ CI組込用のQA Wolf公式Dockerイメージを使う
❏ https://hub.docker.com/r/qawolf/playwright-ci
❏ 日本語フォントが含まれず、日本語サイトの表示が文字化けする
❏ 特定フォントが必要ならそれを、ないならNotoなどをインストール
❏ Notoフォントファミリー
❏ Googleが提供しているフォントファミリー
❏ 世界中の言語サポートを目標としている
- 55.
- 56.
- 57.
Unit Test同様にCIで実行
❏ 処理の流れ(+QA Wolf)
画像(現在)
画像(過去)
比較 比較結果
ストレージ取得
保存
通知
QA Wolfでスクリーンショット保存
npx qawolf test xxxx
npx reg-suit run
CIにて実行
- 58.
- 59.
現場の声
❏ 目視確認を追加したことで。。
❏ 開発者
❏想定する影響/想定外の影響があるか目視確認できるようになった
❏ 最低限、画面が表示されることを保証できるようになった
❏ 負債コードの改修に対する精神的負荷を、減らせるようになった
❏ 目視確認用コードの保守は、画面表示だけなので苦労しなかった
❏ コードレビュアー
❏ 画面変化を目視確認でき、良し悪しを判断しやすくなった
❏ 画面変化を目視確認でき、コードが頭に入りやすくなった
- 60.
現場の声
❏ 目視確認を追加したことで。。
❏ QA
❏画面変化を目視確認でき、テスト対象をイメージしやすくなった
❏ テスト開始時点で、画面を表示できることが保証された
❏ 開発者がテストの保守をすることで、開発者を当事者に巻き込めた
❏ CIのテスト環境ネットワークの整備が大変だった
❏ 今まではUnit Testできればよかった
❏ 他システムとの通信が発生するようになった
- 61.
- 62.