JP7115342B2 - デバッグ支援システムおよびデバッグ支援方法 - Google Patents

デバッグ支援システムおよびデバッグ支援方法 Download PDF

Info

Publication number
JP7115342B2
JP7115342B2 JP2019016184A JP2019016184A JP7115342B2 JP 7115342 B2 JP7115342 B2 JP 7115342B2 JP 2019016184 A JP2019016184 A JP 2019016184A JP 2019016184 A JP2019016184 A JP 2019016184A JP 7115342 B2 JP7115342 B2 JP 7115342B2
Authority
JP
Japan
Prior art keywords
program
debug
information
rule
support system
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.)
Active
Application number
JP2019016184A
Other languages
English (en)
Other versions
JP2020123268A (ja
Inventor
英毅 小矢
一 中島
健 増田
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2019016184A priority Critical patent/JP7115342B2/ja
Priority to US17/427,166 priority patent/US12007872B2/en
Priority to PCT/JP2020/001538 priority patent/WO2020158460A1/ja
Publication of JP2020123268A publication Critical patent/JP2020123268A/ja
Application granted granted Critical
Publication of JP7115342B2 publication Critical patent/JP7115342B2/ja
Active 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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

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

Description

本発明は、デバッグ支援システムおよびデバッグ支援方法に関する。
Webシステムの利便性向上や操作ミス軽減を実現する方法であるUI(User Interface:ユーザインターフェース)拡張とは、システムを改造せずに、Web画面の入力チェックや自動化などの機能拡張を追加することで、オペレータの生産性を向上させる技術である。通常、WebシステムのUIに機能追加する場合、プログラミング言語でシステムのHTMLやソースコードを直接、改修するが、UI拡張ではプログラミング言語ではなく、主に抽象的なルールを作成し、そのルールをUI拡張の機構(以下、拡張プログラム)がプログラムコードに変換することで、機能追加を実現する。
また、プログラムのバグを取り除くデバッグはソフトウェア開発工程の大きな割合を占めており、UI拡張においても、1回のルール作成でバグのないルールを作ることは困難であるため、デバッグ作業は必要となる。
江木鶴子、竹内章、"プログラミング初心者にトレースを指導するデバッグ支援システムの開発と評価"、日本教育工学会論文誌、vol.32、No.4、pp.369-381、2009 平井健治、杉本明、阿部茂、"分散制御システムのデバッグ手法:要求仕様を用いたイベントヒストリ検査"、情報処理学会論文誌、vol.33、No.4、pp.491-500、Apr.、1992 宿口雅弘、"組込みシステムのデバッグ手法"、情報処理、38巻、10号、1997年10月 西川健一、増田健、足立洋之、土川公雄、井上晃、丸山勉、"Webベースの業務システムのユーザインターフェース拡張方式"、信学技報、2016
しかしながら、従来の手法では、デバッグを効率的に行うことが難しく、ルール作成の効率向上およびルール作成の品質向上ができない場合があるという課題があった。例えば、従来のデバッグはルールが具象化された状態(例えば、JavaScript(登録商標)などのプログラミング言語)で実施しなければならず、ルール作成時とデバッグ時とでは必要とする知識や情報に大きな乖離があるため、ルール作成者がデバッグを効率的に行うことが難しかった。
上述した課題を解決し、目的を達成するために、本発明のデバッグ支援システムは、拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化部と、前記抽象化部によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信部とを有することを特徴とする。
また、本発明のデバッグ支援方法は、デバッグ支援システムによって実行されるデバッグ支援方法であって、既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化工程と、前記抽象化工程によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信工程とを含んだことを特徴とする。
本発明によれば、デバッグを効率的に行って、ルール作成の効率向上およびルール作成の品質向上を図ることができるという効果を奏する。
図1は、第1の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。 図2は、第1の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。 図3は、抽象化されたデバッグ情報の出力例を示す図である。 図4は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する図である。 図5は、デバッグ情報に関するパラメータをウォッチする機能を説明する図である。 図6は、第1の実施形態に係るデバッグ支援システムによる抽象化処理の流れの一例を示すフローチャートである。 図7は、第1の実施形態に係るデバッグ支援システムによる抽象化処理を説明するための図である。 図8は、第2の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。 図9は、第2の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。 図10は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理の流れの一例を示すフローチャートである。 図11は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。 図12は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。 図13は、第2の実施形態に係るデバッグ支援システムによるテスト実行処理の流れの一例を示すフローチャートである。 図14は、第2の実施形態に係るデバッグ支援システムによるテスト実行処理を説明するための図である。 図15は、デバッグ支援プログラムを実行するコンピュータを示す図である。
以下に、本願に係るデバッグ支援システムおよびデバッグ支援方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係るデバッグ支援システムおよびデバッグ支援方法が限定されるものではない。また、本願ではJavaScript等のプログラムを、プログラミング等の知識を有さないユーザが可読性高くあるいは作成しやすく抽象化した状態をルールと定義する。抽象化の方法は、プログラムをブロックの組み合わせとして抽象化してルールを表現する手法や、フローチャートとして抽象化して表現する方法など任意の方法を用いることができる。加えて、ルールをプログラムに展開することを具象化と呼ぶ。さらに、設定項目とはルールの設定単位を示す。例えば、ブロックの組み合わせでルールを表現する場合は、一つのブロックが設定項目となる。
[第1の実施形態]
以下の実施の形態では、第1の実施形態に係るデバッグ支援システム100の構成、デバッグ支援システム100の処理の流れを順に説明し、最後に第1の実施形態による効果を説明する。
[デバッグ支援システムの構成]
まず、図1を用いて、第1の実施形態のデバッグ支援システム100の構成例を説明する。図1は、第1の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。デバッグ支援システム100は、例えば、図1に示すように、デバッグ支援装置10、Webサーバ20、プロキシサーバ30および端末装置40を有する。
デバッグ支援装置10は、UI拡張のルールと同じ粒度に抽象化されたUI拡張のデバッグ情報のみを出力する。また、デバッグ支援装置10は、デバッグ対象とするWebページを模擬したテストページを生成し、該テストへUI拡張のルールを適用し、ルールが適用されたテストページ13aをWebブラウザ13で表示する。
Webサーバ20は、端末装置40からのダウンロード要求に応じて、Webページのデータをプロキシサーバ30を介して端末装置40へ送信する。プロキシサーバ30は、Webサーバ20から受信したWebページのデータを端末装置40に中継する。また、プロキシサーバ30は、Webサーバ20から受信したWebページに適用するUI拡張のルールを挿入したり、デバッグ情報を出力するためのプログラムを挿入したりする。
プロキシサーバ30は、拡張機能追加部31およびデバッグ情報抽象化部32を有する。拡張機能追加部31は、Webサーバ20からダウンロードされたWebページの文書に対して、該当ページに適用する拡張機能のルールがJavaScriptに具象化されたものを挿入する。ここで拡張機能のルールを挿入する方法は、例えば、プロキシサーバにより該当文書を端末装置にダウンロードする過程で挿入する方法や、ブラウザアドオンによりWebブラウザが挿入する方法、MSHTMLなどの機能を用いて端末装置40の別アプリケーションから挿入する方法など任意の手法が利用できる。本実施例では、適用対象をWebシステムのケースで説明しているが、端末装置上で動作するローカルアプリケーションでもよく、その場合は、アプリケーションの実装に応じた適切な公知の挿入手段を利用すればよい(JavaアプリケーションであればBytecode Injectionなどが知られている)。
デバッグ情報抽象化部32は、既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する。例えば、デバッグ情報抽象化部32は、拡張機能追加部31が挿入するルールが具象化されたJavaScriptに対し、デバッグ情報をルールと同じ抽象度で出力するJavaScriptを追加する。
例えば、デバッグ情報抽象化部32は、拡張プログラムにおける所定のルールの設定項目をプログラムに具象化する際に、デバッグ情報として、少なくとも設定項目の反映の開始と終了を示す情報と、該設定項目に入力されたパラメータ情報と、該設定項目の反映に失敗した場合の例外情報と該設定項目を一意に特定する識別子とを出力するためのプログラムを具象化したプログラムに追加する。
端末装置40は、プロキシサーバ30を介してWebサーバ20からWebページのデータを受信する。端末装置40のWebブラウザ41は、拡張プログラムの機能を実行する拡張機能実行部41aと、拡張プログラムのデバッグ情報を外部のデバッグ支援装置10に送信するデバッグ情報送信部41bとを有する。
拡張機能実行部41aは、既存のアプリケーションに追加された拡張プログラムの機能を実行する。例えば、拡張機能実行部41aは、拡張機能追加部31が挿入したJavaScriptを実行し拡張機能をWebページ上で動作させる。
デバッグ情報送信部41bは、デバッグ情報抽象化部32によってプログラムが追加された所定のルールについて、デバッグ情報を外部のデバッグ支援装置10に送信する。例えば、デバッグ情報送信部41bは、拡張機能実行部41aによって拡張機能追加部31が挿入したJavaScriptが動作した際に、該当JavaScriptが出力するデバッグ情報をデバッグ支援装置10に送信する。
デバッグ支援装置10は、デバッグ情報送信部41bによって送信されたデバッグ情報を受信し、該デバッグ情報を出力する。例えば、デバッグ支援装置10は、デバッグ情報送信部41bから受診したデバッグ情報を出力するとともに、送信されたデバッグ情報をもとに既存のWebブラウザのデバッガと連携する。また、デバッグ支援装置10は、例えば、ルールを編集する機能を有する。つまり、デバッグ支援装置10では、例えば、ユーザがデバッグ情報を参照しつつ、ルールの作成や編集を行うことができる。
ここで、図2を用いて、デバッグ支援システム100におけるデバッグ支援処理の全体的な流れを説明する。図2は、第1の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。図2に例示するように、デバッグ支援システム100のデバッグ情報抽象化部32では、UI拡張のルールが具象化された拡張JavaScriptのデバッグ情報を、UI拡張のルールと同じ粒度に抽象化する抽象化処理を行う。
具体的には、デバッグ情報抽象化部32は、ルールがプログラムに具象化されるときに、設定項目毎にデバッグ情報を出力するためのプログラムを挿入する。これにより、該ルールが既存アプリケーションに適用されたときに設定項目毎に抽象化されたデバッグ情報を得ることができるようにする。なお、抽象化処理の具体的な処理については、後に図6を用いて詳述する。
そして、端末装置40では、拡張JavaScriptが適用されたWebページにおいて、デバッグ情報送信部41bが、拡張ルールが既存アプリケーションに適用されたときに設定項目毎に抽象化されたデバッグ情報をデバッグ支援装置10に送信する。
ここで、図3の例を用いて、抽象化されたデバッグ情報の出力例について説明する。図3は、抽象化されたデバッグ情報の出力例を示す図である。図3に例示するように、デバッグ支援装置10は、UI拡張のルールと同じ粒度に抽象化されたデバッグ情報を出力する。これにより、ルールをデバッグするユーザは、ルールと同じ抽象度で、UI拡張のプログラムのデバッグ情報のみを確認することが可能である。
また、デバッグ支援装置10は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を有していてもよい。ここで、図4の例を用いて、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する。図4は、抽象化されたデバッグ情報と詳細なデバッグ情報とを連携される機能を説明する図である。図4に例示するように、デバッグ支援装置10は、抽象化されたデバッグ情報がユーザのクリック操作により選択された場合には、選択されたデバッグ情報に対応する文字列情報を検索キーとして検索し、検索した詳細なデバッグ情報を出力するようにしてもよい。
さらに、デバッグ支援装置10は、抽象化されたルールが保持するパラメータ等のデータ領域をウォッチできる機能を有していてもよい。ここで、図5の例を用いて、デバッグ情報に関するパラメータをウォッチする機能を説明する。例えば、デバッグ支援装置10は、抽象化されたルールが保持しているパラメータのデータ領域の名称を入力することで、抽象化されたルールが保持するパラメータの値を参照することができるようにしてもよい。
[デバッグ支援システムの処理手順]
次に、図6を用いて、第1の実施形態に係るデバッグ支援システム100による抽象化処理の処理手順の例を説明する。図6は、第1の実施形態に係るデバッグ支援システムによる抽象化処理の流れの一例を示すフローチャートである。
図6に例示するように、デバッグ情報抽象化部32は、予め設定されたUI拡張のルールを取得し(ステップS101)、該ルールにおける設定項目を一つ取得する(ステップS102)。そして、デバッグ情報抽象化部32は、設定項目ごとに、UI拡張のルールをプログラムに具象化する(ステップS103)。
そして、デバッグ情報抽象化部32は、開始・終了を識別する識別子をつけて出力するプログラムを挿入し(ステップS104)、パラメータを出力するプログラムを挿入し(ステップS105)、例外情報を識別する識別子をつけて出力するプログラムを挿入する(ステップS106)。
その後、デバッグ情報抽象化部32は、ルール中の全ての設定項目について完了したか否かを判定する(ステップS107)。そして、デバッグ情報抽象化部32は、ルール中の全ての設定項目について完了していないと判定した場合には(ステップS107否定)、ステップS102に戻って、上記の処理を繰り返す。一方、デバッグ情報抽象化部32は、ルール中の全ての設定項目について完了したと判定した場合には(ステップS107肯定)、処理を終了する。
ここで、図7の具体例を用いて、抽象化処理について説明する。図7は、第1の実施形態に係るデバッグ支援システムによる抽象化処理を説明するための図である。図7に例示するように、デバッグ情報抽象化部32は、ルールおよび設定項目を取得し、設定項目ごとに、UI拡張のルールをプログラムに具象化する。そして、デバッグ情報抽象化部32は、開始・終了を識別する識別子をつけて出力するプログラムを挿入する。ここで、図7における開始の識別子をつけて出力するプログラムに対応する箇所とは、「debuginfoTransfer(“値設定開始 (ID: 1000)”);」であり、終了の識別子をつけて出力するプログラムに対応する箇所とは、「debuginfoTransfer(“値設定終了 (ID: 1000)”);」である。
そして、デバッグ情報抽象化部32は、パラメータを出力するプログラムを挿入する。ここで、図7におけるパラメータを出力するプログラムに対応する箇所は、「debuginfoTransfer(“パラメータ1:設置住所, パラメータ2:○○市1-2-3”);」である。続いて、デバッグ情報抽象化部32は、例外情報を識別する識別子をつけて出力するプログラムを挿入する。ここで、図7における例外情報を識別する識別子をつけて出力するプログラムに対応する箇所は、文頭の「try {」と、
文末の
「} catch(e) {
debuginfoTransfer(“値設定失敗 (ID: 1000), “+e.message); throw e;
}」
である。
[第1の実施形態の効果]
第1の実施形態に係るデバッグ支援システム100では、プロキシサーバ30のデバッグ情報抽象化部32は、拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する。そして、端末装置40のデバッグ情報送信部41bは、プログラムが追加された所定のルールについて、デバッグ情報をデバッグ支援装置10に送信する。これにより、デバッグ支援システム100は、デバッグを効率的に行って、ルール作成の効率向上およびルール作成の品質向上を図ることが可能である。
例えば、従来のデバッグはルールが具象化された状態(例えば、JavaScript(登録商標)などのプログラミング言語)で実施しなければならず、ルール作成時とデバッグ時とでは必要とする知識や情報に大きな乖離がある。ルール作成者は抽象化されたルール作成方法には習熟しているが、JavaScriptに精通していない場合が多く、これらで必要となる知識には大きな乖離があるため現実的にデバッグ作業の実施が困難である。仮にルール作成者がJavaScriptに精通していたとしても、抽象化されたルールに記述された情報と、JavaScriptのデバッガに出力された情報には大きな乖離があるため、JavaScriptのデバッガに出力された情報が抽象化されたルールのどこに対応する情報なのか判別するのが困難である。
また、例えば、従来のデバッグでは既存Webページに最初から存在するプログラム(例えば、JavaScript)と、UI拡張によって追加したプログラム(例えば、JavaScript)を分離してデバッグができない。つまり、従来のデバッガでは、既存のプログラムと、UI拡張技術によって追加されたプログラムを、一つのWebページに存在するプログラムとして分け隔てなく扱うため、デバッガに出力される情報も既存のプログラムの情報とUI拡張によって追加されたプログラムの情報が混在して出力されるため、どの部分がUI拡張のルール修正に必要な情報か分かり難い。
これに対して、第1の実施形態に係るデバッグ支援システム100では、UI拡張のプログラムのデバッグ情報のみを外部に流通することで既存プログラムのデバッグ情報と分離する。そして、第1の実施形態に係るデバッグ支援システム100では、デバッグ情報をプログラムの粒度からUI拡張のルールと同じ粒度に抽象化するので、デバッグを効率的に行うことが可能である。
[第2の実施形態]
第2の実施形態に係るデバッグ支援装置10では、ルールをデバッグするためにテストページを生成して表示するようにしてもよい。そこで、以下の第2の実施形態では、ルールをデバッグするために、該当ルールの適用先となるWebページの文書を取得し、テストページを生成してWebブラウザ上に表示することでルールの整合性をチェックする場合を例にして説明する。なお、第1の実施形態と同様の構成および処理については説明を省略する。
まず、図8を用いて、第2の実施形態のデバッグ支援システム100Aの構成例を説明する。図8は、第2の実施形態に係るデバッグ支援システムの構成例を示すブロック図である。デバッグ支援システム100Aは、例えば、図8に示すように、デバッグ支援装置10、Webサーバ20、プロキシサーバ30および端末装置40を有する。
デバッグ支援装置10は、テストページ生成部11a、ページ比較部11b、デバッグ情報出力部11cおよびテスト実行部11dを有する。また、デバッグ支援装置10は、ルールエディタによって生成・編集されたルールファイル12aを記憶するルールDB(Data Base)12を有する。ルールDB12に記憶されるルールは、例えば、適用先アプリケーションが特にWebページの場合には、ルールの適用条件として対象WebページのURIやセレクタ情報が設定されている。
テストページ生成部11aは、デバッグ対象がウェブページの場合において、 模擬したテストページに関する情報を生成する。また、テストページ生成部11aは、デバッグ対象となるウェブページを模擬したテストアプリケーションを生成する。例えば、テストページ生成部11aは、ルールをデバッグするために該当ルールの適用先となるWebページの文書を取得し、ルールとの整合性をチェックしてルールに紐づけて文書情報をルールDB12に保存する。
ページ比較部11bは、拡張プログラムにおける所定のルールのセレクタ情報とテストページの文書情報とのアンマッチが存在するか判定し、アンマッチが存在する場合には、警告を表示する。なお、ページ比較部11bにより実行される処理を行うか否かは、設定により任意に変更することが可能である。
デバッグ情報出力部11cは、UI拡張のルールと同じ粒度に抽象化されたデバッグ情報を出力する。これにより、ルールをデバッグするユーザは、ルールと同じ抽象度で、UI拡張のプログラムのデバッグ情報のみを確認することが可能である。
テスト実行部11dは、テストページ生成部11aによって生成されたテストページに関する情報に拡張プログラムにおける所定のルールを適用する。例えば、テスト実行部11dは、ルールのデバッグのために、デバッグ対象のルールから紐づけて保存された文書情報を読み取り対象ページを模擬したテストページをWebブラウザ13上で表示してルールDB12に保存された拡張機能を適用する。
ここで、図9を用いて、デバッグ支援システム100Aにおけるデバッグ支援処理の全体的な流れを説明する。図9は、第2の実施形態に係るデバッグ支援システムにおけるデバッグ支援処理の全体的な流れを説明する図である。なお、図2で説明した処理について説明を省略する。
テストページ生成部11aは、例えば、オフライン環境において、デバッグ対象となるWebページを模擬したテストページ13aを生成する。また、ページ比較部11bは、UI拡張のルールにおけるセレクタ情報とページの文書情報のアンマッチを検出して警告を表示する。なお、テストページ生成部11aおよびページ比較部11bの具体的な処理については、後に図10を用いて詳述する。
そして、テスト実行部11dは、UI拡張のルールの変換によって本来のルールの適用先を模擬したテストページ13aへ適用し、ルールが適用されたテストページ13aをWebブラウザ13で表示する。なお、テスト実行部11dの具体的な処理については、後に図13を用いて詳述する。
次に、図10を用いて、第2の実施形態に係るデバッグ支援システム100Aによるテストページ生成処理の処理手順の例を説明する。図10は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理の流れの一例を示すフローチャートである。
図10に例示するように、テストページ生成部11aは、対象Webページの文書を取得し(ステップS201)、該文書中にフレームが存在するか判定する(ステップS202)。この結果、テストページ生成部11aは、文書中にフレームが存在する場合には(ステップS202肯定)、全てのフレームについて再帰的に文書を取得し(ステップS203)、ステップS204の処理に進む。また、テストページ生成部11aは、文書中にフレームが存在しない場合には(ステップS202否定)、そのままステップS204の処理に進む。
ステップS204において、テストページ生成部11aは、取得した全文書をルールと紐付けて各々固有なファイル名で保存し(ステップS204)、取得した全文書を探索し、フレームの文書のURIを示す属性値を前記S204のステップで保存した固有のファイル名に置換する(ステップS205)。
かかる処理について、図11の具体例を用いて説明する。図11は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。図11に例示するように、テストページ生成部11aは、対象Webページの文書を取得するとともに、フレームの文書を取得し、全文書をルールと紐付けて各々固有なファイル名で保存する。そして、テストページ生成部11aは、フレームの文書のURIを示す属性値「“/hoge/index.html”」を固有のファイル名「“固有名2.html”」に置換する。
図10の説明に戻って、ページ比較部11bは、ルール中にセレクタ情報が登録されているか判定する(ステップS206)。この結果、ページ比較部11bは、ルール中にセレクタ情報が登録されていないと判定した場合には(ステップS206否定)、そのまま処理を終了する。また、ページ比較部11bは、ルール中にセレクタ情報が登録されていると判定した場合には(ステップS206肯定)、ルール中のセレクタ情報を参照し(ステップS207)、保存した文書からセレクタ情報を探索する(ステップS208)。
この結果、ページ比較部11bは、セレクタ情報の探索に失敗した場合には、ルールの修正が必要である旨の警告を表示し(ステップS210)、ステップS211の処理に進む。また、ページ比較部11bは、セレクタ情報の探索に成功した場合には、そのままステップS211の処理に進む。
かかる処理について、図12の具体例を用いて説明する。図12は、第2の実施形態に係るデバッグ支援システムによるテストページ生成処理を説明するための図である。図12の例では、入力されたルール「Rule1」の条件として、適用先のURIが「http://domain/index.html」が設定され、セレクタ情報として「id=msgold」が設定されているものとする。
そして、図12に例示するように、ページ比較部11bは、ルール中のセレクタ情報「id=msgold」を参照し、保存した文書からセレクタ情報「id=msgold」を探索する。図12の例では、Webページ更新により文書中のセレクタ情報が変化している。この結果、ページ比較部11bは、セレクタ情報の探索に失敗し、ルールの修正が必要である旨の警告を表示する。ここで、警告を表示する方法はどのような方法であってもよく、例えば、テストページ生成部11aは、セレクタのリスト上で修正が必要なセレクタ情報のUIを赤文字で警告するようにしてもよいし、画面キャプチャ上で修正が必要なセレクタ情報のUIを赤枠表示して警告するようにしてもよい。そして、図12の例では、ユーザが警告を確認し、Rule1のセレクタ情報を「id=msgnew」に手動で更新する。なお、セレクタ情報を「id=msgnew」に自動で更新するようにしてもよい。
図10の説明に戻って、ステップS211において、ページ比較部11bは、ルール中の全てのセレクタ情報を参照したかを判定する(ステップS211)。この結果、ページ比較部11bは、ルール中の全てのセレクタ情報を参照していない場合には(ステップS211否定)、ステップS207の処理に戻って、上記の処理を繰り返す。また、ページ比較部11bは、ルール中の全てのセレクタ情報を参照した場合には(ステップS211肯定)、処理を終了する。
なお、ページ比較部11bは、単独で機能することもできる。これにより、URLやIDなどルールが保持している情報を設定者が変更した場合に、該ルールが正しく動作するかなど、ルール変更時の回帰テスト、複数のルールの連携のテストなどに用いることができる。
次に、図13を用いて、第2の実施形態に係るデバッグ支援システム100Aによるテスト実行処理の処理手順の例を説明する。図13は、第2の実施形態に係るデバッグ支援システムによるテスト実行処理の流れの一例を示すフローチャートである。
図13に例示するように、テスト実行部11dは、ルールに紐付けられたテストページの全文書を取得し(ステップS301)、ルールに設定された条件である適用対象WebページのURIをテストページのURIに置換する(ステップS302)。
そして、テスト実行部11dは、Webブラウザ13を起動して取得した全文書を読み込んで表示し(ステップS303)、Webブラウザ13に表示したテストページ13aに置換後ルールを適用する(ステップS304)。
かかる処理について、図14の具体例を用いて説明する。図14は、第2の実施形態に係るデバッグ支援システムによるテスト実行処理を説明するための図である。図14の例では、入力されたルール「Rule1」の条件として、適用先のURIが「http://domain/index.html」が設定され、セレクタ情報として「id=msgold」が設定されているものとする。
図14に例示するように、テスト実行部11dは、ルールに紐付けられたテストページの全文書を取得し、ルールに設定された条件である適用対象WebページのURI「http://domain/index.html」をテストページのURI「\\ディレクトリ\固有名1.html」に置換し、Rule1´とする。そして、テスト実行部11dは、Webブラウザ13を起動して取得した全文書を読み込んで表示し、Webブラウザ13に表示したテストページ13aに置換後ルールを適用する。
[第2の実施形態の効果]
このように、第2の実施形態に係るデバッグ支援システム100Aでは、オフライン環境でのデバッグを行うことができる。例えば、従来のルール作成者の環境では、UI拡張を適用する既存Webページにネットワーク的にアクセスできない環境でルールを作成することが想定されるが、従来のデバッガではこのような環境での利用が困難であった。つまり、従来のデバッガではWebページの開発者が該当ページをデバッグすることを想定しているため、デバッグ時点で該当ページにアクセスできることを暗に前提としている。そのため、オフライン環境など該当ページにアクセスできず、該当ページの情報を取得できない環境ではそのままでは利用できない。また、ルール作成者環境ではデバッガ等開発者モードに利用制限が加えられている場合もある。
また、従来のUI拡張では、Webページの開発者ではなく利用者が、該当ページに対して拡張を追加するものであるため、該当ページの情報を取得できない環境でルールを作成することが想定される。そのような場合、従来のデバッガを用いるためには、Webページの開発者から該当ページの情報を取得してオフラインで利用できるように環境を整えるなどの対応が必要であった。
これに対して、第2の実施形態に係るデバッグ支援システム100Aでは、オフライン環境でのデバッグを行うことができる。つまり、デバッグ支援システム100Aでは、UI拡張のデバッグに必要な情報(フレーム構造と各フレームの文書)に絞ったページ情報取得ならびにオフライン利用可能にするための文書の属性置換を行い、ルールをテストページに適用可能にするためのルール変換を行う。このため、オフライン環境で模擬したテストページにルールを適用し、ルールが適用されたテストページをWebブラウザで表示することで、オフライン環境でのデバッグを行うことが可能である。
また、ルールを適用するWebページは頻繁に更新されるケースがある。このような場合にはルールの修正が必要となるが、このような場合にはWebページのどこが変更されたのかを調査し、該当変更箇所がルールに影響をあたるか(ルールの変更が必要か)を判断しなければならない。このような作業を、頻繁に更新されるWebページに対して実施するのは非効率である。しかしながら、第2の実施形態に係るデバッグ支援システム100Aでは、ページ比較部11bによりルールの修正が必要な場所を警告表示する、あるいは自動で修正することができる。これにより、Webページの更新によるルールの修正・デバッグ作業を効率的に実施可能である。
(システム構成等)
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(プログラム)
また、上記実施形態において説明したデバッグ支援装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るデバッグ支援装置10が実行する処理をコンピュータが実行可能な言語で記述したデバッグ支援プログラムを作成することもできる。この場合、コンピュータがデバッグ支援プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるデバッグ支援プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたデバッグ支援プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
図15は、デバッグ支援プログラムを実行するコンピュータを示す図である。図15に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図15に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図15に例示するように、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、図15に例示するように、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、図15に例示するように、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、図15に例示するように、例えばディスプレイ1130に接続される。
ここで、図15に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の、デバッグ支援プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種処理手順を実行する。
なお、デバッグ支援プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、デバッグ支援プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10 デバッグ支援装置
11a テストページ生成部
11b ページ比較部
11c デバッグ情報出力部
11d テスト実行部
12 ルールDB
12a ルールファイル
13 Webブラウザ
13a テストページ
20 Webサーバ
30 プロキシサーバ
31 拡張機能追加部
32 デバッグ情報抽象化部
40 端末装置
41 Webブラウザ
41a 拡張機能実行部
41b デバッグ情報送信部
100 デバッグ支援システム

Claims (5)

  1. 拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化部と、
    前記抽象化部によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信部と
    を有することを特徴とするデバッグ支援システム。
  2. デバッグ対象がウェブページの場合において、模擬したテストページに関する情報を生成するテストページ生成部と、
    前記テストページ生成部によって生成されたテストページに関する情報に前記拡張プログラムにおける所定のルールを適用するテスト実行部と
    をさらに有することを特徴とする請求項1に記載のデバッグ支援システム。
  3. 前記拡張プログラムにおける所定のルールのセレクタ情報と前記テストページの文書情報とのアンマッチが存在するか判定し、アンマッチが存在する場合には、警告を表示するページ比較部をさらに有することを特徴とする請求項2に記載のデバッグ支援システム。
  4. 前記抽象化部は、前記拡張プログラムにおける所定のルールの設定項目をプログラムに具象化する際に、前記デバッグ情報として、少なくとも設定項目の反映の開始と終了を示す情報と、該設定項目に入力されたパラメータ情報と、該設定項目の反映に失敗した場合の例外情報と該設定項目を一意に特定する識別子とを出力するためのプログラムを前記具象化したプログラムに追加することを特徴とする請求項1に記載のデバッグ支援システム。
  5. デバッグ支援システムによって実行されるデバッグ支援方法であって、
    既存のアプリケーションに追加される拡張プログラムにおける所定のルールをプログラムに具象化する際に、該所定のルールに関するデバッグ情報を出力するためのプログラムを具象化したプログラムに追加する抽象化工程と、
    前記抽象化工程によってプログラムが追加された所定のルールについて、前記デバッグ情報を外部に送信する送信工程と
    を含んだことを特徴とするデバッグ支援方法。
JP2019016184A 2019-01-31 2019-01-31 デバッグ支援システムおよびデバッグ支援方法 Active JP7115342B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019016184A JP7115342B2 (ja) 2019-01-31 2019-01-31 デバッグ支援システムおよびデバッグ支援方法
US17/427,166 US12007872B2 (en) 2019-01-31 2020-01-17 Debugging assistance system and debugging assistance method
PCT/JP2020/001538 WO2020158460A1 (ja) 2019-01-31 2020-01-17 デバッグ支援システムおよびデバッグ支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019016184A JP7115342B2 (ja) 2019-01-31 2019-01-31 デバッグ支援システムおよびデバッグ支援方法

Publications (2)

Publication Number Publication Date
JP2020123268A JP2020123268A (ja) 2020-08-13
JP7115342B2 true JP7115342B2 (ja) 2022-08-09

Family

ID=71841788

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019016184A Active JP7115342B2 (ja) 2019-01-31 2019-01-31 デバッグ支援システムおよびデバッグ支援方法

Country Status (3)

Country Link
US (1) US12007872B2 (ja)
JP (1) JP7115342B2 (ja)
WO (1) WO2020158460A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448866B (zh) * 2021-07-15 2022-07-05 杭州国芯科技股份有限公司 一种嵌入式软件开发辅助调试系统及调试方法
US11934294B2 (en) * 2021-07-28 2024-03-19 Sap Se Generating and debugging bytecode for a rule
KR20240036911A (ko) * 2022-09-14 2024-03-21 쿠팡 주식회사 페이지에 대한 리포트를 제공하는 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005344A (ja) 2016-06-28 2018-01-11 日本電信電話株式会社 機能拡張システム、機能拡張方法および機能拡張プログラム
JP2018045619A (ja) 2016-09-16 2018-03-22 富士通株式会社 解析プログラム、解析方法、及び解析装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4822817B2 (ja) * 2005-11-22 2011-11-24 パナソニック株式会社 コンパイルシステム
US20100325615A1 (en) * 2009-06-23 2010-12-23 Myspace Inc. Method and system for capturing web-page information through web-browser plugin
US8533684B2 (en) * 2010-11-01 2013-09-10 International Business Machines Corporation Source identification of compliance errors in a web page with custom widgets
CN103164334B (zh) * 2011-12-19 2016-03-30 国际商业机器公司 检测web应用自动测试用例中的断裂点的系统和方法
JP6756270B2 (ja) 2017-01-13 2020-09-16 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005344A (ja) 2016-06-28 2018-01-11 日本電信電話株式会社 機能拡張システム、機能拡張方法および機能拡張プログラム
JP2018045619A (ja) 2016-09-16 2018-03-22 富士通株式会社 解析プログラム、解析方法、及び解析装置

Also Published As

Publication number Publication date
US12007872B2 (en) 2024-06-11
JP2020123268A (ja) 2020-08-13
WO2020158460A1 (ja) 2020-08-06
US20220100637A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
US7216340B1 (en) Analysis data validation tool for use in enterprise architecture modeling with result based model updating
US7426717B1 (en) System and method for debugging files in a runtime environment
US7424702B1 (en) Data integration techniques for use in enterprise architecture modeling
US5812436A (en) Method and apparatus for testing and analyzing the conformance of a proposed set of requirements for a proposed network management application
CN102402427B (zh) 一种Java应用程序的更新方法及装置
US10331425B2 (en) Automated source code adaption to inject features between platform versions
JP7115342B2 (ja) デバッグ支援システムおよびデバッグ支援方法
JP4023803B2 (ja) ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
US8527254B2 (en) Simulator engine development system and simulator engine development method
CN113742215B (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
CN111400256A (zh) 一种应用程序调用资源文件的方法及装置
Arts et al. Trace analysis of Erlang programs
McCrickard et al. Assessing the impact of changes at the architectural level: A case study on graphical debuggers
CN113515452B (zh) 应用的自动测试方法、系统、电子设备及存储介质
CN115658033A (zh) 一种rpa代码开发方法及系统
CN114356783A (zh) 单元测试代码自动生成方法、装置、存储介质及设备
Larsson et al. Component configuration management
Misra et al. A Developer’s Guide to the ONE Simulator
Arcaini et al. Modeling and formal analysis of a client-server application for cloud services
JP3368795B2 (ja) コンパイル制御方法、コンパイル装置及び記録媒体
Ostrovsky et al. Creating Galaxy tools from Conda Through Deployment
JP2003296138A (ja) 組込み機器用アプリケーションのシミュレートデバッグ方法
CN114356331A (zh) 前端页面数据处理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210510

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220711

R150 Certificate of patent or registration of utility model

Ref document number: 7115342

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150