JP2007323573A - 機能テスト・スクリプト生成装置 - Google Patents

機能テスト・スクリプト生成装置 Download PDF

Info

Publication number
JP2007323573A
JP2007323573A JP2006155983A JP2006155983A JP2007323573A JP 2007323573 A JP2007323573 A JP 2007323573A JP 2006155983 A JP2006155983 A JP 2006155983A JP 2006155983 A JP2006155983 A JP 2006155983A JP 2007323573 A JP2007323573 A JP 2007323573A
Authority
JP
Japan
Prior art keywords
screen
test
test script
screen transition
input
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
Application number
JP2006155983A
Other languages
English (en)
Other versions
JP4148527B2 (ja
Inventor
Akira Okada
岡田 明
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006155983A priority Critical patent/JP4148527B2/ja
Priority to US11/753,041 priority patent/US7624380B2/en
Publication of JP2007323573A publication Critical patent/JP2007323573A/ja
Application granted granted Critical
Publication of JP4148527B2 publication Critical patent/JP4148527B2/ja
Priority to US12/575,318 priority patent/US7996819B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】情報システム開発において、要件定義フェーズで決められた仕様のあいまいさや不正確さを排し、機能テスト・フェーズでは自動実行されるテスト・シナリオが元々の要件に合致したものかどうかをシステム的に検証することができる方法を提供すること。
【解決手段】(1)画面単位の機能仕様から入力変数、出力変数、及びそれぞれの変数のタイプ(型)を抽出する。(2)画面単位の仕様が複数組み合わされた複合機能仕様から画面遷移情報を抽出する。(3)(2)で得られた画面遷移に現れる1つ1つの画面に対し、先頭から順番に以下を行う。入力変数に対しては、それに対応するオブジェクト(ボタンやテキスト・フィールド等)に対するアクション(クリックや文字のセット)を表すスクリプトを生成する。出力変数に対しては、画面に表示されているテキスト情報を出力変数から決定される期待値と比較するスクリプトを生成する。
【選択図】図1

Description

本発明は、情報処理システム開発における機能テストのためのテスト・スクリプトを生成する装置、方法、およびプログラム等に関する。
近年、情報システム開発においては、テスト作業にかかるワークロードの増大がますます問題となっている。また、テストが要件定義で定められた機能仕様に合致したものであるか、テストのカバレージが十分であるかを検証するシステムも強く求められている。そのため従来から、情報システム開発におけるテスト・フェーズを効率的に行うための手法が多数提案されている。
例えば、特許文献1には、プログラムの仕様書とプログラムの処理形態ごとに定義したスクリプトファイルの標準型を合成することでプログラムのテスト実行用スクリプトファイルとテストデータを生成するテストケース生成装置が開示されている。また、特許文献2〜4には、GUI部を有するアプリケーションに対し、その仕様を仕様ファイルまたは情報ファイルなどにより記述し、それからテスト・シナリオを網羅的に自動生成するシステムテスト支援装置などが開示されている。さらに他の特許文献においては、表形式の機能仕様書からテストケースを作成する方法(特許文献5)、操作仕様と初期条件入力から操作仕様を変換しテストケースを生成する装置(特許文献6)、プログラムへの入力条件と動作環境条件とから二次元の要因分析表を生成し、それに基づいて入力条件群および環境条件群を組み合わせてテスト・スクリプトを自動生成するソフトウェア検証方法(特許文献7)、その他、様々な独自の定義情報からテストケースを作成する方法等(例えば、特許文献8〜11)が開示されている。
特開平6−110733号公報 特開平9−223040号公報 特開平9−223041号公報 特開平9−223042号公報 特開平11−306046号公報 特開2000−339193号公報 特開2004−280231号公報 特開2002−259161号公報 特開2002−366387号公報 特開2004−220330号公報 特開2005−115582号公報
一般的に情報システムの開発においては、要件定義フェーズで決められた仕様のあいまいさや不正確さのために、システム構築のコストやリスクが増大することが知られている。このため例えば、形式仕様言語を用いてシステムを厳密に定義することにより、こうした問題を解決しようという試みが1970年代よりなされてきたが、導入コストが高いため広く使用されるにはいたっていない。一方、機能テスト・フェーズでは、自動実行ツールを使用することにより回帰テストの生産性を上げることが日常的に行われている。しかし、回帰テスト用のテスト・スクリプト(テスト記述書)の作成は、ツールのレコード機能を使用したり、人手によるコーディングによって行われるため、作成に時間とコストがかかり、また自動実行されるテスト・スクリプトがもともとの機能要件(仕様)に合致したものかをシステム的に検証することができないという課題がある。
上記の特許文献の手法は、いずれも独自の定義に基づく仕様ファイルや表形式のファイル、あるいは状態遷移図等の人手による作成を必要とし、システム開発手法として標準化された形式仕様言語やUML(Universal Model Language)を用いた仕様の記述方法には対応できるものではない。
本発明は、これらの課題を解決するためになされたものであり、形式仕様言語やUMLモデリング記述による標準化された仕様記述の方法を用いたシステム開発において、要件定義で定められた仕様との整合性が保証され、かつ、テスト・スクリプトの作成にコストがかからないように効率的な手法を実現する機能テストのためのテスト・スクリプト生成装置等を提供することを目的とする。
本発明の第1の形態として、以下のような機能を備えるテスト・スクリプト生成装置を提供する。
(1) 情報処理システムの機能仕様からテスト仕様を生成する装置であって、前記情報処理システムの機能を記述した仕様ファイルからテスト対象のソフトウェアが生成する画面単位に、入力変数、出力変数、入力変数タイプ、および出力変数タイプを抽出する入出力変数抽出部と、前記仕様ファイルから画面遷移情報を抽出する画面遷移抽出部と、前記入力変数、前記出力変数、前記入力変数タイプ、前記出力変数および前記画面遷移情報を用いて、機能テスト実行のためのテスト・スクリプトを生成するテスト・スクリプト生成部と、を備えた装置。
(2)前記テスト・スクリプト生成部は、前記画面遷移情報から前記入力変数に対応するオブジェクトに対するアクションを表すテスト・スクリプトを生成し、前記出力変数に対して画面に表示されているテキスト情報を該出力変数から決定される期待値と比較するテスト・スクリプトを生成する、(1)に記載の装置。
(3)前記オブジェクトは、ボタン(ラジオボタン、リスト・ボックスを含む)、テキスト・フィールド、またはリスト・ボックスを含み、前記アクションは、ユーザのクリック操作、文字列の入力、またはリストからの選択に対応する、(2)に記載の装置。
(4) 前記テスト・スクリプト生成部は、画面をノード、画面遷移をエッジとする有向グラフにおいて、前記画面遷移の全てのエッジを少なくとも1回通過し、かつ冗長度が所定の値より小さいパス集合を求めることによりテスト回数の最適化を行う、(1)に記載の装置。
(5)前記パス集合は、所定の深さ優先−結合アルゴリズムによって求める、(4)に記載の装置。
(6)前記テスト・スクリプト生成部は、所定のForm画面遷移アルゴリズムによってForm要素の任意の組み合わせのテストを、最短の画面遷移で行うパスの集合を求める、(1)に記載の装置。
(7)前記仕様ファイルは、Z言語を用いて作成される、(1)に記載の装置。
(8)前記入力変数のオブジェクト・タイプを決定する優先順位が、(1)所定のプロパティ・ファイルに記述されているオブジェクト・タイプ、(2)該入力変数が属するタイプ名、(3)Linkオブジェクト・タイプの順である、(7)に記載の装置。
(9)前記テスト・スクリプトは、前記入力変数に関連付けられたオブジェクトを、テスト対象画面を表示するブラウザ内で前記オブジェクトのタイプとオブジェクト名称をキーとして動的に探索するために、アプリケーションのテスト実行時に呼び出される実行時ライブラリを用いる、(1)に記載の装置。
(10)前記仕様ファイルは、UMLのアクティビティ図により記述される、(1)に記載の装置。
(11)前記UMLのアクティビティ図は、画面要素、Form要素、および画面遷移要素のうち少なくとも一つのUML要素で構成される(10)に記載の装置。
本発明の装置は、簡単にいうと以下の処理を行うことにより、機能仕様と合致したテスト・スクリプトを自動生成することができる。
1)仕様ファイルから、それぞれの画面に対して入力変数、出力変数、およびそれぞれの変数のタイプ(型)を抽出する。
2)仕様ファイルから画面遷移情報を抽出する。
3) 2)で得られた画面遷移に現れる1つ1つの画面に対し、先頭から順番に以下の
処理を行う。
a)入力変数に対しては、それに対応するオブジェクト(ボタンやテキスト・フィールド等)に対するアクション(クリックや文字のセット)を表すスクリプトを生成する。
b)出力変数に対しては、画面に表示されているテキスト情報を出力変数から決定される期待値と比較するスクリプトを生成する。
さらに、本発明は、標準化された仕様記述の方法として、形式仕様言語であるZ言語と、UMLを用いたモデリング記述法に対応する。しかし他の仕様記述方法(例えばVDM(Vienna Development Method)等)を排除するものではない。さらに、テストされるソフトウェアの各画面をノード、画面遷移をエッジとする有効グラフを考え、そのノード、エッジ間のパスを全てカバーし、かつ冗長度の少ないテスト・スクリプトを生成するためのアルゴリズムも提供する。
また、本発明は別の形態として、上記の装置の機能を実行する方法、またはその方法の各ステップあるいはアルゴリズムをコンピュータに実行させるコンピュータ・プログラムとしても提供可能である。さらに別の形態として、このコンピュータ・プログラムを記録したコンピュータ可読媒体を含むプログラム製品としても提供可能である。
本発明によれば、形式仕様言語、またはUMLのモデリング記述法等の標準化された仕様記述の方法を用いた情報システム開発において、独自定義の仕様記述法を用いることなく、要件定義で定められた仕様との整合性が保証され、かつテスト・スクリプトの作成にコストがかからないような効率的な手法を実現するテスト・スクリプト生成装置等を提供することができる。これにより機能テストが要件定義を反映したものであることを保証すると同時に、仕様を機能テストにも流用できるため、その作成に要するコストの一部を補うこともできる。
図1は、本発明の好適な実施形態として、前述の解決手段を備えたテスト・スクリプト生成装置10の機能ブロック図である。本装置は、主要部として、入出力変数抽出部2、画面遷移抽出部3、テスト・スクリプト生成部7から構成される。また、特に図示していないが、本装置は、制御部(CPU)と記憶部を備える。また、本装置の操作員や他のシステムと交信する入出力部や通信制御部などを備えていてもよい。但し、これらの構成は一例であり、同等な機能を備えた他のバリエーションを含んでよい。本装置は、典型的にはパーソナルコンピュータや汎用コンピュータのようなコンピュータ装置で実現されるが、マイクロプロセッサ、記憶部、および適切な入出力手段を備えたその他の情報処理装置であってもよい。
本装置において入出力変数抽出部2は、開発者が記述したテスト対象システムの仕様ファイル1を入力データとして、その仕様ファイル1の記述法の特徴を利用し、画面単位にその画面で使用される入出力変数4を抽出する。このとき、入出力変数4とそれに対応する入出力変数タイプ5(入出力変数の型)を同時に抽出する。具体的な抽出方法については、後述の仕様記述の実施例ごとに説明する。
また、本装置の画面遷移抽出部3は、仕様ファイル1に含まれた画面ごとの情報を検出し、各画面間の画面遷移情報6を抽出する。具体的な抽出方法については、後述の仕様記述の実施例ごとに説明する。
さらに、本装置のテスト・スクリプト生成部7は、上述の入出力変数抽出部2と画面遷移抽出部3が出力した入出力変数4、入出力変数タイプ5、および画面遷移情報6を入力データとし、機能テスト自動実行のためのテスト・スクリプトファイル8を生成する。自動テスト実行ツール13は、生成されたテスト・スクリプトファイル8を実行することによりテスト対象アプリケーション12のテストを行う。テスト・スクリプトファイル8から呼び出された実行時ライブラリ11は、入力変数に関連付けられたオブジェクトを、テスト対象画面を表示するブラウザ内でオブジェクト・タイプとオブジェクト名称をキーとしてテスト実行時に動的に探索することができる。本発明の一つの実施例においては、このテスト・スクリプトファイルは、公知の自動テスト実行ツールであるRFT(Rational Functional Tester)(登録商標)の入力として使用できるように実装したが、自動テスト実行ツールはこれに限定されるものではない。この自動テスト実行ツール13の備えるべき条件については後述する。以下では、本発明を実施例に基づいて具体的に説明する。
<形式仕様言語としてZを用いた実装例>
ここでは、機能仕様を記述する形式仕様言語としてZを、機能テスト用の自動実行ツールとして前述のRFTを使用した実装例を以下に記す。
Zは形式仕様言語の中で最も多く使用されており、ISOによる標準化も行われている。Zは集合論と述語論理に基づいた記法を持ち、仕様はスキーマ(schema)と呼ばれる単位で記述する。図2は、「Browse」という名称を持つ単純なスキーマの例を示したものである。この例では書籍一覧から特定の本を選択すると、その要約が表示されるという仕様を表している。図2の記述でスキーマは符号23で示される部分である。スキーマ23の上部21は変数や関数の宣言を記述する宣言部を示す。例えば、変数xが集合Xの要素であることは「x:X」と表記される。ここで、変数名「book」の末尾の「?」はそれが入力変数であることを、変数名「abstract」の末尾の「!」は出力変数であることを表す。
スキーマ宣言部21では、変数名:タイプ名の形式で宣言されるので、その変数のタイプ(型)を知ることができる。さらにスキーマを組み合わせた「schema calculus」が定義されている。その一つに「schema composition」があり、複数のスキーマにまたがった状態遷移を記述できる。図2の例では、符号24で示す部分がschema compositionを表す。本実施例では、画面単位でスキーマが定義されることを仮定している(Z言語自体にはそのような制約は無い)。したがって、schema composition24によって画面遷移を記述できる。
上記のように、Zではスキーマ宣言部21に記述される変数名から、入力変数か出力変数かを決定することができる。入力変数の場合は、それに対応するオブジェクトに対するアクションを表すスクリプトを生成し、出力変数の場合はブラウザに表示されているテキスト情報を、出力変数に対応する期待値と比較するスクリプトを自動生成するというのが基本的な考え方である。しかしZで記述される仕様とRFTのプログラミング・モデルの間にはセマンティック・ギャップ(文法的な相違)が存在するため、以下に述べる4つの課題を解決する必要がある。下記(A)〜(D)にそれらを説明する。
(A)画面遷移の導出規則
Zで記述された仕様では、それがどのような画面分割や画面遷移によって実現されるかは規定されない。そのため、以下の規則を定めることにより対処する。
規則1: スキーマと画面を1対1に対応させる。
規則2: 画面遷移はスキーマ複合によって表現する。
スキーマ複合(schema composition)とはスキーマ演算の一種である。例えばスキーマAがシステムの状態をS1→S2へ遷移させ、スキーマBはS2→S3へ遷移させるとすると、2つのスキーマを複合したスキーマCは以下の[数1]のように記述され、システムの状態をS1→S3へ遷移させる。
Figure 2007323573
規則1により、スキーマA、Bはそれぞれある画面AP、BPに対応するので、スキーマCはAP→BPという画面遷移に対応すると解釈できる。
(B)入力変数とオブジェクト・タイプのマッピング
仕様の宣言部に現れる入力変数名からは、それがどのようなタイプのオブジェクトによって実装されるのかは決定できない。例えば図2のbookという変数は、ブラウザ上のテキスト・フィールドに本の名称を入力することなのか、本の名称がリンクとして表示されていて、それをクリックすることなのか判定できない。これを解決するためプロパティ・ファイルを用意し、後述する形式で変数名とオブジェクト・タイプ名のマッピングを記述する方法を採った。但し、全ての入力変数に対してこのような対応関係を記載することは煩雑なため、プロパティ・ファイルにエントリーが無い場合に適用される規則を考案した。これについては後述の実施例5で説明する。
(C)セッション情報の取り扱い
Webアプリケーションではセッション情報を保持するために、Cookie等にセッション・キーが格納される。Z言語を用いた仕様では、このセッション・キーは入力変数として記述される必要がある。一方、RFTのスクリプトはユーザ操作に対応しているため、ユーザの操作に現れないセッション・キーに関する情報は記述できない。この問題を解決するためSessionというオブジェクト・タイプにマッピングされる入力変数に対してはスクリプトを生成しないこととする。なお、入力変数がマッピングされるオブジェクト・タイプは、以下の優先順位で決定される。
1)プロパティ・ファイルに記述されているオブジェクト・タイプ
2)入力変数が属する集合名がSession、Submit(submitボタンに対応)、Password(passwordフィールドに対応)のいずれかの場合は集合名と同じオブジェクト・タイプ
3)Linkというオブジェクト・タイプ(アンカー・タグに対応。デフォルトとして使用される。)
(D)オブジェクトの実行時特定方法
オブジェクト・タイプが決定されても、オブジェクトそのものがDOM(Document Object Model)ツリーのどこに存在するかは分からない。このため、RFTが提供するAPI(Application Program Interface)を使用して動的にオブジェクトを探索する。探索のキーとなるのはオブジェクト・タイプと、リンクやボタン等の名称である。後者は仕様に記述される変数名とは一般に異なるため、RFTのデータ・プールを使用して入力変数名と実装名のマッピングを行う。データ・プールは出力変数名と期待値のマッピングにも使用し、テスト・スクリプトとデータの分離を実現する。
以下では、上記の課題に対する解決策についてより具体的に説明する。
(1)オブジェクト・タイプとcontrol.propertiesファイルについて
スキーマの宣言部の入力変数名からは、それがどのようなコントロール(ボタンやテキスト・フィールド等。以下、オブジェクト・タイプとも呼ぶ)によって実装されるかは決定できない。そのため、control.propertiesと名付けたプロパティ・ファイル内で以下の形式で入力変数名とオブジェクト・タイプ名のマッピングを記述する。
スキーマ名.入力変数名=オブジェクト・タイプ名
例えば、Confirm.user=Textという形式である。また、オブジェクト・タイプには例えば以下のものがある。
Figure 2007323573
Sessionにマッピングされる入力変数に対しては、スクリプトは生成しない。これはZ言語上ではセッション・キーは入力変数として記述せざるを得ないが、RFT上のスクリプトには(ユーザ操作に対応しないので)セッション・キーは現れないためである。
(2)オブジェクト・タイプの決定方法
control.propertiesファイルに全ての入力変数のオブジェクト・タイプへのマッピングを記述するのは煩雑なため、以下の優先順位によりオブジェクト・タイプを決定することとした。これにより、多くの場合control.propertiesファイルにマッピングを記述する必要はなくなる。
1) control.propertiesに記述されているオブジェクト・タイプ
2) 入力変数が属するタイプ名がSession,Submit,Passwordのいずれかの場合は、タイプ名と同じオブジェクト・タイプ
3) Linkオブジェクト・タイプ(デフォルトとして使用される)
(3)入力変数に対応するオブジェクトの動的探索とアクションの起動
生成されるスクリプトを簡潔な形で記述するため、各GUIオブジェクトに対し、RFT APIを使用してwrapper classを作成した。例えばorderという入力変数で表されるSubmitボタンをクリックする場合は以下のようになる。
// initialization
Submit submit = new Submit(this);
// body


submit.click(”order”);
Submitクラスのclickメソッドの内部ではまず、”order”に対応するオブジェクトをブラウザ内で動的に探索する。探索のキーとなるのはオブジェクト・タイプとボタン名称である。ここで”order”いうのは仕様に現れる入力変数名だが、実装時のボタン名称は一般には異なることが予想される。そのためSubmitクラスの中でRFTのデータ・プールにアクセスし、実装名を取得している。次いで探索されたオブジェクトに対しclick methodを呼び出している。
(4)出力変数に対応する期待値と、ブラウザ上に表示されるテキストとの比較
出力変数に対応する期待値と、ブラウザ上に表示されるテキストとの比較を行う。例えば、図2のスキーマの例ではabstractが出力変数だが、これに対する期待値をRFTのdatapoolに記述することにより、スクリプトとデータの分離を実現している。ブラウザ上に表示されるテキストを取得するため、HtmlTextというwrapper classを作成し、その内部で”Html.HtmlDocument”というクラスのオブジェクトを動的に探索する。そのテキスト属性がブラウザ上に表示されるテキストである。期待値と実測値はRFTのVerificationPointクラスを使用して比較を行うことにより、テスト終了時にテスト結果を自動的に得ることができる。
(5)テスト・スクリプト生成アルゴリズム
個々の画面がそれぞれスキーマAi(i=0, ...,n−1)で表されているとする。それらのschema composition C=A0 o A1 o , ..., o An−1は画面遷移A0→A1→...→An−1を表す。Cに対応するテスト・スクリプトを生成するアルゴリズムは以下のとおりである。
i = 0からn−1まで、以下を行う。
1)Aiの入力変数全てにつき、オブジェクト・タイプを(2)の方法により決定する。(例えばボタン)
2)決定されたオブジェクトに対しそれぞれ決まるアクションを決定する。(例えばボタンに対してはclickアクション)
3)(3)で示されるスクリプトを生成する。但し入力変数が複数ある場合、LinkまたはSubmitに対するスクリプトは最後に生成する。
4)Aiの出力変数につき、(4)の方法により期待値と実際のテキストの比較を行う。
図3、および図4は、以上で説明したスクリプトの生成方法とそれを用いた処理の流れをまとめたものである。図3において、ステップS31ではプロパティ・ファイル31を参照してオブジェクトのマッピングを行う。さらに、ステップS33では、入力変数を抽出し、オブジェクトに対するアクションを生成する。また、出力変数に対しては、ステップS32でアプリケーションの出力を期待値と比較する。その結果、機能テスト・スクリプト34が生成される。次に図4において、ステップS34で、データ・プール35を参照して、仕様上の名称と実装名とのマッピングを行う。ステップS34は、図1の実行時ライブラリ11によって実行される。そして、ステップS35では、探索キーとしてオブジェクト・タイプと名称を用いてRFIのAPIを使用したオブジェクトの動的探索を行う。
(6)有効性の検証
本発明の実施例の有効性を検証するため、eclipse上のプラグインとしてZ言語エディタを実装し、RFTと連携させた。図5はこのシステム構成を示したものである。クラス・ライブラリ56(Class Library)は、図1の実行時ライブラリ11に相当し、前述の(3)、(4)で述べたwrapper classである。Java(登録商標)で記述されたテスト・スクリプト55を実行することによって自動的にWebアプリケーションのテストを行うことができる。スクリプトは、ブラウザ上のDOMオブジェクト(リンクやボタン等)に対するアクション(クリック等)として記述される。RFT54はオブジェクトに対するアクションという形でスクリプトを記述することができ、また動的にオブジェクトを探索するAPIを備えている。検証のため、サンプル・アプリケーションの仕様をZで記述し,エディタ・メニューから呼び出されるアクションによってRFT54用の機能テスト・スクリプトを自動生成した。
以下のスクリプトの最初の2行が図2のスキーマ23に対応している。このスクリプトをRFT上で実行することによりアプリケーションの挙動が再現され、ブラウザ上に表示されるテキストと期待値との比較を自動的に行うことができた。
link.click(”book”);
htmlText.test(”abstract”);
submit.click(”order”);
htmlText.test(”prompt”)
textInput.setText(”userName”,”userValue”);
submit.click(”confirm”);
htmlText.test(”accept”);
上記の実施例1では、形式仕様言語としてZ言語、自動テスト・ツールとしてRFTを用いた場合を説明したが、形式仕様言語としては、前述したようにZ言語に限定されず、VDMなどの他の言語を使用することができる。ここで形式仕様言語が満たすべき条件としては以下のものが挙げられる。
1)画面単位で仕様を記述できること
2)画面単位で記述した仕様を組み合わせて、画面遷移を記述できること。
3)入力変数と出力変数を特定できること。
4)入力変数のタイプ(型)を取得できること
また、本発明を適用するために自動テスト・ツールはRFTに限定されるものでなく、下記の条件を満たすものであれば適用可能である。
1)オブジェクトに対するアクションという形式でスクリプトを記述できること。
2)実行時にGUIオブジェクトを、オブジェクトの属性(クラス、ラベル等)をキーに指定することによって探索できること。
従来、形式仕様からプログラムを導出する方法は数多く研究されてきたが、仕様とプログラムには抽象度に大きな違いがあるため、人手を介する事が避けられなかった。本発明の実施例では、それらとは違って、仕様と機能テストを結びつけるアプローチを採り、形式仕様から自動的に機能テスト・スクリプトを生成する方法を提案した。これは仕様と機能テストの抽象度のレベルが、既に述べたようなギャップはあるにせよ基本的には近いために可能となった。こうした手法はこれまで知られておらず、今後様々な方向への展開が可能である。例えば、1つのスキーマ複合から、正常系とエラー系を含む複数のテスト・スクリプトを生成したり、複数のデータ・プール・レコードを使用して境界値テストを行うスクリプトを生成すること等が考えられる。
ここでは、仕様の記述にUMLを使用した場合の実施例について説明する。
図6は、仕様記述にUMLを使用したシステム構成図を示したものである。この構成では、仕様の記述にUMLのアクティビティ図(アクティビティ・ダイアグラム)(符号66で示す)を、自動テスト・ツールとして前記の実施例と同様にRFT6.1.1(符号64)を使用した。ここでは、eclipse(符号65)上でUML2.0エディタ(符号61)を用いて作成されたアクティビティ図が、トランスフォ−メーションAPI(符号62)を介してテスト・スクリプト・ジェネレータ・プラグイン63によって解析され、テスト・スクリプト67が生成される。また、RFT6.1.1(符号64)は、ヘルパーJavaクラス68(図1の実行時ライブラリ11に相当する)とRFTデータ・プール69を参照して、テスト・スクリプト67を実行することによりテストを行う。以下、詳細に説明する。
(1)仕様の記述方法
まず、UMLのアクティビティ・ダイアグラムによって仕様を記述する。図7は、このアクティビティ・ダイアグラムの例を示したものであり、ここでアクティビティ・ダイアグラムに現れる各UML要素の役割は以下のとおりである。
・ CallBehaviorAction
個々の画面を表す。図7中のHome70,Browse74等
・ InputPin
テキスト・フィールド等のフォーム要素を表す。図7中のtitle79,description80等
・ ControlFlow
画面遷移を表す。図7中のbrowse81,category82等。
また、UMLプロファイルを定義し、以下のステレオタイプによってUML要素を拡張する。
・ CallBehaviorActionに対するステレオタイプ:
any(任意の画面を表す)、noTest(その画面のテキスト情報と期待値との比較を行わないこと、つまりテスト対象外であることを表す)
・ InputPinに対するステレオタイプ:
textField(テキスト・フィールドを表す)、select(リスト・ボックスを表す)、radioButton(ラジオボタンを表す)、等。
・ ControlFlowに対するステレオタイプ:
link(アンカー・タグを表す)、submit(サブミット・ボタンを表す)
図8に、これらUMLステレオタイプとその説明をまとめた。
以下に例を示す。→「例」とは???
(2)オブジェクトの動的探索とアクションの起動
生成されるスクリプトを簡潔な形で記述するため、各GUIオブジェクトに対し、RFT APIを使用してwrapper classを作成した。例えばgoというサブミット・ボタンをクリックする場合は以下のようになる。
// initialization
Submit submit = new Submit(this);
// body


submit.click(”go”);
Submitクラスの内部ではまず、”go”に対応するオブジェクトをブラウザ内で動的に探索する。探索のキーとなるのはオブジェクト・タイプとボタン名称である。ここで”go”というのは仕様に現れるサブミット・ボタン名だが、実装時のボタン名称は一般には異なることが予想される。そのためSubmitクラスの中でRFTのデータプール(datapool)にアクセスし、実装名を取得している。但し全ての仕様名に対して実装名をdatapoolに登録することは煩雑なため、datapoolに登録されていない場合は仕様上の名称がそのまま使われるという工夫がしてある。次いで探索されたオブジェクトに対しclick methodを呼び出している。
(3)画面に表示されるテキストの期待値と、ブラウザ上に表示されるテキストとの比較
画面に表示されるテキストの期待値と、ブラウザ上に表示されるテキストとの比較を行う。例えば図7でBrowse画面に対する期待値をRFTのdatapoolに記述することにより、スクリプトとデータの分離を実現している。ブラウザ上に表示されるテキストを取得するため、HtmlTextというwrapper classを作成し、その内部で”Html.HtmlDocument”というクラスのオブジェクトを動的に探索する。そのテキスト属性がブラウザ上に表示されるテキストである。期待値と実測値はRFTのVerificationPointクラスを使用して比較を行うことにより、テスト終了時にテスト結果を自動的に得ることができる。また、ブラウザ上に表示される全ての文字を期待値として入力することは煩雑なため、正規表現による期待値入力も行えるようにしてある。
(4)全てのControlFlowを通過するテスト・スクリプト生成アルゴリズム
以下のアルゴリズム(4−1)および(4−2)を続いて行うことにより、アクティビティ・ダイアグラム上の全てのControlFlowを少なくとも1回通過するテスト・スクリプトを生成する。
(4−1):幅優先探索による複数のテスト・スクリプトの生成
1)アクティビティ・ダイアグラムの開始端の直後の画面(図7の場合Home)より開始し、初期テスト・スクリプト<Home>を得る。
2)テスト・スクリプトの末端の画面を起点とするControlFlowの内、通過していないものの数(sizeと呼ぶ)だけ、以下を行う。なお<<any>>71というステレオタイプを持つ画面は任意の画面を表すことも考慮する。そのため、例えばHomeを起点とするControlFlowにはhome,browse,searchが含まれる。
3)テスト・スクリプトをsizeの数コピーし、それぞれにControlFlowの終点の画面を加える。これらのControlFlowに通過済みのマークをし、2)へ戻る。
4)全てのテスト・スクリプトに対し、その末端の画面を起点とするControlFlowでまだ通過していないものがなくなった時点で終了する。
この結果、図7の場合は以下の3つのテスト・スクリプトが生成される。
・<Home>−<Home>
・<Home>−<Browse>−<Category>−<Subcategory>−<Item>−<Home>
・<Home>−<Search>−<SearchResults>−<Item>−<Home>
(4−2):(4−1)で得られたテスト・スクリプトのマージ
(4−1)で得られたテスト・スクリプトを順番に連結する。この際、i番目のテスト・スクリプトの最後の画面とi+1番目のテスト・スクリプトの最初の画面が同じ場合は、後者を省略する。異なる場合は、アプリケーションのトップ画面(この場合Home)のURLを指定した遷移を行うことにより、i+1番目のテスト・スクリプトの最初の画面へ遷移する。この結果、図7の場合以下の1つのテスト・スクリプトに連結される。
<Home>−<Home>−<Browse>−<Category>−<Subcategory>−<Item>−(URL遷移)−<Home>−<Search>−<SearchResults>−<Item>−<Home>
以上、画面遷移のパスについてさらに詳細なアルゴリズムについては、後述する実施例3で説明する。
(5)Form要素の組み合わせを網羅的に実行するテスト・スクリプトの生成アルゴリズム
HTMLのForm要素のうち、リスト・ボックスやラジオボタンのような複数項目から有限個を選択するもの(図7ではtitleOption,descriptionOption,categorySelection)については、その組み合わせを網羅的にテストする。図7のアプリケーションの場合、titleOptionが2通り、descriptionOptionが2通り、categorySelectionが7通りあるので、合計2×2×7=28回Form要素を含む画面(Search画面)を繰り返し実行する必要がある。この繰り返し実行を最短のパスで行うため、以下のアルゴリズムを用いる。
1)Form画面を起点とし、再びForm画面に戻るパスのうち最小のものを求める。図7の場合、<Search>−<SearchResults>−<Search>が見出される。但し一般にはこのようなパスが存在するとは限らない。
2)Form画面の次の画面からURL遷移によってアプリケーションのトップ画面に遷移し、そこからForm画面へいたるパスのうち、最小のものを求める。このようなパスは必ず存在する。
3)1と2のパスの長さを比較し、短い方のパスを用いて繰り返し実行を行う。
以上のForm要素の組み合わせを網羅的にテストする最適の方法については実施例4でさらに説明する。
図9は、生成されたテスト・スクリプトの例である。符号91で示される部分は、ヘルパークラスのインスタンス化によって得られる部分を示している。また、ユーザの画面操作において、符号92で示される部分はリスト・ボックスの選択に、符号93で示される部分はテキスト・フィールドのセットに、符号94で示される部分はラジオ・ボタンの選択に、符号95で示される部分はサブミット・ボタンのクリックに対応している。また、符号96で示される部分は、テキストの比較に用いられる。
図10には、GUIオブジェクトの動的探索を示す例として、”Radio Button”を探索する場合を示してある。探索キーはClass, Name, Valueの3つであるが、まずClassキーはRadio ButtonヘルパークラスのインスタンスであることからHtml.INPUT.radioに確定する。また、selectメソッドの第1引数の”categorySelection”をキーとしてデータ・プール97を検索し、実装名”detailedSerarchForm:radio1”を得る。これがNameキーとなる。selectメソッドの第2引数である”All”についても同様にデータ・プール97上を検索するが、対応するエントリーが存在しないので仕様上の名称であるAll自体がValueキーとして使用される。これら3つのきーによりGUIオブジェクトが動的に探索され、ラジオボタン群99のうちから”All Categories”ボタンが取得される。
ここではこれまで述べてきたテスト・スクリプトについて、さらに冗長度の小さいものを生成するアルゴリズムについて説明する。
コンピュータ・アプリケーションの画面のナビゲーションは、1つのHomeノードを起点とする有向グラフとして考えることができる。図11はこの有向グラフを模式的に表したものである。画面はノードに対応して1,2等と記され、画面遷移はエッジに相当して(1,4)等と記述される。また、Homeを起点とする連続した画面遷移をパスといい、(H,1,4)等と記す。Homeを起点としない連続した画面遷移をサブパスと呼び、(1,4,6)等がある。
機能テストにおけるパス・カバレージの観点からは、
(a)全てのエッジを少なくとも1回通過するパスの集合を求めること
が必要となる。図11の場合、例えば以下の集合Aがこの条件を満たす。
集合A={(H,1,4,6),(H,2,6,H),(H,2,6,1),(H,3,5,7),(H,3,5,8,3)}
但し、この集合ではエッジH→2,2→6,H→3,3→5をそれぞれ2度通過しているので冗長である。冗長度を表すために各エッジに対して通過回数を定義する。通過回数とはパスの集合によって各エッジが何回通過されるかを表す。集合Aの場合これら4つのエッジの通過回数は2、それ以外のエッジの通過回数は1である。したがって、(a)の条件を満たし、かつ
(b)通過回数の総和がなるべく小さくなるパスの集合を求めること
が望ましい。
(1)幅優先方式
(a)の条件を満たす簡単なアルゴリズムとして、幅優先方式が考えられる。この方法は、Homeから始め、エッジが分岐するごとにパスをコピーしていく方法である。
<アルゴリズム1>
Paths = {(H)};
Output = {};
while (Pathsが空ではない) {
NextPaths = {};
for (Pathsに含まれる全てのPathについて) {
CopyNum = (Pathの末端のNodeを起点とするエッジで未通過のものの数);
if (CopyNum!= 0) {
CopyNumだけ、Pathをコピーする。;
コピーされた各パスの先端に、それぞれのエッジを追加する。;
NextPathsにそれらのパスを追加する。;

else {
OutputにPathを追加する。;


Paths = NextPaths;

結果 = Output;
図11にこの方式を適用した場合に、while文の条件判断時にPathsとOutputがどのように変化するかを図12に示す。
(2)深さ優先方式
幅優先方式で生成されるパスの集合は冗長度が高く、また生成のために一時点で使用されるメモリ量が多いという欠点がある。これらを低減させる方式として、Homeから可能な限りエッジをたどっていく深さ優先方式が考えられる。但し、単純な深さ優先方式だと通過できないエッジが生じるため、工夫が必要である。まず、以下を定義する。
定義:Homeノードからノードへの距離
Homeノードからそのノードに到達するために必要な最短のステップ数。例えば、図11でHomeノードからノード4への距離は2である。
定義:Homeノードからエッジへの距離
Homeノードからエッジの起点ノードへの距離。例えば、図11でHomeノードからエッジ(4,6)への距離は2である。
<アルゴリズム2>
Edges = {全てのエッジの集合};
Output = {};
while (Edgesが空でない) {
Edgesから、Homeからの距離が一番短いEdgeAを任意に1つ選ぶ。;
EdgeAにEdgesに属する他のエッジEdgeBを連結する。ここで(EdgeAの終点ノード)=( EdgeBの起点ノード)である。このようなEdgeBが複数存在する場合は、任意に1つを選ぶ。以下同様にEdgeC, EdgeD,...等が存在する限り、連結していく。但し、Homeに到達した場合は終了する。得られたサブパスをSubpathとする。;
Subpathに属するエッジをEdgesから取り除く。;
HomeとSubpathの起点ノードを結ぶ最短のパス(複数ある場合は任意に選択)をSubpathに連結する。得られたパスをPathとする。;
OutputにPathを追加する。;

結果 = Output;
図11の有向グラフにこの方式を適用した場合に、while文の条件判断時にEdgesとOutputがどのように変化するかを図13に示す。なお、このアルゴリズムでは任意に選択する部分が3箇所あるため、これ以外の結果になる場合もある。
(3)深さ優先−結合方式
(2)で述べた方式は(1)に比べると冗長度が小さいが、図11の有向グラフに適用した結果では(H,3,5,7)と(H,3,5,8,3)のパスにおいて(H,3,5)の部分が2度通過されている。
この点を改良した以下のアルゴリズム3を図14のフローチャートに示す。以下、「中間ノード」とはパスに含まれるノードのうち、Homeノードとも末端ノードとも異なるノードと定義する。
<アルゴリズム3>
Input = {深さ優先方式を適用した結果得られるパスの集合};
do {
Path = (Inputに含まれる)AND(末端のノードが、Inputに含まれる別のパスPathAの中間ノードと一致する);
if (Pathが存在する) {
Pathが複数存在する場合は、任意に1つ選択する;
Node = (Pathの末端ノード);
if (PathAのHomeとNodeの間の全エッジの通過回数が2以上) {
Subpath = (PathAのNodeと末端ノードの間の部分);
PathにSubpathを連結する;
PathAのHomeとNodeの間の全エッジの通過回数を1減らす;
PathAをInputから除く;


else {
break;

} while (true)
結果 = Input;
本方式を図11に適用すると、結果として{(H,1,4,6,H),(H,2,6,1),(H,3,5,8,3,5,7)}が得られる。
以上をまとめると以下のとおりである。まず、冗長度をあるパスの集合において、全エッジの通過回数の総和からエッジの数を引いたものであると定義する。各方式を図11の有向グラフに適用した場合の、冗長度の違いを図15に示した。なお、図11の場合ではこれ以上改善するのは不可能である。
ここでは、Form要素の任意の組み合わせのテストを、最短の画面遷移で行うパスの集合を求める方法について説明する。一般にアプリケーションの画面は、図16に示されるようなForm要素を有する場合が多い。図16の場合は図17で示されるようなForm要素を持つ。これらのForm要素は、図16の画面中では、Title121のリスト・ボックス(選択肢の数2とする)、Description123のリスト・ボックス(選択肢の数2とする)、Document Dated127のリスト・ボックス(選択肢の数3とする)、Display Results128のリスト・ボックス(選択肢の数5)、Serach in Categories129のラジオボタン(選択肢の数7)で示されている。但し、TextField122,124,125,126は除いてある。
Form要素を漏れなくテストするという観点からは、これらの任意の組み合わせをテストできることが望ましい。そのためには、420=2×2×3×5×7回、この画面を反復実行する必要がある。
今、この画面が図11のノード5であり、Search...ボタン130を押すことによってノード8へ遷移するものとする。Form要素の組み合わせをくまなくテストするためエッジ(5,8)を420回実行する必要がある。ノード8への遷移の直後に再びノード5へ遷移できれば最短であるが、一般には不可能である。例えばアプリケーションがWebアプリケーションの場合、ブラウザーのロケーション・フィールドにノード5のURLを指定することができるが、アプリケーションは内部でステートを保持しているためエラーになることが多い。一般にそのような強制的な遷移はHomeノードに対してのみ可能である。
したがって確実な方法は、ノード8への遷移後、Homeノードへ直接遷移し(H,3,5)というパスをたどることである。これをHome遷移方式と呼ぶ。この方式は、必ずしも最短のパスを与えるわけではない。この点を改良したアルゴリズム(Form画面遷移方式)を以下に述べる。
まず、以下の定義を行う。
定義:Formノード
FormノードとはForm要素を有するノードである。例えば、図11のノード5に相当する。
定義:Form実行結果ノード
Form実行結果ノードとは、Formノードを実行後に遷移するノードである。例えば図11のノード8に相当する。また以下、記号「+=」は、左辺のパスの最後尾に右辺のパスを連結することを表すものとする。
<アルゴリズム4>
FormノードをNodeA、Form実行結果ノードをNodeBとする。NodeAへのパスをPathAとする。HomeノードとNodeAの距離をxとする。Formノードの反復実行回数をNとする。;
NodeBからNodeAへの最短距離をDijkstra法によって求めyとし、そのサブパスをSubpathとする。到達できない場合、yは+無限大とする。;
if (x+1 > y) {
Path = PathA;
Path += (NodeA,NodeB);
For (int i=0; i<N−1; i++) {
Path += Subpath;
Path += (NodeA,NodeB);


else {
Path = null;
for (int i=0; i<N−1; i++) {
Path += PathA;
Path += (NodeA,NodeB);
Path += (NodeB,Home);

Path += PathA;
Path += (NodeA,NodeB);

結果 = Path;
図18は、アルゴリズム4を示したフローチャートである。
Home遷移方式とForm画面遷移方式を図11の有向グラフに適用した場合の、画面遷移の実行回数を図19にまとめた。Form画面遷移方式では実行回数が少なくてすむことが判る。
ここでは、データ・プールの存在や、その中のエントリーの存在を仮定しない構成を考える。
Form要素に対して、設計時に使用する名称と実装時に使用する名称は一般に異なる。例えばあるラジオボタンを設計時にはcategorySelectionと名付ける一方、実装時には(標準化などの理由により)detailedSearchForm:radio1と命名することがある。この両者のマッピングをとるために、本発明ではデータ・プールを使用することを可能にしている。但し、データ・プールは使用しない構成も可能である。その場合、設計時に使用する名称がそのまま実装時にも使用されていると仮定する。さらにこの両者は混在することが可能である。即ち、あるForm要素はデータ・プールを用いて設計時名称から実装時名称へマッピングする一方、別のForm要素は設計時名称をそのまま使用するという構成が可能である。
混在構成を可能にする実装例を図20に示す。符号180で示す行でデータ・プールにアクセスしているが、設計時名称をキーとするエントリーが存在しない場合は例外が発生し、設計時名称がそのまま使用される(符号181で示される行)。
(1)期待値での正規表現の使用
機能テスト実行時には、画面の実測値と期待値の比較が行われる。これはそれぞれの文字列の比較によって行われるが、一般に実測される文字列の量は膨大なものになりうるため、それと一致する期待値を入力することは労力を要し、また、入力ミスもあり得る。この問題に対処するため、本発明では期待値に正規表現を使用することを可能とした。例えば、実測される文字列「2006年1月16日 月曜日 Search for Location Username Password」に対して、“.*Search for Location.*”という正規表現で文字列を指定することにより、テストを成功させることができる。ここで、「.*」は、任意のゼロ以上の文字を表すメタ文字である。
図21は、図1で説明したテスト・スクリプト生成装置10の典型的な例として情報処理装置100を示したものである。以下、この情報処理装置100のハードウェア構成の一例を示す。情報処理装置100は、CPU(Central Processing Unit)1010、バスライン1005、通信I/F1040、メインメモリ1050、BIOS(Basic Input Output System)1060、パラレルポート1080、USBポート1090、グラフィック・コントローラ1020、VARM1024、音声プロセッサ1030、I/Oコントローラ1070、並びにキーボードおよびマウス・アダプタ等1100の入力手段115を備える。I/Oコントローラ1070には、フレキシブル・ディスク(FD)ドライブ1072、ハード・ディスク1074、光ディスクドライブ1076、半導体メモリ1078、等の記憶手段を接続することができる。
音声プロセッサ1030には、増幅回路1032およびスピーカ1034が接続される。また、グラフィック・コントローラ1020には、表示装置1022が接続されている。
BIOS1060は、情報処理装置100の起動時にCPU1010が実行するブートプログラムや、情報処理装置100のハードウェアに依存するプログラム等を格納する。フレキシブル・ディスクドライブ1072は、フレキシブル・ディスク1071からプログラムまたはデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050またはハード・ディスク1074に提供する。
光ディスクドライブ1076としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、CD−RAMドライブを使用することができる。この際は各ドライブに対応した光ディスク1077を使用する必要がある。光ディスク1077から光ディスクドライブ1076によりプログラムまたはデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050またはハード・ディスク1074に提供することもできる。
情報処理装置100に提供されるコンピュータ・プログラムは、フレキシブル・ディスク1071、光ディスク1077、またはメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、I/Oコントローラ1070を介して、記録媒体から読み出され、または通信I/F1040を介してダウンロードされることによって、情報処理装置100にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、図1から図20において説明したテスト・スクリプト生成装置10における動作と同一であるので省略する。
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク1071、光ディスク1077、またはメモリーカードの他に、MD等の光磁気記録媒体、テープ媒体、を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハード・ディスクまたは光ディスクライブラリー等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置100に提供してもよい。
以上の例は、情報処理装置100について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。したがって、本発明において一つの実施形態として説明した情報処理装置は、方法およびそのコンピュータ・プログラムによっても実現可能である。
本発明の装置は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。かかる場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明にかかる処理を実行させる。このプログラムは、任意の言語、コード、または表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、または(1)他の言語、コード、もしくは表記への変換、(2)他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハード・ディスク装置、ROM、MRAM、RAM等の任意のコンピュータ可読媒体に格納することができる。かかるプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。
以上、本発明を実施形態、および実施例を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲に限定されない。上記実施形態に、多様な変更または改良を加えることが可能である。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
本発明の好適な実施形態における、テスト・スクリプト生成装置10の機能ブロック図である。 本発明の実施例1において、「Browse」という名称を持つ単純なスキーマの例を示した図である。 本発明の実施例1において、スクリプトの生成方法とそれを用いた処理の流れ(1/2)を示した図である。 本発明の実施例1において、スクリプトの生成方法とそれを用いた処理の流れ(2/2)を示した図である。 本発明の実施例1において、eclipse上のプラグインとしてZ言語エディタを実装し、RFTと連携させたシステム構成を示す図である。 本発明の実施例2において、仕様記述にUMLを使用したシステム構成を示した図である。 本発明の実施例2において、UMLのアクティビティ・ダイアグラムの例を示した図である。 本発明の実施例2において、UMLステレオタイプとそのディスクリプションをまとめた図である。 本発明の実施例2において、画面遷移の実行回数を示した図である。 本発明の実施例2において、GUIオブェクトの動的探索を示す図である。 本発明の実施例3において、画面のナビゲーションを有向グラフで表した図である。 本発明の実施例3において、アルゴリズム1を図11の有向グラフに適用した場合にPathsとOutputがどのように変化するかを示した図である。 本発明の実施例3において、アルゴリズム2を図11の有向グラフに適用した場合にPathとOutputがどのように変化するかを以下に示した図である。 本発明の実施例3において、アルゴリズム3を示したフローチャートである。 本発明の実施例3において、各方式を図11の有向グラフに適用した場合の、冗長度の違いを示した図である。 本発明の実施例4において、Form要素を有するアプリケーション画面の例を示す図である。 本発明の実施例4において、Form要素と選択肢の数を示した図である。 本発明の実施例4において、アルゴリズム4を示したフローチャートである。 本発明の実施例4において、各方式による画面遷移実行回数の違いを示した図である。 本発明の実施例5において、データ・プールの存在や、その中のエントリーの存在を仮定しない構成において設計時名称と実装時名称が混在する構成を可能にする実装例を示した図である。 テスト・スクリプト生成装置10の典型的ハードウェア例として情報処理装置100を示した図である。
符号の説明
1 仕様ファイル
2 入出力変数抽出部
3 画面遷移抽出部
4 入出力変数
5 入出力変数タイプ
6 画面遷移情報
7 テスト・スクリプト生成部
8 テスト・スクリプトファイル
10 テスト・スクリプト生成装置
11 実行時ライブラリ部
12 テスト対象アプリケーション
13 自動テスト実行ツール
20 形式仕様
21 宣言部
22 公理部
23 schema
24 schema composition
31 入力変数book
32 出力変数abstract
33 プロパティ・ファイル
34 機能テスト・スクリプト
35 データ・プール
51 Z言語エディタ
52 JFaceテキストエディタ・フレームワーク
53 eclipseランタイム
54 RFT
55 テスト・スクリプト
56 クラス・ライブラリ
57 RFTテータ・プール
60 UML仕様解析部
61 UML2.0エディタ
62 トランスフォーメーションAPI
63 テスト・スクリプト・ジェネレータ・プラグイン
64 RFT6.1.1
66 アクティビティ図
67 テスト・スクリプト
68 ヘルパーJavaクラス
69 RFTテータ・プール
70 Home画面
71 All Screen
72 Search画面
73 SearchResults
74 Browse画面
75 Category画面
76 Subcategory画面
77 Item画面
78 CategorySelection
79 title
80 description
81 browse
82 category
91 ヘルパークラス・インスタンス化
92 リスト・ボックス選択
93 テキスト・フィールド・セッティング
94 ラジオボタン選択
95 サブミット・ボタン・クリック
96 テキスト比較
97 データ・プール
98 テーブル
99 ラジオボタン群
100 情報処理装置

Claims (16)

  1. ソフトウェアの機能仕様から該ソフトウェアの機能テストを実行するためのテスト・スクリプトを生成する装置であって、
    前記機能仕様を記述した仕様ファイルから前記ソフトウェアが生成させる実行時の表示画面ごとに、入力変数、出力変数、入力変数タイプ、および出力変数タイプを抽出する入出力変数抽出部と、
    前記仕様ファイルから画面遷移情報を抽出する画面遷移抽出部と、
    前記入力変数、前記出力変数、前記入力変数タイプ、前記出力変数タイプ、および前記画面遷移情報を用いて、前記機能テストの実行のためのテスト・スクリプトを生成するテスト・スクリプト生成部と、
    を備えた装置。
  2. 前記テスト・スクリプト生成部は、前記画面遷移情報に基づいて、
    前記入力変数に対しては、該入力変数に関連付けられたオブジェクトに対応するアクションを表すテスト・スクリプトを生成し、
    前記出力変数に対しては、前記ソフトウェアが実行時に生成させる表示画面に表示されるテキスト情報を該出力変数から決定される期待値と比較するテスト・スクリプトを生成する、
    請求項1に記載の装置。
  3. 前記オブジェクトは、ボタン、テキスト・フィールド、またはリスト・ボックスを含み、前記アクションは、ユーザのクリック操作、文字列の入力操作、またはリストからの選択操作を含む、請求項2に記載の装置。
  4. 前記テスト・スクリプト生成部は、画面をノード、画面遷移をエッジとする有向グラフにおいて、前記画面遷移の全てのエッジを少なくとも1回通過し、かつ前記全てのエッジの通過回数の総和から前記エッジの数を引いた冗長度が所定の値より小さくなるようなパス集合を求めることによりテスト回数の最適化を行う、請求項1に記載の装置。
  5. 前記パス集合は、所定の「深さ優先−結合アルゴリズム」によって求める、請求項4に記載の装置。
  6. 前記テスト・スクリプト生成部は、前記ソフトウェアが生成させる実行時の表示画面を構成するForm要素の任意の組み合わせのテストのため、所定の「Form画面遷移アルゴリズム」に基づいて、最短の画面遷移で行うパス集合を求める、請求項1に記載の装置。
  7. 前記仕様ファイルは、Z言語を用いて記述される、請求項1に記載の装置。
  8. 前記テスト・スクリプト生成部は、前記入力変数に関連付けられたオブジェクトのタイプを、(1)所定のコントロール・プロパティ・ファイルに記述されているオブジェクト・タイプ、(2)該入力変数の属性を表すタイプ名がSession、Submit、Passwordのいずれかの場合は、前記タイプ名と同じオフジェクト・タイプ、(3)Linkオブジェクト・タイプ、の順に低くなる優先順位に基づいて決定する、請求項7に記載の装置。
  9. 前記テスト・スクリプトは、前記入力変数に関連付けられたオブジェクトを、テスト対象画面を表示するブラウザ内で前記オブジェクトのタイプとオブジェクト名称をキーとして動的に探索するために、アプリケーションのテスト実行時に呼び出される実行時ライブラリを用いる、請求項1に記載の装置。
  10. 前記仕様ファイルは、UMLのアクティビティ図により記述される、請求項1に記載の装置。
  11. 前記UMLのアクティビティ図は、画面要素、Form要素、および画面遷移要素のうち少なくとも一つのUML要素で構成される、請求項10に記載の装置。
  12. ソフトウェアの機能仕様から該ソフトウェアの機能テストを実行するためのテスト・スクリプトを生成する方法であって、
    前記機能仕様を記述した仕様ファイルから前記ソフトウェアが生成させる実行時の表示画面ごとに、入力変数、出力変数、入力変数タイプ、および出力変数タイプを抽出するステップと、
    前記仕様ファイルから画面遷移情報を抽出するステップと、
    前記入力変数、前記出力変数、前記入力変数タイプ、前記出力変数タイプおよび前記画面遷移情報を用いて、前記機能テストの実行のためのテスト・スクリプトを生成するステップと、
    を含む方法。
  13. 前記生成するステップは、画面をノード、画面遷移をエッジとする有向グラフにおいて、前記画面遷移の全てのエッジを少なくとも1回通過し、かつ前記全てのエッジの通過回数の総和から前記エッジの数を引いた冗長度が所定の値より小さいパス集合を求めることによりテスト回数の最適化を行う、請求項12に記載の方法。
  14. 前記生成するステップは、前記ソフトウェアが生成させる表示画面を構成するForm要素の任意の組み合わせのテストのため、所定の「Form画面遷移アルゴリズム」に基づいて、最短の画面遷移で行うパス集合を求める、請求項12に記載の方法。
  15. 前記仕様ファイルは、Z言語またはUMLを用いて作成される、請求項13に記載の方法。
  16. ソフトウェアの機能仕様から該ソフトウェアの機能テストを実行するためのテスト・スクリプトを生成するコンピュータ・プログラムであって、
    コンピュータに、
    前記機能仕様を記述した仕様ファイルから前記ソフトウェアが生成させる実行時の表示画面ごとに、入力変数、出力変数、入力変数タイプ、および出力変数タイプを抽出するステップと、
    前記仕様ファイルから画面遷移情報を抽出するステップと、
    前記入力変数、前記出力変数、前記入力変数タイプ、前記出力変数タイプおよび前記画面遷移情報を用いて、前記機能テストの実行のためのテスト・スクリプトを生成するステップと、
    を実行させるコンピュータ・プログラム。
JP2006155983A 2006-06-05 2006-06-05 機能テスト・スクリプト生成装置 Expired - Fee Related JP4148527B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006155983A JP4148527B2 (ja) 2006-06-05 2006-06-05 機能テスト・スクリプト生成装置
US11/753,041 US7624380B2 (en) 2006-06-05 2007-05-24 Generating functional test scripts
US12/575,318 US7996819B2 (en) 2006-06-05 2009-10-07 Generating functional test scripts

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006155983A JP4148527B2 (ja) 2006-06-05 2006-06-05 機能テスト・スクリプト生成装置

Publications (2)

Publication Number Publication Date
JP2007323573A true JP2007323573A (ja) 2007-12-13
JP4148527B2 JP4148527B2 (ja) 2008-09-10

Family

ID=38856304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006155983A Expired - Fee Related JP4148527B2 (ja) 2006-06-05 2006-06-05 機能テスト・スクリプト生成装置

Country Status (2)

Country Link
US (2) US7624380B2 (ja)
JP (1) JP4148527B2 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009384A (ja) * 2008-06-27 2010-01-14 Fujitsu Ltd 検証支援プログラム、検証支援装置、および検証支援方法
JP2010267024A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2010267022A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2011003109A (ja) * 2009-06-22 2011-01-06 Fujitsu Ltd モデル検査プログラム、モデル検査方法、モデル検査装置
WO2012128120A1 (ja) * 2011-03-18 2012-09-27 独立行政法人産業技術総合研究所 テスト仕様生成装置、テスト仕様生成方法、およびプログラム
JP2013077048A (ja) * 2011-09-29 2013-04-25 Toyota Motor Corp 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置
JP2014044615A (ja) * 2012-08-28 2014-03-13 Nippon Telegr & Teleph Corp <Ntt> グラフィカルユーザインタフェースの網羅的な自動操作方法及び装置
KR101491848B1 (ko) 2013-06-19 2015-02-11 주식회사 큐에이엔씨 스크립트 유지보수 기능을 갖는 gui 소프트웨어 테스트 자동화 시스템 및 방법
JP2016100002A (ja) * 2014-11-18 2016-05-30 富士通株式会社 組み合わせ計算によるイベント駆動ソフトウェアのイベント・シーケンス構築
WO2018142477A1 (ja) * 2017-01-31 2018-08-09 三菱電機株式会社 要求分析装置、要求分析方法および要求分析プログラム
JP2019053510A (ja) * 2017-09-14 2019-04-04 エム・ティ・ストラテジー株式会社 テストケース自動作成装置、及びプログラム
JP2019525372A (ja) * 2016-08-26 2019-09-05 上海合福信息科技有限公司 テスト設計書の生成方法
JP2019525373A (ja) * 2016-08-26 2019-09-05 上海合福信息科技有限公司 テストケースの生成方法
JP2020173570A (ja) * 2019-04-09 2020-10-22 日本電信電話株式会社 解析装置、解析方法、及びプログラム

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917895B2 (en) * 2001-07-27 2011-03-29 Smartesoft, Inc. Automated software testing and validation system
US7966604B2 (en) * 2006-08-14 2011-06-21 Honeywell International Inc. Web browser object based automatic testing method for web applications
JP4961949B2 (ja) * 2006-10-30 2012-06-27 富士通株式会社 生成プログラム、検査プログラム、生成装置、および生成方法
US7793154B2 (en) * 2006-11-30 2010-09-07 International Business Machines Corporation Method and implementation for automating processes using data driven pre-recorded transactions
US8015039B2 (en) * 2006-12-14 2011-09-06 Sap Ag Enterprise verification and certification framework
US8209666B1 (en) * 2007-10-10 2012-06-26 United Services Automobile Association (Usaa) Systems and methods for testing interfaces and applications
US8291373B2 (en) * 2008-08-13 2012-10-16 Hewlett-Packard Development Company, L.P. Generating LoadRunner scripts
US7908519B2 (en) * 2008-11-21 2011-03-15 At&T Intellectual Property I, L.P. Trouble emulator for a rules-based diagnostic system
US20100235807A1 (en) * 2009-03-16 2010-09-16 Hitachi Data Systems Corporation Method and system for feature automation
US9507692B2 (en) 2009-04-15 2016-11-29 Oracle International Corporation Downward propagation of results for test cases in application testing
US8527953B2 (en) * 2009-06-11 2013-09-03 Accenture Global Services Limited Assessment system for choosing maintenance approaches for GUI-directed test scripts
US8949791B2 (en) * 2009-07-08 2015-02-03 Vmware, Inc. Distributed software testing using cloud computing resources
CA2713247C (en) * 2009-08-31 2015-06-16 Accenture Global Services Gmbh Integration environment generator
US20110271252A1 (en) * 2010-04-28 2011-11-03 International Business Machines Corporation Determining functional design/requirements coverage of a computer code
US8631396B2 (en) * 2010-06-03 2014-01-14 International Business Machines Corporation Schema specification to improve product consumability on installation, configuration, and/or un-installation activity
KR101009424B1 (ko) * 2010-07-01 2011-01-19 주식회사 큐에이엔씨 Gui 소프트웨어 테스트 자동화 방법 및 자동화 장치
WO2012023928A1 (en) 2010-08-17 2012-02-23 Hewlett-Packard Development Company, L.P. Providing automation code containing a representation of alternative interpretations of a user action
US10013338B2 (en) 2010-09-24 2018-07-03 Waters Technologies Corporation Techniques for automated software testing
US9400962B2 (en) 2010-10-29 2016-07-26 Fujitsu Limited Architecture for distributed, parallel crawling of interactive client-server applications
US8813034B2 (en) * 2010-12-30 2014-08-19 Sap Ag System and method for testing a software unit of an application
US9208054B2 (en) * 2011-02-14 2015-12-08 Fujitsu Limited Web service for automated cross-browser compatibility checking of web applications
US20120239986A1 (en) * 2011-03-14 2012-09-20 Moshe Eran Kraus Script execution with fallback
US8719795B2 (en) * 2011-04-12 2014-05-06 Miami International Security Exchange, Llc System and method for automating testing of computers
US9448915B2 (en) * 2011-04-13 2016-09-20 Accenture Global Services Limited Modular script designer for next generation testing system
US9942124B2 (en) * 2011-06-28 2018-04-10 Time Warner Cable Enterprises Llc Apparatus and methods for automated device testing in content distribution network
US8788886B2 (en) * 2011-08-31 2014-07-22 Apple Inc. Verification of SoC scan dump and memory dump operations
US9405664B2 (en) 2011-08-31 2016-08-02 Hewlett Packard Enterprise Development Lp Automating software testing
TWI476587B (zh) * 2011-12-01 2015-03-11 Mstar Semiconductor Inc 測試電子裝置之功能的測試方法以及測試裝置
CN103365643B (zh) * 2012-03-30 2017-07-21 Ge医疗系统环球技术有限公司 一种自动生成图形用户界面的测试脚本的方法及装置
US9323650B2 (en) * 2012-07-23 2016-04-26 Infosys Limited Methods for generating software test input data and devices thereof
US10049030B2 (en) 2012-09-18 2018-08-14 Infosys Limited System and method for test output evaluation of a JAVA component
US10339485B2 (en) * 2012-12-14 2019-07-02 International Business Machines Corporation Efficiently generating test cases
US9053238B2 (en) 2013-01-25 2015-06-09 International Business Machines Corporation Tool-independent automated testing of software
EP2951687A4 (en) * 2013-02-01 2016-08-03 Hewlett Packard Entpr Dev Lp TEST STRIP GENERATION BASED ON ABSTRACT USER TESTING
US9195456B2 (en) * 2013-04-30 2015-11-24 Hewlett-Packard Development Company, L.P. Managing a catalog of scripts
US8990777B2 (en) * 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US9734040B2 (en) 2013-05-21 2017-08-15 Microsoft Technology Licensing, Llc Animated highlights in a graph representing an application
US9280841B2 (en) 2013-07-24 2016-03-08 Microsoft Technology Licensing, Llc Event chain visualization of performance data
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
US9311062B2 (en) 2013-10-31 2016-04-12 International Business Machines Corporation Consolidating and reusing portal information
EP3069267A4 (en) 2013-11-13 2017-09-27 Microsoft Technology Licensing, LLC Software component recommendation based on multiple trace runs
IN2013CH05995A (ja) * 2013-12-20 2015-06-26 Infosys Ltd
CN104809053B (zh) * 2014-01-23 2018-08-03 阿里巴巴集团控股有限公司 一种针对控件样式的测试方法和装置
US9753843B2 (en) * 2014-11-20 2017-09-05 Accenture Global Services Limited Automated testing of web-based applications
US9703689B2 (en) 2015-11-04 2017-07-11 International Business Machines Corporation Defect detection using test cases generated from test models
US10990516B1 (en) * 2017-06-08 2021-04-27 Liberty Mutual Insurance Company Method, apparatus, and computer program product for predictive API test suite selection
US10884906B2 (en) * 2017-06-23 2021-01-05 Ge Aviation Systems Llc Generating scripts that facilitate execution of tasks within different run-time environments that utilize different languages and syntax
CN108536597A (zh) * 2018-04-11 2018-09-14 上海达梦数据库有限公司 一种终端测试方法、装置、终端设备及存储介质
US10664248B2 (en) * 2018-07-16 2020-05-26 Servicenow, Inc. Systems and methods for comparing computer scripts
CN109240913A (zh) * 2018-08-14 2019-01-18 中国平安人寿保险股份有限公司 一种网页功能验证方法、计算机可读存储介质及终端设备
JP7070328B2 (ja) * 2018-10-25 2022-05-18 日本電信電話株式会社 テストデータ生成装置、テストデータ生成方法及びプログラム
US10710239B2 (en) 2018-11-08 2020-07-14 Bank Of America Corporation Intelligent control code update for robotic process automation
US12013776B2 (en) 2020-04-03 2024-06-18 International Business Machines Corporation Intelligent application scenario testing and error detection
WO2022125111A1 (en) * 2020-12-11 2022-06-16 Hewlett-Packard Development Company, L.P. Testing nodes
DE102021201658A1 (de) 2021-02-18 2022-08-18 Continental Automotive Gmbh Testausführungssystem, Testspezifikationsvorrichtung und Verfahren zum Betreiben eines Testausführungssystems
CN115567340B (zh) * 2022-09-22 2024-04-26 重庆长安汽车股份有限公司 Can总线的测试工程生成方法、装置、设备及介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3464159B2 (ja) 1998-01-30 2003-11-05 富士通株式会社 テスト仕様書作成装置およびそのプログラムを格納した記憶媒体
US6854089B1 (en) * 1999-02-23 2005-02-08 International Business Machines Corporation Techniques for mapping graphical user interfaces of applications
US6505342B1 (en) * 2000-05-31 2003-01-07 Siemens Corporate Research, Inc. System and method for functional testing of distributed, component-based software
JP2002014845A (ja) 2000-06-28 2002-01-18 Hitachi Ltd テスト・スクリプト部品の自動生成方法および装置
US7076713B1 (en) * 2000-10-31 2006-07-11 Lucent Technologies Inc. Test generator for converting a model of computer component object behavior and stimulus values to test script
US6944848B2 (en) * 2001-05-03 2005-09-13 International Business Machines Corporation Technique using persistent foci for finite state machine based software test generation
JP2002366387A (ja) 2001-06-13 2002-12-20 Hitachi Ltd ソフトウェアプログラムの自動テストシステム
JP2003044318A (ja) 2001-08-02 2003-02-14 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
US6961873B2 (en) * 2001-09-14 2005-11-01 Siemens Communications, Inc. Environment based data driven automated test engine for GUI applications
US7290245B2 (en) * 2001-10-18 2007-10-30 Microsoft Corporation Methods and systems for navigating deterministically through a graphical user interface
JP2003337697A (ja) 2002-05-20 2003-11-28 Ul Systems Inc ビジネスシステムの開発システムおよびビジネスシステムの開発方法
US7421683B2 (en) * 2003-01-28 2008-09-02 Newmerix Corp£ Method for the use of information in an auxiliary data system in relation to automated testing of graphical user interface based applications
JP4079801B2 (ja) 2003-03-04 2008-04-23 富士通株式会社 テスト支援プログラムおよびテスト支援方法
US7451455B1 (en) * 2003-05-02 2008-11-11 Microsoft Corporation Apparatus and method for automatically manipulating software products
JP2005085182A (ja) 2003-09-11 2005-03-31 Fujitsu Ltd 試験支援システム
US7398469B2 (en) * 2004-03-12 2008-07-08 United Parcel Of America, Inc. Automated test system for testing an application running in a windows-based environment and related methods
US7913231B2 (en) * 2004-05-11 2011-03-22 Sap Ag Testing pattern-based applications
US20050268285A1 (en) * 2004-05-25 2005-12-01 International Business Machines Corporation Object oriented GUI test automation
JP2006113993A (ja) 2004-10-15 2006-04-27 Odaiba Systems:Kk インターネットシステムのためのテストシステム
US20070005300A1 (en) * 2005-05-31 2007-01-04 David Haggerty Systems and methods for graphically defining automated test procedures

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010009384A (ja) * 2008-06-27 2010-01-14 Fujitsu Ltd 検証支援プログラム、検証支援装置、および検証支援方法
JP2010267024A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2010267022A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
JP2011003109A (ja) * 2009-06-22 2011-01-06 Fujitsu Ltd モデル検査プログラム、モデル検査方法、モデル検査装置
WO2012128120A1 (ja) * 2011-03-18 2012-09-27 独立行政法人産業技術総合研究所 テスト仕様生成装置、テスト仕様生成方法、およびプログラム
JP2013077048A (ja) * 2011-09-29 2013-04-25 Toyota Motor Corp 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置
JP2014044615A (ja) * 2012-08-28 2014-03-13 Nippon Telegr & Teleph Corp <Ntt> グラフィカルユーザインタフェースの網羅的な自動操作方法及び装置
KR101491848B1 (ko) 2013-06-19 2015-02-11 주식회사 큐에이엔씨 스크립트 유지보수 기능을 갖는 gui 소프트웨어 테스트 자동화 시스템 및 방법
JP2016100002A (ja) * 2014-11-18 2016-05-30 富士通株式会社 組み合わせ計算によるイベント駆動ソフトウェアのイベント・シーケンス構築
JP2019525372A (ja) * 2016-08-26 2019-09-05 上海合福信息科技有限公司 テスト設計書の生成方法
JP2019525373A (ja) * 2016-08-26 2019-09-05 上海合福信息科技有限公司 テストケースの生成方法
WO2018142477A1 (ja) * 2017-01-31 2018-08-09 三菱電機株式会社 要求分析装置、要求分析方法および要求分析プログラム
JPWO2018142477A1 (ja) * 2017-01-31 2019-06-27 三菱電機株式会社 要求分析装置、要求分析方法および要求分析プログラム
JP2019053510A (ja) * 2017-09-14 2019-04-04 エム・ティ・ストラテジー株式会社 テストケース自動作成装置、及びプログラム
JP2020173570A (ja) * 2019-04-09 2020-10-22 日本電信電話株式会社 解析装置、解析方法、及びプログラム
JP7211228B2 (ja) 2019-04-09 2023-01-24 日本電信電話株式会社 解析装置、解析方法、及びプログラム

Also Published As

Publication number Publication date
US20100037210A1 (en) 2010-02-11
US20080072100A1 (en) 2008-03-20
JP4148527B2 (ja) 2008-09-10
US7996819B2 (en) 2011-08-09
US7624380B2 (en) 2009-11-24

Similar Documents

Publication Publication Date Title
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US9348736B2 (en) System, method, and computer readable medium for universal software testing
US9043759B1 (en) System and method for generating software unit tests simultaneously with API documentation
US9280442B1 (en) System and method for generating coverage reports for software unit tests
US8028276B1 (en) Method and system for generating a test file
JP5991695B2 (ja) 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム
JP5775829B2 (ja) ソフトウェアの構造可視化プログラムおよびシステム
JP4395761B2 (ja) プログラムテスト支援装置およびその方法
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US8661416B2 (en) Method and apparatus for defining and instrumenting reusable Java server page code snippets for website testing and production
US20130159975A1 (en) Detecting a broken point in a web application automatic test case
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
JP6486574B2 (ja) プログラムコード生成装置、プログラムコード生成方法及びプログラムコード生成プログラム
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
CN111078217A (zh) 脑图生成方法、装置和计算机可读存储介质
CN112231197A (zh) 一种页面测试的方法、装置和存储介质
JP6866270B2 (ja) Sql文抽出装置、sql文抽出方法及びプログラム
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
US8561057B2 (en) Information processing apparatus, processing method, and computer-readable recording medium having processing program recorded thereon
JP7260150B2 (ja) Webサイト設計支援装置、Webサイト設計支援方法、及びプログラム
JP6081144B2 (ja) ソースコード解析装置
Hiltemann et al. Tool development and integration into Galaxy
Freeman et al. Understanding React Projects
JP4679540B2 (ja) プログラム検証方法とシステムおよびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071205

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071221

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080514

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: 20080617

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080623

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110704

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110704

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120704

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130704

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees