テスト実装とは?【ソフトウェアテスト基礎知識】

テスト自動化をサクサク進めるためのWebマガジン「SAKUTES(サクテス)」 » テスト実装とは?【ソフトウェアテスト基礎知識】

テスト実装をしないと、テスト実行段階でトラブルが続出します。なぜ、テスト実装が重要なのか解説します。

テスト実装とは

テスト実装とは、テストを実行するために、テストの手順や確認内容、期待できる結果などをまとめたテストケースを作成することです。テストケースをまとめたものは、テスト項目書、テスト仕様書とも呼ばれます。

テスト実装では、実施手順、確認内容がテスト実施者ごとにバラバラにならないよう具体的な記述が必要です。テストを実行する前の準備段階と考えればいいでしょう。テスト実装を省くと、たとえば、テスト実行の途中で必要な機器がない、必要なデータがないことに気づくとなり現場で混乱しかねません。当然、テスト実行と完了は遠ざかります。

テスト実装の主な作業

一般的にテスト実装では以下の作業をします。

テスト環境の準備では、テスト対象のソフトを動かすためにシステム構築をします。ハードウェア、ネットワーク環境など、ソフトを動かすためのインストールとセットアップ、シミュレーション環境の構築も含まれます。

テストデータの準備では、事前条件のデータを作り、テスト対象のソフトウェアにセットアップ。テスト設計で作ったテストケースの実行順序を決めます。優先順序、全体のスケジュールも考え、テストケースをどのビルドでするか決定。また、ビルドでテストをするメンバーに、テストケースを割り振ります。

テストスクリプト生成では、テストを実行するメンバーに割り振ったテストケースを、スムーズに実行できるよう操作手順を作成し、テストケースの確認の決定も必要です。自動テスト時のスクリプティングも、この作業で決めます。

テスト実装で使用されるツールは?

テスト実装で使われるツールがあります。スタブ、シミュレータ、ラボイメージ、テストデータジェネレータ、テストケース管理ツールなどご紹介します。

スタブツール

ユニットテストを実施するとき、一部のモジュールが完成してないケースもあります。そのとき、ダミーの実装によりテストをするのですが、ダミーのモジュールがスタブです。

スタブは開発担当者、テスト担当者が開発できます。スタブツールがあれば、わずかな設定でスタブが使えるようになり、自動生成も可能です。たとえば、テストコード、テスト対象関数、スタブ関数など、スタブのソースコードを簡単に生成できます。

スタブツールを使えば、スタブ作成の工数が短縮できます。共有すれば、インターフェイスの定義の標準化も簡単です。静的解析ツールや、カバレッジ計測ツール、ユニットテストツールと連携しできるツールもあります。

ただし、スタブから戻されるデータの正しさは検証できないため確認が必要です。テスト実行環境にツールが対応しているか、テスト対象のプログラム言語にツールが対応しているか確認が求められます。

シミュレータ

シミュレータは、実際の機器がなくても、パソコン上でプログラムを動作することができます。家電製品やスマホ向けのプログラムでも、機器を用意しなくてもいいためテスト作業を効率化できるのです。

エンタープライズシステム開発だと、テスト対象システムが利用する別システムをシミュレーションすれば、本番環境ではない環境でも、システム連携のテストができます。自動テスト実行ツールやスタブツールと連携すれば、実際の世界だとむずかしいテスでも実行できるのです。

欠陥を発見したいときも役立ちます。実システムより遅く動作させたり、少量を処理したりすることで欠陥を見つけられるのです。ただし、あくまでシミュレーションのため、フローティングの誤差や処理速度の違いといった実機と差異が発生するといった注意点もあります。

ラボイメージツール

仮想化テクノロジーにより、クライアント、サーバー、データベースといったテスト環境の複製ができます。エラーが発生すれば、その時点のテスト環境を保存すると復元も可能です。

各層のOS、プリインストールするミドルウェア、エージェント、構成設定など、本番運用環境と同一のものを準備。準備したイメージをテスト環境に復元すればすぐにテスト実行できるため、作業効率化になります。

個別でテスト環境の準備も不要です。テスト担当者による環境設定を構築するときの負担やミスも避けられます。テスト環境の構成の一括復元も可能です。ただ、作成したラボメージ復元のためのシステム環境が不適切だと、復元が失敗して、また一からやり直さなければならないといった注意点もあります。

テストデータジェネレータ

テストで使うデータベースのデータを生成します。本番環境のデータそのままでテストデータとして使った場合、さまざまな限界が発生するのです。たとえば、データサイズが大きい、セキュリティでも問題が発生します。

テストデータジェネレータを使用することで、一部だけ本番環境のデータを抽出したり、マスキングをかけたりして、テストデータを生成できるのです。他にも、関数のパラメータのパターンをニーズに応じて自動生成できます。

テストデータジェネレータにより、テストデータに必要な準備のための時間も短縮可能です。ただ、データの件数や質が本番環境と合わないと、テストでOKでも本番では正しく動作しないというケースといった注意点もあります。

テストケース管理ツール

テストケースを管理するツールです。テストケースは、テスト手順を具体的に記述したドキュメントで、管理の負担を軽くできます。

他にも、複数の機能が搭載されており、保管したテストケースから、テスト実行するテストケースを選び、実行単位にまとめるのも可能です。保管したテストケースと、テスト実行順序、テスト実行スクリプトを分けて管理する機能なども備えています。

そのため、テスト実行に割り振られたテストケースもバラバラではない管理でき、一元化して参照。保管したテストケースの保守性の向上、テスト実行の計画に合わせた保管したテストケースを実行回数分コピーも可能です。また、要件管理ツールやインシデント管理ツール、テスト自動実行ツールと連携できます。

テスト実装を行う時期について

テスト実装をするタイミングがあります。まず、テスト環境の準備、テストデータの準備を、テスト実行をスタートする前に完了できるよう日程を計画します。

基本的に開発全体の日程とは別に計画は練れるのです。ただ、開発の日程自体が遅くなると、準備日程が遅れるケースもあります。そのため、テスト実装の日程計画は、遅延が起きたときにどうするか対策も考えた方がいいでしょう。

たとえば、日程に左右されない事前準備をするという対策です。シミュレーション環境やスタブといったソフトウェアを、直前ではなく用意しておけば、開発自体の日程で遅延が起きても影響は大きくありません。

テスト実装がうまくいっていない場合のトラブル

テスト実装がうまく進んでいない場合、よくあるトラブルがあります。環境設定で時間がかかり、日程が遅延。環境を作り間違えていれば、テストもやり直さなければなりません。テスト環境やテストデータを準備する場合、個人に依存すると、その担当者以外だと準備ができなくなります。

テスト実行順序の事前準備をしないのも問題につながるのです。テスト実行時、テストケースを選ぶため、メンバーの割り振りで時間がかかります。進捗状況が把握できないと、スムーズなテスト結果管理もむずかしいでしょう。

テストスクリプトの準備次第でも問題が出てきます。パッチ処理は事前準備をしないと、ミス1つでテスト実行工数が増加するのです。テスト実行で操作手順の作り込みで、仕様変更が起これば見直しの工数が膨大になるリスクがあります。

ノンプログラミングで
⽇本語のサポートが⼿厚い

テスト⾃動化ツールを⽐較
商品名 Ranorex
(ラノレックス)
Autify
(オーティファイ)
商品タイプ パッケージ型

膨大なテスト工数を
削減したい企業向け

SaaS型

初期費用を抑えて
導入したい企業向け

対応テスト
  • デスクトップ
  • webアプリ
  • モバイルアプリ
  • デスクトップ
  • webアプリ
  • モバイルアプリ
実行回数
の制限
制限なし 制限あり

400回/1000回/任意 ※プランにより異なる

日本語サポート 導入後のセミナーが充実! ヘルプサイトが充実!
体験版 14日間 14日間

※Googleで「テスト自動化ツール」と検索し上位表示されたパッケージ型、SaaS型のテスト自動化ツール21種類の中から、(1)クロスデバイス、マルチブラウザに対応し、(2)日本語のサポートがあり、(3)ノンプログラミングでシナリオ作成が可能なツールをピックアップ(2021年11月1日調査時点)。パッケージ型、SaaS型それぞれの代表商品を選出しました。

【代表商品の選出基準】
☆パッケージ型:上記の条件の通り。
☆SaaS型:上記の条件に加え、公式サイト上に導入事例がもっとも多かったツールを選出。