Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
株式会社ブレインパッド 2022年04月19日 E2Eテストと自動化への取り組み 1
Slide 2
Slide 2 text
©2017 BrainPad Inc. 名前 ● 高橋 聡 (タカハシ ソウ) 所属 ● 株式会社ブレインパッド プロダクトビジネス本部 開発部 ● Rtoaster reach+の開発担当 趣味 ● 最近:パスタ・ゴルフ ● ラグビー・ハンバーガー 自己紹介 2
Slide 3
Slide 3 text
©2017 BrainPad Inc. Rtoaster reach+の自動化に関する取り組み - はじめに - 課題 - Renovate - TestCafe - 今後について アジェンダ 3
Slide 4
Slide 4 text
はじめに
Slide 5
Slide 5 text
©2017 BrainPad Inc. ● Rtoaster reach+ 最初開発スピードを重視していたので運用面に関し て考慮できていなかった部分が多数存在しました。 ● CI/CD導入による自動化などには取り組み運用、まだ属人的な運用が 課題として残っています。 ● 課題の中からパッケージ管理やE2Eテストへの取り組みについて今回 お話しできたらと思います。 背景 5
Slide 6
Slide 6 text
©2017 BrainPad Inc. 開発環境 6 ● 言語 ○ Python, TypeScript, javascript ● フレームワーク ○ Flask, Vue.js ● インフラ ○ App Engine, BigQuery, Firestore, Dataflow他... ● ソースコード管理 ○ Bitbucket ● その他 ○ CircleCI, Terraform
Slide 7
Slide 7 text
課題
Slide 8
Slide 8 text
©2017 BrainPad Inc. ● Rtoaster reach+ではパッケージのバージョンアップに関して新しくライブラリを 追加する際やセキュリティの問題があった際にバージョンアップをする運用に なっています。 ● Poetry やnpmなどでパッケージの依存関係には考慮していますが、自動化 はできていません。またTerrafromのパッケージなどは考慮に入っていないの でバージョン管理ができていない状況です。 ● そこでRenovateを導入して依存関係の更新を自動化しようと現在取り組んで います。 課題 - パッケージ管理 - 8
Slide 9
Slide 9 text
Renovate
Slide 10
Slide 10 text
©2017 BrainPad Inc. Renovateはライブラリの依存関係の更新を自動化するツールです。依存関係を更新するプルリクエ ストを自動で作成してくれます。 類似したツールとしてはDepandabotなどがあります。 選んだ理由 ● Bitbucketだから・・・・ ● Dockerイメージを公開しているのでCircleCIで動かすことができる。 ● 設定できる内容が豊富でチームに合わせた運用にできる Renovateとは? 10
Slide 11
Slide 11 text
©2017 BrainPad Inc. プルリクエストの制限 ● プルリクエストを自動で作ってくれるのはいいですが、数が多すぎると開発への影響も出るため制 限を現状10程度に設定しようと考えています。 実行頻度 ● プルリクエストの作成頻度はスプリントミーティングの前日に作成するようにしてスプリントでチーム で確認しマージする運用を考えています。そうすることで開発作業のPRと混在することがなくなるの で開発作業のストレスにならないと考えています。 アップデートの除外 ● Rtoaster reach+は現在リファクタリング中ということもあり利用されなくなるライブラも存在します。 それらのライブラリをrenovete.jsonで除外設定することができます Renovateの運用 11
Slide 12
Slide 12 text
©2017 BrainPad Inc. Renovate.jsonは右のように設定します。 設定ファイル 12
Slide 13
Slide 13 text
©2017 BrainPad Inc. Patchをオートマージしたい ● メジャーやマイナーバージョンアップに関してはQAで回帰テストを行う必要性があるにしてもPatch のバージョンアップで毎回回帰テストを行うのはQAに負担がかかるので安全を担保しつつオート マージがしたい。 回帰テストの負担 ● オートマージはしたいがRtoaster reach+では単体テストの自動化などは取り組んでいたが、E2Eテ ストの導入はできていなかった。 これらの課題解決のためE2Eテスト(TestCafe)の導入にも取り組んでいます。 Renovate導入の中での課題 13
Slide 14
Slide 14 text
testcafe
Slide 15
Slide 15 text
©2017 BrainPad Inc. TestCafeはE2Eテストを行うフレームワークです。 選んだ理由 ● ツールを選んでいた当時、画像比較が無料でできるのはTestCafeだけだった。 ● 導入が楽にできる ○ npm install -g testcafe のみで環境構築は大丈夫 TestCafeとは 15
Slide 16
Slide 16 text
©2017 BrainPad Inc. 画像比較機能 TestCafeでは画像比較という機能があり、TestCafeを実行した際に撮ったスクリーンショットと期待する 画面を比較する機能があります。 1回目に期待の写真を撮ります。 testcafe chrome sample_testcafe.js -s path=./screenshots --take-snapshot base 2回目に実際の写真を撮ります。 testcafe chrome sample_testcafe.js -s path=./screenshots --take-snapshot actual 画像比較機能 16
Slide 17
Slide 17 text
©2017 BrainPad Inc. 実行コマンド testcafe-blink-diff ./screenshots --compare base:actual --open --threshold 0.0001 画像比較機能 17
Slide 18
Slide 18 text
©2017 BrainPad Inc. 画像比較(Open diff) 18
Slide 19
Slide 19 text
©2017 BrainPad Inc. 画像比較(Compare) 19
Slide 20
Slide 20 text
©2017 BrainPad Inc. テストケース 過去の回帰テストから機能ごとに必要なテストを一覧の表にまとめ、それをTestCafeで実装する運用をし ています。 自動化 TestをCircleCIで実行するようにしています。 各種ブラウザ(chrome, firefox, Edgeなど)をCI上で実行できるように準備の必要がありますがイメージ が公開されているので簡単に構築できます。 TestCafe運用 20
Slide 21
Slide 21 text
©2017 BrainPad Inc. Renovateの運用 ● E2Eテストで回帰テストの80%~90%くらいまでカバーして快適にRenovateを運用できるように したいと考えております。 配信までのチェック ● Rtoaster reach+は配信サービスなのでアプリプッシュ通知の確認までテストできたらと考えて います。TestCafeはモバイル端末でのテストも可能なので考慮すべき点は多いと思いますが 可能だと考えています。 今後について 21
Slide 22
Slide 22 text
おわり ありがとうございました。