OpenTextのホームページ。
技術トピックス

機能テストとは何か?

 クエスチョンマークを中心としたIT項目の図解

概要

機能テストは、アプリケーションの各機能が、ソフトウェア要件通りに動作するかどうかを確認するテストの一種です。各関数は、その出力がエンドユーザーの期待と一致しているかどうかを確認するために、対応する要件と比較される。テストは、サンプル入力を提供し、結果の出力をキャプチャし、実際の出力が期待される出力と同じであることを検証することによって行われる。

機能テストの例をいくつか挙げよう:

  • 正当な認証情報を提供したら、ユーザーはアプリケーションに正常にログインできますか?
  • ユーザーが無効なクレジットカード番号を入力した場合、決済ゲートウェイは入力を拒否し、エラーメッセージを表示しますか?
  • 新しいレコードの追加」画面への入力は、データベースに新しいレコードを追加し、保存することに成功していますか?
 
機能テストの最後には、首尾一貫したユーザーインターフェイス、一貫したAPIを持ち、ビジネスプロセスとシームレスに統合されたソフトウェアが完成しているはずです。

Functional Testing

機能テストと非機能テスト

非機能テストとは異なり、機能テストは、アプリケーションの基礎となるソースコードの品質、セキュリティ、あるいは、パフォーマ ンスを調査することには関係しません。スピード、スケーラビリティ、信頼性を測ることはできない。

むしろ、機能テストは、処理の仕組みではなく、処理の結果に焦点を当て、アプリケーションが基本的な最低限のユー ザーの期待を満たしているかどうかを判断します。

この意味で、機能テストの定義はブラックボックステストとほぼ同義であり、一方ホワイトボックステストは非機能テストの特徴としてより一般的である。 


機能テストの典型的な手順

機能テスト計画は通常、以下の順序に従う:

テストの目標を明確にする

機能テストのゴールは、プロジェクトの要求事項に基づき、ソフトウェアが持つことが期待される機能である。テストの目標には、アプリケーションが意図したとおりに動作すること、エラーや予期せぬシナリオを 潔く処理することを検証することが含まれます。

テストシナリオの作成

ある機能について、考えられる(少なくとも最も重要な)すべてのテストシナリオのリストを作成する。テストシナリオは、その機能が使用されるさまざまな方法を説明する。たとえば、決済モジュールの場合、テストシナリオには、複数の通貨、無効または期限切れのカード番号の処理、トランザクションが正常に完了した場合の通知の生成などが含まれる。

テストデータの作成

特定したテストシナリオに基づき、通常の使用状況をシミュレートしたテストデータを作成する。テストデータの入力は、手入力(MS-Excelのスプレッドシートや印刷物からなど)でも、データベース、フラットファイル、XML、スプレッドシートからデータを読み込んで入力するスクリプトやテストツールによる自動入力でも可能です。入力データの各セットには、その入力データが生成するはずの期待結果を記述した関連データもあるはずだ。

テストケースの設計

テスト入力に対するさまざまな望ましい結果に基づいてテストケースを作成する。例えば、無効なクレジットカード番号を入力した場合、アプリケーションは意味のあるエラーメッセージを表示する必要があります。

テストケースの実行

アプリケーションを通してテストケースを実行し、実際の結果と期待される結果を比較する。実際の出力と期待される出力が異なる場合、その機能はテストに不合格であり、欠陥が記録されるべきである。

不具合の検討、追跡、解決

欠陥が特定されたら、プロジェクトチーム全体がアクセスできる正式な追跡システムに記録する。必要な変更をアプリケーションに加え、テストケースを再度実行し、欠陥が解決されたことを確認してから、欠陥はクローズされたものとしてマークされるべきである。


自動機能テストツールはどのように機能するのか?

機能テスト自動化ツールは、テスト対象のアプリケーションのユーザーインターフェースと対話することができる。リストボックス、テキストボックス、ボタンなど、画面上のオブジェクトを識別し、選択し、データを入力し、それらを押すことができる。

多くの機能テスト自動化ツールには、レコーダーが含まれています。レコーダーは、ユーザ ーがアプリケーションと画面上のオブジェクトを操作するのを「監視」し、ユーザーがシステムに入力したデータと、 ボタンを押したりメニューを選択したりするような、ユーザーが実行したアクションを記録します。これらのアクションは、録画中にキャプチャされたオブジェクト、データ、アクションを使用して再生され、ユーザーのアクティビティを再現することができます。これらのアクションの結果はテストツールによって記録され、自動化エンジニアによって定義された期待結果と比較され、テストの合否が決定される。

機能テスト自動化エンジニアは、ツールによって認識されたオブジェクトを使用して、ステップバイステップでテストを構築することができます。また、レコーディングから始めて、ステップをカスタマイズし、データをパラメータ化して一般化し、さまざまなブラウザやモバイルデバイスを含むさまざまな環境でテストを実行できるようにすることもできます。


機能テストツールにおける人工知能

今日の主要なテスト自動化ツールは、機械学習、コンピュータビジョン、ニューラルネットワーク、自然言語処理などの高度な技術を採用した人工知能(AI) 機能を内包している。これにより、人間と同じように画面上のオブジェクトを識別し、オブジェクトと自然に対話し、操作することができ、平易な英語でテストを記述することができる。

AIベースの機能テスト自動化は、テスト作成時間を短縮し、テストカバレッジを高め、テスト資産の回復力を高め、テスト保守の労力を削減することが示されている。


機能テストのベストプラクティスとは?

早期にテストケースを作成する

テストケースの作成を始める前に、アプリケーションやモジュールのコーディングが完了するのを待たないでください。ユーザー要件が最も新鮮なのは、プロジェクトの初期段階である。テストケースは、必要に応じて後でいつでも修正できる。

自動化

機能テストは、骨の折れる、反復的で時間のかかるプロセスになりうる。自動化が進めば進むほど、望ましい機能をより迅速に確保したり、不具合を特定して修正したりできるようになり、 アプリのデリバリー・プロセスにおけるテスト時間とコストを削減できる。すべてのテストケースを自動化することは不可能かもしれないし、望ましいことでもないかもしれないが、最も重要なテストケースを手動登録から外すだけで、テストのROIを大幅に改善することができる。

ユーザーの思考プロセスを理解する

機能テスト担当者は、エンドユーザーの思考プロセスを深く理解しなければならない。アプリケーションごとに異なるタイプのユーザー(バイヤー、セラー、管理者、データ入力事務員、スーパーバイザーなど)が存在することが多い。異なるタイプのユーザと、その典型的なアプリケーションのナビゲーションを、それぞれのテスト計画で考慮しなけれ ばなりません。

優先順位をつける

テスターの時間とリソースには限りがある。すべての機能をテストできるわけではない。アプリケーション機能の中には優先順位の高いものがあり、そのため優先順位の低い機能よりもテストを優先しなければならない。


当社のAIを活用した自動機能テストツールは、次のようなことを支援します。

機能テストは、多くの組織にとって挑戦である可能性があるが、適切に自動化された機能テストQA組織の利点は、これらの課題をはるかに上回り、実績のある機能テストツールの力を活用することが、それを進める最善の方法である。OpenText™ 機能テストソリューションが、機能テストから最適な価値を引き出すためにどのように役立つかをご覧ください。

機能テストの自動化でテストを効率化

機能テスト・ツールがソフトウェアの品質を最適化し、ユーザー・エクスペリエンスを向上させる方法をご紹介します。

詳細情報

脚注