Skip to content

6.2 特定用途のテストツール

ソフトウェア開発が複雑化する中、標準的なテスト実行ツールだけですべての品質特性をカバーすることは困難です。
テクニカルテストアナリスト(TTA)は、プロジェクトの特定の課題やアーキテクチャに合わせて、以下に挙げるような 「特定用途のツール」 を選定・活用する専門知識が求められます。


1. フォールトシーディングツールとフォールトインジェクションツール

Section titled “1. フォールトシーディングツールとフォールトインジェクションツール”

これらは、意図的に「欠陥」や「エラー」を引き起こすことで、システムやテストの堅牢性を評価するツールです。

  • フォールトシーディングツール (Fault Seeding Tools): テスト対象のコードに事前に定義されたアルゴリズムで「意図的な変更(欠陥)」を埋め込みます。その後テストを実行し、埋め込んだ欠陥をどれだけ検出できたかを測定することで、「テストケースの品質(欠陥検出能力)」 を評価・改善するために使用します。
  • フォールトインジェクションツール (Fault Injection Tools): ソフトウェアに対して意図的に「誤った入力」や「不正な条件」を供給し、システムのエラーハンドリング機能が正しく作動するかを確認します。正常な実行フローをあえて乱すことで、通常では通過しにくい例外処理ルートのコードカバレッジを向上させることができます。

※どちらのツールも、TTAだけでなく、新規コードをテストする開発者自身によって使用されることもあります。


2. 性能テストツール (Performance Testing Tools)

Section titled “2. 性能テストツール (Performance Testing Tools)”

性能テストツールは、システムに対する負荷の生成と、その応答やリソース挙動の測定・可視化を担う極めて重要なツールです。

  • 負荷のシミュレーション: 運用プロファイルに基づき、数千・数万の「仮想ユーザー」を生成してシステムに同時アクセスさせます。GUIの操作を再現するのではなく、通信プロトコルレベルで直接リクエストを送信することで、効率的に高負荷を作り出します。
  • 取得するメトリクス(指標): テスト中のユーザー数、トランザクションの発生率、システムの応答時間、CPUやメモリなどのリソース使用状況を取得し、グラフ化してボトルネックの特定に役立てます。

性能テストツールは自社で一から開発するには莫大な労力がかかるため、通信プロトコルの互換性や柔軟性を満たす市販・オープンソースのツールを取得(導入)するのが一般的です。


Webアプリケーション特有の要件や規格をチェックするためには、以下のような多岐にわたる専用ツールが利用されます。

  • 構造的チェック: リンク切れ(デッドリンク)の発見や、サーバー上の孤立したファイルの特定。
  • 標準適合性チェック: HTML/XMLの文法チェック、カスケーディング・スタイル・シート(CSS)の検証。
  • アクセシビリティとセキュリティ: 視覚・聴覚障害者などが利用しやすいか(米第508条や欧州M/376などの基準)、コードインジェクションなどの脆弱性がないかをチェックします。

これらのツールや標準化のガイドラインは、W3C や WHATWG などの国際組織から多く提供されています。


4. モデルベースドテストを支援するツール (MBT Tools)

Section titled “4. モデルベースドテストを支援するツール (MBT Tools)”

モデルベースドテスト(MBT)ツールは、有限ステートマシンなどの「モデル」を使用して、ソフトウェアが実行時にどのように振る舞うべきかを記述します。 ツールはモデルを解析(実行)し、膨大な組み合わせの中から有効な実行スレッド(テストケース)を自動生成します。人間が手動で設計する機能テストでは見落としがちな、予期せぬ状態遷移や欠陥を発見するための「異なる視点」を提供します。


5. コンポーネントテストとビルドツール

Section titled “5. コンポーネントテストとビルドツール”

TTAは、開発者向けの自動化基盤(継続的インテグレーション:CI環境など)の構築や保守を支援することがよくあります。

  • コンポーネントテストツール: Javaの JUnit に代表される xUnit フレームワークなど、プログラミング言語に特化したテスト自動化ツールです。
  • ビルド自動化ツール: ソースコードが変更されたことを検知して自動的に新しいビルドを作成し、コンポーネントテストを走らせます。これにより、プログラマーの修正によるリグレッション欠陥(デグレード)をテスト環境へのリリース前に即座に発見できます。

6. モバイルアプリケーションテストを支援するツール

Section titled “6. モバイルアプリケーションテストを支援するツール”

モバイル端末の多様性に対応するため、実機テストの前に 「シミュレーター」「エミュレーター」 が頻繁に使用されます。

  • シミュレーター (Simulators): モバイルOSのランタイム環境のみをモデル化したものです。シミュレーター専用にコンパイルされるため実機では動きませんが、動作が軽くシンプルであるため、初期の機能テストや仮想ユーザーを使った負荷テストに適しています。
  • エミュレーター (Emulators): ハードウェアそのものをモデル化し、実機と同じ環境を利用します。コンパイルしたアプリは実機でも動作しますが、マルチタッチや加速度センサーといった物理的機能までは完全には代替できないことがあります。

どちらのツールも、実機を大量に用意するコストを削減し、開発初期での迅速なテストを可能にします。また、特定のGPS位置情報、ネットワークの遅延・切断、バッテリー低下といった 「実機では再現が困難な状況(パラメーター)」 を簡単に作り出せる強力なメリットがあります。