Slide 1

Slide 1 text

株式会社ヒューマンクレスト UIからの⾃動テスト事例2選 取締役 兼 技術推進本部 本部⻑ 浅⻩ 友隆 1

Slide 2

Slide 2 text

© 2024 Human Crest Co., Ltd. AGENDA 本⽇のアジェンダ 1. ⾃動テストの⼭ 2. 環境の変化 3. 事例 1. 何を⾃動テストするのか︖ 2. 運⽤課題を克服する 4. 継続したその先に 5. まとめ 2

Slide 3

Slide 3 text

© 2024 Human Crest Co., Ltd. ⾃⼰紹介 浅⻩ 友隆 技術推進本部 本部⻑ 3 ● ⾃動テスト⼤好き ● 趣味 : カメラ、ドライブ ● 職歴 : 営業→開発→テスト

Slide 4

Slide 4 text

© 2024 Human Crest Co., Ltd. 株式会社ヒューマンクレスト 4 ● ソフトウェアのテストを専業にしている

Slide 5

Slide 5 text

© 2024 Human Crest Co., Ltd. 株式会社ヒューマンクレスト 5 Japan Quality Co., Ltd./ DADラボ(海外検証拠点) ベトナム ダナン 16F, Da Nang Software Park, 02 Quang Trung, Thach Thang Ward, Hai Chau District, Da Nang, VIETNAM ARRANGILITY SDN. BHD. マレーシア サイバージャヤ Unit LG-02 & LG-03, Ground Floor, CoPlace 5 Block 3710, Persiaran APEC, Cyber 8, 63000 Cyberjaya Selangor Darul Ehsan, MALAYSIA

Slide 6

Slide 6 text

© 2024 Human Crest Co., Ltd. 本⽇の事例に関して ● 決してだれかを⾮難しているわけではありません。 ● ⾃動テストは、UI層を操作するE2Eテストに限った話です。Unitテスト等は 含まれておりません。 UI Service Unit 6

Slide 7

Slide 7 text

© 2024 Human Crest Co., Ltd. 現状、⾃動テストやってないんですか︖ ● やりたいんだけど、どこからやればいいのか︖ ● ⾃動テストを始めるに当たって ○ どんな技術を使っているのか︖ ○ どのように実現しているのか︖ ○ どんなテストを実⾏しているのか︖ 7

Slide 8

Slide 8 text

© 2024 Human Crest Co., Ltd. 8 ⽬的 実⾏ レポーティング 結果分析 ツ ー ル フ レ ー ム ワ ー ク 環 境 CI/CD ス コ ー プ 戦略 設 計 リソース チーム ⽂化 スキルセット テスト⾃動化 ソリューション

Slide 9

Slide 9 text

© 2024 Human Crest Co., Ltd. ⾃動テストの⼭ 1. 9

Slide 10

Slide 10 text

© 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ ⾃動テスト ⾃動テスト 登るべき⼭が2つある 10

Slide 11

Slide 11 text

© 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ 始める 継続する ⾃動テスト ⾃動テスト 11

Slide 12

Slide 12 text

© 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ 始める 継続する ⾃動テスト ⾃動テスト 12

Slide 13

Slide 13 text

© 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ 始める 継続する ⾃動テスト ⾃動テスト 初期構築を素早くできるか︖ 13

Slide 14

Slide 14 text

© 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ 始める 継続する ⾃動テスト ⾃動テスト テストをリファクタリングできるか︖ 14

Slide 15

Slide 15 text

© 2024 Human Crest Co., Ltd. 環境の変化 2. 15

Slide 16

Slide 16 text

© 2024 Human Crest Co., Ltd. 2.1 環境の変化 ー プロセス ● ウォーターフォールからアジャイルへ 16

Slide 17

Slide 17 text

© 2024 Human Crest Co., Ltd. 2.2 環境の変化 ー テクノロジー ● ツールの変化 商⽤ツール OSS SaaS 17

Slide 18

Slide 18 text

© 2024 Human Crest Co., Ltd. 2.3 環境の変化 ー テストへの期待 18 ● テストは、実施するものではなく、実⾏されているもの ● テストは、バグを⾒つけるものではなく、フィードバックを得るもの

Slide 19

Slide 19 text

© 2024 Human Crest Co., Ltd. 事例 3. 19

Slide 20

Slide 20 text

© 2024 Human Crest Co., Ltd. 事例の前に、共通している「技術」の話 ● テスト⾃動化のフレームワーク ○ Selenium(Selenium Grid) ○ Appium ● テストフレームワーク ○ JUnit ○ Cucumber ● テスト実⾏環境 ○ 実機 ○ Workspaces ○ Docker ● CI環境 ○ Jenkins ○ GitLab ● スクリプト⾔語 ○ Java ● テストケース管理 ○ エクセル ○ (テストフレームワーク) ● その他 ○ OpenCV(画像⽐較) 20

Slide 21

Slide 21 text

© 2024 Human Crest Co., Ltd. ⼀般的な構成図 21 WorkSpaces Node Hub EC2 Availability Zone ap-northeast-1a Availability Zone ap-northeast-1c LynxDashboard LynxRun GitLab Excel管理 テストケース テスト 対象

Slide 22

Slide 22 text

© 2024 Human Crest Co., Ltd. 事例 1 何を⾃動テストするのか︖ 3.1 22

Slide 23

Slide 23 text

© 2024 Human Crest Co., Ltd. 事例 1 ● BtoB Webサービス会社 ● テスト対象システム Webアプリケーション ○ A システム(PHP) ○ B システム(Java) ● ステージング環境 23

Slide 24

Slide 24 text

© 2024 Human Crest Co., Ltd. 事例1 チームに関して ● プロダクト毎にチームがある(5〜8名) ○ プロダクトオーナー ○ 開発者 ○ サポート ● チーム内のコミュニケーションは良好 ○ 毎週、チーム毎にミーティングを⾏い、⽬標、結果、対応状況の共有 ● 開発プロセスはウォーターフォール ○ 期限はあるが、開発者にお任せ状態 ○ 機能追加、機能改善などを⾏いながらも、サポートからの問い合わせ、調査が発 ⽣した場合は、優先事項が変更され⽇々追われている 24

Slide 25

Slide 25 text

© 2024 Human Crest Co., Ltd. 事例1 ● 課題 ○ リグレッションテストができていないなど品質⾯で不安がある、不具合はユーザ ーからの報告があがって初めて気がつくこともある ● 思い ○ アップデートで動かなくなったところがないか、確認したい ○ 不具合が発⽣していないか知りたい ○ 毎⽇⾃動テストが動いている状態にしたい 25

Slide 26

Slide 26 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める 何を⾃動テストにするか︖ 26

Slide 27

Slide 27 text

© 2024 Human Crest Co., Ltd. 事例1 テストピラミッド 27 UI Service Unit 2009年 Mike Cohn, Succeeding with Agile: Software Development Using Scrum Manual Testing

Slide 28

Slide 28 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める ユーザーに提供している 基本的な機能をテストする 28

Slide 29

Slide 29 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める 29

Slide 30

Slide 30 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める 30

Slide 31

Slide 31 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める ● テストケース数 ○ Aシステム︓20ケース ○ Bシステム︓77ケース ● 最初の1テストケースが回り始めるまで 3週間 ● 全てのテストケースが作成完了したのが、2ヶ⽉後 ● テスト実⾏は、毎⽇1回 ● テスト失敗時、Slackへ概要とスクショを送信 31

Slide 32

Slide 32 text

© 2024 Human Crest Co., Ltd. 事例1 変化 ● スクラムが導⼊された。 ● Unitテストの⾃動化も始まった。 ● リファクタリングできるようになった。 ● 今後 ○ アンチパターンにならないように 気をつける必要がある 32 https://testing.googleblog.com/2020/11/fixing-test-hourglass.html

Slide 33

Slide 33 text

© 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める とにかく 1テストケースが 毎⽇実⾏される テスト実⾏環境を 最速でつくる 33

Slide 34

Slide 34 text

© 2024 Human Crest Co., Ltd. 事例 2 運⽤課題を克服する 3.2 34

Slide 35

Slide 35 text

© 2024 Human Crest Co., Ltd. 事例2 35

Slide 36

Slide 36 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テストの概要 「CASIO WATCHES」にてデグレチェックを中⼼とした⾃動テストを実施し、 基本機能が正常に稼働していることを確認する ● ⽬的 ○ 開発中の不具合の早期発⾒、⼿戻り削減、開発負荷の軽減、テスト⼯数の削減 ○ 本番リリース後の全体チェック、市場不具合の早期発⾒、市場品質の確保 ● 対象 ○ 開発環境でのリグレッションテスト(回帰テスト) ○ 本番環境でのリグレッションテスト(回帰テスト) ○ (市場問題となったケース) 36

Slide 37

Slide 37 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テストの概要 ● 対象アプリ ○ 本番アプリ ○ 開発アプリ ○ (リリース直前) ● テスト内容 ○ 機能テスト ○ 284ケース/スイート ● テスト実⾏頻度 ○ 固定時間(0時、12時) 37

Slide 38

Slide 38 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テストの全体構成 1200実⾏/⽇ 38 Mac Mac mini Mac mini Mac mini

Slide 39

Slide 39 text

© 2024 Human Crest Co., Ltd. 事例2 テスト実⾏の⼯夫 39

Slide 40

Slide 40 text

© 2024 Human Crest Co., Ltd. ⾃動テストを継続するために 運⽤の課題を克服する 40

Slide 41

Slide 41 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テスト運⽤で発⽣した課題 1. テスト失敗時の対応が⼤変 2. テストが不安定すぎる 41

Slide 42

Slide 42 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テスト運⽤における課題1 ● 課題︓テストが失敗した時、原因調査、修正まで数時間かかる ○ 1テストケースの実⾏時間が⻑い(10〜30分) →再実⾏→途中で落ちる… 修正確認で、また落ちる… ● 原因 ○ 画⾯単位のテストケースを⾃動化していた。 ● 対策 ○ ⾃動テスト⽤にケースを再設計し分割。 元々は48ケースだったが、現在284ケース(最終的には500ケース) ● 効果 ○ テストが安定した ○ 原因調査時間を⼤幅に短縮できた 42

Slide 43

Slide 43 text

© 2024 Human Crest Co., Ltd. 事例2 ⾃動テスト運⽤における課題2 ● ちょっとした画⾯の変更でテストが失敗する ○ テストスクリプトの修正が頻発 ○ (常に不安定な箇所がたくさんあった) ● 原因 ○ ⻑いXPATH、スクロールで変わってしまう ○ OpenCVの画像マッチングの精度問題 ● 対策 ○ (Appiumで認識できる) IDをつける ● 効果 ○ テストが安定した ○ 開発チームとコラボレーションができた 43

Slide 44

Slide 44 text

© 2024 Human Crest Co., Ltd. 事例2 継続する為のポイント ● 担当者を決める(まずは属⼈化) ● 失敗テストを放置しない(24時間以内に⽅針を決める) ● テストを安定化させる(不安定なテストは捨てる) ● テストのリファクタリングを常に⾏う(テストの⽬的、価値を再構築する) ● 開発者や他のメンバーの協⼒を得る(コラボレーションしよう︕) 44

Slide 45

Slide 45 text

© 2024 Human Crest Co., Ltd. 継続したその先に 4. 45

Slide 46

Slide 46 text

© 2024 Human Crest Co., Ltd. 4. 新しい技術を取り⼊れよう ● 10年 ⾃動テストを続けているお客様がいる ● 常に新しい技術を取り⼊れ、安定したテストを⽬指す 46 初期 • Windows実機 • Selenium 1.X • Windowsスケ ジューラー クラサバ期 • SeleniumGrid • Jenkinsの導⼊ クラウド化 • コンテナ化 • AWSの利⽤

Slide 47

Slide 47 text

© 2024 Human Crest Co., Ltd. 4.最近の取り組み ● Firebase Test Lab上での⾃動テスト 47

Slide 48

Slide 48 text

© 2024 Human Crest Co., Ltd. まとめ 5. 48

Slide 49

Slide 49 text

© 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント1 始める 継続する ⾃動テスト ⾃動テスト 49

Slide 50

Slide 50 text

© 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント2 始める 継続する ⾃動テスト ⾃動テスト 50

Slide 51

Slide 51 text

© 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント2 始める 継続する ⾃動テスト ⾃動テスト 初期構築を素早く⾏う 51

Slide 52

Slide 52 text

© 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント3 始める 継続する ⾃動テスト ⾃動テスト 52

Slide 53

Slide 53 text

© 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント3 始める 継続する ⾃動テスト ⾃動テスト テストを リファクタリングする 53

Slide 54

Slide 54 text

© 2024 Human Crest Co., Ltd. (再掲) 事例2 継続する為のポイント ● 担当者を決める(まずは属⼈化) ● 失敗テストを放置しない(24時間以内に⽅針を決める) ● テストを安定化させる(不安定なテストは捨てる) ● テストのリファクタリングを常に⾏う(テストの⽬的、価値を再構築する) ● 開発者や他のメンバーの協⼒を得る(コラボレーションしよう︕) 54

Slide 55

Slide 55 text

© 2024 Human Crest Co., Ltd. 5. まとめ E2Eの⾃動テストは ● 基本的な機能のテストにとどめる ● すぐ始める ● リファクタリングする ● 技術トレンドを追う 55 UI Service Unit 始める 継続する ⾃動テスト ⾃動テスト

Slide 56

Slide 56 text

© 2024 Human Crest Co., Ltd. See the world not as it is, but as it should be. 56 あるがままでなく、あるべき世界をみろ

Slide 57

Slide 57 text

© 2024 Human Crest Co., Ltd. 変⾰と研鑽 57

Slide 58

Slide 58 text

© 2024 Human Crest Co., Ltd. ご清聴ありがとうございました 58