CLI技術から適応されたテストスイート生成への新しいアプローチは、計画システムを使用することです。 計画は、人工知能(AI)ドメインからよく研究された技術であり、四つのパラメータを含む問題を解決しようとします:
- は初期状態、
- は目標状態、
- は演算子のセット、
- は操作するオブジェクトのセットです。
計画システムは、演算子を使用して初期状態から目標状態までのパスを決定します。 計画問題の簡単な例として、2つの単語と1つの単語の1文字を別の単語に置き換える1つの操作を考えると、1つの単語を別の単語に変更するこ
は、この手法を実証するためにplanner IPPを使用しました。 システムのUIは、まず可能な操作を決定するために分析されます。 これらは、計画問題で使用される演算子になります。 次に、初期システム状態が決定され、テスターがシステムの実行を可能にすると感じる目標状態が指定されます。 計画システムでは、初期状態から目標状態へのパスが決定され、これがテスト計画になります。
プランナーを使用してテストケースを生成するには、手動生成よりもいくつかの特定の利点があります。 計画システムは、その性質上、テスターにとって非常に有益な方法で計画の問題に対する解決策を生成します:
- 計画は常に有効です。 システムの出力は、目標状態を達成するために演算子を使用する有効で正しい計画であるか、計画をまったく使用しないかのいずれかです。 これは、テスターが動作すると思っていたが動作しなかった無効なテストケースのために、手動でテストスイートを作成するときに多くの時間が無駄にな 多くの場合、特定の機能をテストするには、テストケースが複雑であり、操作が特定の順序で実行されるGUIを通るパスをたどる必要があります。 手動で行うと、これはエラーにつながる可能性があり、また非常に困難で時間がかかることがあります。
- 最後に、そして最も重要なのは、計画システムは目標指向です。 テスターは、システムの機能をテストし、最も重要なものにテストスイートの生成に焦点を当てています。
テストスイートを手動で作成する場合、テスターは関数をテストする方法(つまり、GUIを介した特定のパス)に重点を置いています。 計画システムの使用によって、道は大事にされ、テスターはどんな機能をテストするために焦点を合わせることができる。 これの追加の利点は、計画システムがパスを生成するときにどのような方法でも制限されず、多くの場合、テスターによって予想されなかったパスを見つ この問題は、戦うために非常に重要なものです。
GUIテストケースを生成する別の方法は、初心者ユーザーをシミュレートします。 システムの専門家ユーザーは、GUIを介して直接予測可能なパスに従う傾向がありますが、初心者ユーザーはよりランダムなパスに従う傾向があります。 初心者ユーザは、専門家よりもGUIのより多くの可能性のある状態を探索する可能性が高い。
難易度は、”初心者”システムの使用をシミュレートするテストスイートを生成することにあります。 この問題を解決するために遺伝的アルゴリズムを使用することが提案されている。 システムを通る初心者のパスはランダムなパスではありません。 第一に、初心者ユーザーは時間をかけて学び、一般的に同じ間違いを繰り返し行うことはありません、そして、第二に、初心者ユーザーは計画に従っており、おそら
遺伝的アルゴリズムは次のように機能します:”遺伝子”のセットはランダムに作成され、いくつかのタスクにさらされます。 タスクを最もよく完了する遺伝子は保持され、そうでない遺伝子は破棄されます。 このプロセスは、生き残った遺伝子が複製され、残りのセットがよりランダムな遺伝子で満たされて再び繰り返されます。 最終的には、1つの遺伝子(または閾値が設定されている場合は小さな遺伝子セット)がセット内の唯一の遺伝子になり、自然に与えられた問題に最
GUIテストの場合、メソッドは次のように動作します。 各遺伝子は本質的に、ある固定長のランダムな整数値のリストです。 これらの遺伝子の各々は、GUIを通る経路を表す。 例えば、与えられたウィジェットのツリーの場合、遺伝子の最初の値(各値は対立遺伝子と呼ばれる)は、操作するウィジェットを選択し、次の対立遺伝子は、ウィ 遺伝子の成功は、最高の「初心者」行動に報酬を与える基準によって採点されます。
X window systemに対してこのテストを行うシステムであるが、任意のウィンドウシステムに拡張可能であることが記載されている。 X Window systemは、GUIを直接使用せずに、プログラムにGUI入力を動的に送信し、プログラムからGUI出力を取得する機能を提供します(XServerとeditors’protocolを介して)。 たとえば、XSendEvent()を呼び出して、プルダウンメニューのクリックをシミュレートすることができます。 このシステムは、研究者が遺伝子の作成とテストを自動化することを可能にするので、テスト対象の任意のアプリケーションに対して、初心者ユーザーのテ