Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E
Search
kuwacchi
April 21, 2021
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E
kuwacchi
April 21, 2021
More Decks by kuwacchi
See All by kuwacchi
おすすめの技術書 LT会_リファクタリング(第2版)/LT_refactor
kuwacchi
0
22k
PHP8で導入されるmatch式 / php8_match
kuwacchi
1
360
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
So, you think you're a good person
axbom
PRO
2
2.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Chasing Engaging Ingredients in Design
codingconduct
0
310
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
ラッコキーワード サービス紹介資料
rakko
1
4.9M
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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. 展望 • 新規開発のプロセスに組み込む • コードの変更に追従してテストも修正
• 新規開発のバグをすぐに発見できる • エンジニアが実施している工程を任せたい • テスト環境のデータの更新