(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-21
(45)【発行日】2022-01-31
(54)【発明の名称】プログラムの検査装置、プログラムの検査方法及びプログラムの検査プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20220124BHJP
【FI】
G06F11/36 188
(21)【出願番号】P 2019159826
(22)【出願日】2019-09-02
【審査請求日】2021-01-07
(73)【特許権者】
【識別番号】312014421
【氏名又は名称】株式会社Trys
(73)【特許権者】
【識別番号】505248152
【氏名又は名称】ポールトゥウィン株式会社
(74)【代理人】
【識別番号】110002516
【氏名又は名称】特許業務法人白坂
(72)【発明者】
【氏名】安川 昌平
(72)【発明者】
【氏名】大竹 慎太郎
(72)【発明者】
【氏名】坂倉 央
【審査官】多賀 実
(56)【参考文献】
【文献】特許第6438612(JP,B1)
【文献】特開2016-004576(JP,A)
【文献】特開2016-197368(JP,A)
【文献】切貫 弘之 外4名 ,「探索的テストと操作の記録を組み合わせた新たなテスト手法の提案」,電子情報通信学会技術研究報告 [online],一般社団法人電子情報通信学会,2019年05月17日,第119巻, 第56号,pp.43-48,[2019年6月24日 検索], インターネット<URL: https://www.ieice.org/ken/user/index.php?cmd=download&p=YEjF&t=IEICE-KBSE&l=57df8fa478d645fb26045e2762d2ba89277851794f79f693de48961f1887ea26&lang=>
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
G06F 11/07
G06F 11/22-11/36
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
検査対象のプログラムが記憶された記憶部と、
前記記憶部に記憶された前記プログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出部と、
前記抽出部によって抽出された画面と、その画面内に配される前記ボタンと、前記ボタンが操作された際に遷移する遷移画面とに基づいて、前記プログラムが実行された際の遷移構造を取得する取得部と、
前記取得部で取得された遷移構造に基づいて、前記プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成部と、
前記プログラムを実行させ、前記作成部によって作成された行動モデルに応じて、画面内に配される前記ボタンを操作することにより画面を順次遷移させる検査部と、
前記検査部によって画面を順次遷移させる際に前記プログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成部と、
を備えるプログラムの検査装置。
【請求項2】
前記作成部は、前記行動モデルとして、検査対象の前記プログラムとは異なる複数の他のプログラムが実行された場合にユーザが前記他のプログラムの内容を進行させる際の行動を予め学習し、その学習の結果と、前記取得部によって取得される前記遷移構造とに基づいて、検査対象の前記プログラムが実行された場合に画面に配される1つ又は複数のボタンのうちの1つが操作されることの行動の内容を生成する
請求項1に記載のプログラムの検査装置。
【請求項3】
前記抽出部は、画面に基づいて取得されるハッシュ値、画面に基づいて取得される特徴ベクトル、及び、画面内に配されるボタンの位置情報のうちの少なくとも1つに基づいて画面の同一性を判断することにより、同一画面を抽出することを回避する
請求項1又は2に記載のプログラムの検査装置。
【請求項4】
前記記憶部に記憶される前記プログラムは、ゲームのプログラムである
請求項1~3のいずれか1項に記載のプログラムの検査装置。
【請求項5】
コンピュータが、
検査対象のプログラムを記憶部に記憶する記憶ステップと、
前記記憶部に記憶された前記プログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出ステップと、
前記抽出ステップによって抽出された画面と、その画面内に配される前記ボタンの種類と、前記ボタンが操作された際に遷移する遷移画面とに基づいて、前記プログラムが実行された際の遷移構造を取得する取得ステップと、
前記取得ステップで取得された遷移構造に基づいて、前記プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成ステップと、
前記プログラムを実行させ、前記作成ステップによって作成された行動モデルに応じて、画面内に配される前記ボタンを操作することにより画面を順次遷移させる検査ステップと、
前記検査ステップによって画面を順次遷移させる際に前記プログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成ステップと、
を実行するプログラムの検査方法。
【請求項6】
コンピュータに、
検査対象のプログラムが記憶される記憶機能と、
前記記憶機能に記憶された前記プログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出機能と、
前記抽出機能によって抽出された画面と、その画面内に配される前記ボタンの種類と、前記ボタンが操作された際に遷移する遷移画面とに基づいて、前記プログラムが実行された際の遷移構造を取得する取得機能と、
前記取得機能で取得された遷移構造に基づいて、前記プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成機能と、
前記プログラムを実行させ、前記作成機能によって作成された行動モデルに応じて、画面内に配される前記ボタンを操作することにより画面を順次遷移させる検査機能と、
前記検査機能によって画面を順次遷移させる際に前記プログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成機能と、
を実現させるプログラムの検査プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムの検査装置、プログラムの検査方法及びプログラムの検査プログラムに関する。
【背景技術】
【0002】
従来から、例えば、電子機器、並びに、ゲーム及びアプリ等のプログラム等では、出荷の前段階において動作を確認する検査が行われている。特許文献1には、電子機器の検査装置等が開示されている。特許文献1に記載された検査装置は、テレビジョン受像機を検査する装置であり、テレビジョン受像機を操作するコマンドの手順を順次実行し、それに応じてテレビジョン受像器が予め決めた正常な動作を行わなかった場合、及び、予め決めた異常な動作を行った場合に、エラーとして検出する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、プログラムは処理内容が複雑になってきているため、検査を行う際の人員の労力及び作業時間が増加する傾向にあり、それに伴って検査の費用を含めたプログラムの開発費用が増加する要因となっている。また、プログラムの検査を行う専用の検査プログラム等を開発した場合でも、検査プログラムは1種類のプログラムに対して専用の検査を行うことができるのみであり、他種のプログラムについては検査を行うことができなかった。
【0005】
本発明は、種々のプログラムについて検査を行うことができる、プログラムの検査装置、プログラムの検査方法及びプログラムの検査プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
一態様のプログラムの検査装置は、検査対象のプログラムが記憶された記憶部と、記憶部に記憶されたプログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出部と、抽出部によって抽出された画面と、その画面内に配されるボタンと、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得部と、取得部で取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成部と、プログラムを実行させ、作成部によって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査部と、検査部によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成部と、を備える。
【0007】
一態様のプログラムの検査装置では、作成部は、行動モデルとして、検査対象のプログラムとは異なる複数の他のプログラムが実行された場合にユーザが他のプログラムの内容を進行させる際の行動を予め学習し、その学習の結果と、取得部によって取得される遷移構造とに基づいて、検査対象のプログラムが実行された場合に画面に配される1つ又は複数のボタンのうちの1つが操作されることの行動の内容を生成することとしてもよい。
【0008】
一態様のプログラムの検査装置では、抽出部は、画面に基づいて取得されるハッシュ値、画面に基づいて取得される特徴ベクトル、及び、画面内に配されるボタンの位置情報のうちの少なくとも1つに基づいて画面の同一性を判断することにより、同一画面を抽出することを回避することとしてもよい。
【0009】
一態様のプログラムの検査装置では、記憶部に記憶されるプログラムは、ゲームのプログラムであってもよい。
【0010】
一態様のプログラムの検査方法では、コンピュータが、検査対象のプログラムを記憶部に記憶する記憶ステップと、記憶部に記憶されたプログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出ステップと、抽出ステップによって抽出された画面と、その画面内に配されるボタンの種類と、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得ステップと、取得ステップで取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成ステップと、プログラムを実行させ、作成ステップによって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査ステップと、検査ステップによって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成ステップと、を実行する。
【0011】
一態様のプログラムの検査プログラムは、コンピュータに、検査対象のプログラムが記憶される記憶機能と、記憶機能に記憶されたプログラムが実行された場合に表示部に表示される画面と、その画面内に配されるボタンとを抽出する抽出機能と、抽出機能によって抽出された画面と、その画面内に配されるボタンの種類と、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得機能と、取得機能で取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成機能と、プログラムを実行させ、作成機能によって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査機能と、検査機能によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成機能と、を実現させる。
【発明の効果】
【0012】
一態様のプログラムの検査装置は、検査対象のプログラムが実行された際の遷移構造を取得する取得部と、その遷移構造に基づいてプログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成部と、プログラムを実行させ、その行動モデルに応じて画面内に配されるボタンを操作することにより画面を順次遷移させる検査部と、検査部によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成部と、を備えるので、種々のプログラムについて検査を行うことができる。
また、一態様のプログラムの検査方法及びプログラムの検査プログラムは、上述した一態様のプログラムの検査装置と同様の効果を奏することができる。
【図面の簡単な説明】
【0013】
【
図1】一実施形態に係る検査装置について説明するためのブロック図である。
【
図2】表示部に表示される画面の第1例について説明するための図である。
【
図3】表示部に表示される画面の第2例について説明するための図である。
【
図4】表示部に表示される画面の第3例について説明するための図である。
【
図5】表示部に表示される画面の第4例について説明するための図である。
【
図6】表示部に表示される画面の第5例について説明するための図である。
【
図7】表示部に表示される画面の第6例について説明するための図である。
【
図8】一実施形態に係るプログラムの検査方法について説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明の一実施形態について説明する。
図1は、一実施形態に係る検査装置1について説明するためのブロック図である。
プログラムの検査装置1は、プログラムを開発する際に行われるデバッグで利用される。検査装置1は、プログラムが実行される際に表示部18に表示される各画面内のボタンを抽出して、そのボタンが操作された場合に遷移する画面を特定することにより、画面が遷移する際の遷移構造を取得する。次に、検査装置1は、そのプログラムを実際に実行させ、遷移構造に応じてボタンを順次操作することにより、プログラムによって実行されるストーリーを先に進める。この際に、検査装置1は、画面が遷移しない、プログラムがクラッシュする、画面の表示が正常でない等のプログラムに関する不具合(バグ)が発生するか検査する。検査装置1は、不具合が発生した場合に、プログラムに対して直前のボタン操作等の行動履歴等を含めた、不具合に関するレポートを出力する。このような検査装置1は、種々のプログラムを検査することが可能である。プログラムは、ユーザからの入力を受け付けて、その入力に応じてプログラムの処理内容及び表示部18に表示される画面を変化させることができるものである。検査装置1は、例えば、プログラムとしてゲームプログラムを検査することができ、具体的な一例として、ボタン操作に応じて画面が遷移するストーリー性のあるゲームプログラムを検査することができる。より具体的な一例として、検査装置1は、スマートフォン等の携帯端末で実行されるゲームプログラムを検査することができる。
【0015】
次に、一実施形態に係るプログラムの検査装置1について、詳細に説明する。
検査装置1は、抽出部12、取得部13、作成部14、検査部15、レポート生成部16、記憶部17及び表示部18を備える。抽出部12、取得部13、作成部14、検査部15及びレポート生成部16は、検査装置1の制御部11の一機能として実現されてもよい。
【0016】
記憶部17は、検査対象のプログラムを記憶する。記憶部17に記憶されるプログラムは、上述した一例のように、ゲームのプログラムであってもよい。記憶部17は、検査装置1に配される記憶部であってもよく、検査装置1の外部に配される外部記憶部であってもよい。なお、本実施形態では、記憶部17は検査装置1に配される例で説明する。プログラムの検査を希望する者(例えば、プログラムを開発する会社の従業員等)は、記憶部17に検査対象のプログラムをアップロードすることにより、検査装置1によってプログラムを検査させることが可能である。
【0017】
表示部18は、一例として、液晶ディスプレイ及び有機EL(Electro-Luminescence)ディスプレイ等の表示装置である。表示部18は、制御部11(一例として、検査装置1に配される表示制御部(図示せず))の制御に基づいて、画像を表示部18に表示し、また音声をスピーカ(図示せず)から出力する。
【0018】
抽出部12は、記憶部17に記憶されたプログラムが実行された場合に表示部18に表示される画面と、その画面内に配されるボタンとを抽出する。プログラムは、そのプログラムの内容の進行に応じて画面が遷移する。各画面にはボタンが配される場合がある。プログラムは、例えば、画面に配されるボタンがタップ又はクリック等の操作が行われた場合には、その画面とは異なる他の画面に遷移する。画面から他の画面に遷移する場合は、画面Aが他の画面Bに完全に切り替わる場合、及び、画面Aに表示されていたボタンBを操作した際に新たなボタンCが表示される場合(画面Aの一部が切り替わる場合)等も含まれる。抽出部12は、例えば、検査対象のプログラムを動作させることに基づいて、画面と、その画面内に配される全てのボタンを抽出する。すなわち、抽出部12は、画面を順次遷移させることにより、画面及びボタンを順次抽出する。なお、抽出部12は、画面を抽出することとして、例えば、画面の画像データ(一例として、スクリーンショット等)を記憶部17に記憶することとしてもよい。また、抽出部12は、ボタンを抽出することとして、例えば、画面内におけるボタンの位置情報を取得することとしてもよい。
【0019】
抽出部12は、画面を遷移させる場合、表示部18に表示されている画面が現在どの画面(複数の画面による画面遷移におけるどの画面(位置))なのかを判断する必要がある。このため、抽出部12は、ニューラルネットワークを利用して、プログラムが提供する複数の画面の中から遷移先の画面がどの画面(位置)かを判断することとしてもよい。例えば、抽出部12は、画面にどの位置(複数の画面が遷移する時のどの位置)で抽出したかを示す情報を付与しておき、画面の特徴と複数の画面間の繋がりとを同時に捉えることにより、相対的に少ない量の画像から、抽出した画面が複数の画面による画面遷移におけるいずれの画面なのか(画面の同一性)を、相対的に精度よく判断することができる。
【0020】
また、抽出部12は、ボタンを検出する場合、例えば、物体検出の技術を利用することにより、画面の画像データ(一例として、スクリーンショット)からボタンを検出することとしてもよい。物体検出は、1枚の画像内に存在する物体(本実施形態では、ボタン)を検知し、その位置及びその物体が何であるか検出する。本実施形態の物体検出(ボタン検出モデル)は、画面内のボタンのみを検出し、その位置を出力する関数である。より具体的には、本実施形態の物体検出(ボタン検出モデル)は、画面(画像データ)が入力されることにより、その画面内に含まれるボタンを検出し、その位置及び画面内の座標を出力する入出力関数である。
【0021】
抽出部12は、複数の画面を順次遷移させる場合、画面が遷移したかを判断する必要がある。抽出部12は、例えば、ボタンを検出した画面と、ボタンを検出した後にそのボタンを操作して一定時間経過後に抽出した画面とを比較し、同一であるかを判定すれば、画面が遷移したかを判断することができる。一定時間は、適宜設定することができる。この場合、抽出部12は、画面が同一であるかを判定する必要がある。このため、抽出部12は、例えば、予め画像を学習した結果である画像比較モデルを利用した画像の特徴量、画像のRGBのピクセル値、上述したボタン検出モデルで検出した画面内のボタンの座標に基づいて、画面の同一性を判断する。画像比較モデルは、2つの画面を入力として受け取り、それらの画像が同一であるかを示す類似度を出力する入出力関数である。抽出部12は、画像比較モデルから出力される類似度が予め設定される閾値以上であれば、2つの画像が同一であると判定する。
【0022】
なお、プログラムに基づいて表示部18に表示される画面には、類似のものがある。また、プログラムの進行の状況によっては、元の画面(一例としてホーム画面)に戻る可能性もある。このため、抽出部12は、画面に基づいて取得されるハッシュ値、画面に基づいて取得される特徴ベクトル、及び、画面内に配されるボタンの位置情報のうちの少なくとも1つに基づいて画面の同一性を判断することにより、同一画面を抽出することを回避することとしてもよい。抽出部12は、例えば、画面をハッシュ関数に入力し、そのハッシュ関数の出力としてハッシュ値を取得する。ハッシュ値は、同じデータからは同じ値が得られる。このため、抽出部12は、ハッシュ値に基づいて画面の同一性を判断することが可能になる。また、抽出部12は、例えば、画像の特徴点を抽出し、その特徴点の特徴ベクトルを抽出する。対比する2つの画像の特徴点の特徴ベクトルが同一であれば、両画像が同一であると考えることができる。抽出部12は、特徴ベクトルに基づいて画面の同一性を判断することが可能になる。また、複数の画像では、背景等が同一であっても、ボタンの位置が異なる場合もある。このため、抽出部12は、画面内におけるボタンの位置情報に基づいて、画像の同一性を判断することが可能になる。
【0023】
なお、抽出部12は、画面又はボタンを自動的に抽出できなかった場合には、検査装置1を使用するユーザの操作に基づいて画面又はボタンを抽出することとしてもよい。
また、抽出部12は、自動的に抽出された複数のボタンに誤ってボタンとして認識されたものが有れば、すなわち、自動で抽出された複数のボタン(物体)にボタンでないものが含まれていれば、ユーザの操作に基づいて、誤ってボタンとして認識された物体を削除してもよい。
【0024】
取得部13は、抽出部12によって抽出された画面と、その画面内に配されるボタンと、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する。一例として、取得部13は、画面AにボタンBが配される場合、そのボタンBが操作されると遷移画面Cに遷移する際には、画面Aに配されるボタンBが操作されると遷移画面Cに遷移するという構造(遷移構造)を取得する。すなわち、取得部13は、画面、ボタン及び遷移画面を関連付けて登録することにより、遷移構造を取得する。この場合、取得部13は、画面(遷移画面)をプログラムの機能毎に登録することとしてもよい。
【0025】
作成部14は、取得部13で取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する。作成部14は、行動モデルとして、検査対象のプログラムとは異なる複数の他のプログラムが実行された場合にユーザが他のプログラムの内容を進行させる際の行動を予め学習し、その学習の結果と、取得部13によって取得される遷移構造とに基づいて、検査対象のプログラムが実行された場合に画面に配される1つ又は複数のボタンのうちの1つが操作されることの行動の内容を生成することとしてもよい。
【0026】
具体的には、まず、作成部14は、プログラムを操作するユーザの行動を学習する。具体的な一例として、作成部14は、検査対象のプログラムがゲームプログラムの場合には、他のプログラムとしてのゲームプログラムで遊ぶユーザの行動(ゲームの進め方)を学習する。学習は、複数の観点で行うことができる。
【0027】
まず、作成部14は、検査対象のプログラムとは異なる複数の他のプログラムをユーザが操作する際の行動目的(戦術的行動)に応じた行動(ユーザによりプログラムの内容の進め方)を学習する。具体的には、作成部14は、深層学習によってユーザの行動の順序を学習する。一例として、作成部14によって複数の件数(一例として、約10件)のユーザの行動を学習して行動モデルを生成した場合、後述する検査部15は、行動モデルに基づいて、次に(例えば、11件目に)選択するユーザの行動の確率を推定する。
【0028】
また、作成部14は、検査対象のプログラムの遷移画面に基づいて、そのプログラムにおいて行動目的を遂行するための細かい行動(戦略的行動)を学習する。すなわち、作成部14は、戦術的行動毎に目的達成の条件となる画面を予め設定しておく。その画面を「目的地」、それ以外の画面を「道」と見立て、ルート探索を行いながら目的地となる画面に到達するまでの遷移行動を繰り返す。この場合、作成部14は、ルート探索を行う場合、設定の不備により目的地となる画面までのルートが見つからない場合、及び、画面内に操作すべきボタンが見つからない場合等、様々なイレギュラーケースに応じてルート探索を行うことにより、細かい行動(戦略的行動)を学習する。作成部14は、目的地となる画面に到達して戦略的行動を達成した場合(学習した場合)、後述するように生成した行動モデルを使用して、再度新しい戦略的行動の選択を行う。
【0029】
次に、作成部14は、遷移構造を理解したうえで、学習結果に基づいて、行動モデルを自動的に生成する。すなわち、作成部14は、取得部13によって取得された遷移構造ではユーザがどのように操作するか(ユーザが検査対象のプログラムの内容をどのように進めるか)を学習モデル(学習結果)に基づいて推定することにより、行動モデルを生成する。行動モデルは、ユーザの行動(ユーザが検査対象のプログラムの内容をどのように進めるか)を推定したモデルである。
【0030】
また、作成部14は、後述する検査部15において行動モデルに従ってプログラムの内容を進行させる際に、特定の画面に到達すると、その特定の画面から後の行動を別途指定したい場合には、ユーザの操作に基づいて行動を規定する内容(行動規定内容)を生成することとしてもよい。行動規定内容は、例えば、行動の流れを指定するフローチャート等により記載されていてもよい。
【0031】
検査部15は、プログラムを実行させ、作成部14によって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる。すなわち、検査部15は、検査対象のプログラムを実行して、行動モデル及び行動規定内容(フローチャート)に従ってプログラムの内容を進め、デバッグを実施する。この時、検査部15は、例えば、画面が遷移しない、ボタンが表示されない又は、遷移予定の画面に遷移しない等のプログラムに不具合(バグ)が有るか否かを検査する。
【0032】
レポート生成部16は、検査部15によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成する。なお、レポート生成部16は、抽出部12によって検査対象のプログラムを実行させた場合に、例えば、画面が遷移しない等のプログラムの不具合(バグ)が発生した場合にも、その不具合に関するレポートを生成することとしてもよい。レポートには、例えば、不具合が発生した状況、不具合が発生した内容、及び、不具合が発生した画面等が含まれていてもよい。レポート生成部16は、例えば、生成したレポートを記憶部17に記憶することとしてもよく、検査部15による検査が終了した後にレポートを表示部18に表示することとしてもよい。
【0033】
次に、表示部18に表示される画面の一例について説明する。
図2は、表示部18に表示される画面の第1例について説明するための図である。
検査装置1(制御部11(表示制御部))は、
図2に例示するように、記憶部17に記憶されるプログラムの一覧を表示部18に表示する。また、ユーザは、検査装置1によってプログラムを検査させたい場合には、「アップロード」ボタンを操作することにより、検査対象のプログラムを検査装置1にアップロードさせることが可能である。また、ユーザは、プログラム一覧で表示される複数のプログラムのうち1つのプログラムを選択することにより、検査装置1によってプログラムを検査させることができる。
【0034】
図3は、表示部18に表示される画面の第2例について説明するための図である。
検査装置1(制御部11(表示制御部))は、抽出部12によって画面及びボタンを抽出している場合、
図3に例示する画面を表示部18に表示する。検査装置1は、例えば、検査対象のプログラムを動作させることにより取得している画面の数(
図3に例示する場合には35画面)、及び、その画面数の時に作成部14によって行動モデルの生成に必要な時間等を表示部18に表示する。
【0035】
図4は、表示部18に表示される画面の第3例について説明するための図である。
検査装置1(制御部11(表示制御部))は、例えば、抽出部12によって画面の抽出が終了した場合等、
図4に例示するように、抽出した画面の一覧を表示部18に表示する。
【0036】
図5は、表示部18に表示される画面の第4例について説明するための図である。
検査装置1(制御部11(表示制御部))は、抽出部12によって抽出されたボタンの一覧を表示部18に表示する。例えば、検査装置1は、画面毎に抽出されたボタンの一覧と、ボタンが操作されることにより遷移する画面(遷移先)を表示部18に表示する。
【0037】
図6は、表示部18に表示される画面の第5例について説明するための図である。
検査装置1(制御部11(表示制御部))は、生成部によって行動規定内容を生成した場合、行動の流れを指定するフローチャートを表示部18に表示する。
【0038】
図7は、表示部18に表示される画面の第6例について説明するための図である。
検査装置1(制御部11(表示制御部))は、レポート生成部16によってレポートが生成された場合、そのレポートとして不具合の一覧を表示部18に表示する。
【0039】
次に、一実施形態に係るプログラムの検査方法について説明する。
図8は、一実施形態に係るプログラムの検査方法について説明するためのフローチャートである。
【0040】
ステップST1において、記憶部17は、検査装置1にアップロードされた検査対象のプログラムを記憶する。例えば、検査装置1は、ユーザが操作する端末(図示せず)等から送信された検査対象のプログラムを受け付け、そのプログラムを記憶部17に記憶する。
【0041】
ステップST2において、抽出部12は、ステップST1で記憶部17に記憶されたプログラムを実行し、そのプログラムの内容の進行に応じて表示部18に表示される画面と、その画面内に配されるボタンとを抽出する。抽出部12は、プログラムの内容の進行に応じて、順次、画面及びボタンを抽出する。
【0042】
ステップST3において、取得部13は、ステップST2で抽出された画面及びボタンに基づいて、プログラムの内容が進行する際の構造(遷移構造)を取得する。取得部13は、ステップST3で画面及びボタンが順次抽出されるのに応じて、遷移構造を随時生成する。
【0043】
ステップST4において、作成部14は、ステップST3で取得された遷移構造に基づいて、行動モデルを生成する。行動モデルは、ユーザの行動(ユーザが検査対象のプログラムの内容をどのように進めるか)を推定したモデルである。
また、作成部14は、後述するステップST5において行動モデルに従ってプログラムの内容を進行させる際(検査をする際)に、特定の画面に到達すると、その特定の画面から後の行動を別途指定したい場合に場合には、行動を規定する内容(行動規定内容)を別途生成することとしてもよい。
【0044】
ステップST5において、検査部15は、ステップST4で生成された行動モデル及び行動規定内容に基づいて、ステップST1で記憶部17に記憶された検査対象のプログラムを実行し、プログラムに不具合があるか検査する。
【0045】
ステップST6において、レポート生成部16は、ステップST5の検査においてプログラムに不具合があった場合、その不具合に関するレポートを生成する。また、レポート生成部16は、ステップST2において画面及びボタンを抽出する際にプログラムの不具合があった場合にも、その不具合に関するレポートを生成することとしてもよい。
【0046】
次に、本実施形態の効果について説明する。
検査装置1は、検査対象のプログラムが実行された場合に表示部18に表示される画面と、その画面内に配されるボタンとを抽出する抽出部12と、抽出部12によって抽出された画面と、その画面内に配されるボタンと、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得部13と、取得部13で取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成部14と、プログラムを実行させ、作成部14によって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査部15と、検査部15によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成部16と、を備える。
検査装置1は、検査対象のプログラムにおける画面の遷移構造を取得し、その遷移構造に基づいて行動モデルを生成し、行動モデルに従ってプログラムを検査する。このため、検査装置1は、記憶部17に記憶されたプログラムについて遷移構造を取得することにより、そのプログラムに不具合が生じるか検査を行うことができる。よって、検査装置1は、種々のプログラムについて自動的に検査を行うことができる。
また、検査装置1は、遷移構造に基づいて行動モデル等を生成する。これにより、検査装置1は、プログラムの内容を操作するユーザと同様にある程度意思をもってプログラムの内容を進めることができ、効率的にプログラムの検査を実行することができる。行動モデルを生成せずに自動的にプログラムの検査を行った場合には、検査をしていない画面(遷移)が生じる可能性があるが、本実施形態では、行動モデルに従って全ての画面(遷移)を検査するので、検査漏れ等が生じるのを防ぐことができる。
【0047】
なお、検査装置1は、抽出部12によって検査対象のプログラムを実行していることに加えて、検査部15においてそのプログラムを実行して検査を行っている。これは、抽出部12によるプログラムの実行では、全ての画面(遷移)を確実に取得することができない可能性があり、またユーザが意思を持ってプログラムを進行させるのと同様にすることで(行動モデルに従ってプログラムを進行させる場合に)初めてプログラムに不具合が出る可能性もある。このため、検査装置1は、抽出部12によって検査対象のプログラムを実行して画面及びボタンを抽出すると共に、検査部15において検査対象のプログラムを実行してそのプログラムを検査している。また、検査装置1では、抽出部12によってプログラムを実行する際に不具合が発生した場合、取得部13によって遷移構造を取得できなくなる。この場合、検査装置1では、プログラムの不具合が修正された後、再度、抽出部12によって画面及びボタンを抽出して、取得部13によって遷移構造を取得するようにする。
なお、検査装置1は、上述したように再度画面及びボタンを抽出する場合、例えば、前回抽出した画面と、再度抽出した画面とに相違する部分がある場合、その画面のみ抽出することとしてもよい。検査装置1は、例えば、機械学習及び深層学習等の学習結果に基づいて画面の相違(差分)を認識し、レイアウト等の異なる箇所を自動的に検出することとしてもよい。
【0048】
検査装置1では、作成部14は、行動モデルとして、検査対象のプログラムとは異なる複数の他のプログラムが実行された場合にユーザが他のプログラムの内容を進行させる際の行動を予め学習し、その学習の結果と、取得部13によって取得される遷移構造とに基づいて、検査対象のプログラムが実行された場合に画面に配される1つ又は複数のボタンのうちの1つが操作されることの行動の内容を生成することとしてもよい。
これにより、検査装置1は、作成部14によって行動モデルを生成することができる。検査装置1は、検査部15によって検査対象のプログラムを検査する場合、行動モデルに従ってプログラムの内容を進行させることができる。
【0049】
検査装置1では、抽出部12は、画面に基づいて取得されるハッシュ値、画面に基づいて取得される特徴ベクトル、及び、画面内に配されるボタンの位置情報のうちの少なくとも1つに基づいて画面の同一性を判断することにより、同一画面を抽出することを回避することとしてもよい。
これにより、検査装置1は、抽出部12によって同一の画面が抽出されるのを回避することができ、取得部13によって適切な遷移構造を生成することができる。
【0050】
検査装置1では、記憶部17に記憶されるプログラムは、ゲームのプログラムであってもよい。
特に、ゲームプログラムは、スマートフォン等の携帯端末で実行可能なプログラムであってもよい。そのようなゲームプログラムは、表示部18にボタンを表示し、そのボタンの操作に応じてプログラムの内容を進行するようになっている。このため、検査装置1は、ボタンの操作に応じて内容を進行させるプログラム(例えば、ゲームプログラム)に不具合が生じるか検査を行うことができる。
【0051】
検査方法では、コンピュータが、検査対象のプログラムが実行された場合に表示部18に表示される画面と、その画面内に配されるボタンとを抽出する抽出ステップと、抽出ステップによって抽出された画面と、その画面内に配されるボタンの種類と、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得ステップと、取得ステップで取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成ステップと、プログラムを実行させ、作成ステップによって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査ステップと、検査ステップによって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成ステップと、を実行する。
検査方法は、検査対象のプログラムにおける画面の遷移構造を取得し、その遷移構造に基づいて行動モデルを生成し、行動モデルに従ってプログラムを検査する。このため、検査方法は、記憶部17に記憶されたプログラムについて遷移構造を取得することにより、そのプログラムに不具合が生じるか検査を行うことができる。よって、検査方法は、種々のプログラムについて自動的に検査を行うことができる。
また、検査方法は、遷移構造に基づいて行動モデル等を生成する。これにより、検査方法は、プログラムの内容を操作するユーザと同様にある程度意思をもってプログラムの内容を進めることができ、効率的にプログラムの検査を実行することができる。なお、行動モデルを生成せずに自動的にプログラムの検査を行った場合には、検査をしていない画面(遷移)が生じる可能性があるが、本実施形態では、行動モデルに従って全ての画面(遷移)を検査するので、検査漏れ等が生じるのを防ぐことができる。
【0052】
検査プログラムは、コンピュータに、検査対象のプログラムが記憶される記憶機能と、記憶機能に記憶されたプログラムが実行された場合に表示部18に表示される画面と、その画面内に配されるボタンとを抽出する抽出機能と、抽出機能によって抽出された画面と、その画面内に配されるボタンの種類と、ボタンが操作された際に遷移する遷移画面とに基づいて、プログラムが実行された際の遷移構造を取得する取得機能と、取得機能で取得された遷移構造に基づいて、プログラムが実行された場合にユーザによってプログラムの内容を進行させる際の予想される行動に応じた行動モデルを作成する作成機能と、プログラムを実行させ、作成ステップによって作成された行動モデルに応じて、画面内に配されるボタンを操作することにより画面を順次遷移させる検査機能と、検査機能によって画面を順次遷移させる際にプログラムに不具合があった場合、その不具合に関するレポートを生成するレポート生成機能と、を実現させる。
検査プログラムは、検査対象のプログラムにおける画面の遷移構造を取得し、その遷移構造に基づいて行動モデルを生成し、行動モデルに従ってプログラムを検査する。このため、検査プログラムは、記憶部17に記憶されたプログラムについて遷移構造を取得することにより、そのプログラムに不具合が生じるか検査を行うことができる。よって、検査プログラムは、種々のプログラムについて自動的に検査を行うことができる。
また、検査プログラムは、遷移構造に基づいて行動モデル等を生成する。これにより、検査プログラムは、プログラムの内容を操作するユーザと同様にある程度意思をもってプログラムの内容を進めることができ、効率的にプログラムの検査を実行することができる。なお、行動モデルを生成せずに自動的にプログラムの検査を行った場合には、検査をしていない画面(遷移)が生じる可能性があるが、本実施形態では、行動モデルに従って全ての画面(遷移)を検査するので、検査漏れ等が生じるのを防ぐことができる。
【0053】
なお、上述した検査装置1(検査方法及び検査プログラム)は、プログラムを検査する人(テスタ)と共に、ハイブリッドな検査を行うことができる。すなわち、検査装置1によってプログラムについて集中的にパターン繰返し検査を行い、その検査の結果に応じて、テスタが不具合の影響範囲を推定して、次のテストの内容を決定することとしてもよい。
【0054】
また、検査装置1(検査方法及び検査プログラム)は、行動モデルに従ってプログラムを検査するので、プログラムの負荷検査も行うことができる。すなわち、検査装置1は、自律的にプログラムの内容を進行させることができるため、実際の環境と同じような状況で負荷検査を行うことができる。
【0055】
また、検査装置1(検査方法及び検査プログラム)は、行動モデルに従ってプログラムを検査するので、プログラムを実際に操作するユーザの嗜好に応じた検査(プログラムの内容のどの部分に重点を置くかに応じた検査)を行うことができる。
【0056】
また、検査装置1(検査方法及び検査プログラム)は、例えば、検査対象のプログラムを記憶部17に記憶して取得部13によって遷移構造を取得すること、それに加えて、行動モデルに従った検査を行うこと、及び、検査の時間数(検査回数)それぞれに応じて課金を行うことができる。その課金は、月額制及び従量課金制のいずれであってよい。
【0057】
上述したプログラムの検査装置1の各部は、コンピュータの演算処理装置等の機能として実現されてもよい。すなわち、検査装置1の抽出部12、取得部13、作成部14、検査部15及びレポート生成部16は、コンピュータの演算処理装置等による、抽出機能、取得機能、作成機能、検査機能及びレポート生成機能としてそれぞれ実現されてもよい。
検査プログラムは、上述した各機能をコンピュータに実現させることができる。検査プログラムは、外部メモリ又は光ディスク等の、コンピュータで読み取り可能な非一時的な記録媒体に記録されていてもよい。
また、上述したように、検査装置1の各部は、コンピュータの演算処理装置等で実現されてもよい。その演算処理装置等は、例えば、集積回路等によって構成される。このため、検査装置1の各部は、演算処理装置等を構成する回路として実現されてもよい。すなわち、検査装置1の抽出部12、取得部13、作成部14、検査部15及びレポート生成部16は、コンピュータの演算処理装置等を構成する、抽出回路、取得回路、作成回路、検査回路及びレポート生成回路
として実現されてもよい。
また、検査装置1の記憶部17及び表示部18は、例えば、集積回路等によって構成されることにより、記憶回路及び表示回路として実現されてもよい。また、検査装置1の記憶部17及び表示部18は、例えば、複数のデバイスによって構成されることにより、記憶装置及び表示装置として構成されてもよい。
【符号の説明】
【0058】
1 検査装置
11 制御部
12 取得部
13取得部
14 作成部
15 検査部
16 レポート生成部
17 記憶部
18 表示部