JPWO2015198473A1 - 試験プログラム、試験装置及び試験方法 - Google Patents
試験プログラム、試験装置及び試験方法 Download PDFInfo
- Publication number
- JPWO2015198473A1 JPWO2015198473A1 JP2015531373A JP2015531373A JPWO2015198473A1 JP WO2015198473 A1 JPWO2015198473 A1 JP WO2015198473A1 JP 2015531373 A JP2015531373 A JP 2015531373A JP 2015531373 A JP2015531373 A JP 2015531373A JP WO2015198473 A1 JPWO2015198473 A1 JP WO2015198473A1
- Authority
- JP
- Japan
- Prior art keywords
- scenario
- test
- source code
- xpath
- correction data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
システムの機能変更前の処理が記述された第1のソースコードに所定の表記を付加した第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと所定の表記とを含んだ第1のシナリオ修正用データを作成し、システムの機能変更後の処理が記述された第2のソースコードに所定の表記を付加した第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと所定の表記とを含んだ第2のシナリオ修正用データを作成し、第1のシナリオ修正用データと第2のシナリオ修正用データとに含まれる所定の表記が一致する位置に応じて第1のXPathと第2のXPathとの対応情報を抽出し、抽出した対応情報に基づき、第1のウェブ画面の操作手順を示す第1のテストシナリオから第2のウェブ画面の操作手順を示す第2のテストシナリオを作成する、処理をコンピュータに実行させるための試験プログラムが提供される。
Description
本発明は、試験プログラム、試験装置及び試験方法に関する。
ウェブシステムは、監視対象のシステムの稼働状況等の情報をウェブ画面に表示して提供するサービスを行っている。サーバ/ストレージシステムのある機能が変更すると、これに伴いウェブ画面のレイアウトが変更される場合がある。一例としては、サーバ/ストレージシステムに新機能が追加された場合、サーバ/ストレージシステムに追加された機能に関する情報を表示するためにウェブ画面のレイアウトが変わる場合がある。同様に、サーバ/ストレージシステムからある機能が削除された場合、サーバ/ストレージシステムから削除した機能に関する情報を削除するために画面のレイアウトが変わることがある。
サーバ/ストレージシステムでは、このような機能の変更以外の機能についての処理に変更はない。よって、ウェブシステムは、追加又は削除した機能以外の機能に関しては、機能変更の前後においてウェブ画面上で同じ動作が行われ、結果が表示されることを保証しなければならない。そのためのテスト方法としてリグレッションテストが知られている。
リグレッションテストはウェブテストシステムにより実行される。ウェブテストシステムはテストシナリオを実行して、変更した機能以外の機能に関し機能変更の前後でウェブ画面の結果が同じことを確認する。テストシナリオは、ウェブ画面のテスト用の操作手順を示す。テストシナリオには、ウェブ画面を記述するHTML(Hyper Text Markup Language)上の要素が指定される。ウェブ画面とそれに対するテストシナリオの一例を図34及び図35に示す。HTML上の各要素の位置指定にはウェブ画面上の位置を指定するXPathが用いられる。
しかしながら、XPathは、ウェブ画面のレイアウトが変化するとそれに応じて変化する。よって、ウェブ画面のレイアウトが変わると機能変更前のXPathを、同じ要素の位置を指定する機能変更後のXPathとして使用することができない場合がある。
つまり、テストシナリオにはXPathが記述されている。このため、サーバ/ストレージシステムの機能変更に応じてウェブ画面のレイアウトが変わると、機能変更前のXPathを含むテストシナリオを機能変更後のリグレッションテストのテストシナリオとしてそのまま使用することができなくなる。
そこで、図1のフローチャート及び図2(a)に示すように、機能変更前後のサーバ/ストレージシステムの機能仕様書1,2から差分を抽出し、差分に基づき機能変更前の第1のテストシナリオを手動で修正して、機能変更後の第2のテストシナリオを作成することが行われている。しかし、この方法は、手動によるテストシナリオの修正であるため、修正に手間がかかる。加えて、その複雑さは、ウェブ画面の中の表示項目数、画面の数の多さに比例し、今後ますます多機能化するシステムのテストシナリオの修正にはさらに大きな手間がかかることが予想される。
さらに、連続性のあるテストシナリオに対しては、テストシナリオの修正漏れのためにテストが実行できない場合、修正漏れによるエラー箇所以降のテストが正しく実行されない可能性が高いため、エラーの修正とテストの実行とを手動で繰り返し行わなければならず、追加工数が発生する。
そこで、一側面では、本発明は、ウェブ画面をテストするための機能変更前のテストシナリオに基づき、機能変更後のテストシナリオを自動作成することを目的とする。
一つの案では、システムの機能変更前の処理が記述された第1のソースコードに所定の表記を付加した第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと前記所定の表記とを含んだ第1のシナリオ修正用データを作成し、システムの機能変更後の処理が記述された第2のソースコードに所定の表記を付加した第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと前記所定の表記とを含んだ第2のシナリオ修正用データを作成し、前記第1のシナリオ修正用データと前記第2のシナリオ修正用データとに含まれる前記所定の表記が一致する位置に応じて前記第1のXPathと前記第2のXPathとの対応情報を抽出し、前記抽出した対応情報に基づき、前記第1のウェブ画面の操作手順を示す第1のテストシナリオから前記第2のウェブ画面の操作手順を示す第2のテストシナリオを作成する、処理をコンピュータに実行させるための試験プログラムが提供される。
一態様によれば、ウェブ画面をテストするための機能変更前のテストシナリオに基づき、機能変更後のテストシナリオを自動作成することができる。
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[システムの全体構成]
まず、。本発明の一実施形態に係るサーバ/ストレージシステム1、ウェブシステム20及びウェブテストシステム30の関係について、図3を参照しながら説明する。ウェブシステム20は、監視対象のサーバ/ストレージシステム1の稼働状況等の情報をウェブ画面に表示して提供する。
まず、。本発明の一実施形態に係るサーバ/ストレージシステム1、ウェブシステム20及びウェブテストシステム30の関係について、図3を参照しながら説明する。ウェブシステム20は、監視対象のサーバ/ストレージシステム1の稼働状況等の情報をウェブ画面に表示して提供する。
本実施形態にかかるサーバ/ストレージシステム1において、サーバ/ストレージ装置10の機能構成の情報は、ウェブ画面11を用いて入力される。ウェブ画面11への入力及びウェブ画面11の更新は、ウェブシステム20により制御される。
サーバ/ストレージシステム1において機能の追加や機能の削除が行われた場合、ウェブシステムは、追加又は削除した機能以外の機能に関しては、機能変更の前後において同じ動作が行われウェブ画面上に表示されることを保証しなければならない。そのためのテスト方法としてリグレッションテストが知られている。
リグレッションテストは、ウェブテストシステム30により実行される。ウェブテストシステム30は、まず、サーバ/ストレージ装置10の機能仕様書からウェブ画面11のテスト用の操作手順を作成する。ウェブ画面11のテスト用の操作手順を、以下「テストシナリオ」という。
ウェブテストシステム30は、テストシナリオを入力し、テストシナリオの操作手順に基づきウェブ画面11を操作してテストを実行し、その実行結果を検証する。このとき、ウェブテストシステム30は、テストシナリオに従ってウェブ画面11の操作を自動で行う。
テストシナリオには、ウェブ画面を記述するHTML上の各要素が指定される。HTMLの要素の位置指定には、XPathによる位置指定方法が用いられる。図4は、HTML上の各要素とXPathの位置指定の例を示す。XPathは、HTMLなどのXML(Extensible Markup Language)文書の中の特定の要素を指し示す記述方法を定めた規格であり、W3C(World Wide Web Consortium)が勧告した標準仕様に基づく。図4(b)に示すHTMLファイルの要素(E1)に対して、図4(a)のウェブ画面11に対応するテーブルの(1)で示される位置、は、図4(c)の(1)のXPathで示される。図4(b)に示すHTMLファイルの要素(E2)に対して、図4(a)のテーブルの(2)で示される位置は、図4(c)の(2)のXPathで示される。図4(b)に示すHTMLファイルの要素(E3)に対して、図4(a)のテーブルの(3)で示される位置は、図4(c)の(3)のXPathで示される。
テストシナリオでは、指定したウェブ画面を記述するHTMLファイルの要素に対する操作を記載する。XPathを使用したテストシナリオの一例を図5に示す。テストシナリオに記載されるコマンドには、文字入力(input)、クリック(Click)、任意のデータとの比較(Check)等がある。テストシナリオに記載のXPathには、そのコマンドを実行する場所が指定される。
図5に示すようにテストシナリオには場所の指定であるXPathが記述されており、ウェブ画面11のレイアウトが変わるとHTMLファイルの要素の位置指定、つまりXPathが変わってしまう。このため、機能変更に応じてウェブ画面11のレイアウトが変わると、機能変更前のXPathを含むテストシナリオをそのまま機能変更後のテストシナリオとして使用することは困難である。
例えば、図6の上図のウェブ画面11の「注釈2」が削除され、下図のウェブ画面11に示すようにレイアウトが変更した場合、レイアウト変更と共にXPathも変更される。このため、レイアウト変更後のウェブ画面11に対して元のテストシナリオをそのまま使用してテストを行うことはできない。
図4のウェブ画面11のレイアウト変更後のXPathの一例を図7及び図8に示す。図7は、図4に対して画面要素(De)が削除されたためXPathが変更になった例、図8は、図4に対して画面要素(Ad)が追加されたためXPathが変更になった例である。
図4(b)に示すHTMLファイルの要素(E3)に対する変更前の図4(c)の(3)に示すXPathは「/html/body/table/tr[3]/td[2]」である。これに対して、図7(b)に示すHTMLファイルの要素(De)で示す部分が削除された場合、図7(b)に要素(E3)に対する変更後の図7(c)の(5)に示すXPathは「/html/body/table/tr[2]/td[2]」である。
また、図8(b)に示すHTMLファイルの要素(Ad)で示す部分が追加された場合、図8(b)に要素(E3)に対する変更後の図8(c)の(6)に示すXPathは「/html/body/table/tr[4]/td[2]」である。このように、ウェブ画面11のレイアウトが変更され、HTMLファイルの要素が変更になるとXPathで示されるウェブ画面11上の位置の指定が変更される。
以下に説明する一実施形態にかかるウェブテストシステム30は、機能変更前のウェブ画面11のテストに使用したテストシナリオから機能変更後のウェブ画面11のテストに使用するテストシナリオを自動作成する。これにより、ウェブテストシステム30が使用するテストシナリオを、機能仕様書に基づき手動で変更することを不要とする。なお、一実施形態にかかるウェブテストシステム30は、ウェブ画面11をテストする試験装置の一例である。ウェブテストシステム30は、例えばPC上で動くテストシステムであり、テストシナリオを入力してテストシナリオの操作手順に従いウェブ画面11のテストを行う。
[ウェブテストシステムの機能構成]
本発明の一実施形態に係るウェブテストシステム30の機能構成について、図9を参照しながら説明する。図9は、一実施形態に係るウェブテストシステム30の機能構成の一例を示す。一実施形態に係るウェブテストシステム30は、ソースコード読込部31、修正ソースコード作成部32、テストシナリオ読込部33、修正用データ作成部34、XPath抽出部35、テストシナリオ作成部36、テスト実行処理部37及び記憶部40を有する。
本発明の一実施形態に係るウェブテストシステム30の機能構成について、図9を参照しながら説明する。図9は、一実施形態に係るウェブテストシステム30の機能構成の一例を示す。一実施形態に係るウェブテストシステム30は、ソースコード読込部31、修正ソースコード作成部32、テストシナリオ読込部33、修正用データ作成部34、XPath抽出部35、テストシナリオ作成部36、テスト実行処理部37及び記憶部40を有する。
記憶部40は、ソースコードDB(Data Base)41、修正ソースコードDB42、テストシナリオDB43、シナリオ修正用DB44及びテスト実行結果DB45を有する。
ソースコード読込部31は、ソースコードDB41に格納された所定のソースコードを読み込む。ソースコードDB41は、ウェブシステム20が提供する機能変更前のウェブ画面11(第1のウェブ画面)を記述する。
修正ソースコード作成部32は、ソースコードに、所定の表記を付加した修正ソースコードを作成する。例えば、修正ソースコード作成部32は、第1のソースコードに所定の関数又は固定値の表記を付加して第1の修正ソースコードを作成する(図2(b):(1)関数追加)。また、例えば、修正ソースコード作成部32は、第2のソースコードに所定の関数又は固定値の表記を付加して第2の修正ソースコードを作成する(図2(b):(3)関数追加)。
第1のソースコードには、サーバ/ストレージシステム1の機能変更前の内部処理が記述されている。第2のソースコードには、サーバ/ストレージシステム1の機能変更後の内部処理が記述されている。
所定の表記の一例を示した関数リスト100を図10に示す。関数リスト100は、外部から入力する。関数リスト100は、関数の表記として変数対象関数名101及び挿入関数名102を有する。関数リスト100は、固定値の表記として第1のデバッグ出力情報103、第2のデバッグ出力情報104、第3のデバッグ出力情報105、第4のデバッグ出力情報106・・・を有する。なお、図11は、図10の関数リストの本体の一例を示す。所定の表記には、関数の表記、固定値(固定文字等)の表記、関数に記載された引数を含む。
テストシナリオ読込部33は、テストシナリオDB43に格納された所定のテストシナリオを読み込む。
修正用データ作成部34は、第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと前記所定の表記とを含んだ第1のシナリオ修正用データを作成する。修正用データ作成部34は、第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと前記所定の表記とを含んだ第2のシナリオ修正用データを作成する。
例えば、図6の上図に示すウェブ画面11を第1のウェブ画面とし、システムの機能変更に応じて図6の下図に示すようにウェブ画面11のレイアウトの一部が変更された、ウェブ画面11を第2のウェブ画面とする。
第2のウェブ画面をテストする場合、修正用データ作成部34は、第1の修正ソースコードに基づく処理を実行してシナリオ修正用データを作成する(図2(b):(2)実行)。作成されたシナリオ修正用データは、第1のウェブ画面のレイアウトを表記するための第1のXPathを含み、以下、「第1のシナリオ修正用データ」ともいう。
また、例えば、修正用データ作成部34は、第2の修正ソースコードに基づく処理を実行してシナリオ修正用データを作成する(図2(b):(4)実行)。作成されたシナリオ修正用データは、第2のウェブ画面のレイアウトを表記するための第2のXPathを含み、以下、「第2のシナリオ修正用データ」ともいう。第1のシナリオ修正用データ及び第2のシナリオ修正用データは、シナリオ修正用DB44に格納される。
XPath抽出部35は、第1のシナリオ修正用データと第2のシナリオ修正用データとに含まれる前記所定の表記が一致する位置に応じて第1のXPathと第2のXPathとの対応情報を抽出する。
テストシナリオ作成部36は、対応情報に基づき、第1のウェブ画面のテスト用の操作手順を示す第1のテストシナリオから第2のウェブ画面のテスト用の操作手順を示す第2のテストシナリオを作成する(図2(b):(5)作成)。
テスト実行処理部37は、第2のテストシナリオの操作手順に従い機能変更後の第2のウェブ画面のテストを行う。テストの実行結果のデータは、テスト実行結果DB45に保存される。
[テストシナリオ自動作成の前提条件]
以上に説明したテストシナリオ自動作成のための前提条件1〜3について説明する。
以上に説明したテストシナリオ自動作成のための前提条件1〜3について説明する。
前提条件1:HTMLファイルの生成前にウェブシステム20で実行する処理(関数)に変更がないこと
前提条件2:HTMLファイルの生成後にウェブシステム20で実行される処理(関数)に変更がないこと
前提条件3:ウェブテストシステム30においてテストシナリオの適用順序に変更がないこと
本実施形態に係るウェブテストシステム30によれば、上記前提条件の元、以下の仕組みでテストシナリオの再利用を可能とする。
(1)機能変更前と機能変更後のウェブシステム20のソースコードを書き換えて以下の情報を出力する。
前提条件2:HTMLファイルの生成後にウェブシステム20で実行される処理(関数)に変更がないこと
前提条件3:ウェブテストシステム30においてテストシナリオの適用順序に変更がないこと
本実施形態に係るウェブテストシステム30によれば、上記前提条件の元、以下の仕組みでテストシナリオの再利用を可能とする。
(1)機能変更前と機能変更後のウェブシステム20のソースコードを書き換えて以下の情報を出力する。
・HTMLファイルの生成前に実行した内部処理
・HTMLファイルの生成
・HTMLファイルの生成後に実行した内部処理
上記の生成したHTMLファイルからXPathが生成される。HTMLファイルの生成前後の内部処理を付加したXPath(シナリオ修正用データ中のXPath)により、第1のウェブ画面用の機能変更前のテストシナリオから第2のウェブ画面用の機能変更後のテストシナリオが作成される。
(2)特定のHTMLファイル生成時の機能変更前処理と機能変更後処理の組み合わせは、同じ情報については、サーバ/ストレージシステム1のの機能変更の前後で変わらない。このことを前提として、HTMLファイル生成前と、HTMLファイル生成後に実行した内部処理の組み合わせが同じとなるものを見つけ出し、サーバ/ストレージシステム1の機能変更前後で変更のあるXPathを見つけ出す。
(3)第1のシナリオ修正用データと第2のシナリオ修正用データとに含まれる所定の関数又は固定値の表記が一致する位置に応じて変更前の第1のXPathと変更後の第2のXPathとの対応情報を抽出する。これにより、サーバ/ストレージシステム1のの機能変更の前後でXPathがどのように変わったかを取得できる。
(4)対応情報に基づき、機能変更前のテストシナリオから機能変更後のテストシナリオを書き換える。
・HTMLファイルの生成
・HTMLファイルの生成後に実行した内部処理
上記の生成したHTMLファイルからXPathが生成される。HTMLファイルの生成前後の内部処理を付加したXPath(シナリオ修正用データ中のXPath)により、第1のウェブ画面用の機能変更前のテストシナリオから第2のウェブ画面用の機能変更後のテストシナリオが作成される。
(2)特定のHTMLファイル生成時の機能変更前処理と機能変更後処理の組み合わせは、同じ情報については、サーバ/ストレージシステム1のの機能変更の前後で変わらない。このことを前提として、HTMLファイル生成前と、HTMLファイル生成後に実行した内部処理の組み合わせが同じとなるものを見つけ出し、サーバ/ストレージシステム1の機能変更前後で変更のあるXPathを見つけ出す。
(3)第1のシナリオ修正用データと第2のシナリオ修正用データとに含まれる所定の関数又は固定値の表記が一致する位置に応じて変更前の第1のXPathと変更後の第2のXPathとの対応情報を抽出する。これにより、サーバ/ストレージシステム1のの機能変更の前後でXPathがどのように変わったかを取得できる。
(4)対応情報に基づき、機能変更前のテストシナリオから機能変更後のテストシナリオを書き換える。
これにより、図2(b)に示すように、サーバ/ストレージシステム1において機能変更前のウェブ画面11のテスト用に作成した第1のテストシナリオを使用して、機能変更後のテスト用に第2のテストシナリオを自動作成することができる。ウェブテストシステム30では、テストシナリオの自動作成とテストシナリオによるテストの実行とが繰り返し実施される。
[テストシナリオの自動作成処理]
次に、本実施形態に係るテストシナリオの自動作成処理について図12を参照しながら説明する。図12は、本実施形態にかかるテスト実行処理の一例を示すフローチャートである。以下のテストシナリオの自動作成処理は、左側がウェブシステム20において提供される機能変更前のウェブ画面11のテスト実行処理、右側がウェブシステム20において提供される機能変更後のウェブ画面11のテスト実行処理を示す。テストシナリオの自動作成処理は、右側に示す機能変更後のウェブ画面11のテスト実行処理前に実行される。
次に、本実施形態に係るテストシナリオの自動作成処理について図12を参照しながら説明する。図12は、本実施形態にかかるテスト実行処理の一例を示すフローチャートである。以下のテストシナリオの自動作成処理は、左側がウェブシステム20において提供される機能変更前のウェブ画面11のテスト実行処理、右側がウェブシステム20において提供される機能変更後のウェブ画面11のテスト実行処理を示す。テストシナリオの自動作成処理は、右側に示す機能変更後のウェブ画面11のテスト実行処理前に実行される。
図12の左側の機能変更前の処理が開始されると、ソースコード読込部31は、機能変更前のソースコードを読み込む(ステップS10)。以下、機能変更前のソースコードを第1のソースコードともいう。
次に、修正ソースコード作成部32は、第1のソースコードに関数及び固定値の表記を付加する処理(以下、「関数付加処理」ともいう。)を実行し、関数及び固定値の表記を付加した第1のソースコード(以下、「第1の修正ソースコード」ともいう。)を作成する(ステップS12)。なお、後述されるステップS12、S24、S32、S44の関数等の付加処理は図13に示され、付加する関数リストの生成処理は図14に示され、後述される。
次に、修正用データ作成部34は、第1の修正ソースコードに基づき第1のシナリオ修正用データを作成し(ステップS14)、テストシナリオ読込部33は、テストシナリオ(以下、「第1のテストシナリオ」ともいう。)を読み込む(ステップS16)。次に、ウェブシステム20は、生成した最新のHTMLファイルに従いウェブ画面11を表示する(ステップS18)。ここでは、第1のソースコードに基づき第1のウェブ画面が表示される。第1のウェブ画面には、機能変更前のサーバ/ストレージシステム1の稼働情報などの情報が表示されている。
次に、テスト実行処理部37は、第1のテストシナリオを読み込み、第1のテストシナリオに基づきリグレッションテストを実行する(ステップS20)。記憶部40は、テストの実行処理結果をテスト実行結果DB45に保存する。次に、ソースコード読込部31は、機能変更前のウェブシステム20の次の第1のソースコードを読み込み(ステップS22)、修正ソースコード作成部32は、第1のソースコードに関数及び固定値の表記を付加する関数付加処理を実行し、次の第1の修正ソースコードを作成する(ステップS24)。次に、修正用データ作成部34は、第1の修正ソースコードに基づき次の第1のシナリオ修正用データを作成する(ステップS26)。
次に、テスト実行処理部37は、次の第1のテストシナリオがないかを判定し(ステップS28)、次の第1のテストシナリオはないと判定した場合、本処理は終了する。一方、次の第1のテストシナリオがあると判定した場合、テスト実行処理部37は、次の第1のテストシナリオを読み込む(ステップS29)。次に、テスト実行処理部37は、次の第1のテストシナリオに基づきステップS20にてリグレッションテストを実行し、記憶部40はテストの実行処理結果をテスト実行結果DB45に保存する。ステップS28にて次の第1のテストシナリオがないと判定されるまで、ステップS18〜S29の処理が繰り返される。
図12の右側の処理が開始されると、ソースコード読込部31は、機能変更後のソースコードを読み込む(ステップS30)。以下、機能変更後のソースコードを第2のソースコードともいう。次に、修正ソースコード作成部32は、第2のソースコードに関数付加処理を実行し、関数及び固定値の表記を付加した第2のソースコード(以下、「第2の修正ソースコード」ともいう。)を作成する(ステップS32)。
次に、修正用データ作成部34は、第2の修正ソースコードに基づき第1のシナリオ修正用データを作成する(ステップS34)。テストシナリオ作成部36は、第1のシナリオ修正用データ及び第2のシナリオ修正用データに基づき第1のテストシナリオを修正した第2のテストシナリオを自動作成する(ステップS36)。
次に、ウェブシステム20は、生成した最新のHTMLファイルに従いウェブ画面11を表示する(ステップS38)。ここでは、第2のソースコードに基づき第2のウェブ画面が表示される。第2のウェブ画面には、機能変更後のサーバ/ストレージシステム1の稼働情報などの情報が表示されている。
次に、テスト実行処理部37は、自動作成した第2のテストシナリオに基づきリグレッションテストを実行する(ステップS40)。記憶部40は、テストの実行処理結果をテスト実行結果DB45に保存する。次に、ソースコード読込部31は、次の第2のソースコードを読み込み(ステップS42)、修正ソースコード作成部32は、第1のソースコードに関数及び固定値の表記を付加する関数付加処理を実行する(ステップS44)。次に、修正用データ作成部34は、生成した第2の修正ソースコードに基づき次の第2のシナリオ修正用データを作成する(ステップS46)。
次に、テスト実行処理部37は、次のテストシナリオがないかを判定し(ステップS48)、次のテストシナリオはないと判定した場合、本処理は終了する。一方、次の第2のテストシナリオがあると判定した場合、テスト実行処理部37は、次の第2のテストシナリオを修正(自動作成)し(ステップS49)、ステップS40にてリグレッションテストを実行する。記憶部40は、テストの実行処理結果をテスト実行結果DB45に保存する。ステップS48にて次の第2のテストシナリオがないと判定されるまで、ステップS38〜S49の処理が繰り返される。
[関数付加処理]
本実施形態にかかる関数付加処理について、図13及び図14を参照しながら説明する。図13は、本実施形態にかかる関数付加処理を示すフローチャートである。図14は、本実施形態にかかる関数リストの生成処理を示すフローチャートである。本処理は、図2(b)の(1)に示す関数付加により第1のソースコードから第1の修正ソースコードを作成する処理である。また、図2(b)の(3)に示す関数付加により、第2のソースコードから第2の修正ソースコードを作成する処理である。
本実施形態にかかる関数付加処理について、図13及び図14を参照しながら説明する。図13は、本実施形態にかかる関数付加処理を示すフローチャートである。図14は、本実施形態にかかる関数リストの生成処理を示すフローチャートである。本処理は、図2(b)の(1)に示す関数付加により第1のソースコードから第1の修正ソースコードを作成する処理である。また、図2(b)の(3)に示す関数付加により、第2のソースコードから第2の修正ソースコードを作成する処理である。
図13の処理が開始されると、修正ソースコード作成部32が関数リストの生成処理(図14)を実行する(ステップS50)。
(関数リスト生成処理)
図14の関数リストの生成処理では、修正ソースコード作成部32は、ウェブシステム20のソースコードを{,}、(,)、空白、カンマ、';' 、'=' 、改行コードで分割し、リスト化する(ステップS70)。但し"…"、"//〜改行"内は分割しない。
(関数リスト生成処理)
図14の関数リストの生成処理では、修正ソースコード作成部32は、ウェブシステム20のソースコードを{,}、(,)、空白、カンマ、';' 、'=' 、改行コードで分割し、リスト化する(ステップS70)。但し"…"、"//〜改行"内は分割しない。
次に、修正ソースコード作成部32は、リスト化されたソースコードに含まれる関数を判定し(ステップS71)、関数呼び出し部(関数Call)を走査する(ステップS72)。修正ソースコード作成部32は、走査が完了したかを判定し(ステップS73)、走査が完了したと判定した場合、本処理を終了し、図13の関数付加処理のステップS51に戻る。
一方、修正ソースコード作成部32は、走査が完了していないと判定した場合、関数の種類によってソースコード内の関数を下記の3つに分ける(ステップS74)。ステップS75〜S77にてリストを生成した後、ステップS72に戻り、ステップS72〜S77の処理を走査が完了するまで繰り返す。
(1)HTML出力関数リスト生成(ステップS75)
・関数名 関数タイプ 関数引数
(2)データベース書き込み関数リスト生成(ステップS76)
・関数名 関数タイプ 関数引数
(3)データベース読み込み関数リスト生成(ステップS77)
・関数名 関数タイプ 関数引数
図13の付加処理(ステップS51)に戻ると、修正ソースコード作成部32は、ウェブシステム20のソースコードを{,}、(,)、空白、カンマ、';' 、'=' 、改行コードで分割し、リスト化する。但し"…"、"//〜改行"内は分割しない。なお、修正ソースコード作成部32は、ステップS51において、ステップS70にてリスト化されたソースコードを取得してもよい。図15はソースコードの一例を示す。図16は図15のソースコードを分割し、リスト化した一例を示す。
(1)HTML出力関数リスト生成(ステップS75)
・関数名 関数タイプ 関数引数
(2)データベース書き込み関数リスト生成(ステップS76)
・関数名 関数タイプ 関数引数
(3)データベース読み込み関数リスト生成(ステップS77)
・関数名 関数タイプ 関数引数
図13の付加処理(ステップS51)に戻ると、修正ソースコード作成部32は、ウェブシステム20のソースコードを{,}、(,)、空白、カンマ、';' 、'=' 、改行コードで分割し、リスト化する。但し"…"、"//〜改行"内は分割しない。なお、修正ソースコード作成部32は、ステップS51において、ステップS70にてリスト化されたソースコードを取得してもよい。図15はソースコードの一例を示す。図16は図15のソースコードを分割し、リスト化した一例を示す。
次に、修正ソースコード作成部32は、リスト化されたソースコードから関数を判定し(ステップS52)、関数呼び出し部(関数Call)を走査する(ステップS53)。修正ソースコード作成部32は、走査が完了したかを判定し(ステップS54)、走査が完了したと判定した場合、リスト化されたソースコードを元のソースコードに戻し(ステップS63)、本処理を終了する。
一方、修正ソースコード作成部32は、ステップS54にて走査が完了していないと判定した場合、関数呼び出し部の関数の種類が図14にて生成した関数リストの対象関数と一致するかを判定する(ステップS55)。修正ソースコード作成部32は、関数呼び出し部の関数の種類が関数リストの対象関数と一致すると判定した場合、対象関数の直後に挿入関数名を挿入する(ステップS56)。図10は、上記の関数リスト生成のステップで使用する関数リストの一例を示す。
修正ソースコード作成部32は、図4の(b)のソースコードをリスト化し(図16)、リスト化したソースコードを構文解析し(図17)、対象関数の直後に挿入関数名を挿入する(図18)。
次に、図13のステップS57にて、修正ソースコード作成部32は、関数リストからデバッグ出力情報を取得する。修正ソースコード作成部32は、デバッグ出力情報の取得が完了したかを判定し(ステップS58)、デバッグ出力情報の取得が完了したと判定した場合、ステップS62に進む。一方、修正ソースコード作成部32は、デバッグ出力情報の取得が完了していないと判定した場合、固定文字かを判定する(ステップS59)。固定文字の場合、修正ソースコード作成部32は、その固定文字を挿入する(ステップS60)。図18には、ステップS60の実行により挿入関数名の挿入後に固定文字が設定されている。一方、固定文字でない場合、修正ソースコード作成部32は、関数引数を挿入する(ステップS61)。図18には、挿入関数名及び固定文字の挿入後に関数引数(デバッグ出力情報103〜106の"arg"の関数引数)が設定されている。ステップS57に戻り、修正ソースコード作成部32は、ステップS57〜S61の処理を繰り返した後、ステップS58にてデバッグ出力情報の取得が完了したと判定したとき、ステップS62に進み、関数の終端表記を挿入し、ステップS53に戻る。修正ソースコード作成部32は、ステップS53に続くステップS54にて関数呼び出し部の走査が完了したと判定するまでS53〜S62の処理を繰り返し、走査が完了したと判定したときリスト化したソースコードを元の状態に戻し(ステップS63)、本処理を終了する。図19は、リスト化したソースコードから元の状態に戻されたソースコードを示す。なお、ステップS63の処理は省略できる。
これにより、図18に示すように、一のソースコードから修正ソースコードが作成される。以上、図2(b)の(1)及び(3)の関数追加により修正ソースコードを作成する処理の詳細を説明した。図2では、修正ソースコード作成部32は、機能変更前の第1のソースコードから第1の修正ソースコードを作成し、機能変更前の第2のソースコードから第2の修正ソースコードを作成する。
次に、図2(b)の(2)及び(4)の第1及び第2の修正ソースコードから第1及び第2のシナリオ修正用データを作成する処理の詳細、及び図2(b)の(5)第1のテストシナリオから第2のテストシナリオを自動作成する処理の詳細を説明する。図20は、本実施形態にかかるテストシナリオの自動作成処理の詳細を示すフローチャートである。
図20の処理が開始されると、修正ソースコード作成部32は、シナリオ修正用DB44にシナリオ修正用データが存在するかを判定する(ステップS80)。図2(b)の(1)の時点では、シナリオ修正用データは存在しない。よって、修正用データ作成部34は、ソースコードに所定の関数等の表記を付加して修正ソースコードを作成する(ステップS81)。ここでは、修正ソースコード作成部32は、機能変更前のソースコードである第1のソースコードに所定の関数等の表記を付加して機能変更前の修正ソースコードである第1の修正ソースコードを作成する。
次に、ウェブシステム20が起動され(ステップS82)、第1の修正ソースコードに基づく処理の実行によりHTMLファイルが生成され、修正用データ作成部34は、HTMLファイルに応じた第1のシナリオ修正用データを作成する(ステップS83)。図21の左側に機能変更前のHTMLファイルの例を示し、図21の右側に作成した第1のシナリオ修正用データの例を示す。第1のシナリオ修正用データは、テストシナリオを修正するために使用される。
(シナリオ修正用データの作成処理)
シナリオ修正用データの作成処理の詳細について、図22を参照しながら説明する。図22は、本実施形態にかかるシナリオ修正用データの作成処理を示すフローチャートである。まず、修正用データ作成部34は、HTMLファイルの上から順に一行を取得する(ステップS101)。例えば、図21では、行番号「1」の一行が取得される。次に、修正用データ作成部34は、HTMLファイルの全行の処理が済んだかを判定する(ステップS102)。修正用データ作成部34は、全行の処理が済んだと判定した場合、本処理を終了する。一方、修正用データ作成部34は、全行の処理が済んでいないと判定した場合、取得した一行からタグの記述を取り出す(ステップS103)。タグの記述は、"<・・・>"又は"</・・・>"で示される。次に、修正用データ作成部34は、取得した一行に含まれる全データの処理が済んだかを判定する(ステップS104)。修正用データ作成部34は、取得した一行に含まれる全データの処理が済んだと判定した場合、ステップS101に戻り、ステップS101以降の処理を繰り返す。
(シナリオ修正用データの作成処理)
シナリオ修正用データの作成処理の詳細について、図22を参照しながら説明する。図22は、本実施形態にかかるシナリオ修正用データの作成処理を示すフローチャートである。まず、修正用データ作成部34は、HTMLファイルの上から順に一行を取得する(ステップS101)。例えば、図21では、行番号「1」の一行が取得される。次に、修正用データ作成部34は、HTMLファイルの全行の処理が済んだかを判定する(ステップS102)。修正用データ作成部34は、全行の処理が済んだと判定した場合、本処理を終了する。一方、修正用データ作成部34は、全行の処理が済んでいないと判定した場合、取得した一行からタグの記述を取り出す(ステップS103)。タグの記述は、"<・・・>"又は"</・・・>"で示される。次に、修正用データ作成部34は、取得した一行に含まれる全データの処理が済んだかを判定する(ステップS104)。修正用データ作成部34は、取得した一行に含まれる全データの処理が済んだと判定した場合、ステップS101に戻り、ステップS101以降の処理を繰り返す。
一方、修正用データ作成部34は、取得した一行に含まれる全データの処理が済んでいないと判定した場合、取り出したデータの種類を判定する(ステップS105)。修正用データ作成部34は、取り出したデータがタグ以外と判定した場合、ステップS102に戻る。
修正用データ作成部34は、取り出したデータがタグの終端(</タグ名>)と判定した場合、ステップS116に進み、ツリー情報に"/ "が入っているかを判定する(ステップS116)。ツリー情報は、HTMLファイルのタグ構造を示す。修正用データ作成部34は、ツリー情報に"/ "が入っていると判定した場合、ツリー情報終端の"/タグ名[タグ出現回数]"を除去し(ステップS117)、ステップS102に戻る。一方、修正用データ作成部34は、ツリー情報に"/ "が入っていないと判定した場合、ツリー情報を空にし(ステップS118)、ステップS102に戻る。
ステップS105において、修正用データ作成部34は、取り出したデータがタグの開始(つまり、<タグ名>)と判定した場合、前回削除したタグ名と今回のタグ名とが同じかを判定する(ステップS106)。修正用データ作成部34は、同じでないと判定した場合、タグの出現回数を「1」とし(ステップS107)、同じと判定した場合、タグの出現回数を「+1」する(ステップS108)。
次に、修正用データ作成部34は、ツリー情報は何かを判定する(ステップS109)。修正用データ作成部34は、ツリー情報が空であると判定した場合、ツリー情報に"/タグ名[タグ出現回数]"を保存する(ステップS110)。例えば、図21では、行番号が「1」のとき、ツリー情報に"/html[1]"が保存される。なお、タグ出現回数が1のときの[1]は省略されるため、ツリー情報に保存されるデータは、"/html"となる。一方、修正用データ作成部34は、ツリー情報に"/"が入っていると判定した場合、ツリー情報に"タグ名[タグ出現回数]"を保存する(ステップS111)。
次に、修正用データ作成部34は、ツリー情報をシナリオ修正用データのXPathに保存する(ステップS112)。ツリー情報は、機能変更前の場合、第1のシナリオ修正用データのXPathに保存され、機能変更後の場合、第2のシナリオ修正用データのXPathに保存される。
次に、修正用データ作成部34は、タグの終端(つまり、</タグ名>)かを判定する(ステップS113)。修正用データ作成部34は、タグの終端でないと判定した場合、ステップS102に戻る。一方、修正用データ作成部34は、タグの終端であると判定した場合、タグの出現回数から1を減算し(ステップS114)、ツリー情報終端の"/タグ名[タグ出現回数]"を除去し(ステップS115)、ステップS102に戻る。例えば、図21では、行番号「13」のとき、ツリー情報に保存されるデータは、"/html/body/table/tr"となる。
以上、図22を参照しながら、図20のステップS83で呼び出されるシナリオ修正用データの作成処理の一例を説明した。次に、図20のステップS84に進み、テストシナリオ読込部33は、テストシナリオDB43から次に実行するテストシナリオを読み込む。次に、テスト実行処理部37は、テストシナリオのすべてについてテストが完了したかを判定する(ステップS85)。テスト実行処理部37は、テストシナリオのすべてについてテストが完了していないと判定した場合、テストシナリオを実行し(ステップS86)、ステップS83に戻り、テストシナリオのすべてについてテストが完了するまで、ステップS83〜S86の処理を繰り返す。ここでは、第1のテストシナリオの操作手順に従い機能変更前のウェブ画面11のテストが行われる。テストの実行結果のデータは、テスト実行結果DB45に保存される。
ステップS85において第1のテストシナリオのすべてについてテストが完了したと判定された場合、又は、ステップS80においてシナリオ修正用データが存在すると判定された場合、修正用データ作成部34は、ステップS87に進む。修正用データ作成部34は、ソースコードに所定の表記を付加して修正ソースコードを作成する。この時点では、サーバ/ストレージシステム1において機能変更がされている。よって、修正ソースコード作成部32は、機能変更後のソースコードである第2のソースコードに所定の表記を付加して機能変更後の修正ソースコードである第2の修正ソースコードを作成する。
次に、ウェブシステム20が起動され(ステップS88)、第2の修正ソースコードに基づく処理の実行によりHTMLファイルが生成され、修正用データ作成部34は、HTMLファイルに応じた第2のシナリオ修正用データを作成する(ステップS89)。図23の左側に機能変更後のHTMLファイルの例を示し、図23の右側に作成した第2のシナリオ修正用データの例を示す。第2のシナリオ修正用データは、テストシナリオを修正するために使用される。
次に、テストシナリオ作成部36は、シナリオ修正用DB44から、対応する機能変更前の第1のシナリオ修正用データを取得する(ステップS90)。テストシナリオ作成部36は、第1のシナリオ修正用データ及び第2のシナリオ修正用データに基づき、第1のテストシナリオから第2のテストシナリオを自動作成する(ステップS91)。つまり、XPath抽出部35は、第1のシナリオ修正用データと第2のシナリオ修正用データとに含まれる所定の表記が一致する位置に応じて第1のXPathと第2のXPathとの対応情報を抽出する。テストシナリオ作成部36は、対応情報に基づき、第1のウェブ画面のテスト用の操作手順を示す第1のテストシナリオから第2のウェブ画面のテスト用の操作手順を示す第2のテストシナリオを作成する。
(テストシナリオの自動作成処理)
テストシナリオの自動作成処理の詳細について、図24を参照しながら説明する。図24は、本実施形態にかかるテストシナリオの自動作成処理を示すフローチャートである。まず、テストシナリオ作成部36は、第1のシナリオ修正用データから"HTML"で始まる行を取り除く(ステップS120)。これにより、図25の左図の斜線で示す"HTML"で始まる行が取り除かれる。
(テストシナリオの自動作成処理)
テストシナリオの自動作成処理の詳細について、図24を参照しながら説明する。図24は、本実施形態にかかるテストシナリオの自動作成処理を示すフローチャートである。まず、テストシナリオ作成部36は、第1のシナリオ修正用データから"HTML"で始まる行を取り除く(ステップS120)。これにより、図25の左図の斜線で示す"HTML"で始まる行が取り除かれる。
次に、テストシナリオ作成部36は、第2のシナリオ修正用データから"HTML"で始まる行を取り除く(ステップS121)。これにより、図25の右図の斜線で示す"HTML"で始まる行が取り除かれる。
次に、テストシナリオ作成部36は、第1のシナリオ修正用データから一行を取得する(ステップS122)。これにより、図25の左図の行番号「9」の一行が取得される。次に、テストシナリオ作成部36は、第1のシナリオ修正用データのすべての処理が済んだかを判定する(ステップS123)。テストシナリオ作成部36は、第1のシナリオ修正用データのすべての処理が済んだと判定した場合、本処理を終了する。一方、テストシナリオ作成部36は、第1のシナリオ修正用データのすべての処理は済んでいないと判定した場合、第1のシナリオ修正用データから次の一行を取得する(ステップS124)。これにより、図25の左図の行番号「11」の一行が取得される。
次に、テストシナリオ作成部36は、第2のシナリオ修正用データから一行を取得する(ステップS125)。これにより、図25の右図の行番号「16」の一行が取得される。次に、テストシナリオ作成部36は、第2のシナリオ修正用データのすべての処理が済んだかを判定する(ステップS126)。テストシナリオ作成部36は、第2のシナリオ修正用データのすべての処理が済んだと判定した場合、ステップS131に進む。一方、テストシナリオ作成部36は、第2のシナリオ修正用データのすべての処理は済んでいないと判定した場合、第1のシナリオ修正用データ及び第2のシナリオ修正用データから取得した最初の一行が一致するかを判定する(ステップS127)。
テストシナリオ作成部36は、第1のシナリオ修正用データ及び第2のシナリオ修正用データから取得した最初の一行が一致しないと判定した場合、ステップS125に戻る。一方、テストシナリオ作成部36は、一致すると判定した場合、第2のシナリオ修正用データから次の一行を取得する(ステップS128)。これにより、図25の右図の行番号「18」の一行が取得される。
次に、XPath抽出部35は、第1のシナリオ修正用データ及び第2のシナリオ修正用データから取得した次の一行が一致するかを判定する(ステップS129)。テストシナリオ作成部36は、第1及び第2のシナリオ修正用データから取得した次の一行が一致しないと判定し場合、ステップS125に戻る。一方、XPath抽出部35は、一致すると判定した場合、第1のシナリオ修正用データに含まれる第1のXPathと第2のシナリオ修正用データに含まれる第2のXPathとの対応情報を抽出する。XPath抽出部35は、第1のシナリオ修正用データ及び第2のシナリオ修正用データに含まれる所定の表記が一致する位置に応じて第1のXPathと第2のXPathとの対応情報を抽出する。本実施形態では、対応情報を抽出するために所定の表記が一致する位置は、第1のシナリオ修正用データ及び第2のシナリオ修正用データから取得した最初の一行と次の一行との複数位置である。ただし、所定の表記が一致する位置は、これに限らず、第1のシナリオ修正用データ及び第2のシナリオ修正用データから取得した最初の一行のみであってもよいし、次の一行のみであってもよい。
テストシナリオ作成部36は、第1のシナリオ修正用データの取得した最初の行から次の行までの間のXPathと、第2のシナリオ修正用データの取得した最初の行から次の行までの間のXPathとの対応関係(対応情報)に基づき、第1のテストシナリオのXPathを置き換え、第2のテストシナリオを自動作成する(ステップS130)。
例えば、図25の例では、第1のシナリオ修正用データの取得した二行の間(最初の行から次の行の間)と、第2のシナリオ修正用データの取得した二行の間(最初の行から次の行の間)との対応情報1に基づき、第1のテストシナリオのXPathが置き換えられ、第2のテストシナリオが自動作成される。対応情報2についても同様に第1のテストシナリオのXPathが置き換えられ、第2のテストシナリオが自動作成される。
これにより、図26に示すように、第1のテストシナリオの対応情報1のXPathは、図21の第1のシナリオ修正用データのXPath(A)から、図23の第2のシナリオ修正用データのXPath(a)に置き換えられる。また、第1のテストシナリオの対応情報2のXPathは、図21の第1のシナリオ修正用データのXPath(B)から、図23の第2のシナリオ修正用データのXPath(b)に置き換えられる。このようにして、システムの機能変更前の第1のテストシナリオから機能変更後の第2のテストシナリオを自動作成することができる。
図26の対応情報1では、図27(a)の第1のテストシナリオのコマンドinput(入力)において、値「1+2」を入力する場所(Xpath)は「/html/body/table/tr/td/input」で示されている。これに対して、本実施形態では、図27(b)の第2のテストシナリオのコマンドinputにおいて、値「1+2」を入力する場所(Xpath)が「/html/body/table/tr[2]/td/input」に自動変更される。
また、図26の対応情報2では、図27(a)の第1のテストシナリオのコマンドCheck(チェック)において、値「3」が場所(Xpath)「/html/body/table/tr/td[2]」に表示されていることをチェックする。これに対して、本実施形態では、図27(b)の第2のテストシナリオのコマンドCheckにおいて、値「3」が表示されていることをチェックする場所(Xpath)が「/html/body/table/tr[2]/td[2]」に自動変更される。
図28に示す機能変更前のHTMLファイルに基づき生成した図29のウェブ画面11(第1のウェブ画面例)において、図28の「P」で示すテストシナリオの入力コマンドが実行されると、値「1+2」が図29に示す「注釈」の入力エリア(Xpathで示した場所)に入力される。また、図28の「Q」で示すテストシナリオの表示コマンドが実行されると、図29に示す「結果」(Xpathで示した場所)に表示された値「3」がチェックされる。
これに対して、機能変更後のHTMLファイルには、図30の「R」で示す「注釈2」が追加される。これにより、機能変更後の図31のウェブ画面11(第2のウェブ画面例)では、機能変更前の図29のウェブ画面11に対して「注釈」の前に「注釈2」が表示される。
機能変更後の図31のウェブ画面11に対して、図27(a)に示す第1のテストシナリオのXpathが示す画面上の場所に値を表示しようとすると、テストでは、図32のように「注釈2」に値「1+2」を入力しようとしてしまう。また、図32のように「注釈」に値「3」が表示されていることを確認してしまう。
しかしながら、本実施形態では、自動作成された第2のテストシナリオに基づき、図33に示したように、自動作成した第2のテストシナリオの図27(b)に示すXpathに基づき、「注釈」に値「1+2」が入力され、「結果」に値「3」が表示されていることが確認される。このようにして、第1のテストシナリオの機能変更前のXpathと機能変更後のXpathとを対応させて第2のテストシナリオを自動作成することで、機能変更後のテストシナリオのコマンドを機能変更後のウェブ画面11のレイアウトに合致させて実行できる。
以上に説明したように、テストは、第1のテストシナリオから自動作成された第2のテストシナリオに基づき繰り返し実行される。すべてのテストシナリオが実行された後、テストが終了される。
図34は機能変更前のテストシナリオの実行例を示し、図35は機能変更後のテストシナリオの実行例を示す。図34及び図35では、左上図のログイン画面でウェブシステム20が起動され、ログイン後に図34及び図35の左下図のウェブ画面11に画面が遷移する。図34の左下図のウェブ画面11に対する第1のテストシナリオから、図35の左下図のウェブ画面11に新たな機能表示(ディスク使用量)が追加された場合の第2のテストシナリオが自動作成された一例が示されている。
以上に説明したように、一実施形態に係るウェブテストシステム30によれば、システムに機能変更が生じた場合、機能変更前のテストシナリオに基づきシステムの機能変更後のウェブ画面をテストするためのテストシナリオを自動作成することができる。つまり、システムの機能変更前後でウェブ画面11のレイアウトが変更されても、機能変更前後におけるテストシナリオに記述されたXpathの対応情報を抽出することで機能変更前のウェブ画面11をテストするためのテストシナリオから機能変更後のウェブ画面11をテストするためのテストシナリオを自動作成できる。これにより、手動によるテストシナリオの変更が不要になり、また、OSやブラウザに依存せずに画面のテストを行うことができる。
(ハードウェア構成例)
最後に、本実施形態に係るウェブテストシステム30のハードウェア構成例について、図36を参照して説明する。図36は、本実施形態に係るウェブテストシステム30のハードウェア構成例を示す図である。
最後に、本実施形態に係るウェブテストシステム30のハードウェア構成例について、図36を参照して説明する。図36は、本実施形態に係るウェブテストシステム30のハードウェア構成例を示す図である。
図36に示すように、ウェブテストシステム30は、入力装置101、表示装置102、外部I/F103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、CPU(Central Processing Unit)106、通信I/F107、及びHDD(Hard Disk Drive)108などを備え、それぞれがバスBで相互に接続されている。
入力装置101は、キーボードやマウスなどを含み、ウェブテストシステム30に各操作信号を入力するのに用いられる。表示装置102は、各種の処理結果を表示する。
通信I/F107は、ウェブテストシステム30をネットワークに接続するインタフェースである。これにより、ウェブテストシステム30は、通信I/F107を介してウェブシステム20とデータ通信を行うことができる。
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、装置全体を制御する基本ソフトウェア及びアプリケーションソフトウェアがある。例えば、HDD108には、ソースコードDB41、修正ソースコードDB42、テストシナリオDB43、シナリオ修正用DB44及びテスト実行結果DB45が格納されている。
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103aなどがある。これにより、ウェブテストシステム30は、外部I/F103を介して記録媒体103aの読み取り及び/又は書き込みを行うことができる。
記録媒体103aには、フロッピー(登録商標)ディスク、CD(Compact Disk)、及びDVD(Digital Versatile Disk)、ならびに、SDメモリカード(SD Memory card)やUSBメモリ(Universal Serial Bus memory)などがある。
ROM105は、電源を切っても内部データを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105には、ネットワーク設定などのプログラムやデータが格納されている。RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。CPU106は、上記記憶装置(例えば「HDD108」や「ROM105」など)から、プログラムやデータをRAM104上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する演算装置である。
上記ハードウェア構成により、例えば、CPU106が、ROM105やHDD108内に格納されたデータ及びプログラムを用いてテストシナリオの操作手順に基づきウェブ画面11のテストを実行する。
なお、ソースコードDB41、修正ソースコードDB42、テストシナリオDB43、シナリオ修正用DB44及びテスト実行結果DB45に関する情報は、RAM104、HDD108に格納されてもよい。これらのDBは、ネットワークを介してウェブテストシステム30に接続されるクラウド上のサーバー等に格納されてもよい。
以上、試験プログラム、試験装置及び試験方法を上記実施形態により説明したが、本発明にかかる試験プログラム、試験装置及び試験方法は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
例えば、上記実施形態に係る試験プログラム、試験装置及び試験方法の構成は一例であり、本発明の範囲を限定するものではなく、用途や目的に応じて様々なシステム構成例があることは言うまでもない。
1:サーバ/ストレージシステム
10:サーバ/ストレージ装置
11:ウェブ画面
20:ウェブシステム
30:ウェブテストシステム
31:ソースコード読込部
32:修正ソースコード作成部
33:テストシナリオ読込部
34:修正用データ作成部
35:XPath抽出部
36:テストシナリオ作成部
37:テスト実行処理部
40:記憶部
41:ソースコードDB
42:修正ソースコードDB
43:テストシナリオDB
44:シナリオ修正用DB
45:テスト実行結果DB
10:サーバ/ストレージ装置
11:ウェブ画面
20:ウェブシステム
30:ウェブテストシステム
31:ソースコード読込部
32:修正ソースコード作成部
33:テストシナリオ読込部
34:修正用データ作成部
35:XPath抽出部
36:テストシナリオ作成部
37:テスト実行処理部
40:記憶部
41:ソースコードDB
42:修正ソースコードDB
43:テストシナリオDB
44:シナリオ修正用DB
45:テスト実行結果DB
Claims (6)
- システムの機能変更前の処理が記述された第1のソースコードに所定の表記を付加した第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと前記所定の表記とを含んだ第1のシナリオ修正用データを作成し、
システムの機能変更後の処理が記述された第2のソースコードに所定の表記を付加した第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと前記所定の表記とを含んだ第2のシナリオ修正用データを作成し、
前記第1のシナリオ修正用データと前記第2のシナリオ修正用データとに含まれる前記所定の表記が一致する位置に応じて前記第1のXPathと前記第2のXPathとの対応情報を抽出し、
前記抽出した対応情報に基づき、前記第1のウェブ画面の操作手順を示す第1のテストシナリオから前記第2のウェブ画面の操作手順を示す第2のテストシナリオを作成する、
処理をコンピュータに実行させるための試験プログラム。 - 前記抽出する処理は、
前記所定の表記が一致する位置に応じたHTMLファイルのタグ構造から前記第1のXPathと前記第2のXPathとの対応情報を抽出する、
請求項1に記載の試験プログラム。 - システムの機能変更前の処理が記述された第1のソースコードに所定の表記を付加して第1の修正ソースコードを作成し、システムの機能変更後の処理が記述された第2のソースコードに所定の表記を付加して第2の修正ソースコードを作成する修正ソースコード作成部と、
前記第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと前記所定の表記とを含んだ第1のシナリオ修正用データを作成し、前記第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと前記所定の表記とを含んだ第2のシナリオ修正用データを作成する修正用データ作成部と、
前記第1のシナリオ修正用データと前記第2のシナリオ修正用データとに含まれる前記所定の表記が一致する位置に応じて前記第1のXPathと前記第2のXPathとの対応情報を抽出する抽出部と、
前記抽出した対応情報に基づき、前記第1のウェブ画面の操作手順を示す第1のテストシナリオから前記第2のウェブ画面の操作手順を示す第2のテストシナリオを作成するテストシナリオ作成部と、
を有する試験装置。 - 前記抽出部は、
前記所定の表記が一致する位置に応じたHTMLファイルのタグ構造から前記第1のXPathと前記第2のXPathとの対応情報を抽出する、
請求項3に記載の試験装置。 - システムの機能変更前の処理が記述された第1のソースコードに所定の表記を付加した第1の修正ソースコードに基づき、機能変更前の第1のウェブ画面の位置を指定する第1のXPathと前記所定の表記とを含んだ第1のシナリオ修正用データを作成し、
システムの機能変更後の処理が記述された第2のソースコードに所定の表記を付加した第2の修正ソースコードに基づき、機能変更後の第2のウェブ画面の位置を指定する第2のXPathと前記所定の表記とを含んだ第2のシナリオ修正用データを作成し、
前記第1のシナリオ修正用データと前記第2のシナリオ修正用データとに含まれる前記所定の表記が一致する位置に応じて前記第1のXPathと前記第2のXPathとの対応情報を抽出し、
前記抽出した対応情報に基づき、前記第1のウェブ画面の操作手順を示す第1のテストシナリオから前記第2のウェブ画面の操作手順を示す第2のテストシナリオを作成する、
処理をコンピュータが実行する試験方法。 - 前記抽出する処理は、
前記所定の表記が一致する位置に応じたHTMLファイルのタグ構造から前記第1のXPathと前記第2のXPathとの対応情報を抽出する、
請求項5に記載の試験方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/067162 WO2015198473A1 (ja) | 2014-06-27 | 2014-06-27 | 試験プログラム、試験装置及び試験方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5958655B2 JP5958655B2 (ja) | 2016-08-02 |
JPWO2015198473A1 true JPWO2015198473A1 (ja) | 2017-04-20 |
Family
ID=54937597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015531373A Active JP5958655B2 (ja) | 2014-06-27 | 2014-06-27 | 試験プログラム、試験装置及び試験方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5958655B2 (ja) |
WO (1) | WO2015198473A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019197308A (ja) * | 2018-05-08 | 2019-11-14 | 富士通株式会社 | ソースコード変換プログラムおよびソースコード変換方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034583B (zh) * | 2011-09-30 | 2016-03-30 | 国际商业机器公司 | 一种用于处理软件自动测试脚本的方法和系统 |
JP2014106589A (ja) * | 2012-11-26 | 2014-06-09 | Fujitsu Ltd | 情報処理装置、テストプログラム、およびテスト方法 |
-
2014
- 2014-06-27 WO PCT/JP2014/067162 patent/WO2015198473A1/ja active Application Filing
- 2014-06-27 JP JP2015531373A patent/JP5958655B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019197308A (ja) * | 2018-05-08 | 2019-11-14 | 富士通株式会社 | ソースコード変換プログラムおよびソースコード変換方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5958655B2 (ja) | 2016-08-02 |
WO2015198473A1 (ja) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10684839B2 (en) | Plugin for software deployment | |
US11449348B2 (en) | Pre/post deployment customization | |
KR102341154B1 (ko) | 모바일 장치들의 원격 구성을 허용하기 위해 모바일 장치들 상에 설치되는 고속 어플리케이션 | |
US20160062963A1 (en) | Synchronizing DOM Element References | |
US10908928B2 (en) | Rules-based workflow messaging | |
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
Bisht | Robot framework test automation | |
US20130275946A1 (en) | Systems and methods for test development process automation for a test harness | |
EP2713268A1 (en) | Method for developing software and system therefor | |
CN111475161B (zh) | 一种访问组件的方法、装置及设备 | |
US10169218B2 (en) | Method for automatically validating data against a predefined data specification | |
CN107015903B (zh) | 一种界面测试程序的生成方法、装置及电子设备 | |
JP2007122135A (ja) | 開発支援装置、開発支援方法、および、開発支援プログラム | |
US11656601B2 (en) | Method and electronic generation device for generating at least one configuration file for an automation tool, related computer program | |
US10956407B2 (en) | Automatic detection of problems in a large-scale multi-record update system and method | |
US10042638B2 (en) | Evaluating documentation coverage | |
JP5958655B2 (ja) | 試験プログラム、試験装置及び試験方法 | |
US10599424B2 (en) | Committed program-code management | |
JP7318704B2 (ja) | テスト装置、テスト方法及びプログラム | |
CN112800194A (zh) | 一种接口变更识别方法、装置、设备及存储介质 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN116185853A (zh) | 代码校验方法及装置 | |
JP5905313B2 (ja) | 情報処理装置、情報処理方法、情報処理システム、及び、プログラム | |
CN117421039B (zh) | 前端Vue工程的版本信息生成方法、装置、设备和存储介质 | |
WO2023162260A1 (ja) | 環境構築支援装置、システム及び方法、並びに、コンピュータ可読媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160524 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160606 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5958655 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |