JP2021179764A - 生成プログラム、生成装置、生成方法 - Google Patents

生成プログラム、生成装置、生成方法 Download PDF

Info

Publication number
JP2021179764A
JP2021179764A JP2020084312A JP2020084312A JP2021179764A JP 2021179764 A JP2021179764 A JP 2021179764A JP 2020084312 A JP2020084312 A JP 2020084312A JP 2020084312 A JP2020084312 A JP 2020084312A JP 2021179764 A JP2021179764 A JP 2021179764A
Authority
JP
Japan
Prior art keywords
screen
name
item
text
test
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.)
Withdrawn
Application number
JP2020084312A
Other languages
English (en)
Inventor
直之 松木
Naoyuki Matsuki
俊樹 頭島
Toshiki Tojima
智之 佐竹
Tomoyuki Satake
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020084312A priority Critical patent/JP2021179764A/ja
Publication of JP2021179764A publication Critical patent/JP2021179764A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】キーワード駆動型テストの内容に関するテキストを自動で生成する生成装置を提供する。【解決手段】生成装置20は、記憶部と制御部とを有し、記憶部は、テストコード3、テキスト5及び設計情報21を記憶する。制御部は、生成装置の各部を制御する処理部であって、特定部、取得部及び生成部を有する。特定部は、テストコードに出現する項目ID(例えば、「i_name」と「btnadd」)を特定するS1。取得部は、設計情報を参照することにより、特定部が特定した項目IDに対応する項目名(例えば、「名前」と、「登録ボタン」)を取得するS2。生成部は、取得部が取得した項目名をキーワード(例えば、キーワード5xとして「名前入力エリア」、キーワード5yとして「登録ボタン」)に含むテキストを生成し、記憶部に格納する。【選択図】図5

Description

本発明は、生成プログラム、生成装置、生成方法に関する。
プログラムをテストする手法の一つにキーワード駆動型テストがある。キーワード駆動型テストは、テストケースを自然言語のテキストで記述することにより、テストケースを人が理解し易いようにする技術である。このように自然言語を利用することで、テキストの可読性を向上させたり、テストのメンテナンス性を高めたりすることができる。キーワード駆動型テストは、例えば、プログラムのテストを自動実行する際に必要なテスト実装の技法として活用されている。
そのようなキーワード駆動型テストにおいては、開発者がテストコードに出現する項目から自然言語のキーワードを生成し、そのキーワードを含むテキストを手作業で記述する。これにより、開発者とは異なる第三者が、テキストに基づいてテスト内容を容易に理解することができる。
例えば、テストコードに「reserve_btn」という項目がある場合を考える。この場合には、開発者が、当該項目から自然言語の「予約ボタン」というキーワードを生成し、該キーワードを含むテキストを手作業で記述する。これにより、このテストが「予約ボタン」を押下したときの振る舞いに関するテストであることを第三者が簡単に理解できる。
しかしながら、このように開発者がテストコードからキーワードを手作業で生成するのは極めて煩雑である。
国際公開第2017/135285号
一側面によれば、キーワード駆動型テストの内容に関するテキストを自動で生成することを目的とする。
一側面によれば、コンピュータに、プログラムに含まれる項目を識別する識別子と、前記項目の名前とを対応付けた設計情報を記憶した記憶部を参照することにより、前記プログラムに対するテストの内容に出現する前記識別子に対応した前記名前を取得し、取得した前記名前を含むテキストであって、前記テストの内容に関するテキストを生成する、処理を実行させるための生成プログラムが提供される。
一側面によれば、キーワード駆動型テストの内容に関するテキストを自動で生成することができる。
図1(a)は、キーワード駆動型テストの対象となるプログラムのソースコードの模式図であり、図1(b)は、webブラウザがプログラムをレンダリングして生成したwebページの模式図である。 図2(a)は、プログラムのテストを自動で行うテストコードの模式図であり、図2(b)は、キーワード駆動型テストにおけるテキストの模式図である。 図3(a)は、テキストをコンピュータが自動的に生成することができないプログラムの模式図であり、図3(b)は、このプログラムのテストを自動で行うテストコードの模式図である。 図4(a)は、テストケースをコンピュータが自動的に生成することができない別の例について示す模式図であり、図4(b)は、そのプログラムのテストを自動で行うテストコードの模式図である。 図5は、第1実施形態に係る生成装置が行う処理について示す模式図である。 図6は、図3(b)のテストコードに基づいて生成装置がテキストを生成する場合の模式図である。 図7は、図4(b)のテストコードに基づいて生成装置がテキストを生成する場合の模式図である。 図8は、第1実施形態に係る生成装置の機能構成図である。 図9は、第1実施形態に係る生成方法のフローチャートである。 図10は、第2実施形態に係る生成装置の機能構成図である。 図11は、第2実施形態に係る設計情報の模式図である。 図12は、第2実施形態に係る操作情報の模式図である。 図13(a)は、第2実施形態に係る変換ルール情報の模式図であり、図13(b)は、第2実施形態において中間情報を生成する方法について示す模式図である。 図14は、第2実施形態に係る生成部が生成したテキストの一例を示す模式図である。 図15は、第2実施形態に係る説明文の模式図である。 図16は、第2実施形態に係る生成方法のフローチャートである。 図17は、第2実施形態に係るテキストの生成処理のフローチャートである。 図18は、第2実施形態に係るテストの実行方法のフローチャートである。 図19は、第2実施形態においてテキストから説明文を生成する方法のフローチャートである。 図20は、第1実施形態と第2実施形態の各々の生成装置のハードウェア構成図である。
本実施形態の説明に先立ち、本願発明者が検討した事項について説明する。
図1(a)は、キーワード駆動型テストの対象となるプログラム1のソースコードの模式図である。
このプログラム1は、HTML(HyperText Markup Language)形式で記述されたソースコードであって、label要素1aと、input要素1b、1cとを有する。これらの要素は、開始タグ「<」と終了タグ「>」とで囲まれた要素であって、プログラム1に含まれる項目の一例である。
このうち、label要素1aには文字列「名前」が指定される。また、input要素1bには、type属性の値として「text」が指定される。「text」は、テキストを入力する入力ボックスを画面に生成する値である。更に、input要素1bには、id属性の値として「i_name」が指定される。id属性の値は、プログラム1に含まれる項目を一意に識別する識別子の一例である。この例では、「i_name」によってinput要素1bが識別されることになる。そのid属性の値は、プログラム1の開発時に開発者によって決定される。
一方、input要素1cにおけるtype属性の値には「button」が指定される。「button」は、画面にボタンを生成する値である。また、input要素1cにはvalue属性の値として文字列「登録」が指定される。このvalue属性は、ボタンに付す名前を指定する属性である。
更に、input要素1cにおけるid属性の値には、input要素1cを識別する「btnadd」が指定される。
図1(b)は、webブラウザがプログラム1をレンダリングして生成したwebページの模式図である。
図1(b)に示すように、このwebページ2には、input要素1bに対応した入力ボックス2aと、input要素1cに対応したボタン2bとが表示される。
次に、図1(a)のプログラム1のテストを自動で行うテストコードについて説明する。
図2(a)は、プログラム1のテストを自動で行うテストコードの模式図である。
このテストコード3は、プログラム1に対するテストの内容を記述したプログラムであって、コード3a、3bを有する。コード3aは、id属性が「i_name」の入力ボックス2aに文字列「test user」を入力するコードである。また、コード3bは、id属性が「btnadd」のボタン2bをクリックするコードである。なお、「#」で始まる文は、開発者が記述したコメント文である。
このテストコード3を実行すると、入力ボックス2aに文字列「test user」を入力し、更にボタン2bをクリックしたときのプログラム1の振る舞いをテストすることができる。
但し、テストコード3を作成した開発者以外の第三者は、このテストコード3を見ただけではテストの内容を直ちに理解することはできない。また、開発者が異動した場合には、テストの内容を知らない第三者がテストコード3のメンテナンスをするのが難しくなる。
これらの問題を解決する方法として、以下のようなキーワード駆動型テストがある。
図2(b)は、キーワード駆動型テストにおけるテキストの模式図である。
このテキスト5は、図2(a)のテストコード3で実行されるテストの内容を自然言語で説明した説明文であって、説明文5a、5bを有する。この例では、プログラム1とテストコード3に基づいて、コンピュータが自動的にこのテキスト5を生成する。
説明文5aは、図2のコード3aで実行されるテストの内容を説明した文章である。この例では、テキスト5の可読性を高めるために、コンピュータが「名前入力エリア」というキーワード5xを説明文5aに記述する。
コンピュータは、コード3aのid属性の値「i_name」がプログラム1のinput要素1bに出現していることを特定し、該input要素1bの近くにあるlabel要素1aの「名前」からの類推で「名前入力エリア」というキーワード5xを生成する。
同様に、説明文5bは、図2(a)のコード3bで実行されるテストの内容を説明した文章である。この例では、コンピュータは、コード3bのid属性の値「btnadd」でプログラム1のinput要素1cを特定し、その中にあるvalue属性「登録」からの類推で「登録ボタン」というキーワード5yを生成する。
このようなテキスト5は、キーワード5x、5yを含む自然言語の文章で記述されているため、テストコード3の開発者以外の第三者にとって可読性が高くなる。そのため、第三者がテストの内容を容易に理解できると共に、第三者がテストコード3のメンテナンスをするのが容易となる。
しかしながら、以下のようにキーワード駆動型テストのテストケースをコンピュータが自動的に生成することができない例もある。
図3(a)は、テキストをコンピュータが自動的に生成することができないプログラムの模式図である。
このプログラム1は、画面表示を行わないHTML形式で記述されたプログラムである。図3(a)の例では、コマンドラインにおいて文字列「test user」を引数としてプログラム1に渡し、コマンドラインからプログラム1を実行する場合を示している。このようなプログラム1においては、画面でユーザに入力を促す必要がないため、「登録」等のような自然言語の文字列を含むinput要素1c(図1(a)参照)等の項目がなく、該文字列からキーワードを類推することができない。
図3(b)は、このプログラム1のテストを自動で行うテストコードの模式図である。
このテストコード3は、コード3cにおいて引数の文字列「test user」をid属性が「i_name」の項目に格納し、コード3dにおいてプログラム1を実行するコードである。
この例では、キーワードを類推する手がかりとなる自然言語の文字列を含んだ項目がプログラム1にないため、テストコード3の内容を説明するテキストをコンピュータが自動で生成できない。
図4(a)は、テストケースをコンピュータが自動的に生成することができない別の例について示す模式図である。
この例では、文字が付されていない再生ボタン9を表示するプログラムについて考える。このプログラムにおいては、再生ボタン9に文字を付する必要がないため、「登録」等のような自然言語の文字列を含むinput要素1c(図1(a)参照)等の項目がなく、該文字列からキーワードを類推することができない。
図4(b)は、そのプログラムのテストを自動で行うテストコードの模式図である。
このテストコード3は、再生ボタン9を表示する項目のid属性の値が「btnplay」である場合に、その再生ボタン9をクリックするコードである。
但し、前述のように元のプログラムには自然言語の文字列を含んだ項目がない。そのため、その文字列に基づいてコンピュータがキーワードを類推することができず、キーワード駆動型テストの内容を示すテキストを自動で生成することができない。
以下に、テスト対象のプログラムに自然言語の文字列がない場合であっても、キーワード駆動型テストの内容に関するテキストを自動で生成できる各実施形態について説明する。
(第1実施形態)
図5は、第1実施形態に係る生成装置が行う処理について示す模式図である。
生成装置20は、テストコード3と設計情報21とに基づいてキーワード駆動型テストの内容に関するテキスト5を生成するサーバやPC等のコンピュータである。
テストコード3は、図1(b)で説明したように、プログラム1(図1(a)参照)をテストするときのコードである。
また、設計情報21は、画面名、項目ID、及び項目名の各々を対応付けた情報である。
このうち、画面名は、プログラム1が表示する画面の名前である。また、項目IDは、プログラム1に含まれる項目を識別する識別子の一例である。図1(a)のようにプログラム1がHTML形式で記述されている場合、プログラム1の項目としてはlabel要素1aやinput要素1b、1c等がある。また、項目IDとしては各要素のid属性の値がある。そして、項目名は項目の名前である。
この設計情報21は、プログラム1の設計時に開発者が作成したプログラム1の設計書を基にして予め作成し得る。例えば、コンピュータが設計書からプログラム1を自動生成した場合には、id属性の値とその名前とを対応付けた対応表もコンピュータが自動で生成するため、その対応表を設計情報21として使用すればよい。これにより、開発者が手作業で設計情報21を作成する手間を省き、開発者の負担減を図ることができる。
また、手作業でプログラム1を開発した場合でも、上記の対応表を開発者が作成している場合には、その対応表を設計情報21として使用すればよい。
更に、設計情報21は、項目IDと項目名との対応付けがされていればそのファイル形式は特に限定されない。そのようなファイル形式としては、CSV(Comma Separated Value)、JSON(JavaScript Object Notation)、及びXML(Extensible Markup Language)の各型式がある。
本実施形態では、この設計情報21を基にして、生成装置20が以下のようにしてキーワード駆動型テストの内容に関するテキストを生成する。
まず、生成装置20は、テストコード3に出現するプログラム1の項目IDを特定し(S1)、当該項目IDに対応する項目名を設計情報21から取得する(S2)。
例えば、生成装置20は、テストコード3に出現する項目IDとして「i_name」を特定する。そして、生成装置20は、この項目ID「i_name」に対応した項目名「名前」を設計情報21から取得する。
同様に、生成装置20は、テストコード3に出現する項目ID「btnadd」を特定し、これに対応した項目名「登録ボタン」を設計情報21から取得する。
これらの項目IDは、プログラム1に含まれる項目を一意に識別するid属性の値である。そのため、本実施形態では、プログラム1の項目に対応した項目名を一意に取得できる。
次いで、生成装置20は、取得した「名前」と「登録ボタン」の各々を含むキーワード5x、5yを生成し、各キーワード5x、5yを含むテキスト5を生成する(S3)。
キーワード5xは「名前入力エリア」であるが、このうちの「名前」が、生成装置20が設計情報21から取得した項目名である。残りの「入力エリア」については、setValue等の関数名に基づいて生成装置20が類推して生成する。一方、キーワード5yの「登録ボタン」は、生成装置20が設計情報21から取得した項目名である。
テキスト5は、プログラム1に対するキーワード駆動型テストのテストケースを説明した自然言語の文章である。この例では、文「名前入力エリアに”test user”と入力する」と、文「登録ボタンをクリックする」が、テストケースを説明する文章となる。
以上により、生成装置20が行う基本的な処理を終える。
これによれば、設計情報21にある項目名を利用して生成装置20がテキスト5を生成する。そのため、図3(a)や図4(a)のようにキーワードを類推するための自然言語のテキストがプログラム中に存在しない場合であっても、そのプログラムに対するキーワード駆動型テストを説明したテキストを生成することができる。
図6は、図3(b)のテストコード3に基づいて生成装置20がテキスト5を生成する場合の模式図である。前述のように、このテストコード3は、自然言語の文字列を含んだ項目がないプログラム1(図3(a)参照)に対するテストコードである。
この例における設計情報21は、コマンド名、パス、及びパラメータ名の各々を対応付けた情報である。このうち、コマンド名は、生成装置20に対してプログラム1の実行を指示するコマンドの名前である。また、パスは、生成装置20においてプログラム1が置かれているディレクトリのパスである。そして、パラメータ名は、プログラム1内で使用するパラメータの名前である。
この場合、パス「user_add.exe」は、プログラム1自身を識別する識別子となる。そして、パラメータ名「名前」は、パス「user_add.exe」に対応付けられた名前となる。
この例では、生成装置20は、テストコード3に出現するパス「user_add.exe」を特定する(S1)。更に、生成装置20は、設計情報21を参照することにより、特定したパス「user_add.exe」に対応するパラメータ名「名前」とコマンド名「登録コマンド」を取得する(S2)。
その後、生成装置20は、取得した「名前」と「登録コマンド」の各々を含むキーワード5v、5wを生成し、これらのキーワードを含むテキスト5を生成する(S3)。
キーワード5vは「名前パラメータ」であるが、このうちの「名前」が、生成装置20が設計情報21から取得した文字列である。残りの「パラメータ」については、設計情報21の「パラメータ名」に基づいて生成装置20が類推して生成する。一方、キーワード5wの「登録コマンド」は、生成装置20が設計情報21から取得したコマンド名である。
図5の例と同様に、テキスト5は、プログラム1に対するキーワード駆動型テストのテストケースを説明した自然言語の文章である。この例では、文「名前パラメータに”test user”を設定」と、文「登録コマンドを実行する」が、テストケースを説明する文章となる。
以上により、生成装置20が行う基本的な処理を終える。
このように、本実施形態によれば、キーワードを類推する手がかりとなる自然言語の文字列を含んだ項目がないプログラムであっても、設計情報21から取得した名前からテキスト5を自動で生成することができる。
図7は、図4(b)のテストコード3に基づいて生成装置20がテキスト5を生成する場合の模式図である。前述のように、テストコード3は、再生ボタン9(図4(a)参照)に文字を付するための自然言語の文字列がないプログラムに対してテストを行うためのコードである。
この場合は、生成装置20は、テストコード3に出現する項目IDとして「btnplay」を特定し(S1)、当該項目IDに対応する項目名「再生ボタン」を設計情報21から取得する(S2)。
次いで、生成装置20は、取得した「再生ボタン」を含むキーワード5zを生成し、そのキーワード5zを含むテキスト5を生成する(S3)。
このように、本実施形態によれば、キーワードを類推する手がかりとなる自然言語の文字列を含んだ項目がないプログラムであっても、設計情報21から取得した名前からキーワード5zを自動で生成することができる。
次に、本実施形態に係る生成装置20の機能構成について説明する。
図8は、本実施形態に係る生成装置20の機能構成図である。
図8に示すように、生成装置20は、記憶部31と制御部32とを有する。
このうち、記憶部31は、テストコード3、テキスト5、及び設計情報21を記憶する。なお、生成装置20の外部にある記憶装置のリポジトリにテストコード3、テキスト5、及び設計情報21の各々を記憶させてもよい。
一方、制御部32は、生成装置20の各部を制御する処理部であって、特定部33、取得部34、及び生成部35を有する。
特定部33は、テストコード3に出現する項目IDを特定する処理部である。例えば、図5の例では、特定部33は、項目IDとして「i_name」と「btnadd」とを特定する。
取得部34は、設計情報21を参照することにより、特定部33が特定した項目IDに対応する項目名を取得する。図5の例では、取得部34は、「i_name」に対応する項目名「名前」と、「btnadd」に対応する項目名「登録ボタン」とを取得する。
そして、生成部35は、取得部34が取得した項目名をキーワードに含むテキスト5を生成し、それを記憶部31に格納する処理部である。図5の例では、生成部35は、項目名「名前」を含むキーワード5xとして「名前入力エリア」を生成し、かつ項目名「登録ボタン」をキーワード5yとして生成する。そして、生成部35は、これらのキーワード5x、5yを含むテキスト5を生成し、それを記憶部31に格納する。
図9は、本実施形態に係る生成方法のフローチャートである。
まず、特定部33がテストコード3に出現する項目IDを特定し(ステップS1)、特定した項目IDに対応する項目名を取得部34が設計情報21から取得する(ステップS2)。
そして、生成部35が、取得部34が取得した項目名をキーワードに含むテキストを備えたテキスト5を生成する(ステップS3)。
以上により、本実施形態に係る生成方法の基本処理を終える。
上記した本実施形態によれば、例えば図7に示したように、プログラム1に出現する項目の項目IDと項目名とを対応付けた設計情報21を用いて生成装置20がテキスト5を自動的に生成する。そのため、開発者がテキスト5を手作業で作成する必要がなく、テキスト5を簡単に生成することができる。
更に、このように設計情報21を利用することにより、キーワードとして使用可能な自然言語の文字列がプログラム1に存在しない場合であっても、そのプログラム1に対するテストを説明するテキスト5を生成することができる。
(第2実施形態)
第1実施形態では、記憶部31(図8参照)に予め格納されているテストコード3に基づいて、生成装置20がテキスト5を生成した。これに対し、本実施形態では、テスト対象のプログラムがwebアプリケーションプログラムである場合に、生成装置が、そのプログラムに対する操作内容をテストの内容として記録する。そして、生成装置が、記録したテストの内容に関するテキストを自動で生成する。
図10は、本実施形態に係る生成装置40の機能構成図である。
図10に示すように、生成装置40は、通信部41、入力部42、表示部43、記憶部44、および制御部45を備える。
このうち、通信部41は、インターネットやLAN(Local Area Network)等のネットワークに生成装置40を接続するためのインターフェースである。
また、入力部42は、生成装置40に各種のデータを入力するためのキーボードやマウス等の入力装置である。例えば、開発者は、入力部42を操作することにより、テスト対象となる実行中のプログラムに対し、ボタンのクリックやデータの入力等を行う。
表示部43は、制御部45から出力される各種の情報を表示するための液晶ディスプレイ等の表示装置である。例えば、表示部43は、テスト対象のプログラム1が生成した画面を表示する。
一方、記憶部44は、プログラム1、設計情報61、操作情報62、変換ルール情報63、テキスト65、及び説明文66を記憶する。なお、プログラム1、設計情報61、操作情報62、変換ルール情報63、テキスト65、及び説明文66の各々を、生成装置40の外部にある記憶装置のリポジトリに格納してもよい。その場合、生成装置40は、通信部41を介してリポジトリ内のこれらの情報を参照すればよい。
プログラム1は、HTML形式で記述されたテスト対象のwebアプリケーションプログラムである。
図11は、設計情報61の模式図である。
設計情報61は、画面ID、画面名、画面項目ID、及び画面項目名の各々を対応付けた情報である。
本実施形態では、プログラム1が表示する複数の画面の各々もプログラム1の項目の一例となる。画面IDは、これらの画面の各々を識別するid属性の値であって、画面識別子の一例である。ここでは、「tyu010」や「tyu020」等の文字列を画面IDとして採用する。
そして、画面名は、プログラム1が生成する画面の名前である。例えば、画面ID「tyu010」で識別される画面の名前は「登録画面」である。
また、画面項目IDは、画面項目識別子の一例であって、プログラム1が画面に表示する項目を識別するid属性の値である。そのような項目としては、例えば、画面に表示されるボタンや入力ボックス等の要素がある。この例では、「cuscode」等の文字列を項目IDとして採用する。
更に、画面項目名は、画面に表示される項目の名前である。例えば、画面項目ID「cuscode」で識別される画面項目の名前は「顧客コード」である。
このように画面ID、画面名、画面項目ID、及び画面項目名の各々を対応つけることにより、複数の画面を表示するプログラム1のテストに関するテキストを生成することができる。
図12は、操作情報62の模式図である。
操作情報62は、実行中のプログラム1が入力部42を介して受け付けた操作の内容を示す情報である。例えば、「ID: #tyu010---btnadd」で示される操作情報62は、画面IDが「tyu010」の画面において、id属性の値が「btnadd」のボタンがクリックされたことを示す。
本実施形態では、この操作情報62が、プログラム1に対するテストの内容を示す情報となる。但し、開発者は、操作情報62を見ただけではテストの内容を直ちには理解できない。そのため、生成装置40が、後述のように操作情報62に基づいてキーワード駆動型のテストケースを示すテキスト65を生成する。
図13(a)は、変換ルール情報63の模式図である。
変換ルール情報63は、操作情報62を画面IDと画面項目IDに変換するルールを記憶した情報である。
例えば、一行目の「画面項目:#[画面ID]---[画面項目ID]」は、操作情報62が記号「---」で連結された二つの文字列からなる場合に、一方の文字列を「画面ID」に変換し、他方を「画面項目ID」に変換するルールを示す。
本実施形態では、この変換ルール情報63に基づいて、生成装置40が操作情報62から中間情報64を生成する。
図13(b)は、その中間情報64を生成する方法について示す模式図である。
中間情報64は、「画面ID」や「画面項目ID」等の設計情報61の項目を記憶した情報である。
ここでは、図12と同様に操作情報62が「ID: #tyu010---btnadd」で表される場合を考える。この操作情報62は、二つの文字列「tyu010」、「btnadd」が記号「---」で連結された形式を有する。変換ルール情報63においてこの形式に合致するのは「画面項目」である。「画面項目」では、「画面ID」と「画面項目ID」が記号「---」で連結されている。
よって、この操作情報62は、画面IDが「tyu010」であり、かつ画面項目IDが「btnadd」の中間情報64に変換される。
再び図10を参照する。
制御部45は、生成装置40の各部を制御する処理部である。この例では、制御部45は、アプリ実行部46、記録部47、特定部48、取得部49、生成部50、テスト実行部51、及び変換部52を有する。
このうち、アプリ実行部46は、テスト対象のプログラム1を実行する処理部である。また、記録部47は、実行中のプログラム1が入力部42を介して受け付けた操作の内容を操作情報62として記録し、操作情報62を記憶部44に格納する処理部である。
特定部48は、中間情報64に現れる画面IDと画面項目IDを特定する処理部である。図13(b)の例では、特定部48は、中間情報64に現れる画面ID「tyu010」と画面項目ID「btnadd」を特定することになる。
取得部49は、設計情報61を参照することにより、特定部48が特定した画面IDと画面項目IDの各々に対応付けられた名前を取得する処理部である。図13(b)の例では、取得部49は、画面項目ID「btnadd」に対応する画面項目名「登録ボタン」と、画面ID「tyu010」に対応する画面名「登録画面」とを設計情報61(図11参照)から取得する。
また、生成部50は、取得部49が取得した名前をキーワードに含むテキスト65をテストケースとして生成し、該テキスト65を記憶部44に格納する処理部である。
図14は、生成部50が生成したテキスト65の一例を示す模式図である。
このテキスト65は、図13(b)の中間情報64に基づいて生成部50が生成したテキストである。ここでは、テキスト65は、画面ID、画面名、画面項目ID、及び画面項目名を有する。
このうち、画面IDと画面項目IDの各々は中間情報64におけるのと同一である。また、画面名と画面項目名の各々は、テキスト65におけるキーワードである。ここでは、設計情報61(図11参照)において画面ID「tyu010」に対応する「登録画面」が画面名となる。また、設計情報61において画面項目ID「btnadd」に対応する「登録ボタン」が画面項目名となる。
このようにテキスト65に「登録画面」や「登録ボタン」等の自然言語のキーワードを記述することにより、開発者は、テキスト65が説明するテストが「登録画面」と「登録ボタン」に関するものであることを容易に理解できる。
再び図10を参照する。
テスト実行部51は、テキスト65に基づいてプログラム1に対するテストを実行する処理部である。そのテストの内容は、操作情報62に記録されている操作内容と同一である。
そして、変換部52は、テキスト65の内容を自然言語の説明文66に変換し、それを記憶部44に格納する処理部である。
図15は、その説明文66の模式図である。
この説明文66は、図14のテキスト65を変換部52が変換して得られた文である。ここでは、テキスト65に現れる「登録画面」と「登録ボタン」等の自然言語を組み合わせた文章「「登録画面」の「登録ボタン」を〇〇する」を変換部52が生成する。
これにより、キーワードを羅列したテキスト65よりも可読性の高い説明文66を得ることができ、説明文66の内容に基づいて開発者がテストの内容を更に容易に理解することができる。
次に、本実施形態に係る生成方法について説明する。
図16は、本実施形態に係る生成方法のフローチャートである。
まず、記録部47が、実行中のプログラム1が受け付けた操作の内容を操作情報62として記録する(ステップS11)。例えば、プログラム1の実行中に、画面IDが「tyu010」の画面に存在するid属性の値が「btnadd」のボタンを開発者がクリックした場合は、記録部47は、「ID: #tyu010---btnadd」で示される操作情報62を記録する。
次に、特定部48が、操作情報62にid属性が存在するかどうかを判定する(ステップS12)。
操作情報62が「ID: #tyu010---btnadd」で示される場合は、「tyu010」と「btnadd」がid属性であるため、特定部48はid属性があると判断する。
一方、id属性がないプログラムを実行している場合には、特定部48はid属性がないと判断する。この場合には、id属性である画面IDや画面項目IDを格納した設計情報61を利用してテキスト65を生成することができない。よって、この場合は、ステップS13に移り、生成部50が、id属性を使用しないでテキスト65を生成する。
一例として、生成部50は、生成装置40においてプログラム1が格納されてディレクトリのパス「/HTML[1]/BUTTON[1]」をテキスト65として生成する。
一方、操作情報62にid属性がある場合(ステップS12:肯定)はステップS14に移る。
ステップS14においては、特定部48が、操作情報62の記述形式が変換ルール情報63の形式に合致するかを判定する。
例えば、「ID: #tyu010---btnadd」で示される操作情報62は、変換ルール情報63(図13(a)参照)の一行目の形式と合致する。
一方、「ID:#other_item」で示される操作情報62は、変換ルール情報63(図13(a)参照)のいずれの行の形式とも一致しない。この場合には、変換ルール情報63を用いて操作情報62を設計情報61の項目に変換できないため、設計情報61を利用してテキスト65を生成することができない。
よって、この場合は、ステップS15に移り、生成部50が、操作情報62に含まれるid属性を利用してテキスト65を生成する。例えば、「ID:#other_item」で示される操作情報62において「other_item」がid属性である場合は、生成部50は、テキスト65として「other_item」を生成する。
一方、操作情報62の記述形式が変換ルール情報63の形式に合致する場合(ステップS14:肯定)はステップS16に移る。
ステップS16においては、特定部48が、操作情報62に含まれる全てのid属性が設計情報61(図11参照)に存在するかを判定する。一例として、操作情報62が「ID: #tyu010---btnadd」で表される場合は、特定部48は、id属性の「btnadd」と「tyu010」の両方が設計情報61に存在すると判定する。
一方、操作情報62が「ID: #tyu010---noexist」で表される場合は、特定部48は、id属性の「noexist」が設計情報61に存在しないと判定する。この場合には、設計情報61を利用してテキスト65を生成することができないため、前述のステップS15において生成部50が操作情報62に含まれるid属性を利用してテキスト65を生成する。例えば、上記のように操作情報62が「ID: #tyu010---noexist」で表される場合は、生成部50は、テキスト65として「ID: #tyu010---noexist」を生成する。
また、操作情報62に含まれる全てのid属性が設計情報61に存在する場合(ステップS16:肯定)はステップS17に移る。
ステップS17においては、生成装置40が、設計情報61に基づいたテキスト65の生成処理を行う。その生成処理の詳細については後述する。
以上により、本実施形態に生成方法の基本的な処理を終える。
次に、ステップS17におけるテキスト65の生成処理について説明する。
図17は、ステップS17におけるテキスト65の生成処理のフローチャートである。
まず、特定部48が、変換ルール情報63に基づいて、操作情報62から中間情報64を生成する(ステップS21)。例えば、操作情報62が「ID: #tyu010---btnadd」で表される場合は、特定部48は、変換ルール情報63(図13(a))に基づいて、設計情報61の画面ID「tyu010」と画面項目ID「btnadd」とを含む中間情報64を生成する。
次に、特定部48が、中間情報64に出現する画面IDと画面項目IDの各々を特定する(ステップS22)。上記の例では、特定部48は、画面IDとして「tyu010」を特定し、画面項目IDとして「btnadd」を特定する。
次いで、取得部49が、設計情報61を参照することにより、特定部48が特定した画面IDと画面項目IDの各々に対応する名前を取得する(ステップS23)。上記の例では、取得部49は、画面ID「tyu010」に対応する画面名「登録画面」と、項目ID「btnadd」に対応する画面項目名「登録ボタン」とを設計情報61(図11参照)から取得する。
続いて、生成部50が、取得部49が取得した名前を含むテキスト65を生成する(ステップS24)。上記の例では、生成部50は、画面名「登録画面」と画面項目名「登録ボタン」とを含むテキスト65を生成する。本実施形態では、このテキスト65が、プログラム1に対するテストの内容を示すキーワード駆動型テストのテストケースを表すことになる。
以上により、テキストの生成処理の基本的な処理を終える。
本実施形態によれば、記録部47が、プログラム1が受け付けた操作の内容を操作情報62に記録する(ステップS11)。これにより、操作情報62から得た中間情報64に基づいて、生成部50がテストの内容に関するテキスト65を自動で生成することができる。
しかも、生成部50は、テストの内容を表す中間情報64における画面項目IDや画面IDに対応した名前を設計情報61から取得し、その名前を含むテキスト65を生成する。その名前はキーワードとして機能するためテキスト65の可読性が高まり、テキスト65に基づいて開発者がテストの内容を容易に把握することが可能となる。
更に、このように生成部50が自動でテキスト65を生成することにより、開発者が手作業でテキスト65を生成する必要がなく、開発者の負担を減らすこともできる。
次に、テキスト65に基づいたテストの実行方法について説明する。
図18は、本実施形態に係るテストの実行方法のフローチャートである。
まず、テスト実行部51が、テキスト65内の画面IDと画面項目IDの各々が設計情報61に存在するかを判定する(ステップS31)。一例として、テキスト65内の画面IDと画面項目IDがそれぞれ「tyu010」と「btnadd」である場合は、テスト実行部51は、これらが設計情報61に存在すると判定する。
このように画面IDと画面項目IDの各々が設計情報61に存在する場合(ステップS31:肯定)はステップS32に移る。
ステップS32においては、テスト実行部51が、変換ルール情報63を参照することにより、テキスト65から操作情報62を再現する。上記の例では、テスト実行部51は、テキスト65における画面IDが「tyu010」であり、かつ画面項目IDが「btnadd」であることを特定する。そして、テスト実行部51は、変換ルール情報63(図13(a)参照)の一行目に基づいて、画面IDの「tyu010」と画面項目IDの「btnadd」とを記号「---」で連結した文字列を含む「ID:#tyu010---btnadd」を操作情報62として再現する。
そして、テスト実行部51が、この操作情報62に基づいて、プログラム1のテストを実行する(ステップS33)。上記の例では、テスト実行部51は、画面ID「tyu010」で識別される画面に表示されている項目のうち、画面項目ID「btnadd」で識別されるボタンをクリックするテストを実行する。
一方、テキスト65内の画面IDと画面項目IDのいずれかが設計情報61に存在しない場合(ステップS31:否定)は、このようにテキスト65からテスト内容を再現することができない。よって、この場合は、ステップS34に移り、テスト実行部51がテキスト65に即してプログラム1に対してテストを行う。
例えば、テキスト65に「/HTML[1]/BUTTON[1]」等のパスが記述されている場合は、テスト実行部51は、そのパスで指定される実行プログラム「BUTTON[1]」を実行することによりテストを行う。
また、テキスト65に「ID:#tyu010---noexist」と記述されている場合は、テスト実行部51は、画面ID「tyu010」で識別される画面に表示されている項目のうち、画面項目ID「noexist」で識別される項目を操作する。
更に、テキスト65に「ID:#other_item」という文字列が記述されている場合は、テスト実行部51は、この文字列で指定される操作を実行中のプログラム1に対して行う。
以上により、本実施形態に係るテストの実行方法の基本的な処理を終える。
本実施形態によれば、テキスト65から再現した操作情報62に基づいてテスト実行部51がテストを実行するため、プログラム1をテストするためのテストコードを不要にすることができる。
次に、テキスト65から説明文66を生成する方法について説明する。
図19は、本実施形態においてテキスト65から説明文66を生成する方法のフローチャートである。
まず、変換部52が、テキスト65内の名前が設計情報61に存在するかを判定する(ステップS41)。例えば、テキスト65内の画面名が「登録画面」であり、画面項目名が「登録ボタン」である場合は、変換部52は、これらの名前が設計情報61に存在すると判定する。
このように名前が設計情報61に存在する場合(ステップS41:肯定)はステップS42に移る。
ステップS42においては、変換部52が、テキスト65内の名前が記述された説明文66にテキスト65を変換する。その説明文66は、テスト時における操作の対象を説明した文章である。
例えば、上記の例のように名前が「登録画面」と「登録ボタン」である場合には、変換部52は、「「登録画面」の「登録ボタン」を〇〇する。」という説明文66にテキスト65を変換する。この説明文66においては、「「登録画面」の「登録ボタン」」がテスト時における操作の対象となる。
一方、テキスト65内の名前が設計情報61に存在しない場合(ステップS41:否定)は、このように名前が記述された説明文66を生成することができない。よって、この場合は、ステップS43に移り、変換部52が、テキスト65を説明文66に埋め込む。
例えば、テキスト65に「/HTML[1]/BUTTON[1]」と記述されている場合は、変換部52は、「/HTML[1]/BUTTON[1]を〇〇する。」という説明文66を生成する。
また、テキスト65に「ID:#tyu010---noexist」と記述されている場合は、変換部52は、「ID:#tyu010---noexistを〇〇する。」という説明文66を生成する。
更に、テキスト65に「ID:#other_item」と記述されている場合は、変換部52は、「ID:#other_itemを〇〇する。」という説明文66を生成する。
以上により、テキスト65から説明文66を生成する方法の基本的な処理を終える。
上記した本実施形態では、変換部52が、テスト時の操作対象を説明する説明文66にテキスト65を変換する(ステップS42)。そのため、テキスト65に基づいて開発者がテストの内容をより一層簡単に把握することができる。
(ハードウェア構成)
次に、第1実施形態と第2実施形態の各々の生成装置20、40のハードウェア構成について説明する。
図20は、第1実施形態と第2実施形態の各々の生成装置20、40のハードウェア構成図である。
図20に示すように、生成装置20、40は、記憶装置101、メモリ102、プロセッサ103、通信インターフェース104、表示装置105、及び入力装置106を有する。これらの各部は、バス107により相互に接続される。
このうち、記憶装置101は、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性のストレージであって、本実施形態に係る生成プログラム110を記憶する。
なお、生成プログラム110をコンピュータが読み取り可能な記録媒体108に記録させておき、プロセッサ103に記録媒体108の生成プログラム110を読み取らせるようにしてもよい。
そのような記録媒体108としては、例えばCD-ROM(Compact Disc - Read Only Memory)、DVD(Digital Versatile Disc)、及びUSB(Universal Serial Bus)メモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体108として使用してもよい。これらの記録媒体108は、物理的な形態を持たない搬送波のような一時的な媒体ではない。
更に、公衆回線、インターネット、及びLAN(Local Area Network)等に接続された装置に生成プログラム110を記憶させてもよい。その場合は、プロセッサ103がその生成プログラム110を読み出して実行すればよい。
一方、メモリ102は、DRAM(Dynamic Random Access Memory)等のようにデータを一時的に記憶するハードウェアであって、その上に生成プログラム110が展開される。
プロセッサ103は、生成装置20、40の各部を制御するCPU(Central Processing Unit)やGPU(Graphical Processing Unit)等のハードウェアである。また、プロセッサ103は、メモリ102と協働して生成プログラム110を実行する。
このようにメモリ102とプロセッサ103とが協働して生成プログラム110を実行することにより、生成装置20の制御部32(図8参照)と生成装置40の制御部45(図10参照)が実現される。その制御部32には、特定部33、取得部34、及び生成部35が含まれる。また、制御部45には、アプリ実行部46、記録部47、特定部48、取得部49、生成部50、テスト実行部51、及び変換部52が含まれる。
また、記憶部31(図8参照)と記憶部44(図10参照)の各々は、記憶装置101とメモリ102によって実現される。
更に、通信インターフェース104は、生成装置40をインターネットやLAN等のネットワークに接続するためのNIC(Network Interface Card)等のハードウェアである。その通信インターフェース104により図10の通信部41が実現される。
そして、表示装置105は、表示部43(図10参照)を実現するための液晶ディスプレイやタッチパネル等のハードウェアである。
また、入力装置106は、入力部42(図10参照)を実現するためのキーボードやマウス等のハードウェアである。例えば、開発者は、入力装置106を操作することにより、テスト対象となる実行中のプログラムに対してクリックやデータの入力等の種々の操作を行うことになる。
1…プログラム、2…webページ、2a…入力ボックス、2b…ボタン、3…テストコード、5…テキスト、5a、5b…説明文、5v〜5z…キーワード、9…再生ボタン、10…テストコード、20…生成装置、21…設計情報、31…記憶部、32…制御部、33…特定部、34…取得部、35…生成部、40…生成装置、41…通信部、42…入力部、43…表示部、44…記憶部、45…制御部、46…アプリ実行部、47…記録部、48…特定部、49…取得部、50…生成部、51…テスト実行部、52…変換部、61…設計情報、62…操作情報、63…変換ルール情報、64…中間情報、65…テキスト、66…説明文、101…記憶装置、102…メモリ、103…プロセッサ、104…通信インターフェース、105…表示装置、106…入力装置、107…バス、108…記録媒体、110…生成プログラム。

Claims (9)

  1. コンピュータに、
    プログラムに含まれる項目を識別する識別子と、前記項目の名前とを対応付けた設計情報を記憶した記憶部を参照することにより、前記プログラムに対するテストの内容に出現する前記識別子に対応した前記名前を取得し、
    取得した前記名前を含むテキストであって、前記テストの内容に関するテキストを生成する、
    処理を実行させるための生成プログラム。
  2. 前記項目は、前記プログラムが生成する画面と、前記プログラムが前記画面に表示する画面項目とを含み、
    前記識別子は、前記画面を識別する画面識別子と、前記画面項目を識別する画面項目識別子とを含み、
    前記名前は、前記画面の名前である画面名と、前記画面項目の名前である画面項目名とを含み、
    前記設計情報には、前記画面識別子、前記画面項目識別子、前記画面名、及び前記画面項目名とが対応付けられており、
    前記コンピュータは、
    前記設計情報を参照することにより、前記テストの内容に出現する前記画面識別子と前記画面項目識別子の各々に対応付けられた前記画面名と前記画面項目名とを取得する、
    ことを特徴とする請求項1に記載の生成プログラム。
  3. 前記プログラムは、HTMLで記述されたソースコードであり、
    前記項目は、前記ソースコードに記述された開始タグと終了タグとで囲まれた要素であり、
    前記識別子は、前記要素のid属性の値であることを特徴とする請求項1に記載の生成プログラム。
  4. 前記コンピュータに、
    実行中の前記プログラムが受け付けた操作の内容を前記テストの内容として記録する処理を実行させるための請求項1に記載の生成プログラム。
  5. 前記コンピュータに、
    前記テキストに基づいて前記プログラムに対する前記テストを実行する、
    処理を実行させるための請求項1に記載の生成プログラム。
  6. 前記コンピュータに、
    前記テストにおける操作の対象を説明する説明文に前記テキストを変換する、
    処理を実行させるための請求項1に記載の生成プログラム。
  7. 前記コンピュータに、
    前記テストのテストコードに出現する前記識別子に対応した前記名前を特定する、
    処理を実行させるための請求項1に記載の生成プログラム。
  8. プログラムに含まれる項目を識別する識別子と、前記項目の名前とを対応付けた設計情報を記憶した記憶部を参照することにより、前記プログラムに対するテストの内容に出現する前記識別子に対応した前記名前を取得する取得部と、
    取得した前記名前を含むテキストであって、前記テストの内容に関するテキストを生成する生成部と、
    を有することを特徴とする生成装置。
  9. コンピュータが、
    プログラムに含まれる項目を識別する識別子と、前記項目の名前とを対応付けた設計情報を記憶した記憶部を参照することにより、前記プログラムに対するテストの内容に出現する前記識別子に対応した前記名前を取得し、
    取得した前記名前を含むテキストであって、前記テストの内容に関するテキストを生成する、
    ことを特徴とする生成方法。
JP2020084312A 2020-05-13 2020-05-13 生成プログラム、生成装置、生成方法 Withdrawn JP2021179764A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020084312A JP2021179764A (ja) 2020-05-13 2020-05-13 生成プログラム、生成装置、生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020084312A JP2021179764A (ja) 2020-05-13 2020-05-13 生成プログラム、生成装置、生成方法

Publications (1)

Publication Number Publication Date
JP2021179764A true JP2021179764A (ja) 2021-11-18

Family

ID=78511494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020084312A Withdrawn JP2021179764A (ja) 2020-05-13 2020-05-13 生成プログラム、生成装置、生成方法

Country Status (1)

Country Link
JP (1) JP2021179764A (ja)

Similar Documents

Publication Publication Date Title
KR101120756B1 (ko) 사용자 인터페이스 상에서의 사용자 액션을 설명하는텍스트를 자동으로 생성하는 시스템, 방법 및 그 컴퓨터실행가능 명령어를 포함하는 컴퓨터 판독가능 매체
US20080082965A1 (en) Providing globalization functionalities for javascript applications
JP2007323573A (ja) 機能テスト・スクリプト生成装置
US20150317288A1 (en) Method and system to maintain a web page
JP2008117093A (ja) ユーザ操作記録・再現方法及び装置
JP2004523013A (ja) Webベースの説明
US20040205509A1 (en) System and method for comparing parsed XML files
US20030177442A1 (en) System and method for comparing hashed XML files
JP2006244195A (ja) プログラムテスト支援装置およびその方法
JP2009217299A (ja) コンテンツ中のアクセシビリティに関する問題箇所を他人へ効果的に伝達するためのコンピュータ、方法、プログラム
WO2010044150A1 (ja) プログラム変更管理装置、プログラム変更管理プログラムおよびプログラム変更管理方法
JP4795404B2 (ja) 動作検証装置および動作検証プログラム
JP2021179764A (ja) 生成プログラム、生成装置、生成方法
WO2020105156A1 (ja) シナリオ生成装置、シナリオ生成方法およびシナリオ生成プログラム
JP6231260B2 (ja) 画面制御システム、画面制御プログラム、画面作成支援プログラム及び画面制御方法
US20150317404A1 (en) Accessing Content in a Rich Internet Application
US7689905B1 (en) Containment of terminal application run-time data for viewing when disconnected from a host server
CN113296759A (zh) 用户界面处理方法、用户界面处理系统、设备及存储介质
JP2013145443A (ja) テストコード生成装置、テストコード生成方法、テストコード生成プログラム
CN112699642A (zh) 复杂医疗文书的索引提取方法及装置、介质及电子设备
JP2012523640A (ja) 複合システムの開発または使用を支援するための方法
JP2003067421A (ja) 情報処理装置および情報処理方法、記録媒体、並びにプログラム
JP5359704B2 (ja) プログラム生成システムおよびプログラム生成装置およびプログラム生成方法およびプログラムならびに記録媒体
JP2014059699A (ja) デモアプリケーション生成システムおよびデモアプリケーション生成プログラム
JP7163879B2 (ja) データフロー生成装置、その方法、およびそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230209

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240129