JP6645955B2 - テストスクリプト修正装置及びテストスクリプト修正プログラム - Google Patents

テストスクリプト修正装置及びテストスクリプト修正プログラム Download PDF

Info

Publication number
JP6645955B2
JP6645955B2 JP2016235069A JP2016235069A JP6645955B2 JP 6645955 B2 JP6645955 B2 JP 6645955B2 JP 2016235069 A JP2016235069 A JP 2016235069A JP 2016235069 A JP2016235069 A JP 2016235069A JP 6645955 B2 JP6645955 B2 JP 6645955B2
Authority
JP
Japan
Prior art keywords
screen
screen element
test script
unit
identification information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016235069A
Other languages
English (en)
Other versions
JP2018092361A (ja
Inventor
弘之 切貫
弘之 切貫
治門 丹野
治門 丹野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016235069A priority Critical patent/JP6645955B2/ja
Publication of JP2018092361A publication Critical patent/JP2018092361A/ja
Application granted granted Critical
Publication of JP6645955B2 publication Critical patent/JP6645955B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、テストスクリプト修正装置及びテストスクリプト修正プログラムに関する。
画面の操作を伴うテストを自動化するための手法として、Capture & ReplayやProgrammable Testingといった手法が用いられている。これらのツールは回帰テストを効率化するために用いられる。回帰テストは、アプリケーションに修正を施した際に、既存機能に悪影響が出ていないかを確認するためのテストである。回帰テストの実行を自動化することで、手動でテストを実行した場合と比較して、テスト工数の削減を期待できる。
しかし、画面を出力するアプリケーション(例えば、Webアプリケーション等)に修正を施した際に、それに合わせてテストスクリプトにも修正が必要になる場合がある。テストスクリプトとは、画面の操作命令が記述されたデータである。すなわち、テストスクリプトに記述された操作命令が自動実行されることで、画面の操作を伴うテストが自動化される。テストスクリプトの修正作業に工数を要すると、期待した工数削減効果が得られない可能性が有る。
テストスクリプトの修正の70%以上がロケータの修正であるといわれている(非特許文献3)。ロケータは、操作対象の画面要素(ボタン、フォームなどの画面中の一要素)を一意に特定するための識別子である。例えば、id、name、XPath等がロケータとして用いられうる。アプリケーションの修正により、画面要素のid、name、XPath等が変更された場合、テストスクリプト中の該当ロケータを修正する必要がある。
ロケータの修正の手間を削減するための方法として、予め、ロバスト性の高いロケータを使用するようにアプリケーションを実装することで、アプリケーションのリビジョン間において、ロケータの不整合が発生しにくくすることが考えられる。ロバスト性の高いロケータとは、例えば、相対的な情報によって画面要素を識別するロケータである。第1の手法を採用しているツールとして、UFT、Ranorexなどが存在している。また、第1の手法を提案している論文は複数存在する(例えば、非特許文献1等)。
但し、不整合が発生しにくいロケータというのは、アプリケーションの種類や場合によって異なるため、柔軟性が低い。また、人がロケータを設定する場合、何をロケータとするのかをあらかじめ検討する必要がある。更に、アプリケーションの想定外の修正でロケータに不整合が発生すると、結局、テストスクリプトに修正が必要となる。
そこで、ロケータの不整合が発生した際に、ロケータを正しい値に自動的に修正することが考えられる(例えば、非特許文献1、非特許文献2等)。ロケータの不整合とは、新リビジョンのアプリケーションの画面において、旧リビジョンのアプリケーションに対応したテストスクリプト内で指定されているロケータに対応する画面要素が無い状態をいう。
Maurizio Leotta, Andrea Stocco, Filippo Ricca, Paolo Tonella、Using Multi-Locators to Increase the Robustness of Web Test Cases、International 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
しかしながら、従来技術では、ロケータの修正の精度が低いという課題が有る。
非特許文献1では、XPathに似た5つの指標(FirePath Abs,FirePath Rel,Selenium IDE(rel xpath),Montoto,ROBULA+)を用いてロケータを修正している。複数の指標を用いることで、多面的にマッチングを判定することができ、柔軟性が増す。
しかし、これらの指標は、全てDOM(Document Object Model )ツリーの構造情報に基づいているところ、構造情報を用いた修正の短所として、構造の変化に弱いということが挙げられる。
例えば、画面レイアウトの大きな変更や、2つの画面要素の位置の入れ替え等といった修正が有った場合、画面要素間のマッチングができず、ロケータの修正に失敗する。これら5つの指標は似通った指標であるため、全て同様の短所を持つと考えられる。また、各指標は一致又は不一致で評価されており、一致していないが似ているといった評価を行うことができないため、柔軟性が低い。
非特許文献2では、属性、位置、Xpath等の10種類の指標を用いてロケータを修正しているが、指標の重み付けが偏っているため、実質的にXPathのみを用いているに等しい。XPathについては、一致又は不一致ではなく、レーベンシュタイン距離を用いて評価しており、位置の近さを考慮することができる。
しかし、実質的に1種類の指標(XPath)に依存しているため、多面的な評価を行うことができないという欠点がある。また、XPathのみに依存するため、構造情報を用いた修正の欠点がより強く現れ、レイアウト修正を伴う多くの修正に対応することが困難である。
本発明は、上記の点に鑑みてなされたものであって、画面の操作を伴うテストに利用されるテストスクリプトの修正の精度を向上させることを目的とする。
そこで上記課題を解決するため、テストスクリプト修正装置は、第1の画面の画面要素に対する操作命令の実行順が定義されたテストスクリプトであって、前記操作命令ごとに、操作対象の画面要素の識別情報を含むテストスクリプトを取得するテストスクリプト取得部と、前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素の範囲の画像データを前記第1の画面から取得し、取得した画像データを記憶部に記憶する画像取得部と、前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第1の画面に関して取得して、取得した各値を前記記憶部に記憶する指標値取得部と、前記テストスクリプトに含まれる操作命令のうち、第2の画面に関して使用されていない識別情報が操作対象の第1の画面要素として示されている第1の操作命令について、前記記憶部に記憶されている各画像データと、前記第2の画面から取得される各画面要素の画像データとの比較に基づいて、前記第2の画面における操作対象の第2の画面要素を特定する第1の特定部と、前記第1の特定部によって複数の前記第2の画面要素が特定された場合に、前記記憶部に記憶された各値と、前記第2の画面要素のそれぞれの各指標の値とに基づいて、前記第1の画面要素と、前記第2の画面要素との類似度を算出し、算出された類似度に基づいて、前記第2の画面における操作対象の第3の画面要素を特定する第2の特定部と前記第1の操作命令に対する識別情報を、前記第1の特定部又は前記第2の特定部によって特定された画面要素の識別情報に修正する第1の修正部と、前記テストスクリプトの前記実行順に含まれるアサーションの実行時において、前記第2の画面が前記アサーションによって期待される状態でない場合に、前記第2の特定部によって特定されなかった前記第2の画面要素の中からいずれかの画面要素を前記第2の特定部によって算出された類似度に基づいて選択し、前記アサーションより前において前記第1の修正部によって修正されたいずれかの識別情報を、選択した画面要素の識別情報によって修正する第2の修正部を有し、前記第2の修正部によって修正が行われた場合に、前記アサーションより前の操作命令を実行しなおす

画面の操作を伴うテストに利用されるテストスクリプトの修正の精度を向上させることができる。
本発明の実施の形態におけるシステム構成例を説明するための図である。 本発明の実施の形態におけるテスト実行装置10のハードウェア構成例を示す図である。 本発明の実施の形態におけるテスト実行装置10の機能構成例を示す図である。 テスト実行装置10が実行する処理手順の一例を説明するためのフローチャートである。 旧画面の画面要素情報の取得処理の処理手順の一例を説明するためのフローチャートである。 テストスクリプトの一例を説明するための図である。 画面要素情報記憶部122の構成例を示す図である。 新アプリケーションのテスト処理の処理手順の一例を説明するためのフローチャートである。 対応要素候補の探索処理の処理手順の一例を説明するためのフローチャートである。 画像データに基づく探索処理の処理手順の一例を説明するためのフローチャートである。 指標値に基づく探索処理の処理手順の一例を説明するためのフローチャートである。 未確定のロケータの修正処理の処理手順の一例を説明するためのフローチャートである。 重みの計算処理の処理手順の一例を説明するためのフローチャートである。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるシステム構成例を説明するための図である。図1において、サーバ装置20及びテスト実行装置10は、例えば、LAN(Local Area Network)又はインターネット等のネットワークを介して接続される。
サーバ装置20は、画面を生成するアプリケーションを有するコンピュータである。サーバ装置20には、当該アプリケーションの旧リビジョン及新リビジョンが実装されている。例えば、Webサーバが、サーバ装置20として利用されてもよい。なお、リビジョン間において、画面の構成(すなわち、画面に含まれる画面要素の構成)は、必ずしも一致しない。また、画面に含まれる画面要素が定義されたデータ(例えば、HTML(HyperText Markup Language)又はXML(eXtensible Markup Language)等。以下、「画面定義データ」という)内において、リビジョンを跨いで同じ画面要素(対応する画面要素)に対して付与されているロケータの同一性は保証されていない。同じ画面要素(対応する画面要素)とは、例えば、機能及び用途が同一であり、人から見たら同じであることが認識される画面要素の組をいう。
なお、画面要素とは、画面(Web画面等)を構成するボタン、入力フォーム、リンクといった要素をいう。一つの画面要素は、例えば、1つのHTMLタグ又はXMLタグで定義され、入れ子構造をとりうる。ロケータとは、画面定義データ内において、各画面要素に対して識別子として付与されている情報をいう。
テスト実行装置10は、サーバ装置20のアプリケーションについて、回帰テストを実行するコンピュータである。回帰テストは、旧リビジョンのアプリケーション(以下、「旧アプリケーション」という。)によって生成される画面に対して作成されたテストスクリプトを、新リビジョンのアプリケーション(以下、「新アプリケーション」という。)によって生成される画面に対して適用することで効率的に実行される。テストスクリプトとは、画面に対する操作手順が定義されたデータであり、操作命令ごとに、操作対象の画面要素のロケータ及び操作内容を示す情報等を含むデータである。なお、PC(Personal Computer)、スマートフォン、又はタブレット端末等がテスト実行装置10として利用されてもよい。
図2は、本発明の実施の形態におけるテスト実行装置10のハードウェア構成例を示す図である。図2のテスト実行装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
テスト実行装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってテスト実行装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
図3は、本発明の実施の形態におけるテスト実行装置10の機能構成例を示す図である。図3において、テスト実行装置10は、テストスクリプト取得部11、テスト実行部12、画面表示制御部13、指標値取得部14、画像取得部15、対応要素候補探索部16、テストスクリプト修正部17、テストスクリプト出力部18及び重み計算部19等を有する。これら各部は、テスト実行装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
テスト実行装置10は、また、テストスクリプト記憶部121、画面要素情報記憶部122、画面履歴記憶部123及び重み記憶部124等を利用する。これら各記憶部は、例えば、補助記憶装置102、又はテスト実行装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
テストスクリプト取得部11は、旧アプリケーションに対応するテストスクリプトをテストスクリプト記憶部121から取得する。
画面表示制御部13は、旧アプリケーションの画面(以下、「旧画面」という。)及び新アプリケーションの画面(以下、「新画面」という。)のそれぞれを表示する。例えば、Webブラウザに基づいて画面表示制御部13が実現されてもよい。
テスト実行部12は、テストスクリプト取得部11によって取得されたテストスクリプトを使用して、旧画面及び新画面のそれぞれについてテストを実行する。
指標値取得部14は、旧画面の各画面要素について、画面要素間の類似度を評価するための複数の指標の値(指標値)を取得する。取得された指標値群は、画面要素情報記憶部122に記憶される。
画像取得部15は、旧画面の各画面要素について、当該画面要素の表示範囲の画像データを取得する。取得された画像データは、画面要素情報記憶部122に記憶される。
対応要素候補探索部16は、新アプリケーション(新画面)に対するテストの実行中において、テストスクリプトにおいて操作対象の画面要素を示すために指定されているいずれかのロケータが新画面に関して使用されていない場合に、新画面の画面要素の中から、当該ロケータに対応する画面要素の候補を探索する。
テストスクリプト修正部17は、対応要素候補探索部16による探索結果に基づいて、テストスクリプトを、新アプリケーション(新画面)に対応した状態へ修正する。
テストスクリプト出力部18は、修正されたテストスクリプトを出力する。
重み計算部19は、対応要素候補探索部16が、旧画面の各画面要素と新画面の各画面要素との類似度を算出する際に利用する、各指標に対する重みを画面履歴記憶部123に記憶されている情報に基づいて統計的に計算する。計算結果(各指標の重み)は、重み記憶部124に記憶される。
画面履歴記憶部123には、アプリケーションの各リビジョンの画面の画面要素ごとに、画像データ及び指標値群が記憶されている。
なお、テスト実行装置10が、サーバ装置20の機能を有していてもよい。この場合、サーバ装置20は配置されなくてもよい。
以下、テスト実行装置10が実行する処理手順について説明する。図4は、テスト実行装置10が実行する処理手順の一例を説明するためのフローチャートである。
ステップS101において、画面表示制御部13は、サーバ装置20の旧アプリケーションの画面(旧画面)を表示装置106に表示する。具体的には、画面表示制御部13は、サーバ装置20の旧アプリケーションにアクセスして、画面定義データをダウンロードし、当該画面定義データに基づいて、旧画面を表示する。
続いて、テストスクリプト取得部11は、旧アプリケーションに対応するテストスクリプトを、テストスクリプト記憶部121から取得し、メモリ装置103に記憶する(S102)。以下において、「テストスクリプト」は、メモリ装置103に記憶されたテストスクリプトをいう。
続いて、テスト実行装置10は、旧画面の画面要素情報の取得処理を実行する(S103)。ステップS103では、旧画面の各画面要素について、他の画面要素との類似度を評価するための複数の指標のそれぞれの値(指標値)や、当該画面要素の表示範囲の画像データ等が取得される。取得された指標値群及び画像データは、画面要素情報記憶部122に記憶される。
続いて、テスト実行装置10は、新アプリケーションのテスト処理を実行する(S104)。当該テスト処理では、旧画面に対応するテストスクリプトが新画面に適用されて、新アプリケーションについて回帰テストが実行される。回帰テストの過程において、テストスクリプト内の操作命令の操作対象とされているロケータに対応する画面要素が新画面に存在しない場合、当該ロケータに対応する画面要素の探索が行われる。当該画面要素の探索には、画面要素情報記憶部122に記憶された情報等が利用される。当該画面要素が特定された場合には、テストスクリプト内の当該ロケータが、当該画面要素のロケータによって置換(修正)される。
続いて、テストスクリプト出力部18は、ステップS104において修正されたテストスクリプトを出力する(S105)。例えば、当該テストスクリプトが、新リビジョンに対応するテストスクリプトとして、テストスクリプト記憶部121に記憶される。
続いて、ステップS103の詳細について説明する。図5は、旧画面の画面要素情報の取得処理の処理手順の一例を説明するためのフローチャートである。
ステップS201において、テスト実行部12は、テストスクリプト内に次の命令cが有るか否かを判定する。次の命令cとは、未実行の命令の中で実行順が先頭の命令をいう。
図6は、テストスクリプトの一例を説明するための図である。図6において、画面g1は、表示される画面の一例である。画面定義データh1は、画面g1の一部(画面要素e1)についての画面定義データである。テーブルT1は、画面g1に関するテストスクリプトを表形式で表現したものである。
テーブルT1において、各行が、1つの操作に対応する。すなわち、テストスクリプトは、操作ごとに、命令、ロケータ、及び値等を含む。命令は、操作の種別を示す情報である。図6では、「type」、「click」等が例示されている。「type」は、操作対象の画面要素への値の入力を意味する。「click」は、操作対象の画面要素のクリックを意味する。ロケータは、操作対象の画面要素のロケータである。値は、操作対象の画面要素に適用される値である。このように、テストスクリプトには、操作内容(命令及び値)と操作対象(ロケータ)とが操作ごとに含まれている。また、テストスクリプトは、各操作の順番も定義されている。例えば、テーブルT1では、上の行から先に実行される。
テストスクリプトに次の命令cが有る場合(S201でYes)、テスト実行部12は、旧画面において、命令cに対応する画面要素に対して命令cを実行する(S202)。
続いて、指標値取得部14は、命令cによって操作された画面要素(以下、「対象要素」とい。)を特定する(S203)。対象要素は、例えば、命令cに対応するロケータによって特定されてもよい。続いて、指標値取得部14は、対象要素に関する各指標値を、旧画面の画面定義データから取得する(S204)。ここでは、複数の指標の指標値が取得される。
指標は、例えば、画面要素の属性(id、type、class、name、タグ名等)、画面要素の位置情報(XPath、x座標、y座標、横幅、縦幅)、画面要素に関連するテキスト(リンクテキスト、付近のテキスト、URL等)である。なお、リンクテキストは、画面要素がリンクである場合の指標であり、当該リンクが付与された文字列を示す。付近のテキストとは、画面要素の表示範囲の周囲(例えば、上、下、左、右等の所定の画素数の範囲内)に表示されるテキストである。画面要素の表示範囲とは、例えば、当該画面要素の最小外接矩形でもよい。なお、20種類程度の指標のそれぞれについて、指標値が取得されてもよい。
続いて、指標値取得部14は、取得された指標値群を、対象要素に関連付けて画面要素情報記憶部122に記憶する(S205)。
続いて、画像取得部15は、旧画面のスクリーンショット(画像データ)を取得する(S206)。続いて、画像取得部15は、当該スクリーンショットから、対象要素の表示範囲の画像データを取得する(切り出す)(S207)。なお、対象要素の表示範囲は、例えば、旧画面の画面定義データに含まれている、対象要素の位置情報等に基づいて特定可能である。続いて、画像取得部15は、取得した画像データを、対象要素に関連付けて画面要素情報記憶部122に記憶する(S208)。
ステップS202以降が、テストスクリプトの全ての命令について実行されると(S201でNo)、図5の処理手順は終了する。その結果、画面要素情報記憶部122には、旧画面の画面要素のうち、テストスクリプトによって操作された各画面要素の指標値群及び画像データが記憶される。
図7は、画面要素情報記憶部122の構成例を示す図である。図7に示されるように、画面要素情報記憶部122には、テストスクリプトにおいて実行された命令の順番で、操作対象とされた画面要素ごとに、指標値群及び画像データが記憶される。
続いて、図4のステップS104の詳細について説明する。図8は、新アプリケーションのテスト処理の処理手順の一例を説明するためのフローチャートである。
ステップS301において、画面表示制御部13は、サーバ装置20の新アプリケーションの画面(新画面)を表示装置106に表示する。具体的には、画面表示制御部13は、サーバ装置20の新アプリケーションにアクセスして、画面定義データをダウンロードし、当該画面定義データに基づいて、新画面を表示する。
続いて、テストスクリプトの最初の命令から順に、ステップS302以降が実行される。当該テストスクリプトは、ステップS102においてメモリ装置103に記憶されたテストスクリプトである。すなわち、当該テストスクリプトは、旧アプリケーションに対応するテストスクリプトである。
ステップS302において、テスト実行部12は、テストスクリプト内に次の命令cが有るか否かを判定する。テストスクリプトに次の命令cが有る場合(S302でYes)、テスト実行部12は、新画面において、命令cに対応する画面要素に対して命令cを実行する(S303)。
続いて、テスト実行部12は、命令cがアサーションであるか否かを判定する(S304)。アサーションとは、アプリケーションの状態(画面の状態)が、期待通りであることを検証するための命令である。例えば、一まとまりの命令群ごとにアサーションがテストスクリプトに含まれている。例えば、図6のテーブルT1において、最後の行の命令は、アサーションである。命令がアサーションである場合、値は、期待値を意味する。但し、テストスクリプトはアサーションを含まなくてもよい。
命令cがアサーションでない場合(S304でNo)、テスト実行部12は、命令cのロケータを有する画面要素が新画面に含まれているか否かを判定する(S305)。当該判定は、新画面の画面定義データを参照することで可能である。命令cのロケータを有する画面要素が新画面に含まれている場合(S305でNo)、ステップS302以降が繰り返される。
命令cのロケータを有する画面要素が新画面に含まれていない場合(S305でYes)、対応要素候補探索部16は、当該ロケータ(以下、「元ロケータ」という。)について、対応要素候補探索処理を実行する(S306)。対応要素候補探索処理では、新画面の画面要素の中で、命令cのロケータに対応する画面要素(以下、「対応要素」という。)の候補(以下、「対応要素候補」という。)が探索される。探索において、新画面の画面要素の中で対応要素候補である可能性が認められる画面要素については、旧画面において当該ロケータを有する画面要素(以下、「元要素」という。)との間で類似度が算出される。類似度の詳細については後述される。
なお、命令cのロケータを有する画面要素が新画面に含まれていない場合、ステップS303において、命令cの実行に失敗する。したがって、ステップS305は、命令cの実行に失敗した場合に実行されてもよい。
続いて、テストスクリプト修正部17は、対応要素候補の有無を判定する(S307)。すなわち、対応要素候補探索処理において、1以上の対応要素候補が特定(発見)されたか否かが判定される。対応要素候補が無い場合(SS307でNo)、図5の処理手順は終了する。
一方、1以上の対応要素候補が特定された場合(S308でYes)、テストスクリプト修正部17は、対応要素候補の中で類似度が最大である対応要素候補のロケータによって、テストスクリプト内の命令cのロケータを修正する(S309)。すなわち、テストスクリプト内の命令cのロケータが、当該対応要素候補のロケータによって置換される。続いて、テスト実行部12は、命令cを実行する(S309)。ステップS309に続いてステップS302以降が繰り返される。このように、本実施の形態では、ロケータに対応する画面要素が見つからない命令が実行された場合、その時点でロケータの修正が行われて、テストが継続される。
一方、命令cがアサーションである場合(S304でYes)、テストスクリプト修正部17は、アサーションの実行結果が合格であるか否かを判定する(S310)。すなわち、ステップS303において実行された命令c(アサーション)において、新アプリケーション(新画面)の状態が、期待通りであったか否かが判定される。当該判定は、アサーションの実行結果に基づいて可能である。
アサーションの実行結果が合格である場合(S310でYes)、ステップS302以降が繰り返される。アサーションの実行結果が合格でない場合(S310でNo)、テストスクリプト修正部17は、未確定のロケータの修正処理を実行する(S311)。未確定のロケータとは、合格しなかったアサーションが、N番目のアサーションであるとすると、N−1番目のアサーションからN番目のアサーションの間に含まれている各命令のロケータをいう。但し、N=1の場合、N番目のアサーションより前の全ての命令のロケータが、未確定のロケータとなる。
すなわち、アサーションに合格した場合、当該アサーションより前の命令のロケータは確定される。アサーションに合格したということは、新アプリケーション(新画面)の状態が、期待通りであることである。したがって、それまでに実行された各命令のいずれかのロケータについて、ステップS308において修正されていたとしても、その修正は正しかったことが確定されるからである。一方、アサーションに合格しなかった場合、ステップS308における修正が誤りであった可能性が有る。そこで、この場合、ステップS311が実行される。
ステップS311に続いて、ステップS301以降が改めて実行される。すなわち、アサーションに合格しなかった場合、未確定のロケータの修正処理が実行された上で、再度、新画面がダウンロードされてテストスクリプトが最初から実行される。アサーションに合格しなかった場合、新アプリケーションの内部状態が命令cまで実行された際に本来あるべき状態でない可能性が有り、そのままテストを継続したとしても、正しいテストを行えない可能性が有るからである。
ステップS302において、テストスクリプト内の全ての命令が実行されたと判定されると(S302でNo)、図8の処理手順は終了する。
続いて、図8のステップS306の詳細について説明する。図9は、対応要素候補の探索処理の処理手順の一例を説明するためのフローチャートである。
ステップS401において、対応要素候補探索部16は、元ロケータに対応する画面要素(以下、「画面要素x」という。)の画面要素情報(指標値群及び画像データ)を、画面要素情報記憶部122から取得する。続いて、対応要素候補探索部16は、新画面の画面定義データから、新画面の全画面要素のそれぞれの指標値群及び画像データを取得する(S402)。なお、当該全画面要素の集合を、以下「画面要素集合Y」という。また、新画面の画面要素の指標値群及び画像データ(当該画面要素の表示範囲の画像データ)の取得方法は、旧画面の画面要素についての取得方法と同様でよい。
続いて、対応要素候補探索部16は、画像データに基づく探索処理を実行する(S403)。当該探索処理において対応要素候補であると判定された画面要素y∈Yは、画面要素集合Y'に追加される。なお、画像データに基づく探索処理の開始時において、画面要素集合Y'は空である。
画像データに基づく探索処理の実行後、画面要素集合Y'の要素数が複数である場合(S404でYes)、対応要素候補探索部16は、指標値に基づく探索処理を実行する(S405)。一方、画面要素集合Y'の要素数が1以下である場合(S404でNo)、対応要素候補探索部16は、画面要素集合Y'を、画面要素集合Y"に代入する(S406)。なお、画面要素集合Y"は、対応要素候補の集合である。すなわち、図8のステップS307及びS308では、画面要素集合Y"が参照される。
続いて、図9のステップS403の詳細について説明する。2つの画面要素の画像(外観)が一致する場合、それらは高い確率で同じ役割を持つと考えられる。そこで、本実施の形態では、画面要素の画像データを用いて、対応要素候補の絞り込みを行うことで、精度向上と処理時間の短縮を図る。
図10は、画像データに基づく探索処理の処理手順の一例を説明するためのフローチャートである。
まず、全ての画面要素y∈Yについて、ステップS501〜S503が実行される。ステップS502において、対応要素候補探索部16は、画面要素xの画像データと、画面要素yの画像データとを比較して、両者が一致する場合には、画面要素yを画面要素集合Y'に追加する。なお、画像データの一致は、完全一致(全ての画素が一致する状態)に限定されなくてもよい。例えば、パターンマッチングの要領で、一方の画像データの画像を、他方の画像データの画像に対して所定画素ずつずらしながら、両者の一致又は不一致が判定されてもよい。すなわち、画像処理技術の分野において、2つの画像データが同一物を示すものであると判定可能である場合には、両者が一致すると判定されてもよい。
全ての画面要素y∈YについてステップS501〜S503が実行されると、対応要素候補探索部16は、画面要素集合Y'に1以上の画面要素yが含まれているか否かを判定する(S504)。画面要素集合Y'に1以上の画面要素が含まれている場合(S504でYes)、図10の処理手順は終了する。面要素集合Y'が空である場合(S504でNo)、対応要素候補探索部16は、画面要素集合Yを、画面要素集合Y'に追加する(S505)。
続いて、図9のステップS405の詳細について説明する。例えば、画面要素X(id=login、XPath=//A/B/X)が修正されて、画面要素X'(id=user_login、XPath=//C/D/X)となった場合、非特許文献1及び非特許文献2に示された手法では対応すること(画面要素X'が、画面要素Xの対応要素候補であると判定すること)が困難である。
非特許文献1の手法では、相対的な構造(例:id=fooを持つ画面要素の子でXというタグを持つ画面要素)を表す指標も用いられる。しかし、この修正例の場合、修正前のXの親がA、B、修正後のXの親がC、Dと異なっているため、相対的な位置で指定していたとしても修正前後で当該指標は一致しない。
また、非特許文献2の手法では、XPathのレーベンシュタイン距離を基に判定しており、//A/B/YといったXPathを持つ画面要素Yが他に存在する場合、画面要素XとYの類似性の方が、画面要素Xと画面要素X'との類似性よりも高いと判定されてしまう。
上記の問題は、指標の一致又は不一致のみを評価していたり、1つの指標に依存していたりすることに起因する。
本実施の形態では、図10において説明したように、画面要素の画像データに基づいて対応要素候補を判定したり、図11について以下に説明されるように、複数の指標に対し、一致又は不一致ではなく、実数値として類似度を算出し、それを統合して1つの値としたりすることで精度向上を図る。
図11は、指標値に基づく探索処理の処理手順の一例を説明するためのフローチャートである。図11では、画面要素集合Y'に含まれている全ての画面要素yについて、ステップS601〜S613が実行される。また、全ての指標i∈Iについて、ステップS602〜S609が実行される。なお、Iは、本実施の形態における全ての指標の集合(id、type、class、name、タグ名、XPath、x座標、y座標、横幅、縦幅、リンクテキスト、付近のテキスト、URL等)である。
ステップS603において、対応要素候補探索部16は、指標iの指標値が、選択的なものであるか否かを判定する。例えば、idの値は、任意に設定可能であるが、typeの値は、予め決められた値(input、button等)の中から選択される。タグ名も同様である。ステップS603では、指標iがこのように予め決められた選択肢の中から指標値が選択されるものでるか否かが判定される。
指標iの指標値が選択的である場合(S603でYes)、対応要素候補探索部16は、画面要素xと画面要素yとについて、それぞれの指標iの指標値が一致しているか否かに基づいて、画面要素xと画面要素yとにおける指標iの類似度sを決定する(S604)。すなわち、それぞれの指標iの指標値が一致していれば、当該指標iの類似度sは1とされ、そうでなければ当該指標iの類似度sは0とされる。すなわち、選択的である指標iについての類似度sは、0又は1となる。なお、本実施の形態において、全ての指標に関して、類似度sは0以上1以下の値とされる。但し、他の尺度(例えば、0から100等)によって類似度sが評価されてもよい。
指標iの指標値が選択的でない場合(S603でNo)、対応要素候補探索部16は、指標iの指標値が任意の文字列であるか否かを判定する(S605)。例えば、id、class、name、XPath等は任意の文字列である。指標iの指標値が任意の文字列である場合(S605でYes)、対応要素候補探索部16は、画面要素xと画面要素yとについて、それぞれの指標iの指標値のレーベンシュタイン距離に基づいて、画面要素xと画面要素yとにおける指標iの類似度sを計算する(S606)。具体的には、
類似度s=1−レーベンシュタイン距離/長い方の文字列の長さ
に基づいて、画面要素xと画面要素yとにおける指標iの類似度sが算出される。なお、長い方の文字列の長さとは、画面要素xの指標iの指標値(文字列)と、画面要素yの指標iの指標値(文字列)とのうち長い方の文字列の文字数をいう。
指標iの指標値が任意の文字列でない場合(S605でNo)、対応要素候補探索部16は、指標iの指標値が数値であるか否かを判定する(S607)。例えば、x座標、y座標、横幅、縦幅等は、数値である。指標iの指標値が数値である場合(S607でYes)、対応要素候補探索部16は、画面要素xと画面要素yとについて、それぞれの指標iの指標値のユークリッド距離に基づいて、画面要素xと画面要素yとにおける指標iの類似度sを計算する(S608)。具体的には、
類似度s=1−|2つの指標値の差/最大値|
に基づいて、画面要素xと画面要素yとにおける指標iの類似度sが算出される。なお、2つの指標値の差とは、画面要素xの指標iの指標値と、画面要素yの指標iの指標値との差をいう。また、最大値とは、当該指標iに関して取りうる最大値をいう。例えば、指標iがx座標であれば、最大値は、画面の横幅である。
なお、各指標iの指標値が、選択的、任意の文字列及び数値のいずれに該当するのかは、対応要素候補探索部16のアルゴリズムにおいて既知である。
全ての指標i∈Iについて、ステップS602〜S609が実行されると、対応要素候補探索部16は、各指標iに対する重みWを、重み記憶部124から取得する(S610)。なお、重みWは、例えば、後述されるように、重み計算部19によって予め計算される。但し、各重みWは、ユーザの任意によって設定されてもよい。
続いて、対応要素候補探索部16は、画面要素xと画面要素yとの類似度Stotalを以下の式に基づいて算出する(S611)。
total=Σ(s×W)/ΣW
すなわち、指標iの指標値について重みをWとする加重平均を計算することで、類似度Stotalが算出される。
続いて、対応要素候補探索部16は、類似度Stotalが、予め設定された閾値αより大きければ、画面要素yを画面要素集合Y"に追加する(S612)。
ステップS601〜S613が、全ての画面要素y∈Y'について実行されると、図11の処理手順は終了する。
続いて、図8のステップS311の詳細について説明する。図12は、未確定のロケータの修正処理の処理手順の一例を説明するためのフローチャートである。
ステップS701において、テストスクリプト修正部17は、未確定のロケータに対応する命令群の中から、ステップS308において修正されたロケータを含む命令群Cを抽出する。未確定のロケータに対応する命令群とは、最後に実行されたアサーションがN番目のアサーションであれば、N−1番目のアサーションからN番目のアサーションの間に含まれている命令のロケータをいう。但し、N=1の場合、N番目のアサーションより前の全ての命令のロケータが、未確定のロケータとなる。
続いて、テストスクリプト修正部17は、命令群Cから、実行順が最後の命令clastを取得する(S702)。続いて、テストスクリプト修正部17は、命令clastについて未試行の対応要素候補の有無を判定する(S703)。命令clastについて未試行の対応要素候補とは、命令clastの修正前のロケータを元ロケータとして、ステップS306において探索された対応要素候補のうち、ステップS308においてロケータの修正に利用されなかった対応要素候補をいう。
該当する対応要素候補が無い場合(S703でNo)、テストスクリプト修正部17は、命令群Cから、命令clastを削除して(S704)、ステップS702以降を繰り返す。なお、ステップS704では、テストスクリプトから命令clastが削除される。命令clastは、新アプリケーションに対して適切な命令でない可能性が高いからである。
一方、該当する対応要素候補が1以上有る場合(S703でYes)、テストスクリプト修正部17は、該当する対応要素候補のうち、元要素との類似度Stotalが最大の対応要素候補のロケータによって、命令clastのロケータを置換する(S705)。
このように、本実施の形態では、新画面において使用されていないロケータを対象とする命令が実行された場合、当該ロケータに対する対応要素候補のうち、類似度Stotalが高いものから順に試行され、テストに成功した(アサーションに合格した)対応要素候補が、正しい対応要素として特定される。
続いて、重み計算部19が実行する処理手順について説明する。当該処理手順は、上記した各処理手順とは非同期に実行されてよい。例えば、テスト対象のアプリケーションについて、新たなリビジョンが発生するたびに当該処理手順が実行されてもよい。
例えば、各指標の重みをユーザの任意によって設定する場合、以下のような問題点が考えられる。
(a)アプリケーションによって重要な指標が異なる。
(b)どの指標が重要か簡単には判別できない。
(c)開発が進むにつれて、重要な指標が変化する。
そこで、本実施の形態では、統計的手法を用いて、アプリケーション毎に適切な重み付けが行われる。
本実施の形態において、画面要素の対応関係の判定(マッチング)は、各指標の一致の度合い(類似度s)に基づいて行われる。したがって、重み付けの方法として、以下の2通りの考え方が採用される。
(1)アプリケーションの修正によって変化しやすい指標の重みを減らし、変化しにくい指標の重みを増やす。例えば、idは変わりにくいのでマッチングにおいて重視するが、XPathは変わりやすいので重視しない。
(2)異なる画面要素間で同じ値を持つ確率が高い指標の重みを減らし、同じ値を持つ確率が低い指標の重みを増やす。例えば、idは画面要素間で同じ値を持たないので重みを増やすが、classは複数の画面要素で値が重複する可能性が有るので重みを減らす。
指標の重みを決定するために、同じ画面要素間における指標の変わりやすさと、異なる画面要素間における指標の一致しやすさを評価する必要がある。以下、同じ画面要素間における指標の変わりやすさを評価する指標を「変化率」という。また、異なる画面要素間における指標の一致しやすさを評価する指標を「一致率」という。なお、同じ画面要素間とは、リビジョン間で対応する画面要素(ユーザから見て同一の画面要素)の組をいう。異なる画面要素間とは、リビジョン間で対応しない画面要素(ユーザから見て異なる画面要素)の組をいう。
上記の考えに基づいて、重み計算部19は、図13に示される処理手順によって各指標の重みを算出する。図13は、重みの計算処理の処理手順の一例を説明するためのフローチャートである。
ステップS801〜S813は、リビジョンv〜リビジョンv+1までリビジョンごとに実行される。
また、ステップS802〜S812は、リビジョンkの画面要素集合Aに含まれる各画面要素a∈Aごとに実行される。なお、リビジョンkの初期値は、vである。
更に、ステップS803〜S810は、リビジョンk+1の画面要素集合A'に含まれる画面要素a'ごとに実行される。
ステップS804において、重み計算部19は、画面要素aの画像データと画面要素a'の画像データとが一致するか否かを判定する。画像データの一致又は不一致の判定方法は、図10のステップS502における方法と同様でよい。なお、各リビジョンの各画面の各画面要素の画像データは、画面履歴記憶部123に記憶されている。
比較された画像データが一致する場合(S804でYes)、重み計算部19は、指標ごとに、画面要素aの指標値と画面要素a'の指標値とを比較する(S805)。なお、各リビジョンの各画面の各画面要素の各指標の指標値は、画面履歴記憶部123に記憶されている。
全ての指標について指標値が一致する場合(S805でNo)、リビジョンk+1の次の画面要素a'についてステップS804以降が実行される。一方、いずれか1以上の指標iについて指標値が異なる場合(S805でYes)、重み計算部19は、指標値が異なる各指標iに対応するカウンタc(i)に1を加算する(S806)。なお、カウンタcは、指標ごとカウンタの配列であり、同じ画面要素間で指標値が異なる回数を指標ごとにカウントするために利用される。図13の処理手順の開始時において、カウンタcの各要素の値は0である。
続いて、重み計算部19は、カウンタdに1を加算する(S807)。カウンタdは、同じ画面要素間で、いずれかの指標の指標値が異なる回数をカウントするために利用されるカウンタである。図13の処理手順の開始時において、カウンタdの値は0である。
一方、ステップS804において比較された画像データが一致しない場合(S804でNo)、重み計算部19は、画面要素aと画面要素a'との間で、指標値が一致する指標が1以上有るか否かを判定する(S808)。該当する指標iが無い場合(S808でNo)、リビジョンk+1の次の画面要素a'についてステップS804以降が実行される。該当する指標iが有る場合(S808でYes)、重み計算部19は、指標値が一致する指標iに対応するカウンタe(i)に1を加算する。なお、カウンタeは、指標ごとカウンタの配列であり、異なる画面要素間で指標値が一致する回数を指標値ごとにカウントするために利用される。図13の処理手順の開始時において、カウンタeの各要素の値は0である。
リビジョンk+1の全ての画面要素a'∈A'について、ステップS803〜S810が実行されると、重み計算部19は、カウンタfに1を加算する(S811)。カウンタfは、全リビジョンの画面要素の総数(画面要素の延べ数)をカウントするために利用されるカウンタである。例えば、リビジョンvについて、ステップS802〜S812までの実行が完了した時点において、カウンタfには、リビジョンvの画面要素の総数が記憶される。なお、図13の処理手順の開始時において、カウンタfの値は0である。
ステップS801〜S813が、リビジョンv〜リビジョンv+nまで実行されると、重み計算部19は、各指標の変化率を計算する(S814)。指標iの変化率(i)は、以下の式に基づいて算出される。
変化率(i)=c(i)/d
すなわち、変化率(i)は、同じ画面要素間の各指標の比較において指標iが変化した回数(異なる回数)を、同じ画面要素間の各指標の比較においていずれかの指標が変化した回数(異なる回数)によって除することで算出される。
続いて、重み計算部19は、各指標の一致率を計算する(S815)。指標iの一致率(i)は、以下の式に基づいて算出される。
一致率(i)=e(i)/f
すなわち、一致率(i)は、異なる画面要素間の各指標の比較において指標iが一致した回数を、画面要素の延べ数(総数)で除することで算出される。
続いて、重み計算部19は、各指標の重みを計算する(S816)。指標iの重みWは、以下の式に基づいて算出される。
=変化率(i)×(1−一致率(i))×定数β
図13の処理手順によれば、アプリケーション毎に異なる重み付けを自動で行うことができ、重み付けに最新の10リビジョンを用いる等の工夫を行うことで、開発が進むにつれて重要な指標が変化する場合にも対応することが可能である。
上述したように、本実施の形態によれば、各画面要素の画像データに基づいて、画面要素間の対応関係が判定される。ここで、画像データ(外観)が一致する画面要素は、そのロケータや各指標に相違点が有ったとしても、用途及び機能が一致する画面要素である可能性が高い。したがって、画面要素間の対応関係の判定の精度を向上させることができる。その結果、テストスクリプト中のロケータの自動修正をより高精度で効率よく行うことができるようになる。すなわち、画面の操作を伴うテストに利用されるテストスクリプトの修正の精度を向上させることができる。
従来、画面操作を伴うテストの自動化は、メンテナンスが大変であるため費用対効果の面で避けられることが多かったが、本実施の形態によれば、画面操作を伴うテストの自動化への障壁を取り去り、ソフトウェア開発を一層効率化することができる。
また、本実施の形態では、画面要素の対応関係の判定精度を更に高めるため、複数の指標のそれぞれについて類似度が算出され、当該類似度に基づいて、画面要素間の類似度が算出される。すなわち、本実施の形態では、画面要素間について、単に、一致しているか否かではなく、一致している可能性(類似度)が判定される。そうすることで、旧リビジョンの或る画面要素について、新リビジョンの画面要素の中から対応する候補を複数得ることができる。その結果、対応する画面要素を正しく探し出せる可能性を高めることができる。
また、新画面中の全ての画面要素について類似度を計算するのは時間がかかるところ、本実施の形態では、画像データの比較に基づいて類似度の計算対象が絞り込まれる(フィルタリングされる)ため、処理時間の短縮化を期待することができる。
また、本実施の形態では、複数のロケータについて不整合が存在した場合でも、ロケータを修正しつつテストを継続することができるため、実行速度の向上を図ることができる。
すなわち、仮に、ロケータを1つ修正するたびにテストを最初から実行する場合、1つのテストスクリプトに対し、ロケータの誤りの数+1回のテストを実行する必要がある。画面操作を伴うテストは、ブラウザの立ち上げや画面のロード等が必要となるため、単体テストに比べてオーバーヘッドが大きく、ロケータを修正するたびにテストを最初から実行する場合、これらのオーバーヘッドにより、テスト工数が増加する。
このようなテスト工数の増加を回避するため、動的プログラム書き換え等により、ロケータの誤りを無視し、様々な入力を試しながら無理やりテスト実行を続け、ロケータの修正を行うといった方法も考えられる。
しかし、この場合、画面に対して何らかの操作を行った時点でプログラムの内部状態が本来あるべきでない状態になる恐れがあり、全てのロケータの修正が一度にできたとしてもテスト実行の妥当性を保つことができない可能性が有る。不整合の有る全てのロケータを無理やり修正した後、再度通してテストを実行することも考えられるが、動的要素の多いアプリケーションの場合、正しく修正を行える可能性が低く、試行回数が増える恐れがある。
そこで、本実施の形態では、単純にロケータを修正しながら実行するのみではなく、プログラム内部状態の整合性を保持しながら、必要に応じて(アサーションに合格しなかった場合)プログラムの再実行が行われる。
なお、本実施の形態において、テスト実行装置10は、テストスクリプト修正装置の一例である。対応要素候補探索部16は、第1の特定部及び第2の特定部の一例である。テストスクリプト修正部17は、第1の修正部及び第2の修正部の一例である。重み計算部19は、計算部の一例である。画面要素情報記憶部は、記憶部の一例である。ロケータは、識別情報の一例である。旧画面は、第1の画面の一例である。新画面は、第2の画面の一例である。カウンタcの値は、第1の回数の一例である。カウンタdの値は、第2の回数の一例である。カウンタeの値は、第3の回数の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
10 テスト実行装置
11 テストスクリプト取得部
12 テスト実行部
13 画面表示制御部
14 指標値取得部
15 画像取得部
16 対応要素候補探索部
17 テストスクリプト修正部
18 テストスクリプト出力部
19 重み計算部
20 サーバ装置
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
121 テストスクリプト記憶部
122 画面要素情報記憶部
123 画面履歴記憶部
124 重み記憶部
B バス

Claims (6)

  1. 第1の画面の画面要素に対する操作命令の実行順が定義されたテストスクリプトであって、前記操作命令ごとに、操作対象の画面要素の識別情報を含むテストスクリプトを取得するテストスクリプト取得部と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素の範囲の画像データを前記第1の画面から取得し、取得した画像データを記憶部に記憶する画像取得部と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第1の画面に関して取得して、取得した各値を前記記憶部に記憶する指標値取得部と
    前記テストスクリプトに含まれる操作命令のうち、第2の画面に関して使用されていない識別情報が操作対象の第1の画面要素として示されている第1の操作命令について、前記記憶部に記憶されている各画像データと、前記第2の画面から取得される各画面要素の画像データとの比較に基づいて、前記第2の画面における操作対象の第2の画面要素を特定する第1の特定部と、
    前記第1の特定部によって複数の前記第2の画面要素が特定された場合に、前記記憶部に記憶された各値と、前記第2の画面要素のそれぞれの各指標の値とに基づいて、前記第1の画面要素と、前記第2の画面要素との類似度を算出し、算出された類似度に基づいて、前記第2の画面における操作対象の第3の画面要素を特定する第2の特定部と
    前記第1の操作命令に対する識別情報を、前記第1の特定部又は前記第2の特定部によって特定された画面要素の識別情報に修正する第1の修正部と、
    前記テストスクリプトの前記実行順に含まれるアサーションの実行時において、前記第2の画面が前記アサーションによって期待される状態でない場合に、前記第2の特定部によって特定されなかった前記第2の画面要素の中からいずれかの画面要素を前記第2の特定部によって算出された類似度に基づいて選択し、前記アサーションより前において前記第1の修正部によって修正されたいずれかの識別情報を、選択した画面要素の識別情報によって修正する第2の修正部を有し、
    前記第2の修正部によって修正が行われた場合に、前記アサーションより前の操作命令を実行しなおす、
    ことを特徴とするテストスクリプト修正装置。
  2. 第1の画面の画面要素に対する操作命令の実行順が定義されたテストスクリプトであって、前記操作命令ごとに、操作対象の画面要素の識別情報を含むテストスクリプトを取得するテストスクリプト取得部と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素の範囲の画像データを前記第1の画面から取得し、取得した画像データを記憶部に記憶する画像取得部と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第1の画面に関して取得して、取得した各値を前記記憶部に記憶する指標値取得部と
    前記テストスクリプトに含まれる操作命令のうち、第2の画面に関して使用されていない識別情報が操作対象の第1の画面要素として示されている第1の操作命令について、前記記憶部に記憶されている各画像データと、前記第2の画面から取得される各画面要素の画像データとの比較に基づいて、前記第2の画面における操作対象の第2の画面要素を特定する第1の特定部と、
    前記第1の特定部によって複数の前記第2の画面要素が特定された場合に、前記記憶部に記憶された各値と、前記第2の画面要素のそれぞれの各指標の値とに基づいて、前記第1の画面要素と、前記第2の画面要素との類似度を算出し、算出された類似度に基づいて、前記第2の画面における操作対象の第3の画面要素を特定する第2の特定部と、
    前記第1の特定部によって1つの前記第2の画面要素が特定された場合は、前記第1の操作命令に対する識別情報を、当該第2の画面要素の識別情報に修正し、前記第1の特定部によって複数の前記第2の画面要素が特定された場合は、前記第1の操作命令に対する識別情報を、前記第2の特定部によって特定された前記第3の画面要素の識別情報に修正する第1の修正部と、
    を有することを特徴とするテストスクリプト修正装置。
  3. 前記第2の特定部は、前記指標ごとに、前記第1の画面に関する値と前記第2の画面に関する値との類似度を算出し、前記指標ごとの類似度について、前記指標ごとの重みに基づく加重平均を計算することで、前記第1の画面の各画面要素と前記第2の画面の各画面要素との類似度を算出する、
    ことを特徴とする請求項1又は2記載のテストスクリプト修正装置。
  4. 複数の画面に関して、画像データが一致する画面要素間において値が異なる第1の回数を前記指標ごとにカウントし、当該画面要素間において、いずれかの前記指標の値が一致した第2の回数をカウントし、画像データが一致しない画面要素間において値が一致する第3の回数を前記指標ごとにカウントし、前記第1の回数を前記第2の回数で除した値と、前記第3の回数を、前記複数の画面における画面要素の総数で除した値とに基づいて、前記指標ごとの重みを計算する計算部、
    を有することを特徴とする請求項3記載のテストスクリプト修正装置。
  5. 第1の画面の画面要素に対する操作命令の実行順が定義されたテストスクリプトであって、前記操作命令ごとに、操作対象の画面要素の識別情報を含むテストスクリプトを取得するテストスクリプト取得手順と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素の範囲の画像データを前記第1の画面から取得し、取得した画像データを記憶部に記憶する画像取得手順と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第1の画面に関して取得して、取得した各値を前記記憶部に記憶する指標値取得手順と
    前記テストスクリプトに含まれる操作命令のうち、第2の画面に関して使用されていない識別情報が操作対象の第1の画面要素として示されている第1の操作命令について、前記記憶部に記憶されている各画像データと、前記第2の画面から取得される各画面要素の画像データとの比較に基づいて、前記第2の画面における操作対象の第2の画面要素を特定する第1の特定手順と、
    前記第1の特定手順において複数の前記第2の画面要素が特定された場合に、前記記憶部に記憶された各値と、前記第2の画面要素のそれぞれの各指標の値とに基づいて、前記第1の画面要素と、前記第2の画面要素との類似度を算出し、算出された類似度に基づいて、前記第2の画面における操作対象の第3の画面要素を特定する第2の特定手順と
    前記第1の操作命令に対する識別情報を、前記第1の特定手順又は前記第2の特定手順によって特定された画面要素の識別情報に修正する第1の修正手順と、
    前記テストスクリプトの前記実行順に含まれるアサーションの実行時において、前記第2の画面が前記アサーションによって期待される状態でない場合に、前記第2の特定手順において特定されなかった前記第2の画面要素の中からいずれかの画面要素を前記第2の特定手順において算出された類似度に基づいて選択し、前記アサーションより前において前記第1の修正手順において修正されたいずれかの識別情報を、選択した画面要素の識別情報によって修正する第2の修正手順と、
    前記第2の修正手順において修正が行われた場合に、前記アサーションより前の操作命令を実行しなおす再実行手順と、
    をコンピュータに実行させることを特徴とするテストスクリプト修正プログラム。
  6. 第1の画面の画面要素に対する操作命令の実行順が定義されたテストスクリプトであって、前記操作命令ごとに、操作対象の画面要素の識別情報を含むテストスクリプトを取得するテストスクリプト取得手順と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素の範囲の画像データを前記第1の画面から取得し、取得した画像データを記憶部に記憶する画像取得手順と、
    前記テストスクリプトに含まれる操作命令ごとに、操作対象の画面要素について、画面要素間の類似度の算出に利用される複数の指標の値を前記第1の画面に関して取得して、取得した各値を前記記憶部に記憶する指標値取得手順と
    前記テストスクリプトに含まれる操作命令のうち、第2の画面に関して使用されていない識別情報が操作対象の第1の画面要素として示されている第1の操作命令について、前記記憶部に記憶されている各画像データと、前記第2の画面から取得される各画面要素の画像データとの比較に基づいて、前記第2の画面における操作対象の第2の画面要素を特定する第1の特定手順と、
    前記第1の特定手順において複数の前記第2の画面要素が特定された場合に、前記記憶部に記憶された各値と、前記第2の画面要素のそれぞれの各指標の値とに基づいて、前記第1の画面要素と、前記第2の画面要素との類似度を算出し、算出された類似度に基づいて、前記第2の画面における操作対象の第3の画面要素を特定する第2の特定手順と、
    前記第1の特定手順において1つの前記第2の画面要素が特定された場合は、前記第1の操作命令に対する識別情報を、当該第2の画面要素の識別情報に修正し、前記第1の特定手順において複数の前記第2の画面要素が特定された場合は、前記第1の操作命令に対する識別情報を、前記第2の特定手順において特定された前記第3の画面要素の識別情報に修正する第1の修正手順と、
    をコンピュータに実行させることを特徴とするテストスクリプト修正プログラム。
JP2016235069A 2016-12-02 2016-12-02 テストスクリプト修正装置及びテストスクリプト修正プログラム Active JP6645955B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016235069A JP6645955B2 (ja) 2016-12-02 2016-12-02 テストスクリプト修正装置及びテストスクリプト修正プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016235069A JP6645955B2 (ja) 2016-12-02 2016-12-02 テストスクリプト修正装置及びテストスクリプト修正プログラム

Publications (2)

Publication Number Publication Date
JP2018092361A JP2018092361A (ja) 2018-06-14
JP6645955B2 true JP6645955B2 (ja) 2020-02-14

Family

ID=62566220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016235069A Active JP6645955B2 (ja) 2016-12-02 2016-12-02 テストスクリプト修正装置及びテストスクリプト修正プログラム

Country Status (1)

Country Link
JP (1) JP6645955B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766268B (zh) * 2018-12-17 2019-10-25 南瑞集团有限公司 一种顺序汇编指令程序验证方法与系统
JP7127601B2 (ja) * 2019-04-10 2022-08-30 日本電信電話株式会社 類似遷移特定装置、類似遷移特定方法及びプログラム
CN112667517A (zh) * 2021-01-07 2021-04-16 卫宁健康科技集团股份有限公司 自动化测试脚本的获取方法、装置、设备及存储介质
CN113127349B (zh) * 2021-04-19 2021-11-30 广州掌动智能科技有限公司 软件测试方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7165240B2 (en) * 2002-06-20 2007-01-16 International Business Machines Corporation Topological best match naming convention apparatus and method for use in testing graphical user interfaces
JP2007102654A (ja) * 2005-10-07 2007-04-19 Hitachi Software Eng Co Ltd テストスクリプト処理プログラム
JP5622647B2 (ja) * 2011-04-11 2014-11-12 株式会社東芝 シナリオ生成装置およびシナリオ生成プログラム

Also Published As

Publication number Publication date
JP2018092361A (ja) 2018-06-14

Similar Documents

Publication Publication Date Title
US10949225B2 (en) Automatic detection of user interface elements
JP6645955B2 (ja) テストスクリプト修正装置及びテストスクリプト修正プログラム
JP6891779B2 (ja) テストスクリプト修正装置及びプログラム
US10936807B1 (en) Systems and methods for displaying effects of code changes
US10467004B2 (en) Commit history linearization
US11775414B2 (en) Automated bug fixing using deep learning
US9952832B2 (en) Methods for generating smart archtecture templates and devices thereof
JP2017534944A (ja) 条件付き検証規則
KR102160780B1 (ko) 버그 정정 시스템 및 버그 정정 방법
JP6689734B2 (ja) テストスクリプト修正装置及びテストスクリプト修正プログラム
US20140113257A1 (en) Automated evaluation of programming code
US20220414066A1 (en) Data management system, management method, and storage medium
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
CN111092769A (zh) 一种基于机器学习的web指纹识别方法
US20180210819A1 (en) System and method of controlling a web browser plug-in for testing analytics
US11645192B2 (en) Graph-based method for inductive bug localization
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP6310865B2 (ja) ソースコード評価システム及び方法
US20160063744A1 (en) Data Quality Test and Report Creation System
CN114968241A (zh) 交互页面的渲染方法、装置、计算机设备及存储介质
US20190286453A1 (en) System construction assisting apparatus, method, and program
JP6840656B2 (ja) テストスクリプト修正装置及びプログラム
CN109597638B (zh) 基于实时计算引擎解决数据处理、设备联动的方法及装置
TWI735511B (zh) 代碼提交方法和設備
CN111989662A (zh) 自主混合分析建模平台

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200109

R150 Certificate of patent or registration of utility model

Ref document number: 6645955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150