Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UIからの自動テスト事例

atom
March 15, 2024

 UIからの自動テスト事例

JaSST Tokyo 2024 
にて発表した資料です。
HP: http://www.humancrest.co.jp
#JaSST #テスト自動化 #自動テスト #TestAutomation

atom

March 15, 2024
Tweet

More Decks by atom

Other Decks in Technology

Transcript

  1. © 2024 Human Crest Co., Ltd. AGENDA 本⽇のアジェンダ 1. ⾃動テストの⼭

    2. 環境の変化 3. 事例 1. 何を⾃動テストするのか︖ 2. 運⽤課題を克服する 4. 継続したその先に 5. まとめ 2
  2. © 2024 Human Crest Co., Ltd. ⾃⼰紹介 浅⻩ 友隆 技術推進本部

    本部⻑ 3 • ⾃動テスト⼤好き • 趣味 : カメラ、ドライブ • 職歴 : 営業→開発→テスト
  3. © 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
  4. © 2024 Human Crest Co., Ltd. 本⽇の事例に関して • 決してだれかを⾮難しているわけではありません。 •

    ⾃動テストは、UI層を操作するE2Eテストに限った話です。Unitテスト等は 含まれておりません。 UI Service Unit 6
  5. © 2024 Human Crest Co., Ltd. 現状、⾃動テストやってないんですか︖ • やりたいんだけど、どこからやればいいのか︖ •

    ⾃動テストを始めるに当たって ◦ どんな技術を使っているのか︖ ◦ どのように実現しているのか︖ ◦ どんなテストを実⾏しているのか︖ 7
  6. © 2024 Human Crest Co., Ltd. 8 ⽬的 実⾏ レポーティング

    結果分析 ツ ー ル フ レ ー ム ワ ー ク 環 境 CI/CD ス コ ー プ 戦略 設 計 リソース チーム ⽂化 スキルセット テスト⾃動化 ソリューション
  7. © 2024 Human Crest Co., Ltd. 1. ⾃動テストの⼭ 始める 継続する

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

    ⾃動テスト ⾃動テスト テストをリファクタリングできるか︖ 14
  9. © 2024 Human Crest Co., Ltd. 2.1 環境の変化 ー プロセス

    • ウォーターフォールからアジャイルへ 16
  10. © 2024 Human Crest Co., Ltd. 2.2 環境の変化 ー テクノロジー

    • ツールの変化 商⽤ツール OSS SaaS 17
  11. © 2024 Human Crest Co., Ltd. 2.3 環境の変化 ー テストへの期待

    18 • テストは、実施するものではなく、実⾏されているもの • テストは、バグを⾒つけるものではなく、フィードバックを得るもの
  12. © 2024 Human Crest Co., Ltd. 事例の前に、共通している「技術」の話 • テスト⾃動化のフレームワーク ◦

    Selenium(Selenium Grid) ◦ Appium • テストフレームワーク ◦ JUnit ◦ Cucumber • テスト実⾏環境 ◦ 実機 ◦ Workspaces ◦ Docker • CI環境 ◦ Jenkins ◦ GitLab • スクリプト⾔語 ◦ Java • テストケース管理 ◦ エクセル ◦ (テストフレームワーク) • その他 ◦ OpenCV(画像⽐較) 20
  13. © 2024 Human Crest Co., Ltd. ⼀般的な構成図 21 WorkSpaces Node

    Hub EC2 Availability Zone ap-northeast-1a Availability Zone ap-northeast-1c LynxDashboard LynxRun GitLab Excel管理 テストケース テスト 対象
  14. © 2024 Human Crest Co., Ltd. 事例 1 • BtoB

    Webサービス会社 • テスト対象システム Webアプリケーション ◦ A システム(PHP) ◦ B システム(Java) • ステージング環境 23
  15. © 2024 Human Crest Co., Ltd. 事例1 チームに関して • プロダクト毎にチームがある(5〜8名)

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

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

    Service Unit 2009年 Mike Cohn, Succeeding with Agile: Software Development Using Scrum Manual Testing
  18. © 2024 Human Crest Co., Ltd. 事例1 ⾃動テストを始める • テストケース数

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

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

    毎⽇実⾏される テスト実⾏環境を 最速でつくる 33
  21. © 2024 Human Crest Co., Ltd. 事例2 ⾃動テストの概要 「CASIO WATCHES」にてデグレチェックを中⼼とした⾃動テストを実施し、

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

    ◦ 本番アプリ ◦ 開発アプリ ◦ (リリース直前) • テスト内容 ◦ 機能テスト ◦ 284ケース/スイート • テスト実⾏頻度 ◦ 固定時間(0時、12時) 37
  23. © 2024 Human Crest Co., Ltd. 事例2 ⾃動テスト運⽤における課題1 • 課題︓テストが失敗した時、原因調査、修正まで数時間かかる

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

    ◦ テストスクリプトの修正が頻発 ◦ (常に不安定な箇所がたくさんあった) • 原因 ◦ ⻑いXPATH、スクロールで変わってしまう ◦ OpenCVの画像マッチングの精度問題 • 対策 ◦ (Appiumで認識できる) IDをつける • 効果 ◦ テストが安定した ◦ 開発チームとコラボレーションができた 43
  25. © 2024 Human Crest Co., Ltd. 事例2 継続する為のポイント • 担当者を決める(まずは属⼈化)

    • 失敗テストを放置しない(24時間以内に⽅針を決める) • テストを安定化させる(不安定なテストは捨てる) • テストのリファクタリングを常に⾏う(テストの⽬的、価値を再構築する) • 開発者や他のメンバーの協⼒を得る(コラボレーションしよう︕) 44
  26. © 2024 Human Crest Co., Ltd. 4. 新しい技術を取り⼊れよう • 10年

    ⾃動テストを続けているお客様がいる • 常に新しい技術を取り⼊れ、安定したテストを⽬指す 46 初期 • Windows実機 • Selenium 1.X • Windowsスケ ジューラー クラサバ期 • SeleniumGrid • Jenkinsの導⼊ クラウド化 • コンテナ化 • AWSの利⽤
  27. © 2024 Human Crest Co., Ltd. 5. ⾃動テストの⼭ つまずきポイント2 始める

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

    継続する ⾃動テスト ⾃動テスト テストを リファクタリングする 53
  29. © 2024 Human Crest Co., Ltd. (再掲) 事例2 継続する為のポイント •

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

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

    as it is, but as it should be. 56 あるがままでなく、あるべき世界をみろ