実際、研究テストでシステムの動作の正確性を評価するためのシナリオも計画も明確な基準もない場合、このようなツールに何を期待しますか?
ツール要件
私の意見では、そのようなツールは以下を行う必要があります。
- バグ追跡システムと統合して、欠陥が検出されたときにトリガーできるようにする
- 検出された欠陥を自動的に文書化します。 これは、テストがスクリプトに従って実行されるのではなく、覚えておくことができない任意の順序で実行される場合に重要です。
- 研究テストシーケンスを繰り返す機能を提供する
- 要件管理システムと統合する-検出された欠陥を可能な限り要件にリンクするため
- テスト管理システムと統合して、次のことを行います。
- 単一の環境ですべてのタイプのテストを実施する
- 研究テストに基づいて新しいテストシナリオを作成する
実際、この意味での最良の選択肢は、要件、テスト、および欠陥を管理するための統合ツールでの研究テストサポートの可用性です。 これらのツールの1つ-Microsoft Test Manager 2012-についてお話しします。
MTMの2012バージョンでは、研究テストのサポートが登場しました。 この機能を適用する次の方法があります。
- シナリオテストに加えて探索的テストを実施する
- テストスクリプトがない場合のテスト
- 探索的テストセッションを通じて新しいテストスクリプトをすばやく作成する
デモンストレーションでは、既製のダウンロード可能な仮想マシンを使用します。 より詳細な手順と使用例があります。
テスト計画
MTMを起動し、プロジェクトを選択して、テスト計画を開きます。 プロジェクトには複数のテスト計画があるため、要件、テストスクリプト、欠陥などがあります。 共通のTFSリポジトリに保存され、テスト計画を使用すると、それらのいくつかを使用して作業を整理できます。
テスト計画は完全に空の場合もありますが、いくつかの要件があり、それらを計画に追加した場合のシナリオを検討します(ルートフォルダーまたはサブフォルダー、スイートが選択されている場合、[要件の追加]ボタンがアクティブになります) 計画に要件を追加すると、そのフォルダーが作成され、そのフォルダーに要件に関連付けられたすべてのテストシナリオが自動的に追加されます。 ここで、他のスクリプトを追加(「追加」ボタン)するか、新しいスクリプトを作成(「新規」ボタン)できます。 以下では、「要件」という用語を使用しますが、TFSでの特定の実装は、選択したテンプレートによって異なる場合があります。 アジャイルの場合は「ユーザーストーリー」、SCRUMの場合は「BacklogItem」、「要件」、またはさまざまなテンプレートの要件カテゴリのその他のタイプになります。
研究試験セッション
調査テストに移りましょう。 これを行うには、「テスト」タブに切り替えて、「探索的テストを行う」項目を開きます。
ここには、2つの重要な機会があります-研究テストセッションを開始する(「探索」)と、現在の計画に含まれるリストから選択した要件の研究テストセッションを開始する(「作業項目を探索」)。
これら2つのオプションの違いは非常に簡単です。テスト要件を選択すると、後で作成されたアーティファクト(テスト結果、欠陥、テストスクリプト)がこの要件に自動的に添付されます。
オプション「ワークアイテムの探索」を選択します。 テストスナップインウィンドウが開きます。 このツールにより、研究テストの進行状況に関する情報を収集できます。 準備ができたら、「開始」ボタンを押すと、ツールが有効になります。
デスクトップの右側は、テスト済みのWebまたはデスクトップアプリケーションで自由に動作できます。スナップインでは、テスト中にコメントを残したり、スクリーンショットを追加したり、アクションの記録を制御したりできます。 テスト中に、次のものも記録できます。
-画面上で起こっていることのビデオ
-音声コメント
-ユーザーインターフェイスで実行されるアクション
-Intellitraceデバッグ情報
-診断アダプターによって収集されるその他のデータ(セットアップについては以下を参照)
そのため、Webアプリケーションがあり、その動作をテストしています。
ユーザーがサイトを開き、製品を選択し、バスケットに追加し、プロモーションコードを入力し、[奇跡を起こす]ボタンを押しても何も起こりませんでした。 これは欠陥のように思えるので、「Goボタンに反応がない」というコメントを書き、スクリーンショットを添付します(「スクリーンショットを追加」)。
一見、有益ではありません。 残念ながら、これはテスターがしばしば欠陥を文書化する方法です。 通常の説明を書き始めると、それらは品質スペシャリスト(QAエンジニア)に名前が変更されます。
ただし、最新のツールで何ができるかを見てみましょう。
エラーレポートを生成します。
[バグの作成]ボタンを使用して、新しいエラーレポートを作成します。
そして、ここで研究テストでMTMが必要な理由を理解しています:
欠陥はすでにほとんど文書化されています:
-アクションのシーケンスが自動的に記録されます(ステップ1〜7)
-入力したコメントとスクリーンショットから欠陥の説明が生成されます
-収集されたシステム情報が添付されます
-Intellitraceログが適用されます
-画面で何が起こっているのかビデオを添付
品質スペシャリストは、エラーを取得するために自分が何をしたかを覚える必要がなくなりました。 すべての動きが記録されます。 開発者がステップのシーケンスを再現することは非常に簡単であり、ビデオを見て「しかし、すべてがうまくいく」という言葉でエラーを拒否することは非常に困難です。
テストスクリプトを作成する
テスト方法の1つでは、見つかったエラーを修正する前に、このエラーの存在を確認するテストを作成する必要があるとされています。
「テストケースの作成」機能を使用すると、実行したアクションに関する情報に基づいてテストスクリプトを自動的に作成できます。
セッション中に実行されたアクションは、テストステップとして追加されます。 必要に応じて、説明を修正し、「期待される結果」列に期待される結果に関する情報を追加します。
その結果、調査テストを実施してエラーを文書化するだけでなく、 このツールを使用してテストシナリオをすばやく説明することもできます 。
また、テストセッションの開始時に要件を選択した場合、見つかったエラーとテストシナリオは要件に関連付けられます。 ただし、このような関係はいつでも手動で追加できます。
保存された研究テストセッション
欠陥が見つからなかった場合でも、研究テストセッションの情報は保持される場合があります。
これらは、「探索的テストセッションの表示」タブで表示できます。
セッションの詳細な説明を開いて、収集されたデータを表示できます。
同じデータ(テスト結果)は、他のタイプのテスト中にシステムによって収集されます。
収集した情報の構成
テスト中に収集された情報の設定を簡単に確認します。
MTMでは、ローカルプロファイルだけでなく、複数のマシンを含む複雑なテスト環境のプロファイルなど、いくつかのテスト構成を作成して使用できます。これにより、たとえば、アプリケーションサーバー、クライアントワークステーション、およびテスト環境に含まれる他のマシン。
設定するには、テストセンターモードからラボセンターに切り替えて、[テスト設定]タブを開きます。
構成の1つを選択し、テスト環境に含まれるマシンのロールの1つの設定を確認します。
いくつかの基本的なデータ収集アダプターが利用可能です。
- IntelliTrace-過去のアプリケーション実行プロトコルのコレクション。 Habréに関する記事。
- EventLog-Windowsイベントログからイベントを収集する
- システム情報-オペレーティングシステム構成データの収集
- テストの影響-テスト中に実行されたアプリケーションコード行に関するデータの収集。 バージョン管理システムの新しい変更の影響を受ける可能性のあるテストを識別するために使用します(この記事の良いトピックですよね?)
- ビデオレコーダー-画面で起こっていることをビデオファイルに記録します。 ビットレートと品質レベルの設定があります。 音を書くこともできます。
- アクションログ-ユーザーインターフェイスで操作を記録します。
最後の段落には説明が必要です。 システムは、どのボタンが押されたか、どのリンクが開いているか、どのフィールドが埋められているかなどを本当に認識します。 さらに、このメカニズムはいくつかの場所で使用されます:ユーザーインターフェイスの自動テストを記述するツール(コード化されたUIテスト)、手動テストの部分自動化システム、および研究テスト中。
サポートされるアプリケーションは、Windows Forms 2.0、Win32、WPF、Silverlight、IE8-10を介したWebおよびHTML5 などです。
サポートされていないテクノロジーがあります-Flash / JAVA、SAP、Lotus Notes。 追加の拡張機能により、多くのテクノロジーがサポートされています。
おわりに
研究テストは、テストの種類の1つです。 また、既存の単体テスト手順、自動、機能、人間工学、負荷テスト、セキュリティテストなどへの追加として使用する必要があります。
使用するツールは、テストの実行、結果の保存、およびすべてのプロジェクトエンティティ(要件、欠陥、テストスクリプト)との接続を確保するための統合環境を提供する必要があります。