テストツール
テストツールは、テスト活動とマネジメントで使用するツールです。
テストツールを使用することで、テスト活動とマネジメントの効率性と正確性を大幅に改善することが期待されます。
テストアナリストがテストツールの活用やテスト自動化を推進する場合、テストマネージャー、開発者、テスト自動化エンジニア、、テクニカルテストアナリストと連携して進めていきます。
テスト設計および実装ツール
テストツールには以下のようなものがあります。
-
要件管理ツール
定義された要件を摂家からソースコードまででトレース・可視化するツール
-
テストマネジメントツール
テストプロセスを向上することを目的として、実装している機能が網羅しているか確認するためのツール
(SDLC、要件、テスト、欠陥、構成のマネジメントの容易化) -
欠陥管理ツール
インシデントを記録・管理・解決するための管理するためのツール
-
コラボレーションツール
チームメンバー間のコミュニケーションや情報共有を支援するためのツール
-
非機能テストツール
システムの性能、信頼性、セキュリティなどの非機能要件を検証するためのツール
-
静的テストツール
レビューや静的解析などを支援してテスト担当者をサポートするためのツール
-
テスト設計および実装ツール
テストケース、テストデータ、テストプロシジャーの作成が行えるツール
-
テストデータ準備ツール
テストデータを準備するためのツール
-
テスト実行とカバレッジツール
テストプロセスのテスト実行で自動でテストを行うツールとカバレッジの容易化を行うツール
-
DevOpsツール
ソフトウェア開発と運用を効率化してリリースを支援するツール
(デリバリーパイプライン、ワークフロー追跡、自動ビルドプロセス、テストの実行と結果の分析、CI/CDのサポートなど) -
拡張性/展開の標準化をサポートするツール
ソフトウェア開発の効率的な展開と管理を支援するためのツール
(仮想マシンやコンテナをサポート)
テスト自動化
テスト自動化は、リグレッションテストの恩恵を受けますが、シラバスでは以下の利点が挙げられています。
- 繰り返し実施するテストの手動テストの削減と時間節約
- ヒューマンエラーの防止
- 客観性の向上(カバレッジなどの提供が可能)
- テスト報告に必要な情報へのアクセス容易化
- 市場投入までの時間短縮の実現(テスト実行時間の短縮、欠陥の早期発見、迅速なフィードバックなど)
- 手動テストの削減により、効果的な新しいテストを設計する時間の増加
テスト自動化のリスクをシラバスでは以下が挙げられています。
- テストツールの利点に非現実的な期待
- 時間・コスト・労力の見積不正確(ツール導入、ツール保守、現在のテストをツールに落とし込む作業)
- 手動テストが適切なテストケースで自動のテストを実施
- ツールへの過剰な依存
- ツールベンダーのサポートの停止
- ツールが開発プラットフォームと非互換
- 不適切なツールの選択(規制要件や安全基準に適合してない)
テストアナリストが利用するテストツールと詳細
テストアナリストは、テストプロセスのタスクでテストツールおよび自動化するツールを作業効率の向上と費用対効果が高めるために検討していく必要があります。
テストアナリストが利用するテストツールを記載していきます。
テスト設計および実装ツール
テストアナリストは、カバレッジの達成、リスク軽減、組み合わせを網羅するためにテスト設計および実装ツールを検討します。
テスト設計および実装ツールでは、テストベースとなるドキュメント(UMLモデルなど)や必要な情報を入力してテストケースやテストデータを作成できます。
テストデータ準備ツール
テストデータ準備ツールはテストベースとなるドキュメントやソースコードを分析して、必要なデータを決定することができます。
テストデータ準備ツールには、本番システムからデータセットを取得して、内部的な整合性を維持して個人情報をマスキング(選別または匿名化)することで、個人情報の漏えいや誤って利用されるリスクを軽減できます。
テストで大量のテストデータが必要な場合やセキュリティとデータプライバシーのリスクがある場合に有効です。
テストデータ準備ツールには、特定の入力パラメーターのセットから合成テストデータを生成するツールもあります。
テストアナリストは、データベース構造を分析して、ランダムテスト用のデータ生成を行うなどツールに必要な入力を判断します。
テスト実行とカバレッジツール
テスト実行ツールは、テストを自動化して手動で難しいテストを実行するのにも役立ちます。
テストアナリストは、コスト削減・リグレッションテスト・テスト実行時の再現性を向上するためにテスト実行とカバレッジツールを検討します。
テスト実行ツールの投資効果は、リグレッションテストの自動化が最も高くなります。
リグレッションテストの自動化は、メンテナンス工数が少なくして繰り返し実行を可能するためです。
スモークテストの自動化でも有効で、頻繁なテストケースの利用や結果を取得することが可能です。
継続的インテグレーション環境での自動化はメンテナンスコストが高くなる場合があります
テスト実行のツールは主にシステムテストや統合テストで使用されます。
APIテストツールではコンポーネントテストでも利用されます。
キーワード駆動テスト
キーワード駆動テストは、テスト実行ツールの一つです。
テストアナリストは、キーワードとデータを提供していきます。
キーワードはシステムと高レベルなビジネス相互作用を表して、これを基にテストケースを特定します。
キーワードは実行可能なテストスクリプトとして実装され、ツールがこれを読み込んで適切なスクリプトを呼び出します。
キーワード駆動テストの主な利点
- ドメイン専門家がキーワードを定義でき、効率的なテストケース作成が可能
- 専門知識がなくても自動化テストの利点を享受
- モジュラー型記述技法により、ソフトウェアの変更に対応しやすい
- テストケース仕様が実装から独立
テストアナリストの主な役割
- キーワードとデータの作成・メンテナンス
- 故障の原因調査とトラブルシューティング
キーワード駆動テストは、特にシステムテストで使用され、継続的インテグレーション環境での自動化開発に適しています。
テストツールおよび自動化
テストアナリストの章では、どのようなテストツールがあるか記載しました。
テストマネージャーでは、テストツールの選択方法やライフサイクルについて記載します。
テストツールの選択
テストマネージャーはテストツールは目的を定義してテストツールをを選択するときに導入時のコストメリットやリスクを検討します。
テストツールは有償でも無償でもコスト(金銭・リソース・時間)が発生しますので、導入時の投資効果(ROI:Return On Investment)が大切です。
テストツールを導入するために発生するコストとテストで効率化されて自動化されたことによる削減されたコストが上回ることが大切です。
そのためには、テストツールはテスターが効率よく実行できるツールなのかテスト対象に合致しているのかが大切です。
一般的なテストツールのメリットとデメリットは以下です。
メリット
- 反復作業の減少
- テストサイクルの時間削減
- テスト実行コストの削減
- 回帰テスト実行回数の増加
- ヒューマンミスの減少(データ生成ツール、比較ツール、スクリプトツール)
- メトリクス収集が容易化
- テスト担当者やテストチームの地位向上
リスク
- 準備が不足により、費用対効果の低下
- ソフトウェア更新によるメンテナンスのコスト
- テストアナリスト関与不足による、費用対効果の低下
テストマネージャーは、テストツールの導入にコストが発生しますので導入時の効果とコストメリットを確認する必要があります。
テストツールには、どのようなツールがあり、メリットやデメリットがあるのか確認します。
テストツールは以下があります。
- 商用ベンダーから購入
- オープンソースツールの利用
- カスタムツールの開発
各ツールの詳細とメリットとデメリットを以下に記載します。
商用ベンダーからの購入
商用ベンダーから購入します。
メリット
- 利用実績があり、動作が安定
- 公式的なサポート有
デメリット
- カスタマイズが難しい
- 導入時コストの増加
オープンソースツールの利用
オープンソースとは、ソフトウェアのソースコードが公開されていてライセンスに基づいて利用できるソフトウェアです。
テストツールとして使用する場合でも、ライセンスを確認する必要があります。
メリット
- 導入時のコスト削減
- カスタマイズ可能
デメリット
- 公式的なサポートが少ない(非公式がある場合もある)
- オープンソースツールのライセンスに依存
- テストツール同士の組み合わせでオーバーヘッドが発生
- 標準や規制に準拠する場合、ツールの正確性の保証が困難
カスタムツールの開発
カスタムツールを開発は、テスト対象に対してまたは一般的なテスト内容のテストツールを開発します。
メリット
- テストチームのテスト内容に適合してテスト効率化向上
デメリット
- テストツール開発者の依存(メンテナンスが困難なためドキュメント化する工数増加)
- テスト対象のシステム改修に依存し、それに伴いメンテナンス(テストツールの品質低下懸念)
テストツールのコスト
テストマネージャーは、テストツールを導入した場合にどのようなコストが発生するかも認識する必要があります。
導入時に発生する初期コストを次に記載します。
- テストツールの要件定義
- テストツールまたはツールベンダーの評価と選択
- テストツールの購入または開発
- 他のツールとの統合
- ツールをサポートするために必要なもの
固定で発生するコストを次に記載します。
- ライセンス料金およびサポート料金
- メンテナンスコスト(ツール、ドキュメントなど)
- トレーニング
- ニーズへの適用
- ツールの最適化
テストマネージャーがテストツールについて確認することを以下に記載します。
- 分析
- 設計
- データとテストの選択
- 実行
-
評価
ツールが適切な結果を受け取っていて、どんな種類のエラーや回復能力が提供できてログ記録やレポートの機能を用意しているか確認
定義した目的が達成でき、テストツールの正確性を確認
既存情報に基づいてテストウェア設計が支援でき、設計やテストデータの自動生成が可能で、メンテナンスや仕様変更が可能な確認
テストツールが手動または自動で指定した選択条件で、カバレッジ基準に基づいて必要なテストを決定できるか確認
テストツールが自動実行並びに手動操作が行えて、停止や起動の方法、関連するイベントを把握できるか確認
テストツールのライフサイクル
テストマネージャーは、テストツールのライフサイクルも考慮する必要があります。
テストツールのライフサイクルは以下です。
調達(Procurement)
テストツールの種類・費用対効果を確認し、テストツールの管理者・使用方法・成果物の作成場所と命名規則・トレーニング内容を決定
サポートとメンテナンス(Support and Maintenance)
メンテナンスの維持(テストツール管理者)、他ツールと連携定義(データやプロセス)し、ツールの運用(バックアップやリストア方法)を決定
進化(Evolution)
テストツールの進化(システム改修・環境・ビジネスニーズ・ベンダーの問題に合わせた対応)
廃棄(Discard)
テストツールの廃棄作業(使用したデータ・スクリプト・テスト結果などの保持)
テストツールのメトリクス
テストマネージャは、テスト活動をマネジメントするためにテストツールのメトリクスを利用します。
テストツールを利用することで、リアルタイムにデータが収集できてデータ収集のコストも削減できます。
テストマネジメントツール
カバレッジメトリクス、実行ステータスと進捗状況を確認できるメトリクス
欠陥マネジメントツール
システム全体の欠陥ステータス・重要度・優先度・分布状況・欠陥の混入フェーズ・発見フェーズ・見逃し率など
静的解析ツール
保守性の問題の検出を報告するのに役立つ情報を提供
性能テストツール
システムの拡張性による性能面の影響に関する情報
カバレッジツール
テスト全体における消化率を理解するのに役立つ