JP2016177659A - 検証プログラム、検証装置及び検証方法 - Google Patents

検証プログラム、検証装置及び検証方法 Download PDF

Info

Publication number
JP2016177659A
JP2016177659A JP2015058549A JP2015058549A JP2016177659A JP 2016177659 A JP2016177659 A JP 2016177659A JP 2015058549 A JP2015058549 A JP 2015058549A JP 2015058549 A JP2015058549 A JP 2015058549A JP 2016177659 A JP2016177659 A JP 2016177659A
Authority
JP
Japan
Prior art keywords
api
verification
unit
verification target
reference information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015058549A
Other languages
English (en)
Other versions
JP6300750B2 (ja
Inventor
瞬 伊藤
Shun Ito
瞬 伊藤
卓哉 香川
Takuya Kagawa
卓哉 香川
智也 小平
Tomoya Kodaira
智也 小平
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan 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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2015058549A priority Critical patent/JP6300750B2/ja
Publication of JP2016177659A publication Critical patent/JP2016177659A/ja
Application granted granted Critical
Publication of JP6300750B2 publication Critical patent/JP6300750B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】網羅的な検証を効率良く行う。
【解決手段】検証装置100は、作成部132と、設定部134と、検証部135とを含む。作成部132は、検証対象である検証対象API(Application Programming Interface)に対して実行されるテストケースを作成する。設定部134は、検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う。検証部135は、設定部134によって設定された階層関係に基づき、上位の階層にある他のAPIを呼び出すことにより参照情報を取得し、取得した参照情報及びテストケースを用いて検証対象APIを検証する。
【選択図】図2

Description

本発明は、検証プログラム、検証装置及び検証方法に関する。
近年、プログラムにおいて、API(Application Programming Interface)が盛んに利用されている。ユーザは、APIを利用することで、OS(Operating System)やライブラリ(Library)で提供される機能を有効に活用することができる。また、API(あるいは、APIを実装するソフトウェア)の挙動の検証やデバック作業を効率的に行うために、様々なテスト手法が提案されている。
例えば、テスト実行時のシステムの状態をAPI呼び出しにより取得したうえで、取得した状態に応じて関連するソフトウェアを制御することにより、常に同じテスト条件を作り出すことができる技術が知られている(例えば、特許文献1)。
また、プラグインモジュールからの情報を受けてテストケースを構築することにより、未知なる機能が発生したとしても、容易にテストの実施を可能とすることができる技術が知られている(例えば、特許文献2)。また、APIなどのソースコードを利用できない外部関数を処理する際に、モデルを提供して、その外部関数が適切に呼び出されるかどうかを評価するといった技術が知られている(例えば、特許文献3)。
国際公開第2009/150788号 特開2009−223700号公報 特開2006−236336号公報
しかしながら、上記の従来技術では、網羅的な検証を効率良く行うことができるとは限らない。具体的には、検証対象とするAPIが、他のAPIの処理結果を利用するなどの所定の関係性を有する場合、他のAPIが処理結果として発行する情報によって検証結果が変化する場合がある。このような場合、上記の従来技術では、他のAPIが処理結果として発行する情報を適切に把握することができないため、検証対象とするAPIに対して適切な検証を行うことは困難である。また、他のAPIが処理結果として発行する情報の組合せを手動で設定することは可能だが、かかる組合せは膨大な数になり、現実的ではない。
本願は、上記に鑑みてなされたものであって、網羅的な検証を効率良く行うことができる検証プログラム、検証装置及び検証方法を提供することを目的とする。
本願に係る検証プログラムは、検証対象である検証対象API(Application Programming Interface)に対して実行されるテストケースを作成する作成手順と、前記検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う設定手順と、前記設定手順によって設定された階層関係に基づき、上位の階層にある前記他のAPIを呼び出すことにより前記参照情報を取得し、取得された前記参照情報及び前記テストケースを用いて検証対象APIを検証する検証手順と、をコンピュータに実行させることを特徴とする。
実施形態の一態様によれば、網羅的な検証を効率良く行うことができるという効果を奏する。
図1は、実施形態に係る検証処理の一例を示す図である。 図2は、実施形態に係る検証装置の構成例を示す図である。 図3は、実施形態に係るキャンペーンAPIを説明する図である。 図4は、実施形態に係る広告グループAPIを説明する図である。 図5は、実施形態に係る広告APIを説明する図(1)である。 図6は、実施形態に係る広告APIを説明する図(2)である。 図7は、実施形態に係る作成処理を説明する図(1)である。 図8は、実施形態に係る作成処理を説明する図(2)である。 図9は、実施形態に係る作成処理を説明する図(3)である。 図10は、実施形態に係る検証処理を説明する図(1)である。 図11は、実施形態に係る検証処理を説明する図(2)である。 図12は、実施形態に係る検証処理を説明する図(3)である。 図13は、実施形態に係る検証装置による作成処理手順を示すフローチャートである。 図14は、実施形態に係る検証装置による検証処理手順を示すフローチャートである。 図15は、検証装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
以下に、本願に係る検証プログラム、検証装置及び検証方法を実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る検証プログラム、検証装置及び検証方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.検証処理の一例〕
まず、図1を用いて、実施形態に係る検証処理の一例について説明する。図1は、実施形態に係る検証処理の一例を示す図である。図1では、検証システム1を例に挙げて、実施形態に係る検証処理について説明する。具体的には、図1では、検証システム1に含まれる検証装置100が検証対象となるAPIの動作を検証する処理(本願に係る検証プログラムに相当する)の流れについて説明する。
図1に示すように、検証システム1には、ユーザ端末10と、実行サーバ20、20、及び20と、検証装置100とが含まれる。検証装置100は、図示しない通信ネットワーク(例えば、インターネット)を介して、ユーザ端末10、実行サーバ20、20、及び20と通信可能に接続される。なお、以下では、実行サーバ20、20、及び20を区別する必要のないときは、実行サーバ20と表記する。また、検証システム1に含まれるユーザ端末10や実行サーバ20の台数は、図1に示した例に限られない。例えば、検証システム1には、複数台のユーザ端末10が含まれてもよいし、さらに多くの実行サーバ20が含まれてもよい。
ユーザ端末10は、ユーザによって利用される情報処理装置である。具体的には、ユーザ端末10は、検証対象となるAPIの動作を検証するため、検証装置100が提供する検証プログラムのUI(User Interface)を表示したり、検証装置100にプログラムの実行命令を送信したりするためなどに利用される。ユーザ端末10は、例えば、スマートフォンやタブレット端末やPDA(Personal Digital Assistant)等の移動端末や、デスクトップ型PC(Personal Computer)や、ノート型PC等である。なお、実施形態における一般ユーザとは、例えば、実行サーバ20が提供するAPIであって、ウェブネットワーク上に配信させる広告を設定するための機能を提供するAPI(以下、「広告に係るAPI」と表記する場合がある)を利用しようとする広告主等が該当する。
実行サーバ20は、APIを実行するサーバ装置である。例えば、実行サーバ20は、インターネットを介して、APIをユーザに提供する。そして、実行サーバ20は、ユーザからの所定の入力や制御に従い、APIを実行する。例えば、実行サーバ20は、広告に係るAPIをユーザに提供することで、広告に係る入札の設定を受け付けたり、ユーザが広告配信を所定のウェブサイトで行う手間を省いたり、所定のウェブサイトで広告を表示させるための処理を実行する。実施形態では、実行サーバ20は、検証装置100が実行する検証プログラムによって、検証に係る設定を受け付けたり、APIを実行したりする。なお、実行サーバ20、20、及び20は、それぞれ異なるAPIを保持し、検証装置100からの送信される制御に従い、各々の処理を実行する。ユーザ端末10や検証装置100は、各々の実行サーバ20のAPIを利用する場合、実行サーバ20を特定する情報を指定する。例えば、ユーザ端末10や検証装置100は、実行サーバ20を特定するURL(Uniform Resource Locator)を指定する。
実施形態において、実行サーバ20は、ウェブネットワークで利用されるAPI(以下、「ウェブAPI」と表記する場合がある)を提供する。ウェブAPIは、API同士で相互の利用関係を有する場合がある。相互の利用関係とは、例えば、ウェブAPI同士が上位及び下位という階層関係を有すること等をいう。例えば、下層のウェブAPIは、上層のウェブAPIの所定の処理の結果である戻り値を取得し、取得した戻り値を利用して処理を行う場合がある。この場合、下層のウェブAPIは、上層のウェブAPIから得られる戻り値を取得できない場合には、処理がエラーとなる場合がある。なお、以下では、上層のAPIが発行する戻り値のような情報であって、下層のAPIの実行のために参照される情報を「参照情報」と表記する場合がある。参照情報は、上層のAPIの処理結果として発行される所定のID情報であり、上層のAPIで行われた処理を識別することができる。例えば、参照情報は、数桁の数値等により構成される。
検証装置100は、検証対象となるAPI(以下、「検証対象API」と表記する場合がある)の動作をテスト(検証)するためのテストケースを作成し、テストケースに従ってAPIをテストする情報処理装置である。検証装置100は、検証プログラムを実行することにより、検証対象APIのテストを網羅的に効率良く実施することができる。以下、図1を用いて、検証システム1及び検証装置100による検証処理を流れに沿って説明する。
まず、図1に示した例において、検証装置100は、ユーザがAPIのテストに関する情報等を検証プログラムに設定するために利用されるUIをユーザ端末10に提供する(ステップS11)。すなわち、ユーザ端末10は、検証プログラムに係るUIを表示部に表示させ、ユーザからの入力を受け付ける。
ここで、ユーザ端末10は、検証対象APIの階層を設定する(ステップS12)。上記のように、検証対象APIがウェブAPIである場合、API同士に階層関係を有する場合がある。そして、階層関係がある場合には、検証対象APIに対して上層のAPIを設定していなければ、検証におけるテストの項目に漏れが生じたり、エラーが発生したりするため、網羅的な検証が行えない場合がある。そこで、ユーザ端末10は、検証対象APIの階層を設定することで、漏れのないテストを検証プログラムに行わせることができる。
また、ユーザ端末10は、検証プログラムによって提供される所定のテストパターンを選択することで、APIのテストケースを作成させる。ここで、テストパターンとは、検証のためにAPIに実行させる所定の動作を示す。例えば、テストパターンは、ユーザから入力を受け付ける項目を有するAPIにおいて、提供した入力必須項目に入力がなされているか否か、あるいは、入力項目に設定された最大値を超える値が入力されているか否かなど、具体的にAPIがテストとして行う項目として予め定義された動作(挙動)のパターンである。なお、用途に応じて、ユーザ端末10は、検証プログラムによって提供される所定のテストパターン以外のテストパターンを作成させることもできる。また、テストケースとは、テストパターンをまとめたものであり、検証プログラムがAPIに対して実行する一連のテスト項目を示す。また、テストケースには、テストが行われる環境に関する情報等も含まれる。
このように、検証装置100は、APIの階層など、ユーザ端末10から設定される情報の送信を受け付ける。そして、検証装置100は、ユーザ端末10から設定された情報に基づいて、テストケースを作成する(ステップS13)。そして、検証装置100は、ユーザ端末10からの制御に従い、テストケースを実行することにより、検証対象APIのテストを行う。なお、検証装置100は、必要に応じて実行サーバ20、20、及び20にアクセスし、それぞれが保持するAPIをテストさせる場合がある(ステップS14)。
ここで、検証装置100に係る検証プログラムは、テストを実行するにあたり、検証対象APIの上層のAPIに対して、最上層に位置するAPIから順に参照情報を発行させる。すなわち、検証プログラムは、検証対象APIが実行するテストパターンについて、上層に位置するAPIから発行される全ての参照情報が入力された状態でテストを行わせる。すなわち、検証プログラムによれば、検証対象APIが実行するテストパターンにおいて、他のAPIの動作結果が組み込まれるような相互の関係を有するテストパターンであっても、取りうる結果の全てを網羅的に取得することができる。
そして、検証装置100は、検証対象APIに対して行われたテスト結果の通知をユーザ端末10に行う(ステップS15)。例えば、検証装置100は、検証対象APIに対して行われたテストケースの一覧をUIに表示させることで、ユーザ端末10に結果を通知する。この場合、検証装置100は、1つのテストパターンに対して、複数の結果を表示する場合がある。これは、APIのテストにおいて、上層のAPIから発行された参照情報が異なることにより、1つのテストパターンを検証するために、異なる参照情報ごとに検証対象APIが実行されていることによる。言い換えれば、検証装置100は、検証対象APIに設定された階層関係に基づいて、1つのテストパターンに対する複数のテスト環境(テストケース)を動的に作成する場合がある。
このように、実施形態に係る検証装置100は、検証対象である検証対象APIに対して実行されるテストケースを作成し、検証対象APIと、当該検証対象APIが実行される際に利用する参照情報を戻り値として返す関係にある他のAPIとの階層関係についての設定を行う。そして、検証装置100は、設定された階層関係に基づいて、他のAPIを上位の階層から順に呼び出すことにより、検証対象APIの実行に用いられる参照情報を取得しながら、テストケースを用いて検証対象APIを検証する。
これにより、実施形態に係る検証装置100は、ウェブAPIなどの相互に関係を有するAPIの検証処理を効率良く行うことができる。すなわち、テストを実施させるユーザは、検証対象APIの階層関係を設定することで、上位階層のAPIがとりうる戻り値の組合せ等を意識することなく、検証対象APIに対するテストを実行させることができる。このように、検証装置100は、階層関係を有するAPIに対して、網羅的な検証を効率良く行うことができる。
〔2.検証装置の構成〕
次に、図2を用いて、実施形態に係る検証装置100の構成について説明する。図2は、実施形態に係る検証装置100の構成例を示す図である。図2に示すように、検証装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、検証装置100は、検証装置100を利用する管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110について)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。かかる通信部110は、通信ネットワークと有線又は無線で接続され、通信ネットワークを介して、ユーザ端末10や実行サーバ20等との間で情報の送受信を行う。
(記憶部120について)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、API情報記憶部121と、テストケース記憶部122と、テスト結果記憶部123とを有する。以下、各記憶部について順に説明する。
(API情報記憶部121について)
API情報記憶部121は、検証装置100が検証を行うAPIに関する情報を記憶する。例えば、API情報記憶部121は、APIを識別するための識別情報(例えば、APIの名称や種別)や、APIに関する変数や配列に関する情報(例えば、JAVA(登録商標)等においてはフィールドと表記される)や、APIが保持されている場所(例えば、実行サーバ20のURL)などを記憶する。
例えばユーザは、検証に係るテスト項目となるテストケースを作成する際には、UIを介して、API情報記憶部121に記憶されているAPIの情報を参照することができる。
(テストケース記憶部122について)
テストケース記憶部122は、APIの検証に用いられるテストケースに関する情報を記憶する。例えば、テストケース記憶部122は、検証対象APIである検証対象APIの識別情報や、検証対象APIに設定された階層情報や、実際にテストとして実行されるテストパターンの種別や、テストで実行されるメソッド(method)の種類などが記憶される。
例えばユーザは、検証対象APIに対するテストケースを作成した際に、UIを介して、テストケース記憶部122に記憶されているテストケースの情報を参照することができる。これにより、ユーザは、テストケースにおいて実行されるテストパターンの種別などを確認することができる。
(テスト結果記憶部123について)
テスト結果記憶部123は、テストケースを用いて検証対象APIの挙動に対するテストが行われた後の結果を記憶する。例えば、テスト結果記憶部123は、テストを行った環境に関する情報や、各々のテストパターンや、各々のテストパターンに対して期待される状態や、実際に期待される状態が発生したか否かが検証された結果などを記憶する。
また、上述のように、テストの結果は、上層のAPIが発行する参照情報によって異なる場合がある。すなわち、検証対象APIは、上層のAPIが発行する参照情報を受けて処理を実行するため、1つのテストパターンの実行であっても、複数の結果を返す場合がある。このような場合には、テスト結果記憶部123は、実施されたテストケースに対する結果として、実施された全てのテストパターンの結果を網羅的に記憶する。
例えばユーザは、所定のテストケースを用いて検証対象APIに対してテストが行われた場合に、UIを介して、テスト結果記憶部123に記憶されているテストケースの結果を参照することができる。
(制御部130について)
制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、検証装置100内部の記憶装置に記憶されている各種プログラム(検証プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
実施形態に係る制御部130は、図2に示すように、UI提供部131と、作成部132と、受付部133と、設定部134と、検証部135と、実行部136と、格納部137とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図2に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、図2に示した接続関係に限られず、他の接続関係であってもよい。
(UI提供部131について)
UI提供部131は、検証処理に関するUIを提供する。具体的には、UI提供部131は、検証装置100が提供する検証プログラムをユーザが利用するために、ユーザ端末10の表示部に表示させるUIを提供する。一例として、UI提供部131は、後述する検証部135によって検証された結果を表示するUIを提供する。
ユーザは、UI提供部131によって提供されるUIを介して、APIの検証処理に係る種々の設定を行う。また、ユーザは、UIに表示されるテストパターンを参照し、実際にテストを行う項目としてテストパターンを選択する。そして、ユーザは、選択したテストパターンがまとめられたテストケースを作成させる。
また、UI提供部131は、後述する検証部135によって検証された結果を表示するUIを提供する。これにより、ユーザは、APIのテストが実施された後に、UIを介してテスト結果を参照することができる。このとき、UI提供部131は、UIを介して、検証対象APIの検証結果と併せて、検証対象APIの検証に用いられた他のAPIに関する情報についても提供することができる。検証対象APIの検証に用いられた他のAPIとは、具体的には、検証対象APIに対して階層関係が設定されたAPIのことを示す。例えば、UI提供部131は、実行された検証対象APIのスクリプトにおいて、実際に参照情報として用いられたAPIの識別情報(例えば、名称)等を提供する。
すなわち、UI提供部131は、後述する作成部132や、検証部135、及び記憶部120等と相互に情報をやり取りすることにより、実行するテストの内容や、テストの結果等をユーザに提供する。
(作成部132について)
作成部132は、検証対象である検証対象APIに対するテストケースを作成する。例えば、作成部132は、ユーザから検証対象APIに対して実行するテストに関する設定を受け付けることにより、ユーザが所望するテストケースを作成する。なお、テストケースの作成にあたり、作成部132は、APIに係る情報を取得する。作成部132は、ユーザから送信される情報を用いてAPIに関する情報を取得してもよいし、外部の提供装置からAPIに関する情報を取得してもよい。この場合、作成部132は、取得した情報をAPI情報記憶部121に格納する。また、図2に示すように、作成部132には、受付部133と、設定部134とが含まれる。
(受付部133について)
受付部133は、テストケースに関する設定を受け付ける。具体的には、受付部133は、UI提供部131が提供するUIを介して、ユーザ端末10から送信されるテストケースに関する設定を受け付ける。
例えば、受付部133は、検証を行おうとするAPIである検証対象APIの指定を受け付ける。また、受付部133は、検証対象APIにおける配列や変数の環境情報(例えば、フィールド等)の設定を受け付ける。
また、受付部133は、検証対象APIと、当該検証対象APIが実行される際に利用する参照情報を戻り値として返す関係にある他のAPIとの階層関係についての指定を受け付ける。すなわち、受付部133は、ユーザから指定された検証対象APIがウェブAPIであり、参照情報等を利用して処理を実行する階層関係にあるAPIがある場合には、かかる指定をユーザから受け付ける。かかる階層関係は、後述する設定部134により設定される。
また、受付部133は、テストとして実行するAPIの処理の種別(メソッド)について受け付ける。例えば、受付部133は、メソッドとして「add」や「set」といった具体的なメソッドの指定を受け付ける。また、受付部133は、APIリファレンス(API Reference)を受け付け、かかるAPIリファレンスに対応するテストパターンを受け付ける。
テストパターンは、テストの際に検証対象APIに入力される情報であり、予め検証プログラムによっていくつかのパターンが用意される。例えば、テストパターンとして、入力情報として「必須項目×デフォルト値」や、「必須項目×最小値」などのパターンが予め準備される。一例として、「必須項目×デフォルト値」であれば、APIにおいて入力が必須となっている項目に対してデフォルト値が入力されている、という状況を示したテストパターンとなる。
(設定部134について)
設定部134は、受付部133によって受け付けられた情報に基づいてテストケースを作成するための設定を行う。例えば、設定部134は、検証対象APIと、当該検証対象APIが実行される際に利用する参照情報を戻り値として返す関係にある他のAPIとの階層関係についての設定を行う。
設定部134によって階層関係が設定されたテストケースは、検証対象APIのテストを実行するときに、階層関係に基づく処理を行うことができる。例えば、検証対象APIが参照情報を利用するスクリプト(script)を実行する場合、参照情報を取得していなければ、結果としてエラーが返される。一方、設定部134によって階層関係が設定されたテストケースを用いて検証対象APIが実行される場合、実行されるスクリプトには、上位階層のAPIを呼び出して取得された参照情報が入力される。これにより、検証プログラムは、検証対象APIに対する処理について、エラーを発生させずに行うことができる。
また、設定部134は、検証対象APIに対する階層関係の順序を示す情報である階層レベルをAPIごとに設定することが可能である。例えば、検証対象APIが参照する戻り値を発行するAPIの更に上層のAPIが存在する場合には、設定部134は、更に上層のAPIを「階層レベル1」とし、検証対象APIが参照する戻り値を発行するAPIを「階層レベル2」と設定することができる。すなわち、設定部134は、検証対象APIについて多層的な関係性を設定することができる。
このように、受付部133及び設定部134による処理に基づいて、作成部132は、ユーザが所望するテストケースを作成する。また、作成部132は、作成されたテストケースをテストケース記憶部122に格納する。
(検証部135について)
検証部135は、検証対象となるAPIを検証する。例えば、検証部135は、設定部134によって設定された階層関係に基づき、上位の階層にあるAPIを呼び出すことにより上位の階層にあるAPIから発行される参照情報を取得し、取得された参照情報及び作成部132によって作成されたテストケースを用いて、検証対象APIを検証する。
なお、検証部135は、設定部134によって検証対象APIに対する階層関係の順序を示す情報である階層レベルが設定された上層のAPIがある場合には、設定部134によって設定された階層レベルが上位の順に上層のAPIを呼び出すことにより参照情報を取得し、取得された参照情報を用いて検証対象APIを検証する。具体的には、検証部135は、検証対象APIに対して上位階層となる複数のAPIが設定されている場合には、階層レベルの最上位のAPIを呼び出す(実行する)ことで参照情報を取得し、取得された参照情報を利用して、次の階層レベルのAPIを呼び出す。すなわち、検証部135は、設定された階層レベルが上位の順に他のAPIを呼び出し、参照情報として、下位で必要な上位設定を予め登録する。例えば、検証部135は、上位のAPIから取得される参照情報をテストケース記憶部122に登録(格納)する。そして、検証部135は、登録された参照情報を用いて、より下位のAPIを呼び出す。検証部135は、かかる処理を繰り返すことで、最終的に検証対象APIで利用する参照情報を取得し、取得された参照情報を用いて検証対象APIを検証する。図2に示すように、検証部135は、実行部136と、格納部137とを有する。
(実行部136について)
実行部136は、検証対象APIに対する検証処理を実行する。例えば、実行部136は、作成部132によって作成されたテストケースに従い、検証対象APIに対して所定の入力を行う。そして、実行部136は、入力された情報に対する検証対象APIからの出力を得る。言い換えれば、実行部136は、テストパターンごとに定義されたテストを検証対象APIに実行し、結果を得る。
実行部136は、上述のように、階層関係が設定されたAPIに対しては、上層のAPIから参照情報を取得しながら、検証対象APIに対するテストを実行していく。そして、実行部136は、1つのテストパターンから参照情報ごとに派生するテスト結果を取得する。すなわち、実行部136によれば、階層関係に応じて出力が変化する結果についても取得できるので、ユーザは、網羅的に検証対象APIの挙動に関する結果を得ることができる。また、実行部136は、設定部134によって設定された階層関係に基づいて、自動的に上層のAPIを呼び出して参照情報を得ることができるので、ユーザは、効率的に漏れのないテスト結果を得ることができる。
(格納部137について)
格納部137は、実行部136によって実行された検証処理の結果を格納する。具体的には、格納部137は、テストケースに従って実行された各々のテストパターンの結果をテスト結果記憶部123に格納する。
〔3.処理の一例〕
上記、検証プログラムを実行する検証装置100の構成について説明した。以下では、検証装置100が実行する検証処理の一例として、具体的に、ユーザが広告に係るAPIの一例である「広告API」を利用する例を示すとともに、かかる広告APIの検証が行われる処理について、ユーザ端末10に表示されるUIとともに説明する。以下の説明においては、検証装置100からユーザ端末10にUIが提供されており、ユーザは、UIを介して、ユーザ端末10で実行可能なツールとして検証プログラムを利用する例を想定する。
まず、図3乃至図6を用いて、検証対象APIの一例として、広告に係るAPIに関する概要を説明する。広告に係るAPIは、ウェブネットワークを介して所定のユーザに利用される機能を提供するAPIの一例であり、より詳しくは、ウェブネットワーク上で配信される広告の設定を受け付ける機能を提供するAPIである。例えば、広告に係るAPIは、ユーザ(例えば、広告主)が広告を配信させようとする場合に利用するウェブAPIであり、所定の階層関係を有するものとする。
実施形態においては、広告に係るAPIは、アカウントの設定等を行う「アカウントAPI」、広告の全体予算等の設定を行う「キャンペーンAPI」、詳細な入札価格等の設定を行う「広告グループAPI」、具体的な広告コンテンツの設定を行う「広告API」の順に階層関係を有するものとする。すなわち、アカウントAPIは、キャンペーンAPIに対して上位である。また、キャンペーンAPIは、広告グループAPIに対して上位である。また、広告グループAPIは、広告APIに対して上位である。
まず、ユーザは、アカウントAPIを利用し、アカウントの設定を行ったものとする。続いて、ユーザは、キャンペーンAPIを利用する。図3は、実施形態に係るキャンペーンAPIを説明する図である。キャンペーンAPIは、広告に係るウェブAPIの1つであり、例えば、所定の実行サーバ20から提供される。ユーザは、キャンペーンAPIを利用する場合、表示画面31に表示される所定のUIを用いて、画面内の項目に情報を入力する。これにより、ユーザは、広告に係るキャンペーンを設定できる。表示画面31において、「*」が表示される項目は、入力が必須である必須項目を示す。例えば、表示画面31において、「キャンペーン名」が入力されていない場合、キャンペーンAPIは、エラーを返す。表示画面31において、「*」が表示されていない項目は、入力が必須でない任意項目を示す。任意項目の場合、項目に情報が入力されていなくても、エラーとならない場合がある。また、表示画面31において、「入札方法」や、「配信方法」を選択するためのラジオボタンが設けられている。かかる選択によって、キャンペーンAPIが戻り値として発行する参照情報が変化する場合がある。
そして、ユーザは、キャンペーンAPIを利用し、キャンペーンの設定を行ったものとする。続いて、ユーザは、広告グループAPIを利用する。図4は、実施形態に係る広告グループAPIを説明する図である。ユーザは、広告グループAPIを利用する場合、表示画面32に表示される所定のUIを用いて、画面内の項目に情報を入力する。これにより、ユーザは、配信させようとする広告コンテンツの上位概念である広告グループを作成することができる。なお、図4に示すように、表示画面32にも表示画面31と同様、必須項目や、任意項目や、選択項目が存在する。
そして、ユーザは、広告グループAPIを利用し、広告グループの設定を行ったものとする。続いて、ユーザは、広告APIを利用する。図5は、実施形態に係る広告グループAPIを説明する図(1)である。図5に示すように、ユーザは、広告APIにおいて、表示画面33のようなUIを介して、広告コンテンツに係るキーワードを入力することができる。広告コンテンツに係るキーワードは、例えば、検索処理の際に検索クエリとして用いられる。
ユーザは、キーワードの設定を行った場合、次の設定を行う。図6は、実施形態に係る広告グループAPIを説明する図(2)である。図6に示すように、ユーザは、広告APIにおいて、表示画面34のようなUIを介して、広告コンテンツに係る詳細な設定を行う。なお、広告APIにおいて、ユーザが配信を希望する広告コンテンツの種別によって、広告APIの処理が変化する場合がある。例えば、ユーザは、広告APIにおいて、テキストによる広告コンテンツを作成するか、あるいは、例えばスマートフォン等で動作するアプリ用の広告コンテンツを作成するかを選択できる。このようにAPIの処理が2通りある場合、後述するテストケースに影響を与える場合がある。
以上、図3乃至図6を用いて、広告に係るAPIについて説明した。続いて、図7乃至図11を用いて、検証装置100で実行される検証プログラムが広告APIを検証する処理の一例について説明する。
図7は、実施形態に係る作成処理を説明する図(1)である。図7では、広告APIに関するテストケースを作成するための処理の流れを示している。
まず、ユーザは、テストを実行するシステムを選択する(ステップS21)。ここでは、システムとは、種々のAPIを管理するためのカテゴリを示す。実施形態においては、システム「bltapi」において、検証に係るAPIが管理されているものとする。
続いて、ユーザは、検証を行うサービス(API)を選択する(ステップS22)。ここでは、ユーザは、4つのサービスのうち、検証を行うAPIとして広告API(図7では「adGroupad」と表記)を選択する。
そして、ユーザは、サービスに関するフィールド(Field)、そのフィールドに係る状態(Value)などを適宜選択する(ステップS23、24)。なお、かかる処理は、サービスを選択した時点で、自動で行われてもよい。すなわち、検証装置100は、APIに係る情報を取得した時点で、各々のAPIの変数や配列に関する情報を取得し、サービスが選択された時点で、取得していた情報を適用することで、各サービスに対するフィールド等が読み込まれる。
そして、ユーザは、サービスに関する上位階層の設定を行う(ステップS25)。図7において、階層関係は「Chain」という項目で示されている。すなわち、ユーザは、サービス「adGroupad」の上位階層のサービスとして、「acccount」、「campain」、「adGroup」を指定し、階層関係を設定させる。なお、図7の「acccount」、「campain」、「adGroup」という表記は、上述の広告に係るAPIとして説明した「アカウントAPI」、「キャンペーンAPI」、「広告グループAPI」にそれぞれ対応する。
なお、検証を行うサービスについて、テストを実施可能なメソッドが複数存在する場合がある(ステップS26)。例えば、サービス「adGroupad」では、メソッドとして「add」、「set」、「remove」、「get」が選択可能である。かかるメソッドは、テストが実行される際にユーザによって選択される。そして、ユーザは、サービス「adGroupad」のAPIリファレンスを設定する(ステップS27)。かかるAPIリファレンスについても、検証装置100は、各々のAPIに対して設定された情報を事前に取得することができる。
そして、ユーザは、検証処理で実行されるテストパターンを選択する(ステップS28)。一例として、ユーザは、サービス「adGroupad」に対するテストパターンとして、「必須項目×デフォルト値」、「必須項目×最小値」といった入力項目を選択する(図7では、それぞれ「required×default」、「required×min」と表記)。
そして、ステップS21〜S28の項目で選択された情報に基づいて、作成部132は、テストケースを作成する(ステップS29)。なお、上述のように、広告APIは、テキスト広告と、アプリ用広告という2種類の広告を作ることが可能であり、かかる処理は異なる処理により行われる。そのため、作成部132は、テキスト広告と、アプリ用広告という2種類の処理に対応したテストケースをそれぞれ自動的に作成する。
ここで、上記のようにユーザが設定する処理を、UIを模した図を用いて説明する。図8は、実施形態に係る作成処理を説明する図(2)である。図8では、ユーザがUIを介して、サービス「adGroupad」に階層関係を指定する例を示している。例えば、UIは、ユーザ端末10が有する表示部41に表示される。
ユーザは、サービス「adGroupad」の「上位階層設定」という項目を選択することで、上位階層の設定に用いる表410を表示させることができる。表410に示すように、サービス「adGroupad」に対して、「階層レベル Level−1」として、「Account」が設定されている。なお、「階層レベル」の項目は、数字が小さいほど上位を示す。同様に、サービス「adGroupad」に対して、「階層レベル Level−2」として「campain」が、「階層レベル Level−3」として「adGroup」が、それぞれ設定されている。このように、ユーザは、UIを介して、サービス「adGroupad」に対する階層関係を指定する。受付部133は、かかる指定を受け付け、設定部134は、かかる指定に基づいて、階層関係を設定する。
続いて、テストパターンの例について、UIを模した図を用いて説明する。図9は、実施形態に係る作成処理を説明する図(3)である。図9では、ユーザがUIを介して、テストパターンを指定する例を示している。
図7では、ユーザは、「必須項目×デフォルト値」、「必須項目×最小値」という2つのテストパターンを選択する例を示した。実際には、ユーザは、図9に示すように、多数用意されたテストパターンから、テストパターンを任意に選択することができる。
また、図9に示すように、テストパターンには「期待結果」という項目が存在する。これは、テストパターンとして情報が入力された場合に、その入力に対して、APIが「成功」と返すことが望ましいのか、「失敗」と返すことが望ましいのかを選択する項目である。例えば、APIは、「必須項目×デフォルト値」の場合、処理が可能な値が必須項目に入力されているので、「成功」を返すことが望まれる。一方、APIは、「必須項目×入力なし」の場合、必須項目に値が入力されていないため、「失敗(エラー)」を返すのが望ましい。このように、検証装置100は、予め想定されるテストパターンと期待結果を記憶する。そして、ユーザは、かかるテストパターンを選択することにより、行いたいテストを効率良く行うことができる。なお、ユーザは、テストパターンを任意に作成してもよい。この場合、受付部133は、かかるテストパターンの作成を受け付ける。設定部134は、新たに作成されたテストパターンを設定する。
上記のように、ユーザがテストを行うAPIを選択し、テストに係る情報を選択することにより、作成部132によってテストケースが作成される。
続いて、図10乃至図12を用いて、作成部132によって作成されたテストケースを用いて、検証対象APIを検証する処理について説明する。まず、図10を用いて、テストを行うにあたってユーザが指定するテスト環境について説明する。
図10は、実施形態に係る検証処理を説明する図(1)である。図10では、テストケースを実行する際にユーザが選択する項目について説明する。
まず、ユーザは、テスト環境(図10では、「Environment」と表記)を選択する(ステップS31)。テスト環境とは、例えば、検証プログラムを利用するユーザ毎に用意されるテストの環境設定等である。続いて、ユーザは、テストを実行するシステムを選択する(ステップS32)。システムは、図7で示した項目に対応する。
そして、ユーザは、テストを実行するサービス(API)を選択する(ステップS33)。ここでは、ユーザは、サービスとして「adGroupad」を選択するものとする。続いて、ユーザは、テストケースを用いて実行するメソッド(図10では、「Execute」と表記)を選択する。ここでは、ユーザは、実行するメソッドとして「add」を選択するものとする。ユーザの選択に基づいて、実行部136は、検証対象APIに対する検証処理を実行する。
具体的には、実行部136は、作成処理において作成された2つのテストケースについて、検証対象APIである広告APIに対して、指定されたメソッドを実行して、かかる処理が成功であったか、失敗であったかの結果を得る。ここで、実行部136は、実行される処理に参照情報が利用される場合には、適宜、上位階層のAPIを呼び出すことで、参照情報を得る。なお、実行部136は、最上位のAPIに対する参照情報については、予め所定の参照情報を用意する。例えば、実行部136は、広告APIに対して最上位であるアカウントAPIに対しては、テストのための所定の参照情報を当て嵌めることで処理を実行する。
そして、実行部136によって実行された結果について、格納部137は、テスト結果記憶部123に格納する。そして、かかる結果は、UI提供部131が提供するUIを介して、ユーザに通知される。この点について、図11を用いて説明する。
図11は、実施形態に係る検証処理を説明する図(2)である。図11では、UIを介して、広告APIの「add」の実行を行った実行結果が表示される例を示している。図11に示すように、UIを介して、実行部136が行った実行結果がテストパターンごとに表示される。
また、実行部136は、1つのテストパターンに対して、上層のAPIが発行した参照情報ごとに実行する。この点について、図12を用いて説明する。図12は、実施形態に係る検証処理を説明する図(3)である。図12では、UIを介して、テストパターン「REQUIRED PATTERN」の詳細が表示される状態を示している。
図12の表411では、1つのテストパターンが実行される場合に、いくつのテストケースが実際に検証されたかを示している。上記では、広告APIでは、アプリ広告と、テキスト広告の2種類のテストケースが検証されることを説明した。そして、広告APIには、上層のAPIであるアカウントAPIと、キャンペーンAPI、広告グループAPIが設定されているため、各APIが発行した参照情報ごとに検証が行われる。
例えば、図12の表411の一例では、「(account)required×default (campaign) AAA×aaa (adGroup) XXX >>>APP AD」というテストケースにより、テストパターン「REQUIRED PATTERN」が実行されたことを示している。例えば、「(campaign) AAA×aaa」という表記は、キャンペーンAPIが発行する参照情報によって変化する情報を示している。「AAA」や「aaa」等は、キャンペーンAPIに入力される値によってキャンペーンAPIが発行する参照情報が変化することを概念的に示すものである。一例としては、図3で示した例において、キャンペーンAPIの設定で選択される入札方法の違い(「手動で設定する」か「自動入札を設定する」を選択する違い)などにより、「AAA」や「aaa」に該当する項目が変化する。
図12の例では、キャンペーンAPIは「AAA×aaa」、「AAA×bbb」、「BBB×aaa」、「BBB×bbb」という、4種類の異なる参照情報を発行する場合があることを示している。また、広告グループAPIは、「XXX」と、「YYY」という2種類の参照情報を発行する場合があることを示している。また、上記のように、広告APIは、「APP AD(アプリ広告)」と、「TEXT AD(テキスト広告)」の2種類のテストケースを取りうることを示している。このように、実行部136は、1つのテストケースであっても、上層のAPIを呼び出して参照情報を取得しながら下層のAPIを実行することにより、網羅的に検証対象APIを検証することができる。
なお、上層のAPIの発行した参照情報によって、下層のAPIが取りうる参照情報の数が変わる場合がある。図12の例では、例えば、キャンペーンAPIが「AAA」という選択を行った場合、広告グループAPIは「XXX」を取りうるが、「YYY」を取りえないという状況がありうる。かかる状況は、API同士の関係性によるものであり、実行部136は、例えば、上層のAPIを実行する過程においてかかる関係性を導出し、API同士が取りうる選択によって作成されるテストケースを用いて検証を行う。そのため、図12に示す例においても、テストパターンによっては、詳細情報に8つ以上のテストケースが表示される場合もあり、また、より少ないテストケースが表示される場合もありうる。また、図12での図示は省略しているが、各処理結果には、検証が行われた時間などの履歴情報が含まれる。ユーザは、かかる履歴情報を参照し、ネットワーク上のAPIが適切に動作しているか、また、APIのリンク切れが発生したのがいつ頃なのか、といった情報を把握する管理ツールとして、検証プログラムを用いることができる。
〔4.検証処理手順〕
次に、図13及び図14を用いて、実施形態に係る検証装置100による処理の手順について説明する。図13は、実施形態に係る検証装置100による作成処理手順を示すフローチャートである。
図13に示すように、受付部133は、ユーザ端末10からAPIの設定を受け付ける(ステップS101)。ここで、APIの設定とは、例えば、APIの階層関係の設定などをいう。この場合、設定部134は、受付部133によって受け付けられた内容を設定する。さらに、受付部133は、検証対象APIで検証する内容として、テストパターンの選択を受け付ける(ステップS102)。
そして、作成部132は、受付部133によって受け付けられた内容に基づいて、検証対象APIに対するテストケースを作成する(ステップS103)。作成部132は、作成したテストケースをテストケース記憶部122に格納し、作成処理を終了する。
次に、図14を用いて、実施形態に係る検証装置100による検証処理の手順について説明する。図14は、実施形態に係る検証装置100による検証処理手順を示すフローチャートである。
まず、検証部135は、ユーザからテスト環境の選択を受け付ける(ステップS201)。テスト環境の選択とは、図10に示すような、テストを行うシステム等を特定したり、APIに実行させる処理を選択したりすることをいう。
そして、実行部136は、検証対象APIに対するテストを実行する(ステップS202)。ここで、実行部136は、実行している検証対象APIに関して、階層関係が設定されているか否かを判定する(ステップS203)。具体的には、実行部136は、実行しようとするスクリプト内に、参照情報が入るべき空欄の箇所があるか否かを判定し、かかる空欄を埋めることができる上層APIからの戻り値(参照情報)を取得することを判定する。
実行部136は、階層関係が設定されている場合には(ステップS203;Yes)、上層のAPIを呼び出し、上層のAPIを実行する(ステップS204)。そして、実行部136は、上層のAPIから発行される戻り値を参照情報として取得する(ステップS205)。
そして、実行部136は、取得した参照情報に基づいて、テストを実行する(ステップS206)。例えば、実行部136は、実行するスクリプト内に参照情報(例えば、数桁の数値などのIDとして発行された情報)を代入し、検証対象APIの挙動を検証する。
そして、実行部136は、テスト結果を取得する(ステップS207)。なお、検証対象APIに階層関係が設定されていない場合には(ステップS203;No)、実行部136は、検証対象APIに係るテストケースをそのまま実行し、テスト結果を取得する(ステップS207)。そして、格納部137は、テスト結果をテスト結果記憶部123に格納し、検証処理を終了する。
〔5.変形例〕
上述した実施形態に係る検証装置100によって実施される検証プログラムは、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、上記の検証装置100及び検証プログラムの他の実施形態について説明する。
〔5−1.API〕
上記実施形態では、広告に係るAPIについて検証処理を実行する例を示した。しかし、検証装置100は、広告に係るAPIに限らず、上記処理を行うことができる。例えば、検証装置100に係る検証プログラムによれば、階層関係を有するようなAPIであり、REST(Representational State Transfer)形式で設計されたAPIであれば、いずれも上記の検証処理が適用可能である。
〔5−2.自動設定〕
上記実施形態において、検証装置100は、ユーザからAPIに関するフィールド等、変数や配列の設定を手動で受け付ける例を示した。ここで、検証装置100は、APIに特定の変換を行うことにより、上記の設定を自動で行うようにしてもよい。
例えば、検証装置100は、所定の言語間の変換を行うコンバータ(converter)を有することにより、APIの設定を自動的に行う。例えば、APIの作成者は、特定のプログラミング言語(例えばJAVA等)で作成したAPIと、所定のIDL(Interface Description Language)ファイルを作成する。IDLファイルは、記載されたソースコードベースでフィールド等を予め定義するファイルである。そして、検証装置100は、IDLコンバータを利用することで、フィールド等が定義されたJAVAソースのAPIが作成される。これにより、ユーザ(または、検証プログラムにおいて事前にAPIの設定を行う提供者)がフィールド等を手動で設定する手間を省くことが可能となる。
〔5−3.実行処理〕
上記実施形態では、実行部136が実行する処理において「add」を選択する例を示した。ここで、実行部136は、ユーザから「set」等の命令が選択された際には、予め検証対象APIを実行し、所定の戻り値を得てから検証を行うようにしてもよい。これは、「set」は、所定の値を置き換える処理であり、置き換える対象となる値が存在しない場合には、検証処理を行うことができないことによる。このため、実行部136は、予め検証対象APIを動作させることで、「set」の対象となる戻り値を取得しておき、かかる戻り値を利用して検証処理を実行することができる。
〔5−4.上位関係〕
APIにおいては、上位関係に応じて、下層のAPIが取りうる処理の数が決まる場合がある。実施形態における広告に係るAPIを用いて、具体的に説明する。例えば、キャンペーンAPIでは、APIの管理者等によって作成できるキャンペーンの数が決められている場合がある。これは、例えば、実際のAPIの運用で支障をきたさぬよう、APIに予め設定される。例えば、キャンペーンAPIでは、作成できるキャンペーンの数に「100」という上限値が定められているものとする。この場合、実行されるテストケースが「100」を超える場合には、検証処理においてエラーが発生する。これは、検証処理においてAPIが実行される際には実際にキャンペーンの作成処理が行われるため、設定された上限値を超えた処理を行うことができないことによる。しかしながら、テストケースは上層のAPIが発行する参照情報の組合せにより増大するため、ユーザは、テストを実行する際に、上記のような上限値の条件を満たしているかを判断することが困難である。
この場合、実行部136は、所定の回避手段を行い、検証処理にエラーが発生しないよう調整する。一例として、実行部136は、キャンペーンAPIの上位にあるアカウントAPIで発行する参照情報について、テストケースが行える数を満たすよう発行させる。例えば、アカウントAPIで2種類の参照情報が発行された場合、実行部136は、各々でキャンペーンAPIに対する処理を行うことができるため、キャンペーンAPIで作成されるキャンペーンの数を「200」にすることができる。このように、実行部136は、上層のAPIで発行される参照情報を調整することにより、作成されるテストケースが増大した場合であっても、エラーを発生させずにテストを行うことができる。
〔6.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
例えば、図2に示した記憶部120は、検証装置100が保持せずに、所定のストレージサーバ等に保持されてもよい。この場合、検証装置100は、ストレージサーバにアクセスすることで、格納されている各種情報を取得する。
また、例えば、上述してきた検証装置100は、UIを介してユーザ端末10との情報の送受信を中心に行うフロントエンドサーバ側と、実際にAPIのテストを実行するバックエンドサーバ側に分散されてもよい。また、検証装置100と実行サーバ20は一体に構成されてもよい。この場合、検証装置100は、所定のAPIを自ら保持し、かかるAPIを実行部136に実行させる。
〔7.ハードウェア構成〕
また、上述してきた実施形態に係る検証装置100は、例えば図15に示すような構成のコンピュータ1000によって実現される。図15は、検証装置100の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を記憶する。通信インターフェイス1500は、通信網500(実施形態における所定の通信ネットワークに対応する)を介して他の機器からデータを受信してCPU1100へ送り、また、通信網500を介してCPU1100が生成したデータを他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、入出力インターフェイス1600を介して生成したデータを出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラム又はデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が検証装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、HDD1400には、記憶部120内の各データが格納される。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から通信網500を介してこれらのプログラムを取得してもよい。
〔8.効果〕
上述してきたように、実施形態に係る検証装置100は、作成部132と、設定部134と、検証部135とを有する。作成部132は、検証対象である検証対象APIに対して実行されるテストケースを作成する。設定部134は、検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う。検証部135は、設定部134によって設定された階層関係に基づき、上位の階層にある他のAPIを呼び出すことにより参照情報を取得し、取得された参照情報及びテストケースを用いて検証対象APIを検証する。なお、上記の検証装置100による処理は、本願に係る検証プログラムが検証装置100の制御部130に係る各処理を実行させることにより行われる。
このように、実施形態に係る検証装置100は、階層関係など相互に関係を有するAPIの検証処理を効率良く行うことができる。すなわち、テストを実施させるユーザは、検証対象APIの階層関係を設定することで、上位階層のAPIがとりうる戻り値の組合せ等を意識することなく、検証対象APIに対するテストを実行させることができる。このように、検証装置100は、階層関係を有するAPIに対して、網羅的な検証を効率良く行うことができる。
また、設定部134は、検証対象APIに対する階層関係の順序を示す情報である階層レベルをAPIごとに設定する。そして、検証部135は、設定部134によって設定された階層レベルが上位の順に他のAPIを呼び出し、より下位の階層レベルに対応するAPIが利用する参照情報を取得し、取得された参照情報を用いて検証対象APIを検証する。
このように、実施形態に係る検証装置100は、APIが多層的な関係を有する場合であっても、かかる関係の定義を受け付けることにより、検証対象APIの検証を行うことができる。これにより、検証装置100によれば、1つのテストパターンから参照情報ごとに派生するテスト結果を網羅的に取得することができるため、漏れのない効率的な処理を行うことができる。
また、実施形態に係る検証装置100は、検証部135によって検証された結果を表示するUIを提供するUI提供部131(提供部の一例)をさらに有する。UI提供部131は、UIを介して、検証対象APIの検証結果と併せて、検証対象APIの検証に用いられた他のAPI(例えば、検証対象APIとの階層関係が設定されたAPI)に関する情報を提供する。
このように、実施形態に係る検証装置100は、ユーザが検証結果を閲覧することが可能なUIを提供する。これにより、検証装置100によれば、相互に関係を有するような複雑な検証を要するAPIであっても、視覚的な情報に基づいて管理を行わせることができるので、ユーザの管理にかかる負担を軽減させることができる。また、検証装置100によれば、検証結果として他のAPIの情報についても提供できるので、人的に管理することが困難であったAPI同士の関連性を容易に把握させることができる。
なお、検証対象APIは、ウェブネットワークを介して所定のユーザに利用される機能を提供するAPIであってもよい。
検証装置100によれば、上述のように、階層関係を有するウェブAPIについて網羅的な検証を行うことができる。これにより、検証装置100は、例えば、APIが保持されているサーバの動作不備や、リンク切れなどを容易にユーザに把握させることができ、ウェブネットワークを介して利用するAPIに対する利便性を向上させることができる。
また、検証対象APIは、ウェブネットワーク上で配信される広告の設定を受け付ける機能を提供するAPIであってもよい。
検証装置100によれば、例えば、広告主が配信させようとする広告の種類(入札価格の自動設定、手動設定などの選択や、テキスト広告であるか否かなど)を設定するAPIについての網羅的な検証を行うことができるため、広告主や、広告配信会社にとって、APIの管理を効率良く行わせることができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上述した検証装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットフォーム等をAPI(Application Programming Interface)やネットワークコンピューティングなどで呼び出して実現するなど、構成は柔軟に変更できる。
また、特許請求の範囲に記載した「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、検証部は、検証手段や検証回路に読み替えることができる。
1 検証システム
10 ユーザ端末
20 実行サーバ
100 検証装置
110 通信部
120 記憶部
121 API情報記憶部
122 テストケース記憶部
123 テスト結果記憶部
130 制御部
131 UI提供部
132 作成部
133 受付部
134 設定部
135 検証部
136 実行部
137 格納部

Claims (7)

  1. 検証対象である検証対象API(Application Programming Interface)に対して実行されるテストケースを作成する作成手順と、
    前記検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う設定手順と、
    前記設定手順によって設定された階層関係に基づき、上位の階層にある前記他のAPIを呼び出すことにより前記参照情報を取得し、取得された前記参照情報及び前記テストケースを用いて検証対象APIを検証する検証手順と、
    をコンピュータに実行させることを特徴とする検証プログラム。
  2. 前記設定手順は、
    前記検証対象APIに対する階層関係の順序を示す情報である階層レベルを前記他のAPIごとに設定し、
    前記検証手順は、
    前記設定手順によって設定された階層レベルが上位の順に前記他のAPIを呼び出し、より下位の階層レベルに対応するAPIが利用する参照情報を取得し、取得された参照情報を用いて前記検証対象APIを検証する、
    ことを特徴とする請求項1に記載の検証プログラム。
  3. 前記検証手順によって検証された結果を表示するUI(User Interface)を提供する提供手順、
    をさらに含み、
    前記提供手順は、
    前記UIを介して、前記検証対象APIの検証結果と併せて、前記検証対象APIの検証に用いられた前記他のAPIに関する情報を提供する、
    ことを特徴とする請求項1又は2に記載の検証プログラム。
  4. 前記検証対象APIは、ウェブネットワークを介して所定のユーザに利用される機能を提供するAPIである、
    ことを特徴とする請求項1〜3のいずれか一つに記載の検証プログラム。
  5. 前記検証対象APIは、ウェブネットワーク上で配信される広告の設定を受け付ける機能を提供するAPIである、
    ことを特徴とする請求項1〜4のいずれか一つに記載の検証プログラム。
  6. 検証対象である検証対象APIに対して実行されるテストケースを作成する作成部と、
    前記検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う設定部と、
    前記設定部によって設定された階層関係に基づき、上位の階層にある前記他のAPIを呼び出すことにより前記参照情報を取得し、取得された前記参照情報及び前記テストケースを用いて検証対象APIを検証する検証部と、
    を備えることを特徴とする検証装置。
  7. コンピュータが実行する検証方法であって、
    検証対象である検証対象APIに対して実行されるテストケースを作成する作成工程と、
    前記検証対象APIと、当該検証対象APIが実行される際に利用する情報である参照情報を戻り値として返す関係にある他のAPIとの階層関係の設定を行う設定工程と、
    前記設定工程によって設定された階層関係に基づき、上位の階層にある前記他のAPIを呼び出すことにより前記参照情報を取得し、取得された前記参照情報及び前記テストケースを用いて検証対象APIを検証する検証工程と、
    を含むことを特徴とする検証方法。
JP2015058549A 2015-03-20 2015-03-20 検証プログラム、検証装置及び検証方法 Active JP6300750B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015058549A JP6300750B2 (ja) 2015-03-20 2015-03-20 検証プログラム、検証装置及び検証方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015058549A JP6300750B2 (ja) 2015-03-20 2015-03-20 検証プログラム、検証装置及び検証方法

Publications (2)

Publication Number Publication Date
JP2016177659A true JP2016177659A (ja) 2016-10-06
JP6300750B2 JP6300750B2 (ja) 2018-03-28

Family

ID=57069452

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015058549A Active JP6300750B2 (ja) 2015-03-20 2015-03-20 検証プログラム、検証装置及び検証方法

Country Status (1)

Country Link
JP (1) JP6300750B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032956A (zh) * 2018-09-11 2018-12-18 郑州云海信息技术有限公司 一种接口测试方法及装置
WO2020157795A1 (ja) * 2019-01-28 2020-08-06 三菱電機株式会社 試験装置、試験方法および試験プログラム
KR102614650B1 (ko) * 2022-11-28 2023-12-19 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223700A (ja) * 2008-03-17 2009-10-01 Ricoh Co Ltd テストケース動的構築装置
WO2009150788A1 (ja) * 2008-06-10 2009-12-17 パナソニック株式会社 組み込み機器におけるapi評価システム
JP2016170548A (ja) * 2015-03-11 2016-09-23 株式会社リコー 情報処理システム、情報処理装置および情報処理プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223700A (ja) * 2008-03-17 2009-10-01 Ricoh Co Ltd テストケース動的構築装置
WO2009150788A1 (ja) * 2008-06-10 2009-12-17 パナソニック株式会社 組み込み機器におけるapi評価システム
JP2016170548A (ja) * 2015-03-11 2016-09-23 株式会社リコー 情報処理システム、情報処理装置および情報処理プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032956A (zh) * 2018-09-11 2018-12-18 郑州云海信息技术有限公司 一种接口测试方法及装置
CN109032956B (zh) * 2018-09-11 2022-03-22 郑州云海信息技术有限公司 一种接口测试方法及装置
WO2020157795A1 (ja) * 2019-01-28 2020-08-06 三菱電機株式会社 試験装置、試験方法および試験プログラム
JPWO2020157795A1 (ja) * 2019-01-28 2021-04-30 三菱電機株式会社 試験装置、試験方法および試験プログラム
KR102614650B1 (ko) * 2022-11-28 2023-12-19 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법
WO2024117381A1 (ko) * 2022-11-28 2024-06-06 쿠팡 주식회사 전자 장치 및 그의 api 관리 방법

Also Published As

Publication number Publication date
JP6300750B2 (ja) 2018-03-28

Similar Documents

Publication Publication Date Title
US10057118B2 (en) Method and apparatus for enabling dynamic analytics configuration on a mobile device
US8584116B2 (en) Installing method, installer, and installing program
US8140578B2 (en) Multilevel hierarchical associations between entities in a knowledge system
US20120066667A1 (en) Simulation environment for distributed programs
US20160132314A1 (en) Remote configuration management of applications
EP3398063B1 (en) Controlled deployment of application feature
US20160103585A1 (en) Facilitating dynamic customization of reporting tools in an on-demand services environment
US20130179798A1 (en) Application dissemination and feedback
US20120226818A1 (en) Publishable Metadata for Content Management and Component Testing
US20150339628A1 (en) Online software service system and method
US20200042310A1 (en) Automated software package deployment
US9692808B2 (en) Code path directives for controlling in-app experiences
US11487595B2 (en) API adapter creation device, API adapter creation method, and API adapter creation program
CN111913738A (zh) 访问请求的处理方法、装置、计算设备和介质
US8296723B2 (en) Configurable unified modeling language building blocks
US8984487B2 (en) Resource tracker
JP6300750B2 (ja) 検証プログラム、検証装置及び検証方法
JP2010003224A (ja) テスト情報管理サーバ、テスト情報管理方法、およびプログラム
US9910725B2 (en) Error-specific advertisement display in electronic device
CN107918543B (zh) 安装包生成的方法、装置、计算机设备和存储介质
JP6505849B2 (ja) 要素識別子の生成
CN109254778B (zh) 用于部署信息流***的方法和装置
WO2024049456A1 (en) Method and system for testing automation in marketplace
US9767000B1 (en) Selecting appropriate subsets of software tests
Barroca Filho et al. A case study of development of a mobile application from an existing web information system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180122

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180227

R150 Certificate of patent or registration of utility model

Ref document number: 6300750

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250