テスト オブジェクトとランタイム オブジェクトの違いを理解するには、コンピューターの外側で少し考えてみるとよいでしょう。
必要に応じて、あなたが机に向かって座っていて、のどが渇いていると想像してみてください。しかし、自分で休憩室に行ってソーダ マシンから飲み物を取りに行くことはできません。代わりに、インターンを捕まえてコインを渡し、休憩室に送って飲み物をもらいます。
この特定のインターンは非常に新しいので、インターンに何をしてもらいたいかを段階的に正確に説明する必要があります。
スクリプトは非常に単純です。
1) go to "the break room".
2) go to "the machine"
2) insert coins into "the coin slot"
3) press "the Coke button".
4) bring the can back to you.
したがって、スクリプトでは、いくつかのことを説明しています。
"the break room" is the name of the room that contains the machine.
"the machine" is the name of the machine in the break room.
"the coin slot" is the name of a hole in the front of the machine.
"the Coke button" is the name of a button on the fronf of the machine.
さて、このインターンはとても新しいので、彼はあなたに尋ねます。
したがって、「休憩室」は「緑のドアのある廊下の最後の部屋」と表現する必要があります。また、「マシン」を「右側にたくさんのボタンがある赤いマシンです」と説明する必要があります。また、「コイン スロット」 = 「すべてのボタンの上にある長い長方形のスロットです」と説明する必要があります。最後に、「 Coke ボタン" = "Coke のロゴが入った大きな白いボタンです".
インターンは、これらすべての説明をリストとして紙に書き留めます。インターンは、休憩室に着いたときに目にするはずの物の名前と説明が書かれた紙を持っています。
というわけで、次はインターンが実際に休憩室まで歩いていきます…
彼は機械を見つけました...
彼はコインスロットを見つけてコインを入れます...
コントロールを検索して、Coke のロゴが付いた大きな白いボタンを探しますが、見つかりません。それで、彼はあなたに戻ってきます。
「あなたが説明した「コーラのボタン」が見つかりませんでした」と彼は言います。結局のところ、ボタンは最近変更され、現在はすべてのボタンの背景が黒になっています。これをインターンに説明すると、インターンは紙の説明を変更します。あなたは彼を送り返してやり直します。
それで、インターンは休憩室に戻ります...
彼は機械を見つけた...
彼はコインスロットを見つけてコインを入れます...(以前は機械が自動的にコインを吐き出していましたが、彼はコインを取り戻しました)
彼はコントロールで「コーラのロゴが付いた大きな黒いボタン」を検索し、それを見つけて押します。
マシンはコークスを分配します。
それで、彼は戻ってきて、あなたに飲み物を届けます。
さて、上記のストーリーを使用すると、テスト オブジェクトとランタイム オブジェクトの違いを説明するのがはるかに簡単になるはずです。
インターンはあなたのテスト ツール - QTP です。
テスト オブジェクトは、インターンがマシン上の実際のオブジェクト (または「モノ」) を検索する必要があったのと同じ方法で、テスト ツールが検索する必要がある実際のオブジェクトの説明です。
インターンが紙に書き留めたもののリストは、オブジェクト リポジトリのようなものです。各説明には名前と説明があります。スクリプトには名前があり、QTP はそれらの名前を検索し、OR から説明を取得します。例として、インターンへの指示は次のようになります。
Room("the break room").machine("the machine").slot("the coin slot").insert-coins-into
Room("the break room").machine("the machine").button("the Coke button").press
ランタイム オブジェクトは AUT 内の実際のオブジェクトであり、実際の物理マシン、実際の物理コイン スロット、およびコーラを入手するために押す実際の物理ボタンがあったのとまったく同じです。ソフトウェア テストでは、これらのオブジェクトは物理的ではありませんが、実在します。
GetTOProperty を使用して、オブジェクトの説明をプログラムで読み取ることができます。また、オブジェクト リポジトリを編集してオブジェクトの説明を変更したり、コード内から .SetTOProperty() を使用してオンザフライでプログラムによって変更したりできます。これにより、探しているオブジェクトの説明が変更されます。たとえば、説明を Coke のロゴから Sprite のロゴに変更した場合、インターンは Sprite のボタンを正しく識別し、スクリプトは他のボタンでは機能しません。ただし、インターンがコーラの代わりにスプライトを持ってきてしまうことを除きます。
説明を変更することはできますが、インターンがコーラのボタンを黒から白に変更できるように、実際のオブジェクトを変更することはできません。ただし、インターンがボタンを見つけると、ボタンを押したり、見たり、揺らしたり、匂いを嗅いだりして、ボタンを操作できます。彼はそれを他の何かに変えることはできません。オブジェクトの SetROproperty メソッドはありませんが、GetROProperty を使用できます。つまり、ボタンのサイズ、色、ロゴが識別されたら、インターンにその幅や「アウトオブストック」インジケーターを使用すると、そのライトが点灯しているかどうかをインターンに尋ねることができます。
QTP のテスト オブジェクトとリアルタイム オブジェクトの違いについて、これで完全に答えられることを願っています。