Slide 1

Slide 1 text

ソフトウェアテスト⾃動化の変遷。 変わったことと変わらないこと。 テスト⾃動化の導⼊パターン。 ヒューマンクレスト 浅⻩ 友隆 ©2022 Human Crest Co., Ltd. 1

Slide 2

Slide 2 text

⾃⼰紹介 ©2022 Human Crest Co., Ltd. 2

Slide 3

Slide 3 text

だれ︖ •浅⻩ 友隆 •テスト専⾨会社で、テスト⾃動化を推進する⼈ •経歴 • 開発 ≒15年 VB, VC, Java, Oracle • テスト ≒15年 機能/⾮機能テストの⾃動化 ©2022 Human Crest Co., Ltd. 3

Slide 4

Slide 4 text

ツール •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

Slide 5

Slide 5 text

ヒューマンクレスト 5

Slide 6

Slide 6 text

アジェンダ •テスト⾃動化の変遷 • 変わったこと • 変わらないこと •テスト⾃動化の導⼊パターン •これからの⾃動テスト ©2022 Human Crest Co., Ltd. 6

Slide 7

Slide 7 text

テスト⾃動化の変遷 ©2022 Human Crest Co., Ltd. 7

Slide 8

Slide 8 text

※あくまでも個⼈⾒解です。 ©2022 Human Crest Co., Ltd. 8

Slide 9

Slide 9 text

変わったこと ©2022 Human Crest Co., Ltd. 9

Slide 10

Slide 10 text

テストは テスト ⼿動テスト ⾃動テスト ©2022 Human Crest Co., Ltd. 10

Slide 11

Slide 11 text

変わったこと (10年くらい前まで) テスト ⼿動テスト ⾃動テスト ⾃動化 ©2022 Human Crest Co., Ltd. 11

Slide 12

Slide 12 text

変わったこと (現在の意識) テスト ⾃動テスト ©2022 Human Crest Co., Ltd. 12

Slide 13

Slide 13 text

⼿動テストを⾃動化 約10年前 ©2022 Human Crest Co., Ltd. 13

Slide 14

Slide 14 text

テストは⾃動化 現在 ©2022 Human Crest Co., Ltd. 14

Slide 15

Slide 15 text

スコープとスピード テストへのアプローチが変わった ©2022 Human Crest Co., Ltd. 15

Slide 16

Slide 16 text

概況の変化とともに •アーキテクチャの変化 •開発プロセスの変化 •インフラの変化 •デバイスの変化 スコープ と スピード テスト ビジネススピードのUP ©2022 Human Crest Co., Ltd. 16

Slide 17

Slide 17 text

変わったこと •スコープ • 対象 • 範囲 •スピード • タイミング • 実⾏時間 • フィードバック ©2022 Human Crest Co., Ltd. 17

Slide 18

Slide 18 text

変わったこと スコープ • 対象 • UI → API • Web → Mobile • オンプレ → クラウド • システム全体 → フロントエンド・バックエンド • 範囲 • ⼤ → ⼩ • 広 → 狭 • (モノリス → マイクロサービス) • (要件 → 機能) ©2022 Human Crest Co., Ltd. 18

Slide 19

Slide 19 text

変わったこと スピード •タイミング • プロジェクト、イテレーション、⽉1、週1、毎⽇、 毎時、マージ、プルリクエスト •実⾏時間 • 数⽇、数時間、数分、数秒 • 並列実⾏ •フィードバック • 可視化 ©2022 Human Crest Co., Ltd. 19

Slide 20

Slide 20 text

概念 • 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

Slide 21

Slide 21 text

ピラミッドと4象限 テスト⾃動化にもっとも影響を与えた図 ©2022 Human Crest Co., Ltd. 21

Slide 22

Slide 22 text

2009年 Mike Cohn, Succeeding with Agile: Software Development Using Scrum テストピラミッド UI Service Unit ©2022 Human Crest Co., Ltd. 22

Slide 23

Slide 23 text

テストピラミッド UI Service Unit スコープの拡⼤ ⾃信向上 テストの⾼速化 分離性の向上 ©2022 Human Crest Co., Ltd. 23

Slide 24

Slide 24 text

Ice-cream Cone ©2022 Human Crest Co., Ltd. 24

Slide 25

Slide 25 text

2017年 Katrina Clokie, A Practical Guide to Testing in DevOps DevOps Bug Filter 25

Slide 26

Slide 26 text

2017年 Katrina Clokie, A Practical Guide to Testing in DevOps DevOps Bug Filter 26

Slide 27

Slide 27 text

Google Testing Blog https://testing.googleblog.com/2020/11/fixing-test-hourglass.html Hourglass ©2022 Human Crest Co., Ltd. 27

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

アジャイルテストの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

Slide 30

Slide 30 text

変わったこと • テストだけでは、成り⽴たない • 開発の中、デプロイメントパイプラインに⼊れる • 開発エンジニアが担う領域が増えている • 必要技術領域の拡⼤ • 環境構築(OSS、仮想化、コンテナ化) • テスト技術(技法、設計) • テスト設計 • 順序性→分離し、独⽴性の確保 • 冪等性の確保(事前、事後処理) ©2022 Human Crest Co., Ltd. 30

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

テスト設計、ケース詳細 ログイン • トップページ 商品検索 • 検索結果 商品選択 • 商品詳細 カート投⼊ • カート 購⼊ • Thanksページ テストケース 購⼊できること ストーリーテスト ©2022 Human Crest Co., Ltd. 33

Slide 34

Slide 34 text

変わらないこと ©2022 Human Crest Co., Ltd. 34

Slide 35

Slide 35 text

変わらないこと •⽬的が明確 •継続して運⽤ 必ず成果が上がっている ⽬的 成果 ⾃動テスト ©2022 Human Crest Co., Ltd. 35

Slide 36

Slide 36 text

キャプチャー/プレイバックの アプローチは強し なんらかのツールは必要 ©2022 Human Crest Co., Ltd. 36

Slide 37

Slide 37 text

今どきのローコード、ノーコード •最速で始めるなら、ちょうど良い • 早い、簡単、安定、メンテ楽(AIすげー) •ケース管理とリファクタリングは必須 •継続していくと、⼤変になる場合がある • だれでもつくれる → だれも管理しない • 機能追加ですぐ → ケースが増え続ける • なぜテストが失敗︖ → だれも分析できない ©2022 Human Crest Co., Ltd. 37

Slide 38

Slide 38 text

⽬的は何︖ •テスト効率の向上 •広範囲な機能カバレッジ •⼿動ではできないテスト実⾏ •テスト実⾏時間の短縮 •テスト頻度の増加、テストサイクルに必要な時 間の短縮 •総テストコストの削減 http://jstqb.jp/dl/JSTQB-Syllabus.Advanced_TAE_Version2016.J01.pdf ©2022 Human Crest Co., Ltd. 38

Slide 39

Slide 39 text

テストの⽬的 •バグがないこと •要件を満たしていること •主要機能が動作すること •ビジネスリスクを回避、軽減すること •今、動いていること •開発へのフィードバックを早くすること ©2022 Human Crest Co., Ltd. 39

Slide 40

Slide 40 text

テストの⽬的 •⾃動テストすること •すべて⾃動化すること •コスト削減すること おそらく失敗するパターン ©2022 Human Crest Co., Ltd. 40

Slide 41

Slide 41 text

何を⾃動化するのか︖ •テスト を⾃動化 •操作 を⾃動化 •⼊⼒ を⾃動化 •チェック を⾃動化 •環境 を⾃動化 •仕組み を⾃動化 •メンテ を⾃動化 •全体 を⾃動化 ©2022 Human Crest Co., Ltd. 41

Slide 42

Slide 42 text

Test Automation Circles ©2022 Human Crest Co., Ltd. 42

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

変わらないこと •必ず、⼈に依存します。 ©2022 Human Crest Co., Ltd. 44

Slide 45

Slide 45 text

ツールの発展と選択のための戦略 •チームのスキルセット •アプリケーションが利⽤するテクノロジー •チーム⾃動化の優先度 •時間と予算の制約 ©2022 Human Crest Co., Ltd. 45

Slide 46

Slide 46 text

導⼊のパターン ©2022 Human Crest Co., Ltd. 46

Slide 47

Slide 47 text

4つのパターン 1 .システムの価値をテストする 2.繰り返す必要があるテスト 3.スピードを重視するテスト 4.インターフェースをテストする ©2022 Human Crest Co., Ltd. 47

Slide 48

Slide 48 text

1.システムの価値をテストする •⽬的 • 主要な要件、機能が正常に動作することを確認する •テストの種類 • シナリオテスト • リグレッションテスト システムとしてあまり変わらない箇所をテストする UI Service Unit ©2022 Human Crest Co., Ltd. 48

Slide 49

Slide 49 text

2.繰り返す必要があるテスト •⽬的 • 繰り返しを効率化する •繰り返すのは • 操作の繰り返し • データのIn/Outのパターン網羅 • テストケースの繰り返し • ブラウザ種類、スマホ等、複数環境 • テスト全体の繰り返し • 影響確認テストを特定の期間内 ©2022 Human Crest Co., Ltd. 49

Slide 50

Slide 50 text

3.スピードを重視するテスト • ⽬的 • フィードバックを最優先 • スピードとは • テストが⾼速に実⾏されること • そのために • 独⽴性、冪等性の確保。 • テスト設計の⾒直し(シナリオよりファンクション) ©2022 Human Crest Co., Ltd. 50

Slide 51

Slide 51 text

4.インターフェースをテストする •⽬的 • バックエンドの動作を確認する • APIの動作、機能を確認する この部分の話 ©2022 Human Crest Co., Ltd. 51

Slide 52

Slide 52 text

事例1 APIとSDKを提供している •⼿動テスト項⽬(⼊⼒パターン網羅) • 提供するSDK(iOS,Android,Java,.NET)毎 ↓ •UIの⾃動テスト ↓ •アプリの⼊出⼒確認 •バックエンドAPI パラメータパターンテスト ↓ •実⾏の並列化 ©2022 Human Crest Co., Ltd. 52

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

⾃動テストシステム E2E テスト 機能テスト(アプリとして) ストーリーテスト API テスト 機能テスト(APIとして) データ駆動テスト 利⽤技術 Jenkins JUnit Selenium Appium 各種ドライバー Excel Java PCアプリ(Java, .NET) Webアプリ Androidアプリ iOSアプリ 外部サーバ テスト対象APIサーバー テスト対象アプリ REST API テストスコープ テストスコープ パラメータパターン網羅 テスト終了まで、数⼗分 ©2022 Human Crest Co., Ltd. 54

Slide 55

Slide 55 text

事例2 アジャイル開発 •リグレッションテストを早く終わらせたい • 毎⽇デプロイされる •リグレッションテストを⾃動テストへ • 独⽴性を確保できるようにリファクタリング •テスト実⾏環境のクラウド化 • オンプレからAWSへ ©2022 Human Crest Co., Ltd. 55

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

テスト対象 No1 テスト対象 No2 テスト対象 No3 テストタイプ 画⾯遷移テスト 機能テスト 利⽤技術 Gitlab Jenkins Java JUnit Selenide Allure Fargate ©2022 Human Crest Co., Ltd. 57

Slide 58

Slide 58 text

まとめ •変わったこと ✗ ⼿動テスト→⾃動化 ○ テスト→⾃動化 •変わらないこと • ⽬的が明確であれば、継続すること • ⼈に依存すること ©2022 Human Crest Co., Ltd. 58

Slide 59

Slide 59 text

まとめ ©2022 Human Crest Co., Ltd. 59

Slide 60

Slide 60 text

まとめ •導⼊パターン 1. 価値をテスト 2. 繰返しをテスト 3. スピード重視 4. インターフェース ©2022 Human Crest Co., Ltd. 60

Slide 61

Slide 61 text

今後、変わっていくこと •どうなるか︖わかりません。 •スコープ • アーキテクチャにより細分化する • シフトライト •スピード • より早く、常に •スケール • ⼤規模化 • 並列化 ©2022 Human Crest Co., Ltd. 61

Slide 62

Slide 62 text

最後に ©2022 Human Crest Co., Ltd. 62

Slide 63

Slide 63 text

最後に ©2022 Human Crest Co., Ltd. 63

Slide 64

Slide 64 text

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