テスト自動化戦略シラバス：テスト自動化リソース

# はじめに

テスト自動化戦略のシラバスが今年2024年に公開された。
このシラバスを読みまして、各章をDailyで読めるようにしてみた

https://www.istqb.org/certifications/test-automation-strategy

2 Test Automation Resources を今回は翻訳・解説する



# テスト自動化ソリューションの所有権とコスト

テスト自動化ソリューションの構築や運用には、さまざまなアプローチがあります。それぞれ、コスト、所有権、リスクなどの観点で異なる特徴を持ちます。

## 自社開発

社内でTASを作成することは、すべてのコスト、リソース、リスク、およびガバナンスが組織内にあることを保証する

メリット
- 完全なコントロール : ソリューション全体を自社で管理できる
- カスタマイズ性 : 特定のニーズに合わせてカスタマイズできる
- 長期的なコスト削減 : 長期的に見ると、コスト削減につながる可能性

デメリット
- 高い初期投資: ツール、インフラ、人材への投資が必要
- 継続的なメンテナンス: 継続的なメンテナンスとアップデートが必要
- 技術的専門知識: 熟練した開発チームが必要

## ベンダーソリューション

ベンダーベースのソリューションを使用する場合、所有権は契約の詳細に応じてクライアントとベンダーの間で共有される

メリット
- 迅速な導入 : 迅速なセットアップと展開が可能
- ベンダーサポート : ベンダーからのサポートとメンテナンスを受けられる
- 低い初期投資 : 初期コストが低くなる

デメリット
- カスタマイズの制限 : 特定のニーズに合わせたカスタマイズが制限される場合がある
- ベンダー依存 : ベンダーに依存するため、アップデートやサポートにコストがかかる
- ライセンスコスト : 継続的なライセンス費用が必要になる場合がある

## 外注

組織がチームの設立の所有権を持ちたくない場合、アウトソーシングが推奨されます。

メリット
- リソースの削減 : 専用チームを雇用する必要がない
- 柔軟性 : プロジェクトのニーズに合わせて柔軟に対応できる
- 外部専門知識の活用 : 専門的なスキルと経験を活用できる

デメリット
- 高いコスト : 長期的なコストが高くなる可能性がある
- コントロールの低下 : 開発プロセスやプロジェクトのタイムラインに対するコントロールが弱まる
- 外注先への依存 : 外注先の性能と可用性に依存する

最適なアプローチは、プロジェクトの規模、チームのスキル、予算、タイムライン、リスク許容度などの要因によって異なります。これらの要素を慎重に検討して、適切なアプローチを選択することが重要です。


# テスト自動化ツールのライセンスモデル比較
テスト自動化ツールを選ぶ際には、ライセンスモデルを慎重に検討することが重要です。
それぞれのライセンスモデルには、コスト、使いやすさ、開発環境のセットアップの難易度など、異なる特徴があります。


## オープンソース

- ライセンス費用が無料
- 大規模なコミュニティによるサポート
- 自由にカスタマイズ可能
- サポート体制が弱い場合がある
- セットアップやメンテナンスに専門知識が必要

## ユーザー/マシン単位のライセンス

- コストが予測しやすい
- ライセンス条件が明確
- 大規模なチームには高コスト
- ライセンス管理が必要

## フローティングライセンス

- 柔軟な利用が可能
- 利用パターンが異なる大規模チームに適している
- 管理が複雑になる可能性がある
- ライセンス管理システムが必要

## 実行時ライセンス (クラウドベース)

- 使用量に応じた従量課金
- 多様なデバイスや環境にアクセス可能
- インフラコストを削減
- 長期的に見るとコストが高くなる可能性がある
- クラウドプロバイダーに依存

上記ライセンスモデル選択のポイントは以下の点である

- チームの規模 : テスターの数と利用パターンを考慮する。
- 予算 : 初期費用とランニングコストを比較検討する。
- 柔軟性 : ユーザーアクセスや利用パターンの柔軟性を求めるか。
- サポートとメンテナンス : サポート体制とメンテナンスの必要性を考慮する。
- セキュリティとコンプライアンス : 組織のセキュリティとコンプライアンス要件を満たすか。

# テスト自動化戦略策定時の考慮事項

テスト自動化戦略を策定する際には、以下の要素を考慮する必要があります。

1. 時間制約
    - 短期的な目標 : 迅速な自動化が必要な場合、優先度の高いテストケースを最初に自動化する
    - 長期的な目標: 長期的な視点で、段階的に自動化の範囲を拡大する
2. チームのスキルとリソース
    - スキルレベル : テスト自動化に必要なスキルを評価し、不足しているスキルを補うためのトレーニングや人員の確保を行る
    - リソース : テスト自動化に必要なハードウェア、ソフトウェア、人員のリソースを確保する
3. テスト環境
    - ハードウェアとソフトウェア : テストの実行に必要なハードウェアとソフトウェアを準備
    - クラウド環境 : クラウドを活用して、柔軟なテスト環境を構築
    - 仮想化 : 仮想化技術を使って、複数のテスト環境を効率的に管理
4. テストツール
    - オープンソース vs 商用 : オープンソースツールと商用ツールを比較し、プロジェクトの要件に合ったツールを選択
    - ライセンス費用 : ツールのライセンス費用を予算に組み込み
    - 機能と性能 : ツールの機能と性能を評価し、適切なツールを選択
5. CI/CDとの連携
    - 統合 : テスト自動化ツールをCI/CDパイプラインに統合し、自動化を推進
    - トリガーとレポート : テストの実行を自動化し、テスト結果を自動的にレポート
6. テストデータ管理
    - データ生成 : テストケースの実行に必要なテストデータを生成
    - データマスキング : 個人情報などの機密データを保護
    - データクリーンアップ : テスト実行後にテストデータをクリーンアップ
7. メンテナンスとサポート
    - 継続的なメンテナンス : テストスクリプトのメンテナンスと更新
    - サポート体制 : テスト自動化チームのサポート体制を整備
8. コスト管理
    - ツールライセンス : 商用ツールのライセンス費用を考慮
    - ハードウェアとソフトウェア : ハードウェアとソフトウェアの購入やレンタル費用
    - 人件費 : テスト自動化チームの人件費
    - クラウドコスト : クラウド環境を利用する場合、利用料金

# テスト自動化ソリューションに必要な役割とスキル

テスト自動化ソリューションを成功させるためには、以下の役割とスキルを持つメンバーが不可欠です。


- 技術的スキル
  テスト自動化エンジニア（TAE）は、強力なプログラミングスキルと技術的なアーキテクチャの知識が必要です。
- 専門知識
 プロジェクトの規模と成熟度に応じて、ビジネスドメインとテストの目的を理解する強力な専門家（例：テストリード、アーキテクト、ビジネスアナリスト）が必要です。この人物は、テストの目的に基づいてコンセプトと実際のTASのロードマップを作成する役割を担います。
- チーム管理とソフトスキル
 チームを訓練し、動機付けし、実際の作業のためにチームを構築するための管理スキルが必要です。
- 協力と優先順位付け 
 TAEは、テストアナリストや他の関係者と協力し、テスト自動化の目的について話し合う能力が必要です。また、限られた時間と労力の中で、ビジネスと投資の観点から最も影響力のあるテスト条件を優先する能力も重要です。