LINEのUI自動テスト事例
2018 / 6 / 27
LINE Fukuoka株式会社
大園博昭
自己紹介
• LINE Fukuoka株式会社
• 開発センター
• テスト自動化チーム
• UIテストに限らずテスト自動化を幅広く展
開する
• 必要であれば内製のライブラリを作成
• UI Test Automationチーム
• 開発・QAチームと協力してプロダクトのUI
テストを深く作る
ref: https://linefukuoka.co.jp/ja/facts/index
LINEのテスト自動化事情
世界各国(主にアジア)に拠点があり、
• それぞれテスト自動化に関するチームを持っている
• それぞれ異なる施作を持っている
一方、福岡は?
(本日お話する内容はLINE Fukuokaに特化した内容です)
↓
E2E UIテスト
• Browser
• iOS Application
• Android Application
福岡のテスト自動化チームで使用している代表的なツール
テスト自動化を行う上で気をつけていること。
特に独創的・奇抜なことはしていません
• Stability
• 秒数指定でsleepをしない
• 不安定な実行環境を作らない(特にmobile)
• Maintainability
• UI変更に強いものに
• Page object patternなどのデザインパターンを採用する
• Test用のcustomタグ、classを使って要素を掴む
• Readability of the test result
• 後述
自動テストを作り始めてすぐに気づいた問題
↓
テスト結果はエンジニアだけでなく、
QAやプランナーなどの非エンジニアも確認する
↓
「CIのログ見てください」はつらい
↓
既存のレポートツールでマッチするのがない
↓
作った
Ayachan
ayachan-server ayavue
ayachan-client
Ayachan
ayachan-server ayavue
ayachan-client
UIテスト実例 - LINE STORE -
https://store.line.me
• スタンプや着せかえ、各種ゲームコインを購入することができるwebサービス
• LINEアプリから購入するよりもお得なキャンペーンも実施中!
https://store.line.me
• 2018年6月から絵文字の取り扱いを開始
なぜこのプロジェクトでテスト自動化?
↓
• リリースサイクルが早い(1週間に1回)
• 新規機能と同時に既存の機能に問題ない
か確認する回帰テスト(リグレッションテス
ト)の需要が大きい
前提
• 週に一回リリース
• Dev, Staging, Releaseの3環境
• Manual QAは毎週Staging環境でリグレッ
ションテストを実施、リリース後Release環境
でも確認を実施
• UIテストを実装し、Manual QA + UIテストの
ハイブリッド体制に
• 自動テストは毎日1回全環境で実施
• 現在のUIテストCoverage = 71.2%
(実装済み / 実装予定) * 100[%]
Manual
QA
Automation
test
New features test
Full regression test
Test cases Dev Staging Release Total
PC 212 212 212 636
Android 194 194 - 388
iOS 194 194 - 388
Total 600 600 212 1,412
テストを自動化したことによって、
どんなことがハッピーになったか
0
1
2
3
4
5
6
7
8
9
10
11
2017 12月 2018 1月 2018 2月 2018 3月 2018 4月 2018 5月 2018 6月
Manual QA Automated test
• 直近半年のリグレッションテストで見つかったバグ数
0
1
2
3
4
5
6
7
8
9
10
11
2017 12月 2018 1月 2018 2月 2018 3月 2018 4月 2018 5月 2018 6月
Manual QA Automated test
• 自動テストで見つけた問題のほぼ100%がDev環境
• QAはリソースの関係でリグレッションテストをStaging環境メインで行なっている
• Dev環境で問題が見つかる -> 手戻りが少ない
0
1
2
3
4
5
6
7
8
9
10
11
2017 12月 2018 1月 2018 2月 2018 3月 2018 4月 2018 5月 2018 6月
Manual QA Automated test
• 4月 ~ 5月はDev環境で多くの問題を見つけ、Staging環境へ問題が引き渡されるの
を未然に防ぐことができた。
0
1
2
3
4
5
6
7
8
9
10
11
2017 12月 2018 1月 2018 2月 2018 3月 2018 4月 2018 5月 2018 6月
Manual QA Automated test
• 一方、大きな改修が入った時期は手動のQAが多くの問題を見つけた。
• 自動テストは実装したことしかテストしてくれない -> テスト選定が非常に大事
0
1
2
3
4
5
6
7
8
9
10
11
2017 12月 2018 1月 2018 2月 2018 3月 2018 4月 2018 5月 2018 6月
Manual QA Automated test
• 人的コストの削減には至っていない(狙っていない)
• 単にUIテストを増やしてもメンテナンスコストが増大していく
• 全部をUIテストで解決するのは難しい
チームの指針
• 自分たちだけでテストを書かない
• 全部のテストを我々のチームだけで書く・メンテナンス
していくなんて無理
• Engineerと積極的に協業
• なんでもかんでもE2Eで解決しようとしない
• 高コストのUIテストは理想的には最低限のシナリオを
カバーするだけ
• Unit/Integrationテストでできるところはそちらで
• e.g. htmlのviewの部分だけならE2EよりもUnitテスト
• E2Eの自動テストを作ることだけが仕事ではない
• Devチームから、あるいはQAチームから「これ自動化
して欲しい」の要請を精査せずに安請け合いすると大
変なことに
• 開発チームが仕事しやすくならなければ意味がな
い
• 弊社には素晴らしいEngineerがたくさんいる
• Engineerがやりたいことができる、作りたいものに集
中できるように手伝いをする
• テストを書くのが辛くなってしまったら本末転倒。テスト
を書いた方が楽に開発できると思ってもらえるように
↓
最終的にプロダクトの利益に繋がらなければ意味
がない
LINE FukuokaではAutomation Testing Engineerは
もちろん、様々なエンジニアを募集しています!
https://linefukuoka.co.jp/ja/career/list/engineer/

LINE のUI自動テスト事例

Editor's Notes

  • #6 今日お話するのは福岡のチームが行なっていることで、 LINE全体として取り組んでいることではないことを強調しておいたほうがよさそう