Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E
Search
kuwacchi
April 21, 2021
0
1.6k
スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E
kuwacchi
April 21, 2021
Tweet
Share
More Decks by kuwacchi
See All by kuwacchi
おすすめの技術書 LT会_リファクタリング(第2版)/LT_refactor
kuwacchi
0
21k
PHP8で導入されるmatch式 / php8_match
kuwacchi
1
300
Featured
See All Featured
Building an army of robots
kneath
302
42k
Six Lessons from altMBA
skipperchong
26
3.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Embracing the Ebb and Flow
colly
83
4.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
7
560
A better future with KSS
kneath
235
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
4
99
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Web development in the modern age
philhawksworth
205
10k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
It's Worth the Effort
3n
183
27k
Transcript
#RAKUSMeetup ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. スモークE2Eテストで
20年モノのシステムから バグを 燻し出す方法 桑原健悟
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 自己紹介 •氏名 :桑原 健悟(くわはら けんご)
•所属 :株式会社ラクス •お仕事:Mail Dealerの開発
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 皆さん、バグを見つけていますか?
#RAKUSMeetup ©2020 RAKUS Co., Ltd. バグを見つけるのって難しいですよね… ・どこに潜んでいる分からない… ・コードが複雑で読み解け無い… etc
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 弊社の は 20年モノなので 特に大変…
#RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(表側) • メール管理システム • メールの送受信
• 担当者や顧客情報の管理 • 20年のロングセラー商材 ★サポート満足度:95% ★機能満足度 :95% ★継続利用率 :99% https://www.maildealer.jp/
#RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(裏側) • 20年間かけて増設された機能数の多さ • テストをしても漏れに気づきにくい
• ノンフレームワークでコードが複雑 • 影響範囲を見逃す可能性がある 経験と努力と改善をしながら なんとか品質を担保している
#RAKUSMeetup ©2020 RAKUS Co., Ltd. そのような状況で頑張っていたが…
#RAKUSMeetup ©2020 RAKUS Co., Ltd. バグ発生 • 関係ないと思っていた画面でバグが発生 少し触れば気づけたのに、誰も気づけなかった アドレス帳を修正
テンプレートの 添付ファイルが開けない!? イメージ
#RAKUSMeetup ©2020 RAKUS Co., Ltd. どうやってバグを検知すればいい? • E2Eテスト? • 全画面シナリオを作る?コストが高い…
• Unitテスト? • 依存関係が複雑でテストが困難な箇所も • 人力で全画面調べる? • 絶対やりたくない 最低限のレベルでいいので手広く実施したい…
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 「スモークE2Eテスト」というテストを 実施してみることに
#RAKUSMeetup ©2020 RAKUS Co., Ltd. スモークE2Eテストとは • スモークテスト • 「基本機能が動作する」ことを確認する最低限のテスト
• E2Eテスト • End to End test のこと。ユーザの操作に近い状況でテストする方法 • スモークテスト + E2Eテスト => 最低限の簡単なE2Eテスト 語源:ハードウェア製品に電気を流し、煙がでたり発火しないことを確認すること。 転じて「最初の簡易テスト」を意味する言葉として使われる
#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト対象画面 • メールの送受信など重要機能 → 人が入念にテストするためスモークE2Eテストは不要
• アドレス帳など人がテストしない可能性のある機能 → 「最低限」を担保するためスモークE2Eテストが必要
#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト項目 「最低限」に絞ってテスト ・表示 ・エラーなく、問題なく最後まで画面が表示される ・検索
・デフォルト検索条件でテスト ・登録 ・更新 ・削除 ・ファイルのDL
#RAKUSMeetup ©2020 RAKUS Co., Ltd. やることは決まった テストを作成しよう!
#RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発メンバは開発が忙しく、テストを作成する余裕がない • 開発が遅れて炎上している
• バグ対応 • リリース準備… etc
#RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発待ちのテスターは手が空いている • テスター:テスト専任メンバ。開発経験なし
• 開発待ちで手が空くこともある 簡単なテストが目的の スモークE2Eテストならテスターでも実装できる!(はず)
#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト作成上の考慮点 できるだけ簡単に、機械的に • 日本語の利用 •
レビュアー(日本の開発者)の工数削減 • 後で見た際に分かりやすい(保守性・可読性) • セレクタやファイル名の命名規則を決める • 質問や手戻りを抑える
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 準備はできた、いざテスト作成!!
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 実装環境 • Java( Selenide)
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード アドレス帳画面へ遷移 編集リンクから編集画面を表示
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 項目を編集して 変更ボタンクリック
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 一覧画面に表示される各項目を確認
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード(命名規則) 複数行に同じ要素(編集リンク)がある場合は 「x行目」を明記する → 同名の要素があっても場所がひと目でわかる
最後に「テキストボックス」、「ボタン」など 要素の種類を明記する → 何をする要素か分かりやすくする 要素名は画面の表示からコピーする → 別の人が作っても名前が統一される
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 実施してみた結果 • テストコードがシンプル • 日本語で読みやすい
• 命名規則が決まっており、セレクタの命名に迷わない → 勉強すればテスターでも増産、修正可能 • テスト作成数 • 7機能分(129ケース)テスト作成済み • 今も絶賛量産中(むしろレビューが追いつかない…) 増産体制が整って「最低限」のテストができてきた
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 成果 • 作成済みの7機能(129ケース)を手動で行った場合、 想定で3.5時間程 →
スモークE2Eテスト作成により、 リリースごとに3.5時間の短縮が可能になった
#RAKUSMeetup ©2020 RAKUS Co., Ltd. 展望 • 新規開発のプロセスに組み込む • コードの変更に追従してテストも修正
• 新規開発のバグをすぐに発見できる • エンジニアが実施している工程を任せたい • テスト環境のデータの更新