Slide 1

Slide 1 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. スモークE2Eテストで 20年モノのシステムから バグを 燻し出す方法 桑原健悟

Slide 2

Slide 2 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 自己紹介 •氏名 :桑原 健悟(くわはら けんご) •所属 :株式会社ラクス •お仕事:Mail Dealerの開発

Slide 3

Slide 3 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 皆さん、バグを見つけていますか?

Slide 4

Slide 4 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. バグを見つけるのって難しいですよね… ・どこに潜んでいる分からない… ・コードが複雑で読み解け無い… etc

Slide 5

Slide 5 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 弊社の は 20年モノなので 特に大変…

Slide 6

Slide 6 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(表側) • メール管理システム • メールの送受信 • 担当者や顧客情報の管理 • 20年のロングセラー商材 ★サポート満足度:95% ★機能満足度 :95% ★継続利用率 :99% https://www.maildealer.jp/

Slide 7

Slide 7 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(裏側) • 20年間かけて増設された機能数の多さ • テストをしても漏れに気づきにくい • ノンフレームワークでコードが複雑 • 影響範囲を見逃す可能性がある 経験と努力と改善をしながら なんとか品質を担保している

Slide 8

Slide 8 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. そのような状況で頑張っていたが…

Slide 9

Slide 9 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. バグ発生 • 関係ないと思っていた画面でバグが発生 少し触れば気づけたのに、誰も気づけなかった アドレス帳を修正 テンプレートの 添付ファイルが開けない!? イメージ

Slide 10

Slide 10 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. どうやってバグを検知すればいい? • E2Eテスト? • 全画面シナリオを作る?コストが高い… • Unitテスト? • 依存関係が複雑でテストが困難な箇所も • 人力で全画面調べる? • 絶対やりたくない 最低限のレベルでいいので手広く実施したい…

Slide 11

Slide 11 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 「スモークE2Eテスト」というテストを 実施してみることに

Slide 12

Slide 12 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. スモークE2Eテストとは • スモークテスト • 「基本機能が動作する」ことを確認する最低限のテスト • E2Eテスト • End to End test のこと。ユーザの操作に近い状況でテストする方法 • スモークテスト + E2Eテスト => 最低限の簡単なE2Eテスト 語源:ハードウェア製品に電気を流し、煙がでたり発火しないことを確認すること。 転じて「最初の簡易テスト」を意味する言葉として使われる

Slide 13

Slide 13 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト対象画面 • メールの送受信など重要機能 → 人が入念にテストするためスモークE2Eテストは不要 • アドレス帳など人がテストしない可能性のある機能 → 「最低限」を担保するためスモークE2Eテストが必要

Slide 14

Slide 14 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト項目 「最低限」に絞ってテスト ・表示 ・エラーなく、問題なく最後まで画面が表示される ・検索 ・デフォルト検索条件でテスト ・登録 ・更新 ・削除 ・ファイルのDL

Slide 15

Slide 15 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. やることは決まった テストを作成しよう!

Slide 16

Slide 16 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発メンバは開発が忙しく、テストを作成する余裕がない • 開発が遅れて炎上している • バグ対応 • リリース準備… etc

Slide 17

Slide 17 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発待ちのテスターは手が空いている • テスター:テスト専任メンバ。開発経験なし • 開発待ちで手が空くこともある 簡単なテストが目的の スモークE2Eテストならテスターでも実装できる!(はず)

Slide 18

Slide 18 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト作成上の考慮点 できるだけ簡単に、機械的に • 日本語の利用 • レビュアー(日本の開発者)の工数削減 • 後で見た際に分かりやすい(保守性・可読性) • セレクタやファイル名の命名規則を決める • 質問や手戻りを抑える

Slide 19

Slide 19 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 準備はできた、いざテスト作成!!

Slide 20

Slide 20 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 実装環境 • Java( Selenide)

Slide 21

Slide 21 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード

Slide 22

Slide 22 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード アドレス帳画面へ遷移 編集リンクから編集画面を表示

Slide 23

Slide 23 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 項目を編集して 変更ボタンクリック

Slide 24

Slide 24 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 一覧画面に表示される各項目を確認

Slide 25

Slide 25 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード(命名規則) 複数行に同じ要素(編集リンク)がある場合は 「x行目」を明記する → 同名の要素があっても場所がひと目でわかる 最後に「テキストボックス」、「ボタン」など 要素の種類を明記する → 何をする要素か分かりやすくする 要素名は画面の表示からコピーする → 別の人が作っても名前が統一される

Slide 26

Slide 26 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 実施してみた結果 • テストコードがシンプル • 日本語で読みやすい • 命名規則が決まっており、セレクタの命名に迷わない → 勉強すればテスターでも増産、修正可能 • テスト作成数 • 7機能分(129ケース)テスト作成済み • 今も絶賛量産中(むしろレビューが追いつかない…) 増産体制が整って「最低限」のテストができてきた

Slide 27

Slide 27 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 成果 • 作成済みの7機能(129ケース)を手動で行った場合、 想定で3.5時間程 → スモークE2Eテスト作成により、 リリースごとに3.5時間の短縮が可能になった

Slide 28

Slide 28 text

#RAKUSMeetup ©2020 RAKUS Co., Ltd. 展望 • 新規開発のプロセスに組み込む • コードの変更に追従してテストも修正 • 新規開発のバグをすぐに発見できる • エンジニアが実施している工程を任せたい • テスト環境のデータの更新