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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. ヒューマンクレスト
    5

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 概況の変化とともに
    •アーキテクチャの変化
    •開発プロセスの変化
    •インフラの変化
    •デバイスの変化
    スコープ

    スピード
    テスト
    ビジネススピードのUP
    ©2022 Human Crest Co., Ltd. 16

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  52. 事例1 APIとSDKを提供している
    •⼿動テスト項⽬(⼊⼒パターン網羅)
    • 提供するSDK(iOS,Android,Java,.NET)毎

    •UIの⾃動テスト

    •アプリの⼊出⼒確認
    •バックエンドAPI パラメータパターンテスト

    •実⾏の並列化
    ©2022 Human Crest Co., Ltd. 52

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide