JP5991695B2 - 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム - Google Patents

文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム Download PDF

Info

Publication number
JP5991695B2
JP5991695B2 JP2013252681A JP2013252681A JP5991695B2 JP 5991695 B2 JP5991695 B2 JP 5991695B2 JP 2013252681 A JP2013252681 A JP 2013252681A JP 2013252681 A JP2013252681 A JP 2013252681A JP 5991695 B2 JP5991695 B2 JP 5991695B2
Authority
JP
Japan
Prior art keywords
css
dom
timing
dom tree
computer
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.)
Expired - Fee Related
Application number
JP2013252681A
Other languages
English (en)
Other versions
JP2015109059A5 (ja
JP2015109059A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2013252681A priority Critical patent/JP5991695B2/ja
Priority to US14/535,544 priority patent/US9501459B2/en
Priority to CN201410710567.8A priority patent/CN104699602B/zh
Publication of JP2015109059A publication Critical patent/JP2015109059A/ja
Publication of JP2015109059A5 publication Critical patent/JP2015109059A5/ja
Application granted granted Critical
Publication of JP5991695B2 publication Critical patent/JP5991695B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、文書オブジェクトモデル(以下、DOMともいう)ツリーとカスケーディング・スタイル・シート(以下、CSSともいう)とが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための技法に関する。
ウェブ・アプリケーションが表示する画面は、当該ウェブ・アプリケーションのソースコードを変更すること(例えば、バグ修正をすること、又は仕様変更をすること)によって変わりうる。そこで、ウェブ・アプリケーションのソースコードの変更をした場合に、リグレッション乃至はデグレードが発生していないかどうかを確認する必要がある。当該確認の為に、上記ソースコードが変更されるたびに、テスターがウェブ・ブラウザを操作しながら目視でリグレッション・テスト(回帰試験)を行っているのが通常である。
しかしながら、人手によるリグレッション・テストにより全てのテストを行うと非常にコストが掛かる。そこで、通常は、ウェブ・アプリケーションのソースコードを変更することによって影響を及ぼすと思われる箇所のみリグレッション・テストを行う。しかしながら、このようなリグレッション・テストでは、影響を及ぼすと思われる箇所の洗い出し漏れにより、リグレッション乃至はデグレードがしばしば発生する。
また、ウェブ・アプリケーション全体に影響を及ぼすような例えば共通的なJavaScript(登録商標)フレームワーク(例えば、Dojo Toolkit、jQuery、及びprototype.js)を変更した場合に、全ての画面に対してリグレッション・テストをやり直す必要がある。しかしながら、ウェブ・ページが、例えば上記JavaScript(登録商標)フレームワークを用いて階層化され且つ動的に生成されている場合、上記ソースコードを変更することによって生じる上記ウェブ・ページに対する影響範囲の調査は非常に困難である。また、ウェブ・アプリケーションのリグレッション・テストは、同じような操作を何度も何度も繰り返す作業になる為に、テスターにとって非常に退屈な作業である。
そこで、ウェブ・アプリケーションのリグレッション・テストを自動化する為のソフトウェアが提供されている。当該ソフトウェアは例えば、オープン・ソース・ソフトウェアであるSelenium(下記非特許文献1、並びに、下記非特許文献2〜4を参照)、並びに、商用製品であるIBM Rational Functional Tester(インターナショナル・ビジネス・マシーンズ・コーポレーション)(下記非特許文献5及び6を参照)、SmartBear TestComplete(下記非特許文献7を参照)、及びHP QuickTest Professional(下記非特許文献8を参照)である。上記Selenium、IBM Rational Functional Tester、SmartBear TestComplete、及びHP QuickTest Professionalのいずれも、比較箇所を明示的に指定してリグレッション・テストを行うホワイトリスト方式を採用している。
Seleniumでは、ウェブ・アプリケーションのテストケースを作成することによって、リグレッション・テストをほぼ自動的に行うことが可能である。また、Seleniumでは複数のウェブ・ブラウザでのリグレッション・テストも簡単にできる為に、ウェブ・アプリケーションのリグレッション・テストを効率化できる。
下記特許文献1はアプリケーションプログラムのテストプログラムを記載し、当該テストプログラムは、アプリケーションプログラムが搭載されたコンピュータを、前記アプリケーションプログラムに対してテストケースを実行したときに前記アプリケーションプログラムで発生したユーザイベント及び画面イベントを記録装置に累積記録する記録制御手段と、前記記録装置に累積記録された前記ユーザイベント及び画面イベントを読み出し、テスト対象の前記アプリケーションプログラムで前記ユーザイベントを順次実行する実行手段と、テスト対象の前記アプリケーションプログラムで一のユーザイベントを実行してから次のユーザイベントを実行するまでに発生した画面イベントと、前記記録装置から読み出した前記一のユーザイベントを実行してから次のユーザイベントを実行するまでに発生した画面イベントとを比較し、一致していない前記画面イベントをエラーとして出力するエラー出力制御手段として機能させることを記載する(請求項1)。また、引用文献1は、前記記録制御手段により前記記録装置に累積記録される前記画面イベントは、画面変更の差分であり、DOM(Document Object Model)で取得する情報であること(請求項4)、及び、前記記録制御手段により前記記録装置に累積記録される前記画面イベントは、Xpathで表現される変更された箇所と、DOMの部分木とで表された情報であること(請求項5)を記載する。
下記特許文献2はリグレッション・テスト支援プログラムを記載し、当該リグレッション・テスト支援プログラムは、ディプレイ上に表示されている一以上のブラウザ画面のいずれかの表示内容の更新を検知し、前記更新が検知されるたびに、表示されている全ての前記ブラウザ画面の表示内容を示す情報と、当該更新に係る前記ブラウザ画面の識別情報とを含むデータを第一の記憶部に記録し、前記データの編集指示に応じ、前記第一の記憶部を参照し、前記識別情報に係る前記ブラウザ画面の表示内容を示す画像の一覧を表示させる処理をコンピュータに実行させることを記載する(請求項1)。
特開2009−140155号公報 特開2013−54693号公報
「Selenium HQ」、[online]、[平成25年9月26日検索]、インターネット〈URL:http://docs.seleniumhq.org/〉 岡本 隆史、「ブラウザを選ばすWebテストを自動化するSelenium(1/3)」、[online]、[平成25年9月27日検索]、インターネット〈http://www.atmarkit.co.jp/ait/articles/0908/19/news109.html〉 岡本 隆史、「ブラウザを選ばすWebテストを自動化するSelenium(2/3)」、[online]、[平成25年9月27日検索]、インターネット〈http://www.atmarkit.co.jp/ait/articles/0908/19/news109_2.html〉 岡本 隆史、「ブラウザを選ばすWebテストを自動化するSelenium(3/3)」、[online]、[平成25年9月27日検索]、インターネット〈http://www.atmarkit.co.jp/ait/articles/0908/19/news109_3.html〉 「Rational Functional Tester (機能テスト/回帰テスト)」、[online]、[平成25年9月27日検索]、インターネット〈URL:http://www-06.ibm.com/software/jp/rational/products/test/rft/〉 寳生 一成等、「ツールによる効果的なシステム開発−よりスマートなシステム開発を目指して−」、日本アイ・ビー・エム、PROVISION Spring No.69、2011年、インターネット〈URL:http://www-06.ibm.com/ibm/jp/provision/no69/pdf/69_article3.pdf〉より入手可能 「SMARTBEAR TestComplete GUIテストの自動化で超すと削減」、[online]、[平成25年9月27日検索]、インターネット〈URL:http://www.xlsoft.com/jp/products/smartbear/testcomplete.html?tab=0〉 「HP QuickTest Professional 10.0 software」、[online]、[平成25年9月27日検索]、インターネット〈URL:http://h50146.www5.hp.com/products/software/hpsoftware/solutions/lineup/qtp/new.html〉
DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションにおいて、当該アプリケーションのソースコードを変更することによって生じる影響を検知することは、例えば、当該アプリケーションのリグレッション・テスト、当該アプリケーションのユニット・テスト、又は、当該アプリケーションを構築するためのコード・スタディにとって重要である。そこで、本発明は、上記アプリケーションのソースコードを変更することによって生じる影響を自動的に検知することを可能にすることを目的とする。
また、上記アプリケーションが、各種のウェブ・ブラウザや同じウェブ・ブラウザの異なるバージョンに対応していることを確認する為には、ブラウザ数×バージョン数のテスト回数が必要となり、そのコストは多大である。また、ウェブ・ブラウザが同じであっても、例えばWindows(登録商標),Mac OS(登録商標) X,Linux(登録商標),Android(登録商標)又はiOSなどのオペレーティング・システム毎に、さらにサポートするバージョン毎に上記アプリケーションの挙動(画面表示及びそれ以外の不可視領域での挙動を含む)を確認することになると、さらにそのコストは増大する。そこで、本発明は、上記コストを削減するために、上記アプリケーションのソースコードを変更することによって生じる影響を自動的に検知することを可能にすることを目的とする。
また、本発明は、従来のウェブ・アプリケーションのリグレッション・テストを自動化する為のソフトウェアがホワイトリスト方式である為に当該ホワイトリスト方式において求められるような定義(例えば、「項目Xの値(value)がABCであるはず」というような定義)、テストケース、又は統一モデリング言語(UML)を別途に書く必要をなくすことを目的とする。
また、本発明は、デザイン上の問題(例えば、罫線のズレ、塗り忘れ、又は項目の重なり)も検出することを可能にすることを目的とする。特には、本発明は、画面表示に表れない違い(例えば、不可視領域の差分又は表示サイズによる違い)の検知を可能にすることを目的とする。
また、本発明は、上記ホワイトリスト方式において求められるような定義が困難であり、ユーザの目視に頼っていた部分を自動的に判断することを可能にすることを目的とする。
さらに、本発明は、ユーザが介入する機会がなるべく少なくなるようにして、上記アプリケーションのソースコードを変更することによって生じる影響の検知を可能にすることを目的とする。
本発明は、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するための技法を提供する。当該技法は、上記アプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ、コンピュータ・プログラム及びコンピュータ・プログラム製品を包含しうる。
本発明に従う第1の態様において、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するための方法であって、コンピュータが、
上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存するステップと、
上記ソースコードの変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得するステップと、
上記保存するステップで保存したDOMツリー及びCSSと、上記取得するステップで取得したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較するステップと、
上記比較の結果を出力するステップと
を実行することを含む。
本発明に従う第2の態様において、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するための方法であって、上記アプリケーション上でのユーザの入力操作履歴と、画面状態をチェックしたい少なくとも1つのタイミングでのDOMツリー及びCSSとを保存した記憶媒体にアクセス可能であるコンピュータが、
上記ソースコードの変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得するステップと、
上記記憶媒体に保存したDOMツリー及びCSSと、上記取得するステップで取得したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較するステップと、
上記比較の結果を出力するステップと
を実行することを含む。
本発明の一つの実施態様において、上記第1の態様及び上記第2の態様における上記方法は、上記コンピュータが、
上記ソースコードに対する更なる変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得するステップと、
上記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、上記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較するステップと、
上記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、上記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとの上記同じタイミングにおける上記比較の結果を出力するステップと
をさらに実行することを含みうる。
本発明に従う第3の態様において、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するためのコンピュータは、
上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存する保存手段と、
上記ソースコードの変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得する取得手段と、
上記保存する手段が保存したDOMツリー及びCSSと、上記取得手段が取得したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較する比較手段と、
上記比較の結果を出力する出力手段と
を備えている。
本発明の一つの実施態様において、上記第3の態様の上記コンピュータにおいて、
上記保存手段は、上記保存されたDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを保存することを実行しうる。
本発明の一つの実施態様において、上記第3の態様の上記コンピュータにおいて、
上記取得手段は、上記取得されたDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを取得することを実行しうる。または、上記取得手段は、上記取得されたDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティが未定義である場合に、初期値として適用される値を取得しうる。
本発明の一つの実施態様において、上記第3の態様の上記コンピュータにおいて、
上記保存手段は、上記画面状態をチェックしたい少なくとも1つのタイミングごとに上記アプリケーション上でのスクリーンショットを撮影することを実行し、
上記取得手段は、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとに上記アプリケーション上でのスクリーンショットを撮影し、
上記出力手段は、上記比較の結果が相違することに応じて、上記保存するステップで撮影したスクリーンショットと、上記取得するステップで取得したスクリーンショットとをそれぞれ表示しうる。
本発明の一つの実施態様において、上記第3の態様の上記コンピュータにおいて、
上記出力手段は、上記比較の結果が相違することに応じて、上記保存するステップで撮影したスクリーンショットと、上記取得するステップで取得したスクリーンショットとの差分を強調表示しうる。
本発明に従う第4の態様において、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するためのコンピュータは、上記アプリケーション上でのユーザの入力操作履歴と、画面状態をチェックしたい少なくとも1つのタイミングでのDOMツリー及びCSSとを保存した記憶媒体にアクセス可能であり、上記コンピュータは、
上記ソースコードの変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得する取得手段と、
上記記憶媒体に保存したDOMツリー及びCSSと、上記取得手段が取得したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較する比較手段と、
上記比較の結果を出力する出力手段と
を備えている。
本発明の一つの実施態様において、上記第4の態様の上記コンピュータがアクセス可能な上記記録媒体は、上記保存されたDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とをさらに保存しており、
上記取得手段は、上記取得したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを上記記録媒体から取得すること、又は、上記取得したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティが未定義である場合に、初期値として適用される値を取得することを実行しうる。
本発明の一つの実施態様において、上記第4の態様の上記コンピュータがアクセス可能な上記記録媒体は、上記画面状態をチェックしたい少なくとも1つのタイミングごとに撮影した上記アプリケーション上でのスクリーンショットをさらに保存しており、
上記取得手段は、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとに上記アプリケーション上でのスクリーンショットを撮影し、
上記出力手段は、上記比較の結果が相違することに応じて、上記保存するステップで撮影したスクリーンショットと、上記取得するステップで取得したスクリーンショットとをそれぞれ表示しうる。
本発明の一つの実施態様において、上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記比較の結果が相違することに応じて、上記保存するステップで撮影したスクリーンショットと、上記取得するステップで取得したスクリーンショットとの差分を強調表示しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記比較手段は、
上記保存したCSS中のCSSプロパティのうちから、上記画面状態をチェックしたい上記少なくとも1つのタイミングのうちの特定の1つのタイミングでの実際の画面表示に適用されている第1のCSSプロパティを特定すること、
上記取得したCSS中のCSSプロパティのうちから、上記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている第2のCSSプロパティを特定すること
上記第1のCSSプロパティと上記第2のCSSプロパティとを比較すること
を実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記同じタイミングにおいて、上記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分がどのCSSファイルのどの位置に定義されているかを表示することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記第1のCSSプロパティと上記第2のCSSプロパティとの比較の結果を出力することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記保存したCSS中のCSSプロパティのうちから、上記特定の1つのタイミングでの実際の画面表示に適用されている値を定義する上記第1のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記取得したCSS中のCSSプロパティのうちから、上記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている値を定義する上記第2のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記保存したDOMツリーを表示し、当該DOMツリーの表示において、表示されたDOMツリーと上記取得したDOMツリーとの間で相違するDOM要素を強調表示することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、強調表示されたDOM要素が選択されることに応じて、当該選択されたDOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを表示することを実行し、
上記出力手段は任意的に、上記取得されたDOMツリーを表示することをさらに実行し、上記表示されたDOMツリーと上記取得したDOMツリーとの間で相違するDOM要素を強調表示するステップをさらに実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段はさらに任意的に、強調表示されたDOM要素が選択されることに応じて、当該選択されたDOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを表示することをさらに実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、上記同じタイミングにおいて、上記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分を出力することを実行しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記出力手段は、不可視領域の差分を表示しうる。
本発明の一つの実施態様において、上記第3の態様及び上記第4の態様の上記コンピュータにおいて、
上記取得手段が、上記ソースコードに対する更なる変更が行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得することをさらに実行し、
上記比較手段が、上記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、上記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとを上記同じタイミングごとにそれぞれ比較することをさらに実行し、
上記出力手段が、上記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、上記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとの上記同じタイミングにおける上記比較の結果を出力することをさらに実行しうる。
本発明に従う第5の態様において、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響を検知するためのコンピュータ・プログラム又はコンピュータ・プログラム製品は、コンピュータに、上記第1の態様又は上記第2の態様に記載の方法の各ステップを実行させる。
本発明の実施態様に従うコンピュータ・プログラムはそれぞれ、一つ又は複数のフレキシブル・ディスク、MO、CD−ROM、DVD、BD、ハードディスク装置、USBに接続可能なメモリ媒体、ROM、MRAM、RAM等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。当該コンピュータ・プログラムは、上記記録媒体への格納のために、通信回線で接続する他のコンピュータ、例えばサーバ・コンピュータからダウンロードしたり、又は他の記録媒体から複製したりすることができる。また、本発明の実施態様に従うコンピュータ・プログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。また、様々な形態で、本発明の実施態様に従うコンピュータ・プログラム製品を提供することも勿論可能であることにも留意されたい。本発明の実施態様に従うコンピュータ・プログラム製品は、例えば、上記コンピュータ・プログラムを記録した記憶媒体、又は、上記コンピュータ・プログラムを伝送する伝送媒体を包含しうる。
本発明の上記概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーション又はサブコンビネーションもまた、本発明となりうることに留意すべきである。
本発明の実施態様において使用されるコンピュータの各ハードウェア構成要素を、複数のマシンと組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
また、本発明は、ハードウェア、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアとの組み合わせによる実行において、上記コンピュータ・プログラムのインストールされたコンピュータにおける実行が典型的な例として挙げられる。かかる場合、当該コンピュータ・プログラムが当該コンピュータのメモリにロードされて実行されることにより、当該コンピュータ・プログラムは、当該コンピュータを制御し、本発明にかかる処理を実行させる。当該コンピュータ・プログラムは、任意の言語、コード、又は、表記によって表現可能な命令群から構成されうる。そのような命令群は、当該コンピュータが特定の機能を直接的に、又は、1.他の言語、コード若しくは表記への変換及び、2.他の媒体への複製、のいずれか一方若しくは双方が行われた後に、本発明の実施態様に従う処理を実行することを可能にするものである。
本発明の実施態様に従うと、DOMツリーとCSSとが取り出されることが可能な任意のアプリケーションのソースコードを変更することによって生じる影響の検知を、項目(又は要素)の値がこうあるはずであるとするホワイトリスト方式でなく、(差がないという前提で)差分を検出するというブラックリスト方式により可能にする。当該ブラックリスト方式による上記影響の検知は、上記ホワイトリスト方式において求められるような定義(例えば、「項目Xの値(value)がABCであるはず」というような定義)、又は、テストケースや統一モデリング言語(UML)を別途に書く必要をなくす点で有用である。また、上記定義を別途に書くことが不要になることから、定義情報の正確性を検証する必要がなくなる点で有用である。さらには、上記テストケースやUMLを別途に書くことが不要になることから、テストケースの作成者の主観が排除されるという点で有用である。
また、本発明の実施態様に従うと、上記ホワイトリスト方式において求められるような上記定義が困難であり、且つユーザの目視に頼っていた部分を自動的に判断することが可能である。
さらに、本発明の実施態様に従うと、DOMツリーだけでなくCSSを取得してグラフィカル・ユーザ・インタフェース(GUI)を比較することから、デザイン上の問題(例えば、罫線のズレ、塗り忘れ、項目の重なり)も検出することが可能である。特には、本発明の実施態様に従うと、DOMツリーだけでなくCSSを取得してGUIを比較することから、不可視領域の差分又は表示サイズによる違いを検出可能である。
本発明の実施態様に従うと、DOMツリー及びCSSの比較内容の定義、及びDOMツリー及びCSSの比較操作において、ユーザが介入する機会を、エミュレーションを可能にするためのユーザの入力操作(下記図2に示す処理を参照)のみに限定するために、上記比較が正確であり、また再現可能である。
本発明の実施態様において使用されうるコンピュータの一例を示した図である。 本発明の実施態様に従い、DOMツリーとCSSとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するために、当該アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存する処理の為のフローチャートを示す。 本発明の実施態様に従い、図2に示すフローチャートの処理が終了した後に、当該図2で行われた入力操作を操作順にエミュレートしながら、DOMツリー及びCSSを保存し、ウェブ・アプリケーションのソースコードを変更することによって生じる影響を検知する処理の為のフローチャートを示す。 本発明の実施態様に従い、図3に示すフローチャートの各ステップのうち、保存済みのDOMツリーの各DOM要素及びCSSプロパティの値と取得したDOMツリーの各DOM要素及びCSSプロパティの値とを比較し、そして当該比較の結果を出力する処理の為のフローチャートを示す。 本発明の実施態様に従い、図3に示すフローチャートの各ステップのうち、保存済みのDOMツリーの各DOM要素及びCSSプロパティの値と取得したDOMツリーの各DOM要素及びCSSプロパティの値とを比較し、そして当該比較の結果を出力する処理の為のフローチャートを示す。 本発明の実施態様に従い保存される入力操作履歴の格納態様を示す。 本発明の実施態様に従い保存されるDOMツリー、及び当該DOMツリーの各DOM要素に適用されるCSS(CSSプロパティと当該CSSプロパティの定義場所を含む)の格納態様を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。 図1に従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い上記変更によって生じる影響を検知するコンピュータの機能ブロック図の一例を示した図である。 図1に従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い上記変更によって生じる影響を検知するコンピュータの機能ブロック図の一例を示した図である。
本発明の実施形態を、以下に図面に従って説明する。以下の図を通して、特に断らない限り、同一の符号は同一の対象を指す。本発明の実施形態は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。
本発明の実施態様において使用されうるコンピュータは、DOMツリーとCSSとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知することができるコンピュータであれば特に限定されない。当該コンピュータは例えば、例えば、デスクトップ・コンピュータ、ノート・コンピュータ若しくは一体型パソコン、又は、タブレット若しくはスマートフォン端末(例えば、Windows(登録商標)、Android(登録商標)又はiOS(登録商標)を搭載したタブレット若しくはスマートフォン)でありうる。
本発明の実施態様において、「DOMツリー」とは、XMLやHTMLドキュメント(文書)をツリー構造として表現したものである。例えばXMLドキュメントは論理的には木構造となっており、最初に出現するルート要素であるルート(根)と、当ルートから伸びる各ノード要素又は属性(枝葉)とを有する。DOMにおいては、読み込んだXML文書がツリー構造に変換される。当該ツリー構造のデータがDOMツリーである。例えば、ウェブ・アプリケーション(例えば、ウェブ・ブラウザ)の中には、表示ページのDOMツリーにアクセスし、当該DOMツリーを表示し又は編集する機能が標準で又はアドオンで備えられているものがある。例えばGoogle Chrome(登録商標) Developer Tools、若しくはInternet Explorer(登録商標)の開発者ツール、又は、Firefox(登録商標)のアドオンであるFirebugである。
本発明の実施態様において、「CSS」とは、XMLやHTMLドキュメントの要素をどのように修飾(または表示)するかを指示する、W3Cによる仕様の一つであり、例えばフォントや文字の大きさ、文字飾り、行間などの見栄えに関する情報である。例えば、ウェブ・アプリケーション(例えば、ウェブ・ブラウザ)の中には、表示ページのCSSにアクセスし、当該CSSを表示又は編集する機能が標準で又はアドオンで備えられているものがある。例えばGoogle Chrome(登録商標) Developer Tools、若しくはInternet Explorer(登録商標)の開発者ツール、又は、Firefox(登録商標)のアドオンであるFirebugである。本明細書において、「CSS」という場合には、親要素から継承されたCSSも含む。
CSSは、CSSプロパティ(設定項目でもある)と、当該CSSプロパティの値とを有しうる。例えば、「font-size: 12px;」という定義において、「CSSプロパティ」は「font-size」であり、当該「CSSプロパティ」に定義された値は「12px」である。
本発明の実施態様において、「DOMツリーとCSSとが取り出されることが可能なアプリケーション」とは、DOMツリーとCSSとを取り出すことが可能であればどのようなアプリケーションであってもよい。言い換えれば、「DOMツリーとCSSとが取り出されることが可能なアプリケーション」とは、DOMツリーとCSSを用いて構成される任意のアプリケーションである。
「DOMツリーとCSSとが取り出されることが可能なアプリケーション」は特には、例えば、フレームワーク(例えば、JavaScript(登録商標)フレームワーク)、コンポーネント(例えば、アプリケーション開発者が提供するコンポーネント)又はそれらを組み合わせて動的に構成される任意の動的なアプリケーションでありうる。JavaScript(登録商標)フレームワークは例えば、Dojo Toolkit、jQuery、及びprototype.jsである。上記任意のアプリケーションは例えば、インターネットやイントラネットなどのネットワークを介して使用するウェブ・アプリケーションである。
ウェブ・アプリケーションは、多くの場合、ウェブ・ブラウザ上で動作するプログラミング言語(例えば、上記JavaScript(登録商標))によるプログラムとウェブ・サーバ側のプログラムが協調することによって動作するものである。ユーザは、当該ウェブ・アプリケーションを、例えばウェブ・ブラウザ上で実行しうる。ウェブ・ブラウザは例えば、Internet Explorer(登録商標)(IE)、Google Chrome(登録商標)、Safari(登録商標)、Firefox(登録商標)などでありうる。
ウェブ・アプリケーションは例えば、ブログ、電子掲示板、インターネット・バンキング、オンライン・トレード、ネットショッピングなどのためのアプリケーションとして動作しうる。
本発明の実施態様において、「DOMツリーとCSSとが取り出されることが可能なアプリケーションのソースコード」とは例えば、DOMツリーとCSSとが取り出されることが可能なアプリケーションを構成するフレームワーク(例えば、JavaScript(登録商標)フレームワーク)及びコンポーネント(例えば、アプリケーション開発者が提供するコンポーネント)である。
上記アプリケーションのソースコードが変更された場合において、異なる時点において同じDOMツリーとCSSが得られた場合には、表示画面上に表示される結果並びに不可視領域の差分及び表示サイズによる違いは少なくとも同一のウェブ・ブラウザ(及び同じバージョン)においては全く同じはずである。
図1は、本発明の実施態様において使用されうるコンピュータの一例を示した図である。
コンピュータ(101)は、CPU(102)とメイン・メモリ(103)とを備えており、これらはバス(104)に接続されている。CPU(102)は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものである。当該CPU(102)は例えば、インテル社のCore(商標) iシリーズ、Core(商標) 2シリーズ、Atom(商標)シリーズ、Xeon(登録商標)シリーズ、Pentium(登録商標)シリーズ若しくはCeleron(登録商標)シリーズ、AMD(Advanced Micro Devices)社のAシリーズ、Phenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(登録商標)シリーズ若しくはSempron(商標)、又は、インターナショナル・ビジネス・マシーンズ・コーポレーションのPower(商標)シリーズでありうる。
バス(104)には、ディスプレイ・コントローラ(105)を介して、ディスプレイ(106)、例えば液晶ディスプレイ(LCD)が接続されうる。また、液晶ディスプレイ(LCD)は例えば、タッチパネル・ディスプレイ又はフローティング・タッチ・ディスプレイであてもよい。ディスプレイ(106)は、コンピュータ(101)上で動作中のソフトウェア(例えば、本発明の実施態様に従うコンピュータ・プログラム又は当該コンピュータ(101)上で動作中の各種コンピュータ・プログラム)が稼働することによって表示されるオブジェクトを、適当なグラフィック・インタフェースで表示するために使用されうる。また、ディスプレイ(106)は、DOMツリー、CSS及び、本発明の実施態様に従う比較の結果を出力しうる。
バス(104)には任意的に、例えばSATA又はIDEコントローラ(107)を介して、ディスク(108)、例えばハードディスク又はソリッド・ステート・ドライブ(SSD)が接続されうる。
バス(104)には任意的に、例えばSATA又はIDEコントローラ(107)を介して、ドライブ(109)、例えばCD、DVD又はBDドライブが接続されうる。
バス(104)には、周辺装置コントローラ(110)を介して、例えばキーボード・マウス・コントローラ又はUSBバスを介して、任意的に、キーボード(111)及びマウス(112)が接続されうる。
ディスク(108)には、オペレーティング・システム、例えばWindows(登録商標),Mac OS(登録商標) X,Linux(登録商標),Android(登録商標),iOS、J2EEなどのJava(登録商標)処理環境、Java(登録商標)アプリケーション、Java(登録商標)仮想マシン(VM)、Java(登録商標)実行時(JIT)コンパイラを提供するプログラム、本発明の実施態様に従うコンピュータ・プログラム、及びその他のプログラム、並びにデータが、メイン・メモリ(103)にロード可能なように記憶されうる。
ディスク(108)は、コンピュータ(101)内に内蔵されていてもよく、当該コンピュータ(101)がアクセス可能なようにケーブルを介して接続されていてもよく、又は、当該コンピュータ(101)がアクセス可能なように有線又は無線ネットワークを介して接続されていてもよい。
ドライブ(109)は、必要に応じて、CD−ROM、DVD−ROM又はBDからプログラム、例えばオペレーティング・システム、アプリケーション又は本発明の実施態様に従うコンピュータ・プログラムをディスク(108)にインストールするために使用されうる。
通信インタフェース(114)は、例えばイーサネット(登録商標)・プロトコルに従う。通信インタフェース(114)は、通信コントローラ(113)を介してバス(104)に接続され、コンピュータ(101)を通信回線(115)に有線又は無線接続する役割を担い、コンピュータ(101)のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は例えば、無線LAN接続規格に基づく無線LAN環境、IEEE802.11a/b/g/nなどのWi-Fi無線LAN環境、又は携帯電話網環境(例えば、3G又は4G環境)でありうる。
以下に示す図2、図3、並びに、図4A及び図4Bにおいて、本発明の実施態様に従い、DOMツリーとCSSとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するためのフローチャートを説明する。なお、以下に示す図2、図3、並びに、図4A及び図4Bの説明において、「上記アプリケーション」という場合には、DOMツリーとCSSとが取り出されることが可能なアプリケーションを意味する。
以下において、「実行記録」、「記録区間」、及び「タイミング情報」という語を使用するが、当該語は下記の通り定義される。
「実行記録」とは、あるテストケースの試行全体を指し、1回分のテスト試行を実行記録と定義する。1回分のテスト試行とは、例えば、下記図2に示すステップ203〜216及び下記図3に示すステップ303〜314までを一単位とするものである。1回分のテスト試行として、例えば、初回のテスト試行を実行記録1、2回目のテスト試行を実行記録2、そして3回目のテスト試行を実行記録3のように表現される。
「記録区間」とは、あるテストケースの試行全体である上記実行記録を、「ユーザが何らかの操作を行って、DOMツリー及びCSSの保存ボタンを押す」というまとまり毎に分割した単位である。「記録区間」は、記録順に記録区間i(iは、0〜nの任意の整数)と表現される。記録区間は、DOMツリーとCSSとを保存する為のトリガーをユーザから受け取ることにより定義される。上記記録区間iは、i−1回目のトリガー操作から、i回目のトリガー操作までの区間を表現する。従って、上記記録区間0は、該当する実行記録における、ユーザの入力操作を持たない初期状態でのDOMツリー及びCSSを保持する区間である。そして、初回のトリガーから2回目のトリガーまでを記録区間1、2回目のトリガーから3回目のトリガーを記録区間2、3回目のトリガーから4回目のトリガーを記録区間3、そして、n−1回目のトリガーから最終であるn回目のトリガーを記録区間nとする。当該記録区間nは、該当する実行記録における、記録区間の最大値である。例えば、下記図2において、「記録区間0」はステップ203〜204で示され、「記録区間1」はステップ205〜208で示され、「記録区間2」はステップ209〜212で示され、及び、「記録区間n」はステップ213〜216で示される。すなわち、「記録区間i」について、上記0では「テスト対象のアプリケーション(修正前)を起動から1回目の保存ボタンを押した瞬間」と表現可能である。また、「記録区間i」について、上記1〜nの任意の整数iでは「i−1回目の保存ボタンを押した時からi回目の保存ボタン又は終了ボタンを押した瞬間」と表現可能である。同様に、下記図3においては、図2で保存した記録区間と一致するように、「記録区間0」はステップ303〜304で示され、「記録区間1」はステップ306〜308で示され、「記録区間2」はステップ309〜311で示され、及び、「記録区間n」はステップ312〜314で示される。
「タイミング情報」とは、ユーザが行った操作について、順番や操作間隔を再現するための時間情報を指す。従って、「タイミング情報i」と表現した場合には,上記記録区間iにおいてユーザが行った操作の相対的時刻情報を意味する。従って、「タイミング情報i」において、iは1〜nで定義される。
図2は、本発明の実施態様に従い、上記アプリケーションのソースコードを変更することによって生じる影響を検知するために、上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存する処理の為のフローチャートを示す。
図2に示すフローチャートの各ステップは、テスト対象である上記アプリケーションのソースコードを変更することによって生じる影響の検知が例えばリグレッション・テストの為に行われる場合、当該リグレッション・テスト(図3、並びに図4A及び図4Bに示す処理である)を実行する前に1回のみ行われる。
ステップ201において、コンピュータは、上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存する処理を開始する。上記アプリケーションは例えば、上記アプリケーションのソースコードに対するある変更を加える前のものであるとする。
ステップ202において、コンピュータは、上記アプリケーション起動指示を例えばユーザから受け取ることに応じて、上記アプリケーションを起動する。
ステップ203において、コンピュータは、上記アプリケーションの初期状態にあるDOMツリーとCSSとを保存する為のトリガーを上記ユーザから受け取る。当該トリガーによって該当する実行記録を分割し、連続するトリガー間の区間を記録区間と定義する。当該トリガーは例えば、初期状態保存ボタンに設定されているキーボード上の特定のキー(例えば、特定のファンクション・キー)がユーザによって押下されることを検出することでありうる。コンピュータは、上記トリガーを受信することに応じて、上記特定のキーが押下された時点におけるDOMツリーと、当該DOMツリー内のDOM要素毎に適用されるCSSとを取得する。
上記DOMツリー及び当該DOMツリー内のDOM要素毎に適用されるCSSは、コンピュータが、表示画面上のブラウザに各要素をレンダリングするために、当該ブラウザを用いてウェブ・サーバからの応答を解析して自動的に作成したものであり、上記特定のキーが押下された時点で上記ブラウザ上に表示されている内容に対応するものである(下記に示す、ステップ206、210及び214においても同様である)。取得されたDOMツリー及び、当該DOMツリー内のDOM要素毎に適用されるCSSの例を下記図5Bに示す。
ステップ204において、コンピュータは、ステップ203において取得された、初期状態のDOMツリー及びCSSそれぞれを記憶媒体(291)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(291)中に保存しうる。上記初期値として適用される値は、CSSファイルに定義された(すなわち、CSSファイルに実際に書かれている)値に限定されるものでない。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(291)中に保存しうる。記憶媒体(291)は、例えば図1に示すディスク(108)でありうる。以下、当該保存されたDOMツリー及びCSSを記録区間0(初期状態,i=0)のDOMツリー及びCSSという。
ステップ205において、コンピュータは、ステップ203で初期状態保存ボタンの押下が行われた以降に行われたユーザの一連の入力操作(以下、入力操作1という)を受信する。コンピュータは、上記入力操作が行われるたびに(例えば、入力操作が行われると同時に)、当該入力操作を受信し、記憶媒体(292)中に保存しうる。入力操作は例えば、キーボードによる入力操作、ポインティング・デバイスによる入力操作、タッチパネルによる入力操作、又は音声入力による入力操作を含みうる。ポインティング・デバイスは例えば、マウス、ポインティング・スティック(トラック・ポイント(登録商標))、タッチパッド、トラックボール、又はジョイパッドでありうる。
ステップ206において、コンピュータは、画面状態をチェックしたいタイミングであることに関連付けられた保存ボタン(例えば、特定のファンクション・キー)がユーザによって押下されることを検出する。コンピュータは、当該保存ボタンが押下された時点におけるDOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。コンピュータは、例えば上記保存ボタンの押下を検出することに応じて、前回のトリガー記録区間0(i=0)以降の区間を、記録区間1(i=1)と定義する。
ステップ207において、コンピュータは、上記入力操作1がステップ205で保存されていない場合には、当該入力操作1を記憶媒体(292)中に保存しうる。記憶媒体(292)は記憶媒体(291)と同じであってもよく又は異なっていてもよく、例えば図1に示すディスク(108)でありうる。また、コンピュータは、上記入力操作1中の入力操作それぞれが行われたタイミング情報(例えば、イベント情報(例えば、座標情報、入力操作を行った要素への参照)入力操作を行った順序、及び、各入力操作がどの程度の間隔で行われたのかの時間情報)をタイミング情報1として記憶媒体(292)中に保存する。上記入力操作1と上記タイミング情報1とを併せて、入力操作履歴1ともいう。
ステップ208において、コンピュータは、ステップ206において取得された、DOMツリー及びCSSそれぞれを記録区間1(i=1)の情報として記憶媒体(292)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(292)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(292)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間1(i=1)のDOMツリー及びCSSという。コンピュータは、ステップ207及びステップ208の処理を同時に、又は、ステップ207そしてステップ208の処理の順に若しくはステップ208そしてステップ207の処理の順に行ってもよい。
ステップ209において、コンピュータは、ステップ206で保存ボタンの押下が行われた以降に行われたユーザの一連の入力操作(以下、入力操作2という)を受信する。コンピュータは、上記入力操作が行われるたびに(例えば、入力操作が行われると同時に)、当該入力操作を受信し、記憶媒体(292)中に保存しうる。
ステップ210において、コンピュータは、画面状態をチェックしたいタイミングであることに関連付けられた上記保存ボタンがユーザによって押下されることを検出する。コンピュータは、当該保存ボタンが押下された時点におけるDOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。コンピュータは、例えば上記保存ボタンの押下を検出することに応じて、記録区間1(i=1)以降の区間を、記録区間2(i=2)と定義する。
ステップ211において、コンピュータは、上記入力操作2がステップ209で保存されていない場合には、当該入力操作2を記憶媒体(292)中に保存しうる。また、コンピュータは、上記入力操作2中の入力操作それぞれが行われたタイミング情報をタイミング情報2として記憶媒体(292)中に保存する。
ステップ212において、コンピュータは、ステップ210において取得された、DOMツリー及びCSSそれぞれを記録区間2(i=2)の情報として記憶媒体(292)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(292)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(292)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間2(i=2)のDOMツリー及びCSSという。コンピュータは、ステップ211及びステップ212の処理を同時に、又は、ステップ211そしてステップ212の処理の順に若しくはステップ212そしてステップ211の処理の順に行ってもよい。
ステップ213において、コンピュータは、ユーザの入力操作n−1で保存ボタンの押下が行われた以降に行われたユーザの一連の入力操作(以下、入力操作nという)を受信する。コンピュータは、上記入力操作が行われるたびに(例えば、入力操作が行われると同時に)、当該入力操作を受信し、記憶媒体(292)中に保存しうる。
ステップ214において、コンピュータは、画面状態をチェックしたいタイミングが終了であることに関連付けられた終了ボタン(例えば、特定のファンクション・キー)がユーザによって押下されることを検出する。コンピュータは、当該終了ボタンが押下された時点におけるDOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。
ステップ215において、コンピュータは、上記入力操作nがステップ213で保存されていない場合には、当該入力操作nを記憶媒体(292)中に保存しうる。また、コンピュータは、上記入力操作n中の入力操作それぞれが行われたタイミング情報をタイミング情報nとして記憶媒体(292)中に保存する。
ステップ216において、コンピュータは、ステップ215において取得された、DOMツリー及びCSSそれぞれを記録区間n(i=n)の記憶媒体(292)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(292)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(292)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間n(i=n)のDOMツリー及びCSSという。コンピュータは、ステップ215及びステップ216を同時に、又は、ステップ216そしてステップ215の順に行ってもよい。
ステップ217において、コンピュータは、上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存する処理を終了する。
図2に示す例では、ユーザの入力操作がn回行われる場合について入力操作1、2、〜、nと示した。しかしながら、ユーザの入力操作が入力操作1で終わる場合やユーザの入力操作2で終わる場合を排除するものではなく、ステップ214に示す終了ボタンの押下に応じて、最終である記録区間n(i=n)が決定されることに留意されたい。
図3は、本発明の実施態様に従い、図2に示すフローチャートの処理が終了した後に、当該図2で行われた入力操作1、2、〜、nを操作順にエミュレートしながら、DOMツリー及びCSSを保存し、上記アプリケーションのソースコードを変更することによって生じる影響を検知する処理の為のフローチャートを示す。
図3に示すフローチャートの各ステップは、上記アプリケーションのソースコードを変更することによって生じる影響の検知が例えば、リグレッション・テストの為に行われる場合、ユニット・テストの為に行われる場合、又は当該アプリケーションを構築するためのコード・スタディの為に行われる場合に、上記ソースコードが変更された後に行われる。
リグレッション・テストは、ソースコード作成者が行ったソースコード変更が、該当シナリオの表示結果に影響しないと仮定した上で、上記ソースコード作成者とは別のテスターが変更前のソースコードと変更後のソースコードとの間に差分が無いかを確認するために行われうる。
ユニット・テストは、ソースコード作成者が行ったソースコード変更(内部変更)が、例えばウェブ・アプリケーションのどこ(例えば、外部出力)に影響するかを、当該ソースコード作成者自身が容易に特定するために行われうる。
コード・スタディは、上記ユニット・テストと同様であるが、経験の浅いソースコード作成者がソースコード開発の初歩の段階において、当該ソースコード上の記述と、上記アプリケーション上での出力結果との対応付けを確認するために行われうる。
図3に示す各ステップの実行主体であるコンピュータは、図2に示す各ステップの実行主体であるコンピュータと同じコンピュータであってもよく(下記図9を参照)又は異なるコンピュータであってもよい(下記図10を参照)。
ステップ301において、コンピュータは、図2で行われた入力操作1、2、〜、nを操作順にエミュレートしながら、DOMツリー及びCSSを保存し、上記アプリケーションのソースコードを変更することによって生じる影響を検知する処理を開始する。
上記アプリケーションは、図2において実行された上記アプリケーションのソースコードに対してある変更が加えられた後のものであるとする。
当該処理の開始は例えば、上記アプリケーションのソースコードに対してある変更が加えられた後において、リグレッション・テストの実施時に行われうる。
ステップ302において、コンピュータは、上記アプリケーション起動指示を例えばユーザから受け取ることに応じて、上記アプリケーションを起動する。
ステップ303において、コンピュータは、上記アプリケーションのテスト開始時の初期状態にあるDOMツリーとCSSとを保存する為のトリガーを上記ユーザから受け取る。当該トリガーは例えば、テスト開始ボタンに設定されているキーボード上の特定のキー(例えば、特定のファンクション・キー)がユーザによって押下されることを検出することでありうる。コンピュータは、上記トリガーを受信することに応じて、上記特定のキーが押下された時点におけるDOMツリーと、当該DOMツリー内のDOM要素毎に適用されるCSSとを取得する(図2のステップ203でいう初期状態に対応するものである)。
ステップ304において、コンピュータは、ステップ303において取得された、初期状態のDOMツリー及びCSSそれぞれを記憶媒体(392)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(392)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(392)中に保存しうる。記憶媒体(392)は、例えば図1に示すディスク(108)でありうる。以下、当該保存されたDOMツリー及びCSSを記録区間0(初期状態,i=0)のDOMツリー及びCSSという。
ステップ305において、コンピュータは、記憶媒体(292)から、入力操作履歴(入力操作履歴1〜n)を取り出す。
ステップ306において、コンピュータは、ステップ305で取り出した入力操作履歴1からタイミング情報1を取り出す。
ステップ307において、コンピュータは、ステップ305で取り出した入力操作履歴1から入力操作1を取り出し、ステップ306で取り出したタイミング情報1に従って、当該入力操作1をエミュレートして実行する。コンピュータは、当該入力操作1のエミュレートが終了することに応じて、当該終了時点における(すなわち、タイミング情報1での)DOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。
ステップ308において、コンピュータは、ステップ307で取得された、タイミング情報1でのDOMツリー及びCSSそれぞれを記憶媒体(392)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(392)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(392)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間1(i=1)のDOMツリー及びCSSという。
ステップ309において、コンピュータは、ステップ305で取り出した入力操作履歴2からタイミング情報2を取り出す。
ステップ310において、コンピュータは、ステップ305で取り出した入力操作履歴2から入力操作2を取り出し、ステップ309で取り出したタイミング情報2に従って、当該入力操作2をエミュレートして実行する。コンピュータは、当該入力操作2のエミュレートが終了することに応じて、当該終了時点における(すなわち、タイミング情報2での)DOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。
ステップ311において、コンピュータは、ステップ310で取得された、記録区間2(i=2)におけるDOMツリー及びCSSそれぞれを記憶媒体(392)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(392)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(392)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間2(i=2)のDOMツリー及びCSSという。
ステップ312において、コンピュータは、ステップ305で取り出した入力操作履歴nからタイミング情報nを取り出す。
ステップ313において、コンピュータは、ステップ305で取り出した入力操作履歴nから入力操作nを取り出し、ステップ312で取り出したタイミング情報nに従って、当該入力操作nをエミュレートして実行する。コンピュータは、当該入力操作nのエミュレートが終了することに応じて、当該終了時点における(すなわち、タイミング情報nでの)DOMツリーと、当該ツリー内のDOM要素毎に適用されるCSSとを取得する。
ステップ314において、コンピュータは、ステップ313で取得された、記録区間n(i=n)におけるDOMツリー及びCSSそれぞれを記憶媒体(392)中に保存する。上記保存されるCSSは、上記DOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを含みうる。ただし、コンピュータは、上記DOMツリーのDOM要素に適用されるCSSプロパティが未定義である場合には、上記DOM要素ごとに、初期値として適用される値を取得して、上記記憶媒体(392)中に保存しうる。また、コンピュータは、上記アプリケーション上でのスクリーンショットを撮影して、上記記憶媒体(392)中に保存しうる。以下、当該保存されたDOMツリー及びCSSを記録区間n(i=n)のDOMツリー及びCSSという。
ステップ315において、コンピュータは、図2に示すステップ204、208、212及び216それぞれで保存されたDOMツリー及びCSS(図3のステップ315に示す「保存済みのDOMツリー及びCSS」)と、図3に示すステップ304、308、311及び314それぞれで保存されたDOMツリー及びCSS(図3のステップ315に示す「取得したDOMツリー及びCSS」)とを同じ記録区間(i=i’)で比較する。当該比較内容の詳細及び当該比較の結果の出力については、下記図4A及び図4Bにおいて説明する。
ステップ315において、コンピュータは特には、上記DOMツリー中の各DOM要素と、対応するDOMツリー中の対応する各DOM要素とを比較しうる。また、コンピュータは特には、上記CSS中の各CSSプロパティの各値と、対応するCSS中の対応する各CSSプロパティの各値とを比較しうる。さらには、コンピュータは例えば、CSSが親要素から継承されたCSSも比較対象としうる。
なお、図3に示すフローチャートでは、コンピュータは、エミュレートする入力操作が最後のものであるステップ313の終了後に、ステップ315の比較ステップを纏めて実行している。コンピュータは、ステップ313の終了後に纏めて行うのではなく、例えばステップ304の終了後に、ステップ308の終了後に、ステップ311の終了後に、及びステップ314の終了後において、すなわち上記DOMツリー及びCSSが保存されるたびに,ステップ315の比較ステップを実行してもよい。代替的には、コンピュータは、ステップ315の比較ステップを、上記比較の結果を出力する出力命令がユーザから入力されることに応じて、ステップ315の比較ステップを実行してもよい。
ステップ316において、コンピュータは、図2で行われた入力操作を操作順にエミュレートしながら、DOMツリー及びCSSを保存し、上記アプリケーションのソースコードを変更することによって生じる影響を検知する処理を終了する。
ユーザは、図3に示す各処理を、ソースコードを変更するたびごとに繰り返し行ってもよい。
図4A及び図4Bは、本発明の実施態様に従い、図3に示すステップ315において行われる保存済みのDOMツリーの各DOM要素及びCSSプロパティの値と取得したDOMツリーの各DOM要素及びCSSプロパティの値とを比較し、そして当該比較の結果を出力する処理の為のフローチャートを示す。
図4A及び図4Bに示す各ステップの実行主体であるコンピュータは、図3に示す各ステップの実行主体であるコンピュータと同じである。
ステップ401において、コンピュータは、上記比較、そして当該比較の結果を出力する処理を開始する。
ステップ402において、コンピュータは、ユーザから指示された記録区間iにおけるDOMツリー及びCSSを、上記保存済みのDOMツリー及びCSSを保存した記録媒体(291,292)から読み取る。また、コンピュータは、上記記録区間iと同じ記録区間である記録区間i’(すなわち、i=i’)におけるDOMツリー及びCSSを、上記取得したDOMツリー及びCSS(392)から読み取る。
ステップ403において、コンピュータは、判定対象のDOMツリー内の各DOM要素に対してステップ404〜409に示す処理を繰り返して行うことを開始する。
ステップ404において、コンピュータは、上記判定対象のDOMツリー内の各DOM要素に対して、各DOM要素が同じ記録区間(i=i’)で一致するかどうかを判定する。コンピュータは、当該各DOM要素が一致することに応じて、処理をステップ405に進める。一方、コンピュータは、当該組み合わせが一致しないことに応じて、処理をステップ408に進める。
なお、ステップ404において、コンピュータは、DOMツリー内の特定のDOM要素の比較を無視する除外条件が設定されている場合には、当該DOM要素の比較を無視しうる。上記除外要件は例えば、DOMツリー内のあるタグ以下のDOM要素を比較しないこと、又は上記アプリケーション上のグラフィカル・ユーザ・インタフェース上で相違部分として注目しない部分を比較しないことでありうる。例えば、ユーザは、上記ソースコードへの機能追加又は変更によって生じる影響が予め予想される箇所(例えば、DOM要素、特定された位置、行番号)について、除外条件を設定しておくことができる。一つの例として、ユーザは、上記ソースコードに新しく付け加えたことが分かっているDOM要素(例えば、<div id="newFeature">)以下のDOM要素を無視するように除外条件を設定しておくことができる。コンピュータは、上記除外要件の入力を受け付けるためのユーザ・インタフェース(例えば、ウィンドウ・メニュー)を備えうる。
ステップ405において、コンピュータは、判定対象の各CSSプロパティに対して、ステップ406〜407に示す処理を繰り返して行うことを開始する。
ステップ406において、コンピュータは、上記判定対象の各CSSプロパティの値が同じ記録区間(i=i’)で一致するかどうかを判定する。すなわち、コンピュータは、記録区間iの各CSSプロパティの各値又は当該各CSSプロパティがCSSファイルに定義されていない場合にはブラウザのデフォルトで使用される値(初期値として適用される値である)と、対応する記録区間i’の対応する各CSSプロパティの各値又は当該各CSSプロパティがCSSファイルに定義されていない場合にはブラウザのデフォルトで使用される値(初期値として適用される値である)とを比較しうる。詳細には、コンピュータは、記録区間iの各CSSプロパティのうちから、当該記録区間iでの実際の画面表示に適用されている第1のCSSプロパティ(例えば、font-size)を特定し、且つ、記録区間i’の各CSSプロパティのうちから、当該記録区間i’での実際の画面表示に適用されている上記第1のCSSプロパティと同じ種類の第2のCSSプロパティ(例えば、font-size)を特定し、そして上記第1のCSSプロパティの値又は当該第1のCSSプロパティがCSSファイルに定義されていない場合にはブラウザのデフォルトで使用される値(初期値として適用される値である)と上記第2のCSSプロパティの値又は当該第2のCSSプロパティがCSSファイルに定義されていない場合にはブラウザのデフォルトで使用される値(初期値として適用される値である)とが同一の値(例えば、12px)であるかを比較しうる。なお、コンピュータは、双方のCSSファイル共に該当のCSSプロパティが未定義であった場合に、双方ともにブラウザのデフォルトで使用される値を使う。従って、コンピュータは、双方において上記デフォルトで使用される値が一致するので、相違部分がないと判断する。コンピュータは、上記のように、CSSプロパティの値が一致することに応じて、処理をステップ409に進める。一方、コンピュータは、CSSプロパティの値が一致しないことに応じて、処理をステップ407に進める。
ステップ407において、コンピュータは、CSSプロパティの値が一致しないことに応じて、CSSプロパティの相違部分(差分)、すなわちCSSプロパティの相違する値を特定する。コンピュータは、上記相違部分が下記ステップ411での出力で強調表示されるようにマーク付けしうる。
ステップ408において、コンピュータは、上記各DOM要素が同じ記録区間(i=i’)で一致しないことに応じて、DOMツリーの各DOM要素内での相違部分を特定する。コンピュータは、上記相違部分が下記ステップ411での出力で強調表示されるようにマーク付けしうる。
ステップ409において、コンピュータは、全てのCSSプロパティそれぞれに対してステップ406〜407に示す処理が終了していないことに応じて、ステップ406〜407に示す処理を繰り返す。コンピュータは、全てのCSSプロパティそれぞれに対して406〜407に示す処理が終了していることに応じて、処理をステップ410に進める。
ステップ410において、コンピュータは、全てのDOMツリー内の全てのDOM要素それぞれに対してステップ404〜409に示す処理が終了していないことに応じて、ステップ404〜409に示す処理を繰り返す。コンピュータは、全てのDOMツリー内の全てのDOM要素それぞれに対してステップ404〜409に示す処理が終了していることに応じて、処理をステップ411に進める。
ステップ411において、コンピュータは、ステップ407及びステップ408で特定された相違部分を、同じ記録区間(i=i’)ごとに表示しうる。
上記相違部分の表示は例えば、以下の通りである:
・コンピュータは、ステップ408で特定した相違部分を、同じ記録区間(i=i’)のDOMツリー内の各DOM要素をそれぞれ表示しているウィンドウ内でマーク付け、例えば強調表示しうる(例えば、図6A〜図6Cに記載のDOMツリー621及び661、並びに、図7A〜図7Cに記載のDOMツリー721及び761を参照);及び/又は、
・コンピュータは、ステップ407で特定した相違部分を、同じ記録区間(i=i’)の上記DOM要素ごとに作成されたCSSをそれぞれ表示している画面表示上でマーク付け、例えば強調表示しうる。例えば、図6Cに記載のCSSを表示するウィンドウ(631及び671を参照)、並びに、図7A〜図7Cに記載のCSSを表示するウィンドウ(CSS731及び771を参照)。
ステップ411において、コンピュータは、同じ記録区間(i=i’)における上記アプリケーションがウィンドウ(例えば、ウェブ・ブラウザ)それぞれ内に表示するコンテンツそれぞれを表示しうる。コンピュータは例えば、図2に示すステップ204,208,212及び216でそれぞれ撮影したスクリーンショットそれぞれと、図3に示すステップ304、308、311及び314でそれぞれ撮影したスクリーンショットそれぞれとを、同じ記録区間(i=i’)について上記ウィンドウ内に表示しうる。
また、ステップ411において、コンピュータは、同じ記録区間(i=i’)それぞれにおける上記アプリケーションの表示画面上(例えば、ウィンドウ内)間での相違部分を特定しうる。コンピュータは、当該特定された相違部分を、同じ記録区間(i=i’)それぞれにおける相違部分、すなわち上記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分として特定することを実行しうる。
ステップ411において、コンピュータは、上記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分として表されない不可視領域の差分を表示しうる。当該不可視領域の差分は、DOMツリーの各DOM要素及び/又はCSSプロパティ若しくはCSSプロパティの値で特定されうる。
上記不可視領域の差分は、CSSプロパティ又はCSSプロパティの値で特定されうる。上記不可視領域の差分がCSSプロパティである場合には例えば、片方のCSSファイルにのみ存在するCSSプロパティで、ブラウザの初期値が存在しない場合である。上記不可視領域の差分がCSSプロパティの値である場合には例えば、片方のCSSファイルのみに存在するCSSプロパティで、ブラウザの初期値が存在し、双方の値が異なる場合、又は、両方のCSSファイルに同一のCSSプロパティが存在し、双方の値が異なる場合である。
ステップ411において、コンピュータは、同じ記録区間(i=i’)それぞれにおいて、上記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分がどのCSSファイルのどの位置(例えば、行番号)に定義されているかを表示しうる。特には、コンピュータは、記録区間iのCSSプロパティのうちから、特定の1つのタイミングでの実際の画面表示に適用されている値を定義する第1のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示し、且つ、同様に、記録区間i’のCSSプロパティのうちから、上記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている値を定義する上記第2のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示しうる。
また、ステップ411において、コンピュータは、図4A及び図4Bに示す処理がユニット・テストの為に行われている場合には、当該ユニット・テストでの差分レポートを出力(例えば、画面出力、ファイル出力、又は印刷出力)しうる。
ステップ412において、コンピュータは、比較結果の出力操作が終了したかどうかを判断する。コンピュータは、比較操作が終了したことに応じて、処理を終了ステップ413に進める。一方、コンピュータは、比較操作を継続することに応じて、処理をステップ402に戻す。比較操作を継続することは例えば、異なる記録区間がユーザによって選択された場合である。
ステップ413において、コンピュータは、上記比較、そして当該比較の結果を出力する処理を終了する。
図5Aは、本発明の実施態様に従い保存される入力操作履歴の格納態様を示す。
画面(501)は、上記アプリケーションの画面状態をチェックしたいあるタイミング(記録区間i)において保存される入力操作内容を格納する態様を示す。
DOMツリー(511)は、各DOM要素(521,522及び523)が階層構造からなることを示す。DOM要素(521)はルートDOM要素であり、DOM要素(522及び523)は枝DOM要素である。
図2に示すフローチャートのステップ207、211及び215において、図3に示すステップ306〜307、309〜310、及び312〜313に示すエミュレーション操作をするために、ユーザの入力操作に関わる要素の情報の全てを記録しておく必要がある。当該情報は例えば、識別番号(id)、ラベル(label)及び/又はスタイル(style)、並びに、イベント種類(例えば、「onClick」)、及び記録区間iが始まってからどのイベントがどのような順番で何秒後に起きたのかを判別するための相対時間(例えば、「記録区間i中の相対時間:ss.sss秒」)である。識別番号及びラベル及び/又はスタイルは、ユーザが入力を行った対象(例えば、クリックした「ボタン」、又は、キー入力を行った「テキスト・ボックス」)が何であるかを記録するためのものである。上記スタイルは例えば、ボタンの識別番号やラベルが入力データによって変更される状況下において、「width: 100px; height: 40pxで最初に現れるボタン」という識別をする為に用いられうる。また、DOM要素(523)には、例えば、ユーザが記録区間iに行った各種イベント(例えば、このボタンをクリックした、このボタンをダブルクリックした、ドラッグ&ドロップ、ホバー(例えば、マウス・ホバー)、キー入力)という入力操作履歴が関連付けられている。従って、コンピュータは、図5Aに示す操作履歴を用いて、図3に示すステップ306〜307、309〜310、及び312〜313に示すエミュレーション操作をする際に、どのボタンをクリックしたようにすればよいかを特定することが可能になる。図3に示すステップ306〜307、309〜310、及び312〜313に示すエミュレーション操作をする際に、コンピュータは、例えば、識別番号が同じであれば同じ識別番号の要素をクリックするエミュレートを行い、例えば、識別番号が動的に変更されていればラベルが同じボタンに対してクリックするエミュレートを行いうる。但し、使用するJavaScript(登録商標)フレームワークによっては、id属性が自動的に生成されることもある。従って、ユーザは、上記特定のためにどの属性値を用いるか(例えば、ラベルで選択するか)を選択することが可能である。コンピュータは、ユーザが当該選択を可能にするためのウィンドウを表示しうる。
記憶媒体(541)は、図2に示すタイミング(ステップ207、211及び215)の各記録区間iにおける入力操作履歴0,1,2,…,nを格納する(542)。
図5Bは、本発明の実施態様に従い保存されるDOMツリー、及び当該DOMツリーの各DOM要素に適用される1又は複数のCSS(CSSプロパティと当該CSSプロパティの定義場所を含む)の格納態様を示す。
画面(551)は、上記アプリケーションの画面状態をチェックしたいあるタイミング(記録区間i)におけるDOMツリー(561)及び当該DOMツリー(561)の各DOM要素(571,572及び573)、並びに、当該各DOM要素(571,572及び573)に適用されるCSS(581,582及び583)を示す。
DOMツリー(561)は、各DOM要素(571,572及び573)が階層構造からなることを示す。DOM要素(571)はルートDOM要素であり、DOM要素(572及び573)は枝DOM要素である。
CSS(581)は、DOM要素(571)が当該CSS(581)に関連付けられていることを示す。CSS(581)はDOM要素(571)に適用されるCSSプロパティ(581a)を含む。CSS(581)内の「/Framework1/style1.css」(581b)は、当該CSS(581)の定義場所を示す。
CSS(582)は、DOM要素(572)が当該CSS(582)に関連付けられていることを示す。CSS(582)はDOM要素(572)に適用されるCSSプロパティ(582a)を含む。CSS(582)内の「/Framework1/style1.css」(582b)は、当該CSS(582)の定義場所を示す。
CSS(583)は、DOM要素(573)が当該CSS(583)に関連付けられていることを示す。CSS(583)は、定義場所が異なるCSS(583−1)及びCSS(583−2)を含む。CSS(583−1)はDOM要素(573)に適用されるCSSプロパティ(583−1a)を含む。CSS(583−2)はDOM要素(573)に適用されるCSSプロパティ(583−2a)を含む。CSSプロパティ(583−2a)はCSS(583−2)に定義されているが、上記フレームワークのCSS(583−1)中のCSSプロパティ(583−1a)がCSSプロパティ(583−2a)よりも優先されるために、CSSプロパティ(583−2a)上にはDOM要素に適用されないことを示す取消線が付されている。
記憶媒体(591)は、図2に示すタイミング(ステップ203、206、210及び214)の各記録区間iで保存されたDOMツリーと、当該DOMツリーの各DOM要素に適用される1又は複数のCSSとのセット(ステップ204、208、212及び216)を格納する(592)。同様に、記憶媒体(591)は、図3において、図2に示すタイミングの各記録区間iで保存されたDOMツリーと、当該DOMツリーの各DOM要素に適用される1又は複数のCSSとのセット(ステップ304、308、311及び314)を格納する(591)。
図6A〜図6C、図7A〜図7C、及び図8A〜図8Cは、本発明の実施態様に従い、DOMツリーとCSSとが取り出されることが可能なアプリケーション(コントロール・パネル・アプリケーションの一部)のソースコードを変更することによって生じる影響を検知し、当該検知の結果の各出力例を示す。
図6A〜図6Cは上記検知の結果の出力画面(601)を示し、当該出力画面(601)は、当該出力画面(601)の左側において、図2に示す処理の実施(初回)時である(実行記録1:2013/10/01 10:00:00)の記録区間5(i=5)における上記アプリケーションのプレビュー画面表示ウィンドウ(611)、当該記録区間5(i=5)におけるDOMツリーを表示するウィンドウ(621)、及び当該DOMツリーの各DOM要素に適用される1又は複数のCSSを表示するウィンドウ(631)を示し、並びに、当該出力画面(601)の右側において、図2に示す処理の実施に加えて、図3に示す処理をさらに2回実施した後の3回目(実行記録3:2013/10/20 16:30:00)の記録区間5(i’=5)における上記アプリケーションのプレビュー画面表示ウィンドウ(651)、当該記録区間5(i’=5)におけるDOMツリーを表示するウィンドウ(661)、及び当該DOMツリーの各DOM要素に適用される1又は複数のCSSを表示するウィンドウ(671)を示す。
出力画面(601)では、当該出力画面(601)の左上側において、図2に示す処理の実施時である初回(実行記録1:2013/10/01 10:00:00)の上記アプリケーションのプレビュー画面表示ウィンドウ(611)を示しているが、当該プレビュー画面表示ウィンドウ(611)内に、図2に示す処理の実施(初回)以外に、図3に示す処理をさらにx回実施した後のx+1回目の上記アプリケーションのプレビュー画面を表示させるかを選択可能にするスクロール・バー(691)を備えている。ユーザは、当該スクロール・バー(691)を操作(例えば、Prevボタン(戻るボタン)の選択、又はNextボタン(進むボタン)の選択)することによって、プレビュー画面表示ウィンドウ(611)内に、現在表示している実行記録よりも古い又は新しい実行記録のプレビュー画面を表示させることができる。
同様に、出力画面(601)では、当該出力画面(601)の右上側において、図2に示す処理の実施(初回)に加えて、図3に示す処理をさらに2回実施した後の3回目(実行記録3:2013/10/20 16:30:00)の上記アプリケーションのプレビュー画面表示ウィンドウ(651)を示しているが、当該プレビュー画面表示ウィンドウ(651)内に、図2に示す処理の実施(初回)に加えて、図3に示す処理をさらにx回実施した後のx+1回目の上記アプリケーションのプレビュー画面を表示させるかを選択可能にするスクロール・バー(692)を備えている。ユーザは、当該スクロール・バー(692)を操作(例えば、Prevボタン(戻るボタン)の選択、又はNextボタン(進むボタン)の選択)することによって、プレビュー画面表示ウィンドウ(651)内に、現在表示している実行記録よりも古い又は新しい実行記録のプレビュー画面を表示させることができる。
出力画面(601)において、上記左上側のプレビュー画面表示ウィンドウ(611)が上記右上側のプレビュー画面表示ウィンドウ(651)よりも時間的に過去の時点におけるアプリケーションの表示画面としうる。
また、出力画面(601)では、上記左上側のプレビュー画面表示ウィンドウ(611)及び上記右上側のプレビュー画面表示ウィンドウ(651)において、どの記録区間(記録区間i又は記録区間i’,i=i’)のプレビュー画面を表示させるかを選択可能にするスクロール・バー(693)を備えている。ユーザは、当該スクロール・バー(692)を操作(例えば、Prevボタン(戻るボタン)の選択、又はNextボタン(進むボタン)の選択)することによって、上記左上側のプレビュー画面表示ウィンドウ(611)及び上記右上側のプレビュー画面表示ウィンドウ(651)それぞれにおいて、特定の記録区間(記録区間i(i=0〜n)又は記録区間i’(i’=0〜n)のプレビュー画面表示を表示することができる。
上記出力画面(601)についての説明は、下記図7A〜図7Cに示す出力画面(701)及び下記図8A〜図8Cに示す出力画面(801)においても同様に適用される。
図6Aにおいて、プレビュー画面表示ウィンドウ(611)は、実行記録1である初回(実行記録:2013/10/01 10:00:00)の記録区間5(i=5)のプレビュー画面を示す。プレビュー画面表示ウィンドウ(651)は、実行記録3である3回目(実行記録:2013/10/20 16:30:00)の記録区間5(i’=5)のプレビュー画面を示す。
プレビュー画面表示ウィンドウ(611)とプレビュー画面表示ウィンドウ(651)との間で下記表示が異なっている:
・「----------」の文字修飾(高さ1px(611a),高さ2px(651a))
・「Hello, admin.」の表示位置(左揃え(611b),右揃え(651b));
・「Version」番号(1.01(611c),1.02(651c))
・注意表示の有無(「Warning: 1 alert(s)」(651d)):「Warning: 1alert(s)」は、プレビュー画面表示ウィンドウ(611)と比べて上記コントロール・パネル・アプリケーションに追加されたヘッダ部分である。当該ヘッダ部分の「Warning: 1 alert(s)」は、図6Aに示す例において上記コントロール・パネル・アプリケーションにおいて、Status Cにアラートが上がっていることを示す警告表示である。
プレビュー画面表示ウィンドウ(611)のうち、枠線部分(611c)はDOMの変更により生じる差異であり、枠線部分(611a,611b)はCSSの変更により生じる差異である。プレビュー画面表示ウィンドウ(651)のうち、枠線部分(651c,651d)はDOMの変更により生じる差異であり、枠線部分(651a,651b)はCSSの変更により生じる差異である。
プレビュー画面表示ウィンドウ(611)とプレビュー画面表示ウィンドウ(651)との間で異なって表示されている部分(すなわち、両表示ウィンドウの比較結果)が、強調表示されている。異なって表示されている部分は、ソースコードの変更によって影響された部分である。異なっている部分が文字である場合には、上記強調表示は例えば、当該文字の枠線囲み、当該文字の修飾(例えば、太字、斜体、下線、若しくは色付け)、又は、当該文字の行若しくは列の罫線囲みによる分割によって行われうる。異なっている部分が画像である場合には、上記強調表示は例えば、当該画像の枠線囲み、又は、当該画像の行若しくは列の罫線囲みによる分割によって行われうる。
図6Aにおいて、DOMツリーを表示するウィンドウ(621)は、プレビュー画面表示ウィンドウ(611)中の上記比較結果に影響するDOM要素を含むDOM要素ツリーを表示している。例えば、枠線部分(621a,621b,及び621c)はそれぞれ、プレビュー画面表示ウィンドウ(611)中に表示されている相違部分(611a,611b,及び611c)に影響を及ぼしているDOM要素に対応する。枠線部分(621a,621b,及び621c)は、当該枠線部分で囲まれた部分それぞれの背景色が異なるように強調表示されていてもよい。
図6Aにおいて、DOMツリーを表示するウィンドウ(661)は、プレビュー画面表示ウィンドウ(651)中の上記比較結果に影響するDOM要素を含むDOM要素ツリーを表示している。例えば、枠線部分(661a,661b,661c,及び661d)はそれぞれ、プレビュー画面表示ウィンドウ(651)中に表示されている相違部分(651a,651b,651c,及び651d)に影響を及ぼしているDOM要素に対応する。
図6Aにおいて、CSSを表示するウィンドウ(631,671)には、まだ何も表示されていないとする。
図6Bに示すように、ユーザが、DOMツリーを表示するウィンドウ(621)中の枠線部分(621a)、すなわち強調表示されたDOM要素(621a)である<hr>タグを、例えばポインティング・デバイスをクリックして選択したとする。枠線部分(621a)は、上記した通り、プレビュー画面表示ウィンドウ(611)中に表示されている相違部分(611a)に影響を及ぼしているDOM要素に対応する。コンピュータは、上記枠線部分(621a)のクリックに応じて、DOMツリーを表示するウィンドウ(621)中において、当該クリック対象のDOM要素(621a)又は当該DOM要素(621a)を含む近傍部分を強調表示する。上記コンピュータは例えば、DOM要素(621a)である<hr>タグの背景色を変化させたり、又は、当該<hr>タグのフォントを変化させたりする。さらに、上記コンピュータは、上記枠線部分(621a)のクリックに応じて、プレビュー画面表示ウィンドウ(611)及びプレビュー画面表示ウィンドウ(651)中それぞれにおいて、枠線部分(611a)及び枠線部分(651a)をそれぞれ強調表示する。上記コンピュータは例えば、「----------」の背景色を変化させたり、又は、「----------」のフォントを変化させたりする。
図6Cに示すように、コンピュータは、上記DOM要素(621a)の選択に応答して、当該DOM要素(621a)、及び当該DOM要素(621a)に対応するDOM要素(661a)それぞれに適用されるCSSの差分を検出し、当該検出した差分(631a,671a)を、CSSを表示するウィンドウ(631,671)それぞれに表示する。上記CSSの差分は、CSSを表示するウィンドウ(631)内では枠線(631a)であり、且つ、CSSを表示するウィンドウ(671)内では枠線(671a)である。ウィンドウ(631)内の枠線(631a)で表示される「+ height: 1px; (default)」は、ブラウザのデフォルトで使用される値で補われたものであり、CSSファイルに記載された内容によるものでない。すなわち、CSSファイルに記載された内容を単純に表示したものではない。従って、コンピュータは、CSSを表示するウィンドウ(631)内の、CSSファイルに記載された内容によるものでないが上記「+ height: 1px; (default)」と、CSSを表示するウィンドウ(631)内の、CSSファイルに記載された内容である上記「+ height: 2px;」とを比較して、その差分を求める。コンピュータは、当該差分を強調表示しうる。強調表示の態様は、上記において述べた態様と同様である。
図6Cに示す例では、ユーザが、プレビュー画面表示ウィンドウ(611)及びプレビュー画面表示ウィンドウ(651)を目視するだけでは確認しづらい<hr>の高さが変更されていることを示している。上記検出した差分(631a,671a)において、CSSプロパティの名前は同じ「height」であるが、上記差分の一方(631a)中の当該CSSプロパティで定義された値(実際には、(default)と表記されているために、下記に述べるようにブラウザのデフォルトで使用される値で補われた値である)は「1px」であり、一方、上記差分の他方(671a)中の当該CCSプロパティで定義された値は「2px」である。従って、上記差分の一方(631a)と上記差分の他方(671a)との間で、上記定義された値が異なっている。
CSSを表示するウィンドウ(631)では、<hr>のCCSプロパティであるheightがCSSファイルにおいて未定義である。従って、コンピュータは、上記プレビュー画面を表示するアプリケーション(例えば、ウェブ・アプリケーション)の初期値である1pxを使用して表示している。当該初期値は、ウェブ・アプリケーションごとに異なりうるものである。従って、CSSを表示するウィンドウ(631)では、CSSプロパティで定義された値との比較のための初期値が何であったかを補うために、(default)と表記している。
図6Cに示すように、ユーザが、CSSプロパティの差分(671a)を、例えばポインティング・デバイスをクリックして選択したとする。コンピュータは、上記CSSプロパティの差分(671a)の選択に応答して、該当ファイルの定義された行にジャンプしうる。
図7Aに示す出力画面(701)は、図6Bに示すDOM要素(621a)の選択に応答して表示される画面である。従って、図7Aに示す出力画面(701)は、図6Cに示す出力画面(601)と同じである。
図7Bに示すように、ユーザが、DOMツリーを表示するウィンドウ(721)中の枠線部分(621b)、すなわち強調表示されたDOM要素(621b)を、例えばポインティング・デバイスをクリックして選択したとする。枠線部分(621b)は、上記した通り、プレビュー画面表示ウィンドウ(711)中に表示されている相違部分(611b)に影響を及ぼしているDOM要素に対応する。コンピュータは、上記枠線部分(621b)のクリックに応じて、DOMツリーを表示するウィンドウ(721)中において、当該クリック対象のDOM要素(621b)又は当該DOM要素(621b)を含む近傍部分を強調表示する。上記コンピュータは例えば、<p class="oneuiSubTitle">Hello,admin.</p>の背景色を変化させたり、又は、当該<p>タグのフォントを変化させたりする)。さらに、上記コンピュータは、上記枠線部分(621b)のクリックに応じて、プレビュー画面表示ウィンドウ(711)及びプレビュー画面表示ウィンドウ(751)中それぞれにおいて、枠線部分(611b)及び枠線部分(651b)をそれぞれ強調表示する。上記コンピュータは例えば、「Hello, admin.」(611b,651b)の背景色を変化させたり、又は、「Hello, admin.」(611b,651b)のフォントを変化させたりする。なお、DOMツリーを表示するウィンドウ(721)中の枠線部分(621b)にあるDOM要素と、DOMツリーを表示するウィンドウ(761)中の枠線部分(661b)にあるDOM要素との間に差異はない。
図7Cに示すように、コンピュータは、上記DOM要素(621b)の選択に応答して、当該DOM要素(621b)、及び当該DOM要素(621b)に対応するDOM要素(661b)それぞれに適用されるCSSの差分を検出し、当該検出した差分(731b,771b)を、CSSを表示するウィンドウ(731,771)それぞれに表示する。上記CSSの差分は、CSSを表示するウィンドウ(731)内では枠線(731b)であり、且つ、CSSを表示するウィンドウ(771)内では枠線(771b)である。コンピュータは、上記差分を強調表示しうる。強調表示の態様は、上記において述べた態様と同様である。
図7Cに示すCSSを表示するウィンドウ(731)では、上記DOM要素(621b)に適用される複数のCSS(781a,781b)中において、より狭い範囲、及びより強い優先度を持つ要素順にCSSプロパティが並べられている。また、同じDOM要素(621b)に対して同じCSSプロパティが定義されている場合には、適用されるCSSプロパティ以外のCSSプロパティ上に例えば取り消し線が引かれている(781bを参照)。
図7Cに示すCSSを表示するウィンドウ(731)は、当該CSS(781a)の定義場所(/OneUI/OneUITheme.cssを併せて表示する。また、同様に、CSSを表示するウィンドウ(731)は、当該複数のCSS(781b)の定義場所(/dojo/dijit/dijitTheme.css)を併せて表示する。
同様に、CSSを表示するウィンドウ(771)では、上記DOM要素(661b)に適用される複数のCSS(791a,791b)中において、より狭い範囲、及びより強い優先度を持つ要素順にCSSプロパティが並べられている。また、同じDOM要素(661b)に対して同じCSSプロパティが定義されている場合には、適用されるCSSプロパティ以外のCSSプロパティ上に例えば取り消し線が引かれている(791bを参照)。CSSを表示するウィンドウ(771)では、当該複数のCSS(791a,791b)それぞれの定義場所(/OneUI/OneUITheme.css及び/dojo/dijit/dijitTheme.css)を併せて表示する。
図7Cに示す例では、DOM要素<p>に適用されたoneuiSubTitleクラスのCSSプロパティtext-alignが、CSSを表示するウィンドウ(731,771)それぞれ中において差分(731b,771b)として示されている。上記検出した差分(731b,771b)において、上記差分の一方(731b)中の当該CSSプロパティで定義された値は「left」であり、一方、上記差分の他方(771b)中の当該CCSプロパティで定義された値は「right」である。従って、上記差分の一方(771b)と上記差分の他方(771b)との間で、上記定義された値が異なっている。
また、DOM要素<body>に適用されたdijitTextクラスのfont-sizeはファイル・レベルでは差がある。すなわち、dijitTextクラス(781bを参照)では「font-size: large;」であり、dijitTextクラス(791bを参照)では「font-size: x-large;」である。しかしながら、CSSプロパティの優先度により、dijitTextクラスのfont-sizeの値(781b及び791bを参照)ではなく、oneuiSubTitleクラスのfont-sizeの値(781b,791b)が表示に適用される。従って、プレビュー画面表示ウィンドウ(711)及びプレビュー画面表示ウィンドウ(751)における表示結果には、dijitTextクラスのfont-sizeの値(781b及び791bを参照)は影響していないと判断されて、強調表示されていない。
図7Cに示すように、ユーザが、CSSプロパティの差分(771b)を、例えばポインティング・デバイスをクリックして選択したとする。コンピュータは、上記CSSプロパティの差分(771b)の選択に応答して、該当ファイルの定義された行にジャンプしうる。
図8A〜図8Cは、本発明の実施態様に従い、上記変更によって生じる影響を検知し、当該検知の結果の出力例を示す。
図8A〜図8Cは上記検知の結果の出力画面(801)を示し、当該出力画面(801)は、当該出力画面(801)の左側において、図2に示す処理の実施(初回)時である(実行記録1:2013/10/01 10:00:00)の記録区間5(i=5)における上記アプリケーションのプレビュー画面表示ウィンドウ(811)、当該記録区間5(i=5)におけるDOMツリーを表示するウィンドウ(821)、及び当該DOMツリーの各DOM要素に適用される1又は複数のCSSを表示するウィンドウ(831)を示し、並びに、当該出力画面(801)の右側において、図2に示す処理の実施に加えて、図3に示す処理をさらに1回実施した後の2回目(実行記録2:2013/10/10 14:20:00)の記録区間5(i’=5)における上記アプリケーションのプレビュー画面表示ウィンドウ(851)、当該記録区間5(i’=5)におけるDOMツリーを表示するウィンドウ(861)、及び当該DOMツリーの各DOM要素に適用される1又は複数のCSSを表示するウィンドウ(871)を示す。
図8Aに示す例では、プレビュー画面表示ウィンドウ(811)及びプレビュー画面表示ウィンドウ(851)それぞれに表示されるコンテンツに差がない。従って、プレビュー画面表示ウィンドウ(811)及びプレビュー画面表示ウィンドウ(851)それぞれ中に、差分を示すための強調表示がされていない。
同様に、DOMツリーを表示するウィンドウ(821)中の当該DOMツリーの各DOM要素と、DOMツリーを表示するウィンドウ(861)中の当該DOMツリーの各DOM要素との間に差がない。従って、DOMツリーを表示するウィンドウ(821)及びDOMツリーを表示するウィンドウ(861)それぞれ中に、差分を示すための強調表示がされていない。
図8Bに示す出力画面(801)は、図8Aに示す出力画面(801)と同じである。図8に示すように、ユーザが、DOMツリーを表示するウィンドウ(821)中のDOM要素「<p class="oneuiSubTitle">Hello,admin.</p>」(枠線部分)を、例えばポインティング・デバイスをクリックして選択したとする。当該枠線は、選択箇所を明示するために付したものであって、実際の画面上に枠線が表示されている必要はない。
図8Cに示すように、コンピュータは、上記DOM要素の選択に応答して、当該選択されたDOM要素、及び当該選択されたDOM要素に対応するDOM要素「<p class="oneuiSubTitle">Hello,admin.</p>」(861を参照)それぞれに適用されるCSSの差分を検出する。コンピュータは、上記選択されたDOM要素に適用されるCSS、及び上記選択されたDOM要素に対応するDOM要素に適用されるCSSをそれぞれ、CSSを表示するウィンドウ(831)及びCSSを表示するウィンドウ(871)に表示する。しかしながら、コンピュータは、上記CSSの間に差分が検出されないために、CSSを表示するウィンドウ(831)中のCSS及びCSSを表示するウィンドウ(871)中のCSSに強調表示を付さない。
図9は、図1に従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い、DOMツリーとCSSとが取り出されることが可能なアプリケーションに対する変更によって生じる影響を検知するコンピュータの機能ブロック図の一例を示した図である。
コンピュータ(901)は、本発明の実施態様に従い、上記アプリケーションのソースコードを変更することによって生じる影響を検知するコンピュータであり、例えば図1に示すコンピュータである。
コンピュータ(901)は、保存手段(911)、取得手段(912)、比較手段(913)、及び出力手段(914)を備えている。
保存手段(911)は、上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを、例えば記憶媒体(921)(図2に示す記憶媒体(291)に対応する)中に又は記憶媒体(922)(図2に示す記憶媒体(292)に対応する)中に保存する。
保存手段(911)は、図2に示すステップ203〜216を実行しうる。
取得手段(912)は、上記ソースコードを変更することが行われた後に、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得し、例えば記憶媒体(923)(図3に示す記憶媒体(392)に対応する)中に保存する。
取得手段(912)は、図3に示すステップ303〜314を実行しうる。
比較手段(913)は、保存手段(911)が保存したDOMツリー及びCSSを、例えば記憶媒体(921)又は記憶媒体(922)から読み出し、且つ、取得手段(912)が保存したDOMツリー及びCSSを、例えば記憶媒体(923)から読み出す。比較手段(913)は、上記記憶媒体(921)又は記憶媒体(922)から読み出したDOMツリー及びCSSと、上記記憶媒体(923)から読み出したDOMツリー及びCSSとを、同じタイミングごとにそれぞれ比較する。特には、比較手段(913)は、上記DOMツリー中の各DOM要素と、対応するDOMツリー中の対応する各DOM要素とを比較しうる。また、特には、上記CSS中の各CSSプロパティの各値と、対応するCSS中の対応する各CSSプロパティの各値とを比較しうる。
比較手段(913)は、図3に示すステップ315、並びに、図4Aに示すステップ402〜410及び412を実行しうる。
出力手段(914)は、比較手段(913)が比較した比較結果を出力する。
出力手段(914)は、図4Bに示すステップ411を実行しうる。
図10は、図1に従うハードウェア構成を好ましくは備えており、本発明の実施態様に従い、DOMツリーとCSSとが取り出されることが可能なアプリケーションに対する変更によって生じる影響を検知するコンピュータの機能ブロック図の一例を示した図である。
図10に示すコンピュータ(1001)は、図9に示すコンピュータ(901)と同様に、取得手段(1012)、比較手段(1013)、及び出力手段(1014)を備えている。コンピュータ(1001)が備えている取得手段(1012)、比較手段(1013)、及び出力手段(1014)はそれぞれ、コンピュータ(901)が備えている取得手段(912)、比較手段(913)、及び出力手段(914)にそれぞれ対応する。図10に示すコンピュータ(1001)は、図9に示すコンピュータ(901)が備えている保存手段(911)を備えていない点で異なる。
コンピュータ(1001)は、上記アプリケーション上でのユーザの入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存した、例えば記憶媒体(1021)(図2に示す記憶媒体(291)に対応する)及び記憶媒体(1022)(図2に示す記憶媒体(292)に対応する)にアクセス可能である。
取得手段(1012)は、上記ソースコードを変更することが行われた後に、記憶媒体(1022)にアクセスして、上記入力操作を当該操作順にエミュレートし、上記画面状態をチェックしたい上記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得し、例えば記憶媒体(1023)(図3に示す記憶媒体(392)に対応する)中に保存する。
取得手段(1012)は、図3に示すステップ303〜314を実行しうる。
比較手段(1013)は、例えば記憶媒体(1021)又は記憶媒体(1022)中に保存されているDOMツリー及びCSSと、例えば記憶媒体(1023)中に保存されているDOMツリー及びCSSとを、同じタイミングごとにそれぞれ比較する。
比較手段(1013)は、図3に示すステップ315、並びに、図4Aに示すステップ402〜410及び412を実行しうる。
出力手段(1014)は、比較手段(1013)が比較した比較結果を出力する。
出力手段(1014)は、図4Bに示すステップ411を実行しうる。

Claims (20)

  1. 文書オブジェクトモデル(以下、DOMという)ツリーとカスケーディング・スタイル・シート(以下、CSSという)とが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法であって、コンピュータが、
    画面状態をチェックしたい少なくとも1つのタイミングごとに、前記アプリケーション上でのユーザの1以上の入力操作と、DOMツリーと、CSSとを保存するステップと、
    前記ソースコードの変更が行われた後に、前記タイミングごとに前記入力操作を当該操作順にエミュレートするステップと
    記タイミングごとにDOMツリー及びCSSを取得するステップと、
    前記保存するステップで保存したDOMツリー及びCSSと、前記取得するステップで取得したDOMツリー及びCSSとを前記タイミングごとにそれぞれ比較するステップと、
    前記比較の結果を出力するステップと
    を実行することを含む、前記方法。
  2. 前記出力するステップが、
    前記同じタイミングにおいて、前記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分がどのCSSファイルのどの位置に定義されているかを表示するステップ
    を含む、請求項1に記載の方法。
  3. 前記比較するステップが、
    前記保存したCSS中の又は前記取得したCSS中のCSSプロパティのうちから、前記画面状態をチェックしたい前記少なくとも1つのタイミングのうちの特定の1つのタイミングでの実際の画面表示に適用されている第1のCSSプロパティを特定するステップと
    前記取得したCSS中のCSSプロパティのうちから、前記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている第2のCSSプロパティを特定するステップと
    前記第1のCSSプロパティと前記第2のCSSプロパティとを比較するステップと
    を含む、請求項1に記載の方法。
  4. 前記出力するステップが、
    前記第1のCSSプロパティと前記第2のCSSプロパティとの比較の結果を出力するステップ
    を含む、請求項3に記載の方法。
  5. 前記出力するステップが、
    前記保存したCSS中のCSSプロパティのうちから、前記特定の1つのタイミングでの実際の画面表示に適用されている値を定義する前記第1のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示するステップ
    を含む、請求項3に記載の方法。
  6. 前記出力するステップが、
    前記取得したCSS中のCSSプロパティのうちから、前記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている値を定義する前記第2のCSSプロパティに対応し且つ当該実際の画面表示に適用されていない値を定義するCSSプロパティを強調表示するステップ
    を含む、請求項3に記載の方法。
  7. 前記保存するステップが、
    前記保存したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを保存するステップ、又は、
    前記保存したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティが未定義である場合に、初期値として適用される値を取得するステップ
    を含み、
    前記取得するステップが、
    前記取得したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを取得するステップ、又は、
    前記取得したDOMツリーのDOM要素ごとに、当該DOM要素に適用されるCSSプロパティが未定義である場合に、初期値として適用される値を取得するステップ
    を含む、
    請求項1に記載の方法。
  8. 前記出力するステップが、
    前記保存したDOMツリーを表示するステップであって、当該ステップにより表示されたDOMツリーと前記取得したDOMツリーとの間で相違するDOM要素を強調表示するステップを含む、前記表示するステップ
    を含む、請求項7に記載の方法。
  9. 前記出力するステップが、
    前記強調表示するステップにより強調表示されたDOM要素が選択されることに応じて、当該選択されたDOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを表示するステップ
    を含む、請求項8に記載の方法。
  10. 前記出力するステップが、
    前記取得したDOMツリーを表示するステップであって、前記表示されたDOMツリーと前記取得したDOMツリーとの間で相違するDOM要素を強調表示するステップを含む、前記取得されたDOMツリーを表示するステップ
    を含む、請求項9に記載の方法。
  11. 前記出力するステップが、
    前記強調表示されたDOM要素が選択されることに応じて、当該選択されたDOM要素に適用されるCSSプロパティと当該CSSプロパティの定義場所とを表示するステップ
    を含む、請求項10に記載の方法。
  12. 前記出力するステップが、
    前記同じタイミングにおいて、前記アプリケーション上でのグラフィカル・ユーザ・インタフェース間での相違部分を出力するステップ
    を含む、請求項1に記載の方法。
  13. 前記保存するステップが、
    前記画面状態をチェックしたい少なくとも1つのタイミングごとに前記アプリケーション上でのスクリーンショットを撮影するステップ
    をさらに含み、
    前記取得するステップが、
    前記画面状態をチェックしたい前記少なくとも1つのタイミングと同じタイミングごとに前記アプリケーション上でのスクリーンショットを撮影するステップ
    をさらに含み、
    前記出力するステップが、
    前記比較の結果が相違することに応じて、前記保存するステップで撮影したスクリーンショットと、前記取得するステップで取得したスクリーンショットとをそれぞれ表示するステップ
    を含む、請求項1に記載の方法。
  14. 前記出力するステップが、
    前記比較の結果が相違することに応じて、前記保存するステップで撮影したスクリーンショットと、前記取得するステップで取得したスクリーンショットとの差分を強調表示するステップ
    を含む、請求項13に記載の方法。
  15. 前記出力するステップが、不可視領域の差分を表示するステップを含む、請求項1に記載の方法。
  16. 前記コンピュータが、
    前記ソースコードに対する更なる変更が行われた後に、前記入力操作を当該操作順にエミュレートし、前記画面状態をチェックしたい前記少なくとも1つのタイミングと同じタイミングごとにDOMツリー及びCSSを取得するステップと、
    前記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、前記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとを前記同じタイミングごとにそれぞれ比較するステップと、
    前記ソースコードの変更が行われた後に保存したDOMツリー及びCSSと、前記ソースコードに対する更なる変更が行われた後に保存したDOMツリー及びCSSとの前記同じタイミングにおける前記比較の結果を出力するステップと
    を実行することをさらに含む、請求項1に記載の方法。
  17. 文書オブジェクトモデル(以下、DOMという)ツリーとカスケーディング・スタイル・シート(以下、CSSという)ツリーとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するためのコンピュータであって、
    画面状態をチェックしたい少なくとも1つのタイミングごとに、前記アプリケーション上でのユーザの1以上の入力操作と、DOMツリーと、CSSとを保存する保存手段と、
    前記ソースコードの変更が行われた後に、前記タイミングごとに前記入力操作を当該操作順にエミュレートするエミュレート手段と、
    記タイミングごとにDOMツリー及びCSSを取得する取得手段と、
    前記保存手段が保存したDOMツリー及びCSSと、前記取得手段が取得したDOMツリー及びCSSとを前記タイミングごとにそれぞれ比較する比較手段と、
    前記比較の結果を出力する出力手段と
    を備えている、前記コンピュータ。
  18. 前記比較する手段が、
    前記保存したCSS中の又は前記取得したCSS中のCSSプロパティのうちから、前記画面状態をチェックしたい前記少なくとも1つのタイミングのうちの特定の1つのタイミングでの実際の画面表示に適用されている第1のCSSプロパティを特定すること、
    前記取得したCSS中のCSSプロパティのうちから、前記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている第2のCSSプロパティを特定すること、
    前記第1のCSSプロパティと前記第2のCSSプロパティとを比較すること
    を実行する、請求項17に記載のコンピュータ。
  19. 文書オブジェクトモデル(以下、DOMという)ツリーとカスケーディング・スタイル・シート(以下、CSSという)とが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するためのコンピュータ・プログラムであって、コンピュータに、
    前記アプリケーション上でのユーザの1以上の入力操作と、画面状態をチェックしたい少なくとも1つのタイミングごとにDOMツリー及びCSSとを保存するステップと、
    前記ソースコードの変更が行われた後に、前記タイミングごとに前記入力操作を当該操作順にエミュレートするステップと、
    前記タイミングごとにDOMツリー及びCSSを取得するステップと、
    前記保存するステップで保存したDOMツリー及びCSSと、前記取得するステップで取得したDOMツリー及びCSSとを前記タイミングごとにそれぞれ比較するステップと、
    前記比較の結果を出力するステップと
    実行させる、前記コンピュータ・プログラム。
  20. 前記比較するステップが、
    前記保存したCSS中の又は前記取得したCSS中のCSSプロパティのうちから、前記画面状態をチェックしたい前記少なくとも1つのタイミングのうちの特定の1つのタイミングでの実際の画面表示に適用されている第1のCSSプロパティを特定するステップと
    前記取得したCSS中のCSSプロパティのうちから、前記特定の1つのタイミングと同じタイミングでの実際の画面表示に適用されている第2のCSSプロパティを特定するステップと
    前記第1のCSSプロパティと前記第2のCSSプロパティとを比較するステップと
    を含む、請求項19に記載のコンピュータ・プログラム。
JP2013252681A 2013-12-06 2013-12-06 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム Expired - Fee Related JP5991695B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013252681A JP5991695B2 (ja) 2013-12-06 2013-12-06 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム
US14/535,544 US9501459B2 (en) 2013-12-06 2014-11-07 Detecting influence caused by changing the source code of an application from which a document object model tree and cascading style sheet may be extracted
CN201410710567.8A CN104699602B (zh) 2013-12-06 2014-11-28 用于检测影响的方法和计算机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013252681A JP5991695B2 (ja) 2013-12-06 2013-12-06 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム

Publications (3)

Publication Number Publication Date
JP2015109059A JP2015109059A (ja) 2015-06-11
JP2015109059A5 JP2015109059A5 (ja) 2016-03-31
JP5991695B2 true JP5991695B2 (ja) 2016-09-14

Family

ID=53271329

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013252681A Expired - Fee Related JP5991695B2 (ja) 2013-12-06 2013-12-06 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム

Country Status (3)

Country Link
US (1) US9501459B2 (ja)
JP (1) JP5991695B2 (ja)
CN (1) CN104699602B (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8682083B2 (en) * 2011-06-30 2014-03-25 American Express Travel Related Services Company, Inc. Method and system for webpage regression testing
US10291729B2 (en) * 2014-01-21 2019-05-14 Apptimize, Inc. User interface modification and usage tracking
US9934214B2 (en) * 2014-12-11 2018-04-03 International Business Machines Corporation DOM snapshot capture
US20160246698A1 (en) * 2015-02-21 2016-08-25 Hcl Technologies Limited Change based testing of a javascript software application
EP3265883B1 (en) 2015-03-03 2023-02-15 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
DE102015115898A1 (de) * 2015-09-21 2017-03-23 Deutsche Telekom Ag Netzwerkentität zum Überwachen einer Mehrzahl von Prozessen eines Kommunikationssystems
CN106557414A (zh) * 2015-09-28 2017-04-05 富士通株式会社 应用程序测试系统和方法
US9934129B1 (en) 2017-03-17 2018-04-03 Google Llc Determining application test results using screenshot metadata
KR102015545B1 (ko) * 2017-04-26 2019-08-28 주식회사 평화이즈 소스 코드 변경이 미치는 영향도를 분석하기 위한 시스템
CN107291465A (zh) * 2017-06-14 2017-10-24 北京小米移动软件有限公司 页面显示方法、装置及存储介质
CN107315682A (zh) * 2017-06-22 2017-11-03 北京凤凰理理它信息技术有限公司 测试浏览器兼容方法、装置、存储介质及电子设备
CN109960648A (zh) * 2017-12-26 2019-07-02 北京奇虎科技有限公司 一种应用程序的测试方法、装置
US10467127B2 (en) * 2018-03-23 2019-11-05 Lendingclub Corporation Unified UI/UX and API testing of web applications
JP7190834B2 (ja) * 2018-07-19 2022-12-16 株式会社野村総合研究所 装置およびコンピュータプログラム
US11226727B2 (en) * 2018-11-12 2022-01-18 Citrix Systems, Inc. Systems and methods for live tiles for SaaS
US20220414316A1 (en) * 2021-06-23 2022-12-29 International Business Machines Corporation Automated language assessment for web applications using natural language processing
US11956199B2 (en) 2021-07-26 2024-04-09 Airship Group, Inc. Software development kit enabled cross-channel two-way software application messaging

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769773B1 (en) * 2004-08-31 2010-08-03 Adobe Systems Incorporated Relevant rule inspector for hierarchical documents
CN101178687B (zh) * 2007-11-26 2010-06-09 中兴通讯股份有限公司 软件回归测试的方法
JP4859821B2 (ja) 2007-12-05 2012-01-25 富士通株式会社 アプリケーションプログラムのテストプログラム
CN101604290B (zh) * 2009-06-05 2012-05-16 中国移动(深圳)有限公司 一种后台模块测试方法和后台模块测试系统
US20120174075A1 (en) * 2010-08-10 2012-07-05 International Business Machines Corporation Automatically Testing a Web Application
CN101989303B (zh) * 2010-11-02 2012-07-04 浙江大学 网站无障碍检测的自动化方法
US9208054B2 (en) * 2011-02-14 2015-12-08 Fujitsu Limited Web service for automated cross-browser compatibility checking of web applications
US10534830B2 (en) * 2011-06-23 2020-01-14 Microsoft Technology Licensing, Llc Dynamically updating a running page
JP5747751B2 (ja) 2011-09-06 2015-07-15 富士通株式会社 リグレッションテスト支援プログラム及びリグレッションテスト支援装置
CN102880547A (zh) * 2012-09-05 2013-01-16 无锡江南计算技术研究所 一种软件单元与部件与相结合的源代码变更影响分析与测试方法
US20140317602A1 (en) * 2013-04-19 2014-10-23 International Business Machines Corporation Graphical User Interface Debugger with User Defined Interest Points

Also Published As

Publication number Publication date
US9501459B2 (en) 2016-11-22
US20150161088A1 (en) 2015-06-11
CN104699602A (zh) 2015-06-10
CN104699602B (zh) 2017-06-23
JP2015109059A (ja) 2015-06-11

Similar Documents

Publication Publication Date Title
JP5991695B2 (ja) 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム
US11295074B2 (en) Systems and methods for conversion of web content into reusable templates and components
US9098632B2 (en) Computer program testing
US8392886B2 (en) System, program product, and methods to enable visual recording and editing of test automation scenarios for web application
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US8316349B2 (en) Deployment script generation and execution
CN107220172B (zh) 通过模型驱动技术进行自动用户界面(ui)测试的方法和系统
MacDonald et al. Pro ASP. NET 4 in VB 2010
US10049095B2 (en) In-context editing of output presentations via automatic pattern detection
Smyth Android Studio Development Essentials
JP2011159284A (ja) ウェブサイトフォントのプレビュー
CN107015903B (zh) 一种界面测试程序的生成方法、装置及电子设备
CN106933887B (zh) 一种数据可视化方法及装置
Stocco et al. PESTO: A tool for migrating DOM-based to visual web tests
Gundecha Selenium Testing Tools Cookbook
US20230195825A1 (en) Browser extension with automation testing support
Smyth Android Studio Development Essentials: Android 6 Edition
JP7211228B2 (ja) 解析装置、解析方法、及びプログラム
JP4795404B2 (ja) 動作検証装置および動作検証プログラム
Salter Mastering NetBeans
Chaubal Selenium WebDriver Quick Start Guide: Write Clear, Readable, and Reliable Tests with Selenium WebDriver 3
Παύλοζας Internet technologies for the development of compatible applications on different computing platforms
JP2008047083A (ja) プログラム作成支援装置、およびプログラム作成支援プログラム
Freeman et al. Overview of MVC Projects
Morizur Enhancing Magento Frontend Performance with ReactJS and Comparing It to Knockout

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160216

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160216

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160719

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160809

R150 Certificate of patent or registration of utility model

Ref document number: 5991695

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees