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

ソフトウェアテスト自動化の変遷。変わったことと変わらないこと。テスト自動化の導入パターン。

atom
March 18, 2022

 ソフトウェアテスト自動化の変遷。変わったことと変わらないこと。テスト自動化の導入パターン。

Developers summit 2022 17-C-3
にて、発表した資料です。
https://event.shoeisha.jp/devsumi/20220217/session/3662
#devsumi #テスト自動化 #自動テスト

atom

March 18, 2022
Tweet

More Decks by atom

Other Decks in Technology

Transcript

  1. だれ︖ •浅⻩ 友隆 •テスト専⾨会社で、テスト⾃動化を推進する⼈ •経歴 • 開発 ≒15年 VB, VC,

    Java, Oracle • テスト ≒15年 機能/⾮機能テストの⾃動化 ©2022 Human Crest Co., Ltd. 3
  2. ツール •Selenium, Appium, Selenide, Gauge, Cucumber-JVM •JUnit, Gradle, Jenkins, GitLab

    CI, Heroku CI •Docker, AWS EC2, ECS, Fargate, WorkSpaces, •QTP, Silk Test, Ranorex, •LoadRunner, Silk Performer, JMeter •SOAtest, Postman ….. ©2022 Human Crest Co., Ltd. 4
  3. 変わったこと •スコープ • 対象 • 範囲 •スピード • タイミング •

    実⾏時間 • フィードバック ©2022 Human Crest Co., Ltd. 17
  4. 変わったこと スコープ • 対象 • UI → API • Web

    → Mobile • オンプレ → クラウド • システム全体 → フロントエンド・バックエンド • 範囲 • ⼤ → ⼩ • 広 → 狭 • (モノリス → マイクロサービス) • (要件 → 機能) ©2022 Human Crest Co., Ltd. 18
  5. 概念 • 1999 • エクストリームプログラミング → 2004 → (訳2015) •

    2001 • アジャイルソフトウェア開発宣⾔ • 2004 • テスト駆動開発(TDD) • 2008 • アジャイルテスト4象限 (Agile Testing: A Practical Guide for Testers and Agile Teams 訳2009) • テストピラミッド • 2009 • 受け⼊れ駆動開発 (Growing Object-Oriented Software, Guided by Tests 訳2012) • 2012 • テストサイズ (How Google Tests Software 訳 2014)2010 Google Testing Blog • 2017 • バグフィルター testing in DevOps ©2022 Human Crest Co., Ltd. 20
  6. 2009年 Mike Cohn, Succeeding with Agile: Software Development Using Scrum

    テストピラミッド UI Service Unit ©2022 Human Crest Co., Ltd. 22
  7. Technology-Facing Functional Tests Story Tests Examples Prototypes Simulations Exploratory Testing

    Scenarios Usability Testing UAT(User Acceptance Testing) Alpha / Beta Unit Tests Component Tests Performance Testing Load Testing Security Testing “-ility” Testing Business-Facing Critique-Product Supporting the Team Automated Tools Automated & Manual Manual Q1 Q2 Q3 Q4 2008年 Lisa Crispin/Janet Gregory, Agile Testing: A Practical Guide for Testers and Agile Teams アジャイルテストの4象限 28
  8. アジャイルテストの4象限 • 縦軸 • ビジネス⾯↔技術⾯ • 横軸 • チーム⽀援↔製品批評 •

    テストと開発プロセスにおいて、製品の品質をすべての⾯からカバーす ることを保証する、ガイドラインを提供する。 • ルールではなく、ツールである。 どんなテストをすればよいのか︖ Technology- Facing Functional Tests Story Tests Examples Prototypes Simulations Exploratory Testing Scenarios Usability Testing UAT(User Acceptance Testing) Alpha / Beta Unit Tests Component Tests Performance Testing Load Testing Security Testing “-ility” Testing Business- Facing Critique-Product Supporting the Team Automated Tools Automated & Manual Manual Q1 Q2 Q3 Q4 ©2022 Human Crest Co., Ltd. 29
  9. 変わったこと • テストだけでは、成り⽴たない • 開発の中、デプロイメントパイプラインに⼊れる • 開発エンジニアが担う領域が増えている • 必要技術領域の拡⼤ •

    環境構築(OSS、仮想化、コンテナ化) • テスト技術(技法、設計) • テスト設計 • 順序性→分離し、独⽴性の確保 • 冪等性の確保(事前、事後処理) ©2022 Human Crest Co., Ltd. 30
  10. テスト設計、ケース詳細 ログイン • トップページ 商品検索 • 検索結果 商品選択 • 商品詳細

    カート投⼊ • カート 購⼊ • Thanksページ テストケース1 ログインできること 検索できること 商品を選択できること カートに投⼊されること 購⼊できること 正しく表⽰されること 正しく表⽰されること 正しく表⽰されること 正しく表⽰されること 正しく表⽰されること ©2022 Human Crest Co., Ltd. 31
  11. テスト設計、ケース詳細 ログイン • トップページ 商品検索 • 検索結果 商品選択 • 商品詳細

    カート投⼊ • カート 購⼊ • Thanksページ ログインできること 検索できること 商品を選択できること カートに投⼊されること 購⼊できること テストケース 機能テスト 検索パターン網羅 ログインパターン 正常系、異常系 網羅 カート内⾦額が正 しいこと ©2022 Human Crest Co., Ltd. 32
  12. テスト設計、ケース詳細 ログイン • トップページ 商品検索 • 検索結果 商品選択 • 商品詳細

    カート投⼊ • カート 購⼊ • Thanksページ テストケース 購⼊できること ストーリーテスト ©2022 Human Crest Co., Ltd. 33
  13. 何を⾃動化するのか︖ •テスト を⾃動化 •操作 を⾃動化 •⼊⼒ を⾃動化 •チェック を⾃動化 •環境

    を⾃動化 •仕組み を⾃動化 •メンテ を⾃動化 •全体 を⾃動化 ©2022 Human Crest Co., Ltd. 41
  14. 層 項⽬ 概要 詳細 コア ⽬的 なぜテストするのか︖ Why テストの⽬的をしっかり決定 テストの「コア」。

    全てのテストにおいて「⽬的」が⼀番重要です。 ⽬的を明確にすることでどんなテストをどのように実現するかを正確に決定することができます。 コンセプト 戦略 範囲 設計 どんなテストをするのか︖ How どこを、どのように、テストするのか テストの「コンセプト層」 どのように、テストするのか︖できるのか︖ どこをテストするのか︖を決定します。 アーキテクチャ CI ツール フレームワーク 環境 何で実現するのか︖ What どんな⾔語で、どんなFWを使い、どのCIに載せて、実現するのかを決定する。この 層は、⼀つ決まると数珠つなぎで決定することが多い テストの「アーキテクチャ層」 何で実現するのか︖ 何を使って実現できるか︖ 何のフレームワーク、ツールを使いどこの環境を使って、どんな形で⾃動テストを継続するのか、CIの仕組み等 を検討します。この層は同時に決定することが望ましいです。 モニタリングと コントロール スクリプト 実⾏ 分析 可視化 実現された⾃動テスト Real テストそのもの 運⽤において、メンテナンスが必要な箇所 テストの実装から連なる、⽬に⾒えて維持管理が必要な箇所 結果を可視化する事から、モニタリングしつつ、管理しなければならない。 全体のなかで、もっとも変化が激しい層であるが、このサークルが回ることが⾮常に重要になる。 ベース リソース チーム スキルセット ⽂化 ⾃動テストの⼟台 Base リソース: ⼈、時間、物、コスト スキルセット: テスト⾃動化に必要なスキルが揃っているかどうか。ない場合も⾝に 付けられる環境であるか。 チームワーク: チームとして取り組んでいく意志があるかどうか ⽂化: テスト⾃動化を取り⼊れ、継続していく⽂化があるかどうか ©2022 Human Crest Co., Ltd. 43
  15. 2.繰り返す必要があるテスト •⽬的 • 繰り返しを効率化する •繰り返すのは • 操作の繰り返し • データのIn/Outのパターン網羅 •

    テストケースの繰り返し • ブラウザ種類、スマホ等、複数環境 • テスト全体の繰り返し • 影響確認テストを特定の期間内 ©2022 Human Crest Co., Ltd. 49
  16. 3.スピードを重視するテスト • ⽬的 • フィードバックを最優先 • スピードとは • テストが⾼速に実⾏されること •

    そのために • 独⽴性、冪等性の確保。 • テスト設計の⾒直し(シナリオよりファンクション) ©2022 Human Crest Co., Ltd. 50
  17. ⾃動テストシステム テストタイプ 機能テスト ストーリーテスト データ駆動テスト 利⽤技術 Jenkins JUnit Selenium Appium

    各種ドライバー Excel PCアプリ(Java,.NET) Webアプリ Androidアプリ iOSアプリ 外部サーバ テスト対象サーバー テスト対象アプリ テスト終了まで、数時間 ©2022 Human Crest Co., Ltd. 53
  18. ⾃動テストシステム E2E テスト 機能テスト(アプリとして) ストーリーテスト API テスト 機能テスト(APIとして) データ駆動テスト 利⽤技術

    Jenkins JUnit Selenium Appium 各種ドライバー Excel Java PCアプリ(Java, .NET) Webアプリ Androidアプリ iOSアプリ 外部サーバ テスト対象APIサーバー テスト対象アプリ REST API テストスコープ テストスコープ パラメータパターン網羅 テスト終了まで、数⼗分 ©2022 Human Crest Co., Ltd. 54
  19. テスト対象 Chrome⽤ テスト実⾏環境 テスト対象 Firefox⽤ テスト対象 Edge⽤ node Chrome node

    Firefox node Edge GridHub オンプレサーバ群 テストタイプ 画⾯遷移テスト リグレッションテスト 利⽤技術 Gitlab Jenkins Java JUnit Selenide Allure ©2022 Human Crest Co., Ltd. 56