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.7k
スモーク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
310
Featured
See All Featured
Building Applications with DynamoDB
mza
93
6.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
220
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Mobile First: as difficult as doing things right
swwweet
222
9.2k
A designer walks into a library…
pauljervisheath
205
24k
Building Adaptive Systems
keathley
39
2.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Gamification - CAS2011
davidbonilla
80
5.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
520
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
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. 展望 • 新規開発のプロセスに組み込む • コードの変更に追従してテストも修正
• 新規開発のバグをすぐに発見できる • エンジニアが実施している工程を任せたい • テスト環境のデータの更新