(57)【要約】      （修正有）【課題】テストスクリプトにおける画面要素の識別情報の修正について正確性と効率性とを向上させる。【解決手段】第１の画面の画面要素の識別情報が操作対象を示す情報として含まれるテストスクリプトの命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を第１の画面に関して取得して、取得した各値を記憶部に記憶し、テストスクリプトに含まれる命令のうち、第２の画面に関して存在しない識別情報に係る第１の画面要素が操作対象である第１の命令について、第１の画面要素に関して記憶部に記憶されている各値と、第２の画面の各画面要素に関して取得される複数の指標の値との比較に基づいて、第２の画面において第１の命令の操作対象である画面要素の候補を探索し、探索された候補の中からユーザによって選択された候補に係る画面要素の識別情報によって、第１の命令に対する識別情報を修正する。【選択図】図８
2019101538.tif 000002
【特許請求の範囲】
【請求項１】
第１の画面の画面要素の識別情報が操作対象を示す情報として含まれるテストスクリプトの命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第１の画面に関して取得して、取得した各値を記憶部に記憶する取得部と、
前記テストスクリプトに含まれる命令のうち、第２の画面に関して存在しない識別情報に係る第１の画面要素が操作対象である第１の命令について、前記第１の画面要素に関して前記記憶部に記憶されている各値と、前記第２の画面の各画面要素に関して取得される前記複数の指標の値との比較に基づいて、前記第２の画面において前記第１の命令の操作対象である画面要素の候補を探索する探索部と、
探索された候補の中からユーザによって選択された候補に係る画面要素の識別情報によって、前記第１の命令に対する識別情報を修正する修正部と、
を有することを特徴とするテストスクリプト修正装置。
【請求項２】
前記探索された候補に係る画面要素を前記第２の画面において強調表示する強調部を有し、
前記修正部は、強調表示された画面要素の中からユーザによって選択された画面要素の識別情報によって、前記第１の命令に対する識別情報を修正する、
ことを特徴とする請求項１記載のテストスクリプト修正装置。
【請求項３】
前記探索部は、前記第１の画面要素に関して前記記憶部に記憶された各値と、前記第２の画面の各画面要素に関して取得される前記複数の指標の値とに基づいて、前記第１の画面要素と、前記第２の画面の各画面要素との類似度を算出し、算出された類似度に基づいて、前記候補を探索する、
ことを特徴とする請求項１又は２記載のテストスクリプト修正装置。
【請求項４】
前記探索部は、前記指標ごとに、前記第１の画面要素に関する値と前記第２の画面の各画面要素に関する値との類似度を算出し、前記指標ごとの類似度について、前記指標ごとの重みに基づく加重平均を計算することで、前記第１の画面要素と前記第２の画面の各画面要素との類似度を算出する、
ことを特徴とする請求項３記載のテストスクリプト修正装置。
【請求項５】
第１の画面の画面要素の識別情報が操作対象を示す情報として含まれるテストスクリプトの命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第１の画面に関して取得して、取得した各値を記憶部に記憶する取得手順と、
前記テストスクリプトに含まれる命令のうち、第２の画面に関して存在しない識別情報に係る第１の画面要素が操作対象である第１の命令について、前記第１の画面要素に関して前記記憶部に記憶されている各値と、前記第２の画面の各画面要素に関して取得される前記複数の指標の値との比較に基づいて、前記第２の画面において前記第１の命令の操作対象である画面要素の候補を探索する探索手順と、
探索された候補の中からユーザによって選択された候補に係る画面要素の識別情報によって、前記第１の命令に対する識別情報を修正する修正手順と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストスクリプト修正装置及びプログラムに関する。
【背景技術】
【０００２】
画面の操作を伴うテストを自動化するため手法として、キャプチャ＆リプレイやプログラミングを用いた手法が広く用いられている。
【０００３】
キャプチャ＆リプレイでは、ユーザが画面に対して操作を行うと、ユーザが行った操作がテストスクリプトとして記録される。次回以降のテストでは、当該テストスクリプトを実行することで、自動的にテストを行うことができる。キャプチャ＆リプレイの利点として、プログラミングスキルが無くても、画面操作で簡単にテストスクリプトを実装することができる点が挙げられる。欠点としては、テストスクリプトが操作の羅列として出力されるため、テストスクリプトの可読性が低い点や、テストスクリプトをモジュール化しにくい点が挙げられる。キャプチャ＆リプレイを行うためによく用いられるツールとしては、Selenium IDEや、Selenium Builder等が有る。
【０００４】
一方、プログラミングによる手法では、ＲｕｂｙやＪａｖａ（登録商標）といったプログラミング言語を用いてテストスクリプトの実装が行われる。画面を操作するためのＡＰＩを用いて、テストで行いたい操作を示すプログラムがテストスクリプトとして記述され、当該テストスクリプトを実行することで自動的にテストが行われる。プログラミングによる手法の利点として、柔軟性が高く、実装者のスキルによっては高い保守性が期待できる点が挙げられる。欠点としては、利用するためにプログラミング言語の理解が必要であり、テストスクリプトの質が実装者のスキルに依存してしまう点が挙げられる。Ｗｅｂ画面を操作するためのＡＰＩとして、Selenium WebDriverが有名である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Maurizio Leotta, Andrea Stocco, Filippo Ricca, Paolo Tonella, Using Multi-Locators to Increase the Robustness of Web Test Cases Internaional Conference on Software Testing, Verification and Validation(ICST) 2015
【非特許文献２】Shauvik Roy Choudhary, Dan Zhao, Husayn Versee, Alessandro Orso、Water: Web Application TEst Repair、 Proceedings of the First International Workshop on End-to-End Test Script Engineering(ESTE) 2011
【非特許文献３】Why do Record/Replay Tests of Web Applications Break?, Mouna Hammoudi, Gregg Rothermel,Paolo Tonella, Software Testing, Verification and Validation (ICST) 2016
【発明の概要】
【発明が解決しようとする課題】
【０００６】
テストスクリプトは、回帰テストを効率化するために用いられる。回帰テストは、ソフトウェアに修正を施した際に、既存機能に悪影響が出ていないかを確認するためのテストである。回帰テスト実行を自動化することで、手動でテストを実行した際と比較して、工数の削減が期待できる。
【０００７】
しかし、ソフトウェアに修正を施した際に、当該修正に合わせてテストスクリプトにも修正が必要になる場合がある。テストスクリプトの修正作業に工数がかかると、期待した工数削減効果が得られない恐れがある。
【０００８】
上記で説明したキャプチャ＆リプレイやプログラミングを用いた手法のいずれを用いても、テストスクリプトの保守の問題は避けることができない。プログラミングによる手法を用いた場合、適切にモジュール化を行うことで、修正が必要になった場合の修正箇所を減らすことは可能である。
【０００９】
しかし、適切にモジュール化しても保守作業は必ず必要になる上、テスト担当者が必ずしもそのようなスキルを持っているとは限らない。したがって、誰でも簡単にテストスクリプトを保守できることが開発現場において強く求められている。
【００１０】
ところで、テストスクリプト修正全体の７０％以上をロケータの修正が占めていることが知られている（非特許文献３）。ロケータは、テストスクリプトにおいて操作対象の画面要素（ボタン、フォームなどの画面中の一要素とする）を一意に特定するための識別子であり、ｉｄ、ｎａｍｅ、ＸＰａｔｈ等を用いることができる。アプリケーションの修正により、画面要素のｉｄ、ｎａｍｅ、ＸＰａｔｈ等が変更された場合は、テストスクリプト中の該当ロケータを修正する必要がある。人がロケータを直接編集する場合、以下のような問題点がある。
・ロケータを見ても、どの画面要素を操作しているかが分からない場合があり、ドキュメントやテスト手順書を参照する必要がある。
・ロケータをスクリプト中に記述するために、ＨＴＭＬを参照したり、特定のツールを使う必要がある。
・ロケータを記述する際に、ミスをする恐れがある。
【００１１】
このロケータ修正の負担を軽減するため、非特許文献１、２のようにロケータの自動修正に関する研究が行われている。
【００１２】
しかし、ロケータ自動修正には次のような課題がある。すなわち、ロケータ以外の誤りが出現した場合、それ以降テストスクリプトが実行できず、それ以降に出現するロケータの誤りも修正できない。また、自動修正では修正の正確性が低い可能性が有るため、結局人間によるレビューが必要であり、間違っていた場合には手作業での修正が必要とされる。
【００１３】
本発明は、上記の点に鑑みてなされたものであって、テストスクリプトにおける画面要素の識別情報の修正について正確性と効率性とを向上させることを目的とする。
【課題を解決するための手段】
【００１４】
そこで上記課題を解決するため、テストスクリプト修正装置は、第１の画面の画面要素の識別情報が操作対象を示す情報として含まれるテストスクリプトの命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第１の画面に関して取得して、取得した各値を記憶部に記憶する取得部と、前記テストスクリプトに含まれる命令のうち、第２の画面に関して存在しない識別情報に係る第１の画面要素が操作対象である第１の命令について、前記第１の画面要素に関して前記記憶部に記憶されている各値と、前記第２の画面の各画面要素に関して取得される前記複数の指標の値との比較に基づいて、前記第２の画面において前記第１の命令の操作対象である画面要素の候補を探索する探索部と、探索された候補の中からユーザによって選択された候補に係る画面要素の識別情報によって、前記第１の命令に対する識別情報を修正する修正部とを有する。
【発明の効果】
【００１５】
テストスクリプトにおける画面要素の識別情報の修正について正確性と効率性とを向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態におけるシステム構成例を説明するための図である。
【図２】本発明の実施の形態におけるテスト実行装置１０のハードウェア構成例を示す図である。
【図３】本発明の実施の形態におけるテスト実行装置１０の機能構成例を示す図である。
【図４】テスト実行装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【図５】旧画面の画面要素情報の取得処理の処理手順の一例を説明するためのフローチャートである。
【図６】テストスクリプトの一例を説明するための図である。
【図７】画面要素情報記憶部１２２の構成例を示す図である。
【図８】新アプリケーションのテスト処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を説明するための図である。図１において、サーバ装置２０及びテスト実行装置１０は、例えば、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して接続される。
【００１８】
サーバ装置２０は、画面を生成するアプリケーションを有するコンピュータである。サーバ装置２０には、当該アプリケーションの旧リビジョン及新リビジョンが実装されている。例えば、Ｗｅｂサーバが、サーバ装置２０として利用されてもよい。なお、リビジョン間において、画面の構成（すなわち、画面に含まれる画面要素の構成）は、必ずしも一致しない。また、画面に含まれる画面要素が定義されたデータ（例えば、ＨＴＭＬ（HyperText Markup Language）又はＸＭＬ（eXtensible Markup Language）等。以下、「画面定義データ」という）内において、リビジョンを跨いで同じ画面要素（対応する画面要素）に対して付与されているロケータの同一性は保証されていない。同じ画面要素（対応する画面要素）とは、例えば、機能及び用途（すなわち、意味）が同一であり、人から見たら同じであることが認識される画面要素の組をいう。
【００１９】
なお、画面要素とは、画面（Ｗｅｂ画面等）を構成するボタン、入力フォーム、リンクといった要素をいう。一つの画面要素は、例えば、１つのＨＴＭＬタグ又はＸＭＬタグで定義され、入れ子構造をとりうる。ロケータとは、画面定義データ内において、各画面要素に対して識別子として付与されている情報をいう。例えば、ｉｄ、ｎａｍｅ、ＸＰａｔｈ等がロケータとして用いられる。
【００２０】
テスト実行装置１０は、サーバ装置２０のアプリケーションについて、回帰テストを実行するコンピュータである。回帰テストは、旧リビジョンのアプリケーション（以下、「旧アプリケーション」という。）によって生成される画面に対して作成されたテストスクリプトを、新リビジョンのアプリケーション（以下、「新アプリケーション」という。）によって生成される画面に対して適用することで効率的に実行される。テストスクリプトとは、画面に対する操作手順が定義されたデータであり、操作命令ごとに、操作対象の画面要素のロケータ及び操作内容を示す情報等を含むデータである。なお、ＰＣ（Personal Computer）、スマートフォン、又はタブレット端末等がテスト実行装置１０として利用されてもよい。
【００２１】
図２は、本発明の実施の形態におけるテスト実行装置１０のハードウェア構成例を示す図である。図２のテスト実行装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００２２】
テスト実行装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２３】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってテスト実行装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００２４】
図３は、本発明の実施の形態におけるテスト実行装置１０の機能構成例を示す図である。図３において、テスト実行装置１０は、テストスクリプト取得部１１、テスト実行部１２、画面表示制御部１３、要素情報取得部１４、対象要素候補探索部１５、ハイライト部１６、選択部１７、テストスクリプト修正部１８及び重み計算部１９等を有する。これら各部は、テスト実行装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００２５】
テスト実行装置１０は、また、テストスクリプト記憶部１２１、画面要素情報記憶部１２２、画面履歴記憶部１２３及び重み記憶部１２４等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又はテスト実行装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００２６】
テストスクリプト取得部１１は、旧アプリケーションに対応するテストスクリプトをテストスクリプト記憶部１２１から取得する。
【００２７】
画面表示制御部１３は、旧アプリケーションの画面（以下、「旧画面」という。）及び新アプリケーションの画面（以下、「新画面」という。）のそれぞれを表示する。例えば、Ｗｅｂブラウザに基づいて画面表示制御部１３が実現されてもよい。
【００２８】
テスト実行部１２は、テストスクリプト取得部１１によって取得されたテストスクリプトを使用して、旧画面及び新画面のそれぞれについてテストを実行する。
【００２９】
要素情報取得部１４は、旧画面の各画面要素について、画面要素間の類似度を評価するための複数の指標の値（指標値）や、当該画面要素の表示範囲の画像データ等を取得する。取得された指標値群及び画像データは、画面要素情報記憶部１２２に記憶される。なお、広義において、画像データも指標値の一例であるといえる。
【００３０】
対象要素候補探索部１５は、新アプリケーション（新画面）に対するテストの実行中において、テストスクリプトの命令群のうち、操作対象の画面要素を示すために指定されているロケータが新画面に関して使用されていない命令について、操作対象であることが推定される画面要素の候補を新画面の画面要素の中から探索する。より詳しくは、対象要素候補探索部１５は、旧画面において当該ロケータに対応する画面要素と、新画面における各画面要素との間で、画像要素間の類似度の算出に利用される複数の指標の値を比較することで、当該候補を探索する。
【００３１】
ハイライト部１６は、対象要素候補探索部１５によって探索された複数の候補を、新画面においてハイライト表示（強調表示）する。
【００３２】
選択部１７は、ハイライト表示された画面要素の中から、いずれかの画面要素の選択をユーザから受け付ける。
【００３３】
テストスクリプト修正部１８は、ユーザによる選択結果に基づいて、テストスクリプトを、新アプリケーション（新画面）に対応した状態へ修正する。
【００３４】
重み計算部１９は、対象要素候補探索部１５が、旧画面の各画面要素と新画面の各画面要素との類似度を算出する際に利用する、各指標に対する重みを画面履歴記憶部１２３に記憶されている情報に基づいて統計的に計算する。計算結果（各指標の重み）は、重み記憶部１２４に記憶される。なお、本実施の形態において、重みの計算方法は所定のものに限定されない。
【００３５】
画面履歴記憶部１２３には、アプリケーションの各リビジョンの画面の画面要素ごとに、画像データ及び指標値群が記憶されている。
【００３６】
なお、テスト実行装置１０が、サーバ装置２０の機能を有していてもよい。この場合、サーバ装置２０は配置されなくてもよい。
【００３７】
以下、テスト実行装置１０が実行する処理手順について説明する。図４は、テスト実行装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【００３８】
ステップＳ１０１において、画面表示制御部１３は、サーバ装置２０の旧アプリケーションの画面（旧画面）を表示装置１０６に表示する。具体的には、画面表示制御部１３は、サーバ装置２０の旧アプリケーションにアクセスして、画面定義データをダウンロードし、当該画面定義データに基づいて、旧画面を表示する。
【００３９】
続いて、テストスクリプト取得部１１は、旧アプリケーションに対応するテストスクリプトを、テストスクリプト記憶部１２１から取得し、メモリ装置１０３に記憶する（Ｓ１０２）。以下において、「テストスクリプト」は、メモリ装置１０３に記憶されたテストスクリプトをいう。
【００４０】
続いて、テスト実行装置１０は、旧画面の画面要素情報の取得処理を実行する（Ｓ１０３）。ステップＳ１０３では、旧画面に対してテストスクリプトを実行しつつ、旧画面の画面要素群のうちテストスクリプトにおいて実行対象とされた各画面要素について、他の画面要素との類似度を評価するための複数の指標のそれぞれの値（指標値）や、当該画面要素の表示範囲の画像データ等が取得される。取得された指標値群及び画像データは、画面要素情報記憶部１２２に記憶される。
【００４１】
続いて、テスト実行装置１０は、新アプリケーションのテスト処理を実行する（Ｓ１０４）。当該テスト処理では、旧画面に対応するテストスクリプトが新画面に適用されて、新アプリケーションについて回帰テストが実行される。回帰テストの過程において、テストスクリプト内の操作命令の操作対象とされているロケータ（以下、「対象ロケータ」という。）に対応する画面要素が新画面に存在しない場合、対象ロケータに対応する画面要素の候補の探索が行われる。当該候補の探索には、画面要素情報記憶部１２２に記憶された情報等が利用される。当該候補が探索された場合には、当該候補が新画面においてハイライト表示される。ハイライト表示された候補の中からいずれかの候補がユーザによって選択されると、選択された候補のロケータによって対象ロケータが書き換えられて、回帰テストが継続される。
【００４２】
続いて、ステップＳ１０３の詳細について説明する。図５は、旧画面の画面要素情報の取得処理の処理手順の一例を説明するためのフローチャートである。
【００４３】
ステップＳ２０１において、テスト実行部１２は、テストスクリプト内に次の命令ｃが有るか否かを判定する。次の命令ｃとは、未実行の命令の中で実行順が先頭の命令をいう。
【００４４】
図６は、テストスクリプトの一例を説明するための図である。図６において、画面ｇ１は、表示される画面の一例である。画面定義データｈ１は、画面ｇ１の一部（画面要素ｅ１）についての画面定義データである。テーブルＴ１は、画面ｇ１に関するテストスクリプトを表形式で表現したものである。
【００４５】
テーブルＴ１において、各行が、１つの操作に対応する。すなわち、テストスクリプトは、操作ごとに、命令、ロケータ、及び値等を含む。命令は、操作の種別を示す情報である。図６では、「ｔｙｐｅ」、「ｃｌｉｃｋ」等が例示されている。「ｔｙｐｅ」は、操作対象の画面要素への値の入力を意味する。「ｃｌｉｃｋ」は、操作対象の画面要素のクリックを意味する。ロケータは、操作対象の画面要素のロケータである。値は、操作対象の画面要素に適用される値である。このように、テストスクリプトには、操作内容（命令及び値）と操作対象（ロケータ）とが操作ごとに含まれている。また、テストスクリプトには、各操作の順番も定義されている。例えば、テーブルＴ１では、上の行から先に実行される。
【００４６】
テストスクリプトに次の命令ｃが有る場合（Ｓ２０１でＹｅｓ）、テスト実行部１２は、旧画面において、命令ｃに対応する画面要素に対して命令ｃを実行する（Ｓ２０２）。
【００４７】
続いて、要素情報取得部１４は、命令ｃによって操作された画面要素（以下、「対象要素」とい。）を特定する（Ｓ２０３）。対象要素は、例えば、命令ｃに対応するロケータによって特定されてもよい。続いて、要素情報取得部１４は、対象要素に関する各指標値を、旧画面の画面定義データから取得する（Ｓ２０４）。ここでは、複数の指標の指標値が取得される。
【００４８】
指標は、例えば、画面要素の属性（ｉｄ、ｔｙｐｅ、ｃｌａｓｓ、ｎａｍｅ、タグ名等）、画面要素の位置情報（ＸＰａｔｈ、ｘ座標、ｙ座標、横幅、縦幅）、画面要素に関連するテキスト（リンクテキスト、近傍のテキスト、ＵＲＬ等）である。なお、リンクテキストは、画面要素がリンクである場合の指標であり、当該リンクが付与された文字列を示す。近傍のテキストとは、画面要素の表示範囲の周囲（例えば、上、下、左、右等の所定の画素数の範囲内）に表示されるテキストである。画面要素の表示範囲とは、例えば、当該画面要素の最小外接矩形でもよい。なお、２０種類程度の指標のそれぞれについて、指標値が取得されてもよい。
【００４９】
続いて、要素情報取得部１４は、取得された指標値群を、対象要素に関連付けて画面要素情報記憶部１２２に記憶する（Ｓ２０５）。
【００５０】
続いて、要素情報取得部１４は、旧画面のスクリーンショット（画像データ）を取得する（Ｓ２０６）。続いて、要素情報取得部１４は、当該スクリーンショットから、対象要素の表示範囲の画像データを取得する（切り出す）（Ｓ２０７）。なお、対象要素の表示範囲は、例えば、旧画面の画面定義データに含まれている、対象要素の位置情報等に基づいて特定可能である。続いて、要素情報取得部１４は、取得した画像データを、対象要素に関連付けて画面要素情報記憶部１２２に記憶する（Ｓ２０８）。
【００５１】
ステップＳ２０２以降が、テストスクリプトの全ての命令について実行されると（Ｓ２０１でＮｏ）、図５の処理手順は終了する。その結果、画面要素情報記憶部１２２には、旧画面の画面要素のうち、テストスクリプトによって操作された各画面要素の指標値群及び画像データが記憶される。
【００５２】
図７は、画面要素情報記憶部１２２の構成例を示す図である。図７に示されるように、画面要素情報記憶部１２２には、テストスクリプトにおいて実行された命令の順番で、操作対象とされた画面要素ごとに、指標値群及び画像データが記憶される。なお、図７において「画面要素」の列は、例えば、画面要素のロケータであってもよい。
【００５３】
続いて、図４のステップＳ１０４の詳細について説明する。図８は、新アプリケーションのテスト処理の処理手順の一例を説明するためのフローチャートである。
【００５４】
ステップＳ３０１において、画面表示制御部１３は、サーバ装置２０の新アプリケーションの画面（新画面）を表示装置１０６に表示する。具体的には、画面表示制御部１３は、サーバ装置２０の新アプリケーションにアクセスして、画面定義データをダウンロードし、当該画面定義データに基づいて、新画面を表示する。
【００５５】
続いて、テストスクリプトの最初の命令から順に、ステップＳ３０２以降が実行される。当該テストスクリプトは、ステップＳ１０２においてメモリ装置１０３に記憶されたテストスクリプトである。すなわち、当該テストスクリプトは、旧アプリケーションに対応するテストスクリプトである。
【００５６】
ステップＳ３０２において、テスト実行部１２は、テストスクリプト内に次の命令ｃが有るか否かを判定する。テストスクリプトに次の命令ｃが有る場合（Ｓ３０２でＹｅｓ）、テスト実行部１２は、新画面において、命令ｃに対応する画面要素に対して命令ｃを実行する（Ｓ３０３）。
【００５７】
続いて、テスト実行部１２は、命令ｃのロケータが誤っているか否かを判定する（Ｓ３０４）。すなわち、新画面の画面定義データにおける当該ロケータの有無が判定される。当該判定は、新画面の画面定義データを参照することで可能である。命令ｃのロケータが誤っていない場合（Ｓ３０４でＮｏ）、ステップＳ３０２以降が繰り返される。
【００５８】
命令ｃのロケータが誤っている場合（すなわち、当該ロケータに係る画面要素が新画面に含まれていない場合）（Ｓ３０４でＹｅｓ）、対象要素候補探索部１５は、当該ロケータ（以下、「元ロケータ」という。）について、対象要素候補探索処理を実行する（Ｓ３０５）。対象要素候補探索処理は、新画面の画面要素の中で、命令ｃのロケータに対応する画面要素（以下、「対象要素」という。）の候補（以下、「対象要素候補」という。）が探索される。探索において、新画面の各画面要素について、旧画面において当該ロケータを有する画面要素（以下、「元要素」という。）との間で類似度が算出される。類似度の詳細については後述される。
【００５９】
なお、命令ｃのロケータを有する画面要素が新画面に含まれていない場合、ステップＳ３０３において、命令ｃの実行に失敗する。したがって、ステップＳ３０４以降は、命令ｃの実行に失敗した場合に実行されてもよい。
【００６０】
続いて、ハイライト部１６は、対象要素候補探索処理において探索された１以上の対象要素候補を、新画面においてハイライト表示する（Ｓ３０６）。この際、類似度の順番がユーザに分かるように、ハイライトの色が類似度に応じて変えられてもよい。なお、ハイライト（強調表示）の形態は、所定のものに限定されない。例えば、対象要素候補の周囲に枠が付与されてもよいし、対象要素候補の背景に色が付与されてもよい。また、対象要素候補が文字列である場合には、当該文字列の書体が変更されてもよい。その他の方法によって、ハイライト表示が行われてもよい。
【００６１】
続いて、選択部１７は、ハイライト表示された対象要素候補の中からいずれかの対象要素候補の選択（例えば、クリック）をユーザから受け付ける（Ｓ３０７）。なお、ステップＳ３０６では、対象要素候補のリストが表示されるようにしてもよい。ステップＳ３０７では、当該リストの中からいずれかの対象要素候補がユーザによって選択されてもよい。すなわち、ユーザにから対象要素候補を受け付けるためのＧＵＩ（Graphical User Interface）は、所定のものに限定されなくてもよい。
【００６２】
続いて、テストスクリプト修正部１８は、テストスクリプトにおいて、選択された対象要素候補のロケータによって、テストスクリプト内の命令ｃのロケータを修正する（Ｓ３０８）。すなわち、命令ｃのロケータが、選択された対象要素候補のロケータによって置換される。
【００６３】
続いて、ステップＳ３０２以降が繰り返される。すなわち、回帰テストが継続される。このように、本実施の形態では、ロケータに対応する画面要素が見つからない命令が実行された場合、その時点でロケータの修正が行われて、テストが継続される。
【００６４】
続いて、対象要素候補探索処理の詳細について説明する。ここで、命令ｃの操作対象の画面要素ｅ（すなわち、元要素）のロケータをｌｅと定義する。また、新アプリケーションの画面（新画面）に存在する画面要素の集合をＥとする。
【００６５】
本実施の形態において、対象要素候補探索部１５は、修正前後の画面要素について、画面要素が持つ複数の指標を用いて類似度を定量的に算出することで、ｅと意味的に等しい画面要素ｅ'∈Ｅを推定する。類似度が高いもの程、修正後のロケータとして確からしいとみなす。用いる指標は以下の４つに分類される。
・属性（ｉｄ，ｃｌａｓｓ，ｎａｍｅ等）
・位置（ＸＰａｔｈ，座標）
・テキスト（リンクテキスト・近傍のテキスト）
・画像（レンダリングされた画面要素の画像）
すなわち、画面要素情報記憶部１２２に記憶されている指標が用いられる。
【００６６】
対象要素候補探索部１５は、ｅとｅ'について、まず、各指標における類似度を算出し、次にそれらを統合して１つの類似度を算出する。なお、ｅに関する各指標の値は、画面要素情報記憶部１２２に記憶されている（例えば、ｌｅに関連付けられて画面要素情報記憶部１２２に記憶されている。）。一方、ｅ' に関する各指標の値は、例えば、ステップＳ３０５のタイミングで、ｅについて算出した方法と同様の方法で算出されればよい。
【００６７】
ｅとｅ'が共通して持つ指標の集合をＩ、ｅにおけるｉ∈Ｉの値をｅｉとする。ここで、Ｍａｘ（ｉ）は、｜ｅｉ−ｅ'ｉ｜がとりうる最大値、Ｌｅｖ（ｅｉ，ｅ'ｉ）は、ｅｉとｅ'ｉとのレーベンシュタイン距離、ＭａｘＬｅｎｇｔｈ（ｅｉ，ｅ'ｉ）は、ｅｉとｅ'ｉとの文字列長のうち長い方の文字列長とすると、対象要素候補探索部１５は、ｅｉとｅ'ｉとの類似度ｓ（ｅｉ，ｅ'ｉ）（０≦ｓ（ｅｉ，ｅ'ｉ）≦１）を、以下のように算出する。
【００６８】
ｅｉが数値の場合：
【００６９】
【数１】
2019101538.tif 000003
ｅｉが画像または特定の文字列（タグ名など）の場合：
【００７０】
【数２】
2019101538.tif 000004
ｅｉが任意の文字列の場合：
【００７１】
【数３】
2019101538.tif 000005
各指標について算出された類似度ｓ（ｅｉ，ｅ'ｉ）を統合するにあたって、それぞれ画面要素の類似度に寄与する度合いが異なると考えられる。例えば、異なる画面要素が同じｉｄを持つことはないが、異なる画面要素が同じｃｌａｓｓを持つことは起こりうるため、ｃｌａｓｓの一致はｉｄの一致に比べて類似度に寄与する度合いが小さいと考えられる。これを考慮し、対象要素候補探索部１５は、各指標について、ｓ（ｅｉ，ｅ'ｉ）を算出した後、重み記憶部１２４に記憶された重みｗｉで加重平均を計算することで、ｅとｅ'との類似度Ｓ（ｅ、ｅ'）（０≦Ｓ（ｅ、ｅ'）≦１）を算出する。
【００７２】
【数４】
2019101538.tif 000006
対象要素候補探索部１５は、類似度ＳがＮ番目までの画面要素ｅ'を対象要素候補の探索結果とする。又は、類似度Ｓが閾値以上である全ての画面要素ｅ'が対象要素候補とされてもよい。
【００７３】
例えば、Ｎ＝４であれば、対象要素候補探索部１５は、類似度Ｓの順に４つの対象要素候補ｅ'１、ｅ'２、ｅ'３、ｅ'４を探索結果として出力する。
【００７４】
ハイライト部１６は、ｅ'１〜ｅ'４を、それぞれ異なる色でハイライトすることで区別する。ユーザは、ハイライトされた中から、操作すべきであると思われる画面要素を選択し、クリックする。テストスクリプト修正部１８は、ユーザがクリックした画面要素のロケータによって、命令ｃのロケータを置換する。例えば、ｅ'２が選択されたとすると、命令ｃのロケータｌｅが、ロケータｌｅ'２に書き換わる。命令ｃについてロケータの修正が完了すると、テストが再開される。テストが完了するまで、この操作を繰り返すことで、修正作業が完了する。
【００７５】
上述したように、本実施の形態によれば、修正後のアプリケーション（新アプリケーション）におけるテストで操作すべき画面要素の候補をブラウザ上で視覚的に分かりやすく推薦し、１以上の候補の中からユーザによって選択された候補に基づいて、テストスクリプトが修正される。したがって、テストスクリプトにおける画面要素の識別情報の修正について正確性と効率性とを向上させることができる。
【００７６】
例えば、テストスクリプトの各命令がどの画面要素を操作しようとしていたのかを事前に理解する必要が無くなるため、テスト担当者がドキュメント等を参照する必要性を低減することができる。
【００７７】
また、ブラウザ上で画面要素をクリックするだけで修正できるので、テスト担当者が、ロケータを記述するために、ＨＴＭＬを参照したり、特定のツールを使う必要性を低減することができる。この際、人間が常に確認するため、正しく修正できる。
【００７８】
また、ロケータの修正の際のミスが減り、何度もテスト実行を行い動作確認する必要が無くなる。
【００７９】
また、ロケータ以外の誤りが出現した場合でも、その部分のみ人間が修正し、ロケータについてはインタラクティブに修正できる。
【００８０】
なお、本実施の形態において、テスト実行装置１０は、テストスクリプト修正装置の一例である。ロケータは、識別情報の一例である。旧画面は、第１の画面の一例である。新画面は、第２の画面の一例である。要素情報取得部１４は、取得部の一例である。対象要素候補探索部１５は、探索部の一例である。テストスクリプト修正部１８は、修正部の一例である。ハイライト部１６は、強調部の一例である。画面要素情報記憶部１２２は、記憶部の一例である。元要素は、第１の画面要素の一例である。
【００８１】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００８２】
１０          テスト実行装置
１１          テストスクリプト取得部
１２          テスト実行部
１３          画面表示制御部
１４          要素情報取得部
１５          対象要素候補探索部
１６          ハイライト部
１７          選択部
１８          テストスクリプト修正部
１９          重み計算部
２０          サーバ装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１２１        テストスクリプト記憶部
１２２        画面要素情報記憶部
１２３        画面履歴記憶部
１２４        重み記憶部
Ｂ            バス
【図１】
2019101538.tif 000007
【図２】
2019101538.tif 000008
【図３】
2019101538.tif 000009
【図４】
2019101538.tif 000010
【図５】
2019101538.tif 000011
【図６】
2019101538.tif 000012
【図７】
2019101538.tif 000013
【図８】
2019101538.tif 000014