IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファンクショナイズ,インコーポレイテッドの特許一覧

<>
  • 特表-ソフトウェアテスティング 図1
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-16
(54)【発明の名称】ソフトウェアテスティング
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240409BHJP
【FI】
G06F11/36 164
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023565155
(86)(22)【出願日】2022-04-20
(85)【翻訳文提出日】2023-12-15
(86)【国際出願番号】 US2022025554
(87)【国際公開番号】W WO2022226075
(87)【国際公開日】2022-10-27
(31)【優先権主張番号】63/178,502
(32)【優先日】2021-04-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.JAVA
3.MATLAB
4.PYTHON
5.SWIFT
6.UNIX
7.MATHEMATICA
(71)【出願人】
【識別番号】522369393
【氏名又は名称】ファンクショナイズ,インコーポレイテッド
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】シートン,ジョナソン・アール
(72)【発明者】
【氏名】チェール,タマス
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH12
5B042MA08
5B042MA10
5B042MA11
5B042MA14
(57)【要約】
本明細書では、ソフトウェアをテストすること、特に、排他的にではないが、ソフトウェアテストケースでのステップを視覚的に検証し、視覚的検証を使用して要素選択モデルを強化するためのシステムおよび方法に関する技術が提供され、その技術はソフトウェアテストケースでのステップを視覚的に検証する方法を提供する。より詳細には、この技術の実施形態は、ドキュメントオブジェクトモデル(DOM)からのデータとページスクリーンショットとを組み合わせることによって、ウェブサイトまたはアプリのウェブ要素をそのウェブサイトまたはアプリの視覚的スクリーンショットにマッピングする方法を提供する。
【特許請求の範囲】
【請求項1】
ソフトウェアテストケースを視覚的に検証するための方法であって、
ドキュメントオブジェクトモデル(DOM)情報を取得することと、
ウェブページの第1のスクリーンショットを取得することと、
前記ウェブページ上で作用するユーザアクションのテストスクリプトのステップを実行することと、
前記ウェブページの第2のスクリーンショットを取得することと、
第2のスクリーンショットと第2のスクリーンショットを比較して、視覚的スクリーンショット変化を識別することと、
スクリーンショット変化およびDOM情報を使用してウェブページ要素を識別することと
を含む、方法。
【請求項2】
第1のスクリーンショットまたは第2のスクリーンショットをユーザに表示することと、
ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントの輪郭を描くボックスを、第1のスクリーンショットまたは第2のスクリーンショット上にオーバーレイすることと、
ボックスがウェブページ要素を正しくまたは誤って識別していることを示すユーザ入力を受けることと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ユーザ入力を使用してモデルおよび/またはニューラルネットワークを訓練することをさらに含む、請求項3に記載の方法。
【請求項4】
ユーザアクションを記録することによって前記テストスクリプトを提供することをさらに含む、請求項1に記載の方法。
【請求項5】
ユーザアクションのテストスクリプトのステップを実行することが、ローカルコンピュータ上で生じる、請求項1に記載の方法。
【請求項6】
ユーザアクションのテストスクリプトのステップを実行することが、クラウドコンピューティングコンポーネント上で生じる、請求項1に記載の方法。
【請求項7】
ユーザアクションのテストスクリプトのステップを実行することが、テストスクリプトのステップに関する要素選択を行うことを含む、請求項1に記載の方法。
【請求項8】
視覚的スクリーンショット変化およびDOM情報を使用して、第1のスクリーンショットまたは第2のスクリーンショットをセグメント化して、ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントを提供することをさらに含む、請求項1に記載の方法。
【請求項9】
ウェブページ要素とスクリーンショット変化とを相関させること、および/またはDOM要素とスクリーンショット変化とを相関させることをさらに含む、請求項1に記載の方法。
【請求項10】
ウェブページ要素および相関するウェブページ要素の画像を記述する、および/またはウェブページ要素および相関するDOM要素を記述する相関結果を表示することをさらに含む、請求項9に記載の方法。
【請求項11】
前記ウェブページおよび/または前記ウェブページのスクリーンショットをグラフィカルユーザインターフェース上に表示することと、ユーザアクションのテストスクリプトの各ステップの結果を表示することとをさらに含む、請求項1に記載の方法。
【請求項12】
ユーザ入力を受けて、前記テストスクリプトを一時停止する、前記テストスクリプトのステップを順方向で進める、および/または前記テストスクリプトのステップを順方向で進めることをさらに含む、請求項1に記載の方法。
【請求項13】
請求項1に記載の方法を行うように構成されたプロセッサを備える、システム。
【請求項14】
ディスプレイおよびユーザ入力デバイスをさらに備える、請求項13に記載のシステム。
【請求項15】
前記ウェブページを記述するソフトウェアコードをさらに備える、請求項13に記載のシステム。
【請求項16】
前記テストスクリプトを記述するソフトウェアコードをさらに含む、請求項13に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、引用によりその全体が本明細書に組み込まれる、2021年4月22日に出願された米国仮特許出願第63/178,502号に対する優先権を主張する。
【0002】
本明細書では、ソフトウェアをテストすること、特に、排他的にではないが、ソフトウェアテストケースでのステップを視覚的に検証し、視覚的検証を使用して要素選択モデルを強化するためのシステムおよび方法に関する技術が提供される。
【背景技術】
【0003】
ウェブページまたはアプリを視覚的に検証するために、ピクセルベースの方法が使用される。そのような技法は、あるスクリーンショットからのピクセルを別のスクリーンショットのピクセルと直接比較する。また、セグメント画像に対する画像を要素に変換したものが、要素が存在することを示すインジケータとしての視覚的な境界を使用して示されている。これらの技法は、CannyもしくはSobelフィルタなどのエッジ検出、SIFT、SURF、もしくはORB変換などの特徴点認識、または要素分類アルゴリズムを適用することを含む。
【0004】
しかし、いくつかのピクセルベースの技術には制限がある。例えば、ウェブページまたはアプリケーションのテキストコンテンツの変更により、ASCII文字を表現するピクセルが整列されずに見え、それにより視覚的な検証チェックに失敗することがあり得るが、そのとき実際は、文字の多数の違いは段落<p>要素などの単一のウェブ要素のみを表現しているに過ぎないということがある。さらに、いくつかのウェブ要素は、(例えば、白い背景の上の白いテキスト、または画像とテキストオーバーレイとの両方を含むロゴ、など)画像内に直接対応するビジュアルを有さない、またはいくつかの要素にわたって分割されたビジュアルを有する。このような場合、ピクセルベースの方法では、これらの画像の違いの根本原因を識別することができない。
【発明の概要】
【課題を解決するための手段】
【0005】
したがって、本明細書で提供される技術は、ソフトウェアをテストすること、特に、排他的にではないが、ソフトウェアテストケースでのステップを視覚的に検証し、視覚的検証を使用して要素選択モデルを強化するためのシステムおよび方法に関する。いくつかの実施形態では、この技術は、ソフトウェアテストケースでのステップを視覚的に検証するための方法を提供する。より詳細には、この技術の実施形態は、ドキュメントオブジェクトモデル(DOM)からのデータとページスクリーンショットとを組み合わせることによって、ウェブサイトまたはアプリのウェブ要素をそのウェブサイトまたはアプリの視覚的スクリーンショットにマッピングする方法を提供する。
【0006】
したがって、いくつかの実施形態では、この技術は、ソフトウェアテストケースを視覚的に検証するための方法を提供する。いくつかの実施形態では、方法は、ドキュメントオブジェクトモデル(DOM)情報を取得することと;ウェブページの第1のスクリーンショットを取得することと;ウェブページ上で作用するユーザアクションのテストスクリプトのステップを実行することと;ウェブページの第2のスクリーンショットを取得することと;第2のスクリーンショットと第2のスクリーンショットを比較して、視覚的スクリーンショット変化を識別することと;スクリーンショット変化およびDOM情報を使用してウェブページ要素を識別することとを含む。いくつかの実施形態では、方法は、第1のスクリーンショットまたは第2のスクリーンショットをユーザに表示することと;ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントの輪郭を描くボックスを第1のスクリーンショットまたは第2のスクリーンショット上にオーバーレイすることと;ボックスがウェブページ要素を正しくまたは誤って識別していることを示すユーザ入力を受けることとをさらに含む。いくつかの実施形態では、方法は、ユーザ入力を使用してモデルおよび/またはニューラルネットワークを訓練することをさらに含む。いくつかの実施形態では、方法は、ユーザアクションを記録することによってテストスクリプトを提供することをさらに含む。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、ローカルコンピュータ上で生じる。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、クラウドコンピューティングコンポーネント上で(例えばユーザから遠隔にあるサーバ、コンピュータ、仮想マシン上などで)生じる。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、テストスクリプトのステップに関する要素選択を行うことを含む。いくつかの実施形態では、方法は、視覚的スクリーンショット変化およびDOM情報を使用して、第1のスクリーンショットまたは第2のスクリーンショットをセグメント化して、ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントを提供することをさらに含む。いくつかの実施形態では、方法は、ウェブページ要素とスクリーンショット変化とを相関させること、および/またはDOM要素とスクリーンショット変化とを相関させることをさらに含む。いくつかの実施形態では、方法は、ウェブページ要素および相関するウェブページ要素の画像を記述する、および/またはウェブページ要素および相関するDOM要素を記述する相関結果を表示することをさらに含む。いくつかの実施形態では、方法は、ウェブページおよび/またはウェブページのスクリーンショットをグラフィカルユーザインターフェース上に表示することと、ユーザアクションのテストスクリプトの各ステップの結果を表示することとをさらに含む。いくつかの実施形態では、方法は、ユーザ入力を受けて、テストスクリプトを一時停止する、テストスクリプトのステップを順方向で進める、および/またはテストスクリプトのステップを順方向で進めることを含む。
【0007】
いくつかの実施形態では、本技術は、システム、例えば本明細書で説明する方法を行うように構成されたプロセッサを備えるシステムを提供する。いくつかの実施形態では、システムは、ディスプレイおよびユーザ入力デバイスをさらに備える。いくつかの実施形態では、システムは、ウェブページを記述するソフトウェアコードをさらに含む。いくつかの実施形態では、システムは、テストスクリプトを記述するソフトウェアコードをさらに含む。
【0008】
本明細書に含まれる教示に基づいて、追加の実施形態が当業者には明らかとなろう。
【0009】
本技術のこれらおよび他の特徴、態様、および利点は、以下の図面に関してより良く理解されよう。
【図面の簡単な説明】
【0010】
図1】ソフトウェアテストケースでのステップを視覚的に検証するための方法の一実施形態を示す流れ図である。
【発明を実施するための形態】
【0011】
図は必ずしも縮尺通りに描かれておらず、また、図中のオブジェクトは、相互関係において必ずしも縮尺通りに描かれていないことを理解されたい。図は、本明細書に開示される装置、システム、および方法の様々な実施形態を明確にし、理解できるようにすることが意図された図示である。可能な限り、図面全体を通じて、同一または同様の部分を参照するために同じ参照番号を使用する。さらに、図面は、本教示の範囲を限定することはなんら意図されていないことを理解されたい。
【0012】
本明細書では、ソフトウェアをテストすること、特に、排他的にではないが、ソフトウェアテストケースでのステップを視覚的に検証し、視覚的検証を使用して要素選択モデルを強化するためのシステムおよび方法に関する技術が提供される。
【0013】
様々な実施形態のこの詳細な説明において、説明の目的で、開示される実施形態を完全な理解を提供するように多くの具体的な詳細を記載する。しかし、これらの具体的な詳細の有無にかかわらず、これらの様々な実施形態を実施することができることを当業者は理解されよう。別の例では、構造およびデバイスは、ブロック図の形として示す。さらに、方法が提示されて行われる特定のシーケンスは例解であり、シーケンスを変えることができ、それでも本明細書に開示される様々な実施形態の精神および範囲内に留まることが企図されることを当業者は容易に理解されよう。
【0014】
限定はしないが特許、特許出願、記事、書籍、論文、インターネットウェブページを含む、本出願で引用されるすべての文献および同様の資料は、あらゆる目的でそれらの全体が引用により明示的に組み込まれる。別段に定義されない限り、本明細書で使用するすべての技術用語および科学用語は、本明細書で説明する様々な実施形態が属する技術の当業者によって一般に理解されるのと同じ意味を有する。組み込まれた参考文献における用語の定義が本教示で提供される定義と異なるように見えるとき、本教示で提供される定義が優先されるものとする。本明細書で使用するセクションの見出しは、編成上のものにすぎず、説明される主題をなんら限定しないものとして解釈すべきである。
【0015】
定義
本技術の理解を容易にするために、いくつかの用語および語句を以下で定義する。追加の定義は、詳細な説明全体を通して記載される。
【0016】
本明細書および特許請求の範囲を通して、以下の用語は、文脈上明らかに別段の指示がない限り、本明細書に明示的に関連付けられた意味をとる。本明細書で使用する「一実施形態では」という語句は、同じ実施形態を参照することもあるが、必ずしも同じ実施形態を参照するわけではない。さらに、本明細書で使用する「別の実施形態では」という語句は、異なる実施形態を参照することもあるが、必ずしも別の実施形態を参照するわけではない。したがって、以下で説明するように、本発明の範囲または精神から逸脱することなく、本発明の様々な実施形態を容易に組み合わせることができる。
【0017】
さらに、本明細書で使用するとき、「または」という用語は、包括的な「or」演算子であり、文脈上明らかに別段の指示がない限り、「および/または」という用語と同等である。「に基づいて」という用語は排他的ではなく、文脈上明らかに別段の指示がない限り、記載されていない追加の因子に基づくことも可能である。さらに、本明細書全体を通じて、「1つ(a)」、「1つ(an)」、および「その(the)」の意味には、複数の参照も含まれる。「おいて(in)」の意味には、「中に(in)」および「上に(on)」が含まれる。
【0018】
本明細書で使用するとき、「約」、「ほぼ」、「実質的に」、および「有意に」という用語は、当業者には理解され、それらが使用される文脈に応じてある程度変わる。これらの用語が使用されている文脈に鑑みて、当業者に明確でないこれらの用語の使用がある場合には、「約」および「ほぼ」は、特定の用語のプラスまたはマイナス10%以下を意味し、「実質的に」および「大幅に」は、特定の用語のプラスまたはマイナス10%を超えることを意味する。
【0019】
本明細書で使用するとき、範囲の開示は、すべての値の開示と、範囲に与えられたエンドポイントおよびサブレンジを含む範囲全体内のさらに分割された範囲の開示とを含む。
【0020】
本明細書で使用する場合、接尾辞「フリー」は、「フリー」が付加される単語の語幹の特徴を取り除いた技術の実施形態を参照する。すなわち、本明細書で使用する「Xフリー」という用語は、「Xなし」を意味し、ここで、Xは、「Xフリー」技術において取り除かれたその技術の特徴である。例えば、「ディスプレイフリー」システムはディスプレイを備えず、「クリッキングフリー」方法はクリッキングステップなどを備えない、などである。
【0021】
本明細書では、様々なステップ、要素、組成物、コンポーネント、領域、層、および/またはセクションを説明するために「第1」、「第2」、「第3」などの用語が使用されることがあるが、これらのステップ、要素、組成物、コンポーネント、領域、層、および/またはセクションは、別段の指示がない限り、これらの用語によって限定されるべきではない。これらの用語は、あるステップ、要素、組成物、コンポーネント、領域、層、および/またはセクションを別のステップ、要素、組成物、コンポーネント、領域、層、および/またはセクションから区別するために使用される。本明細書で使用するとき、「第1」、「第2」、および他の数字的用語は、文脈によって明確に示されていない限り、シーケンスや順序を意味するものではない。したがって、本明細書で論じられる、第1のステップ、要素、組成物、コンポーネント、領域、層、またはセクションは、技術から逸脱することなく、第2のステップ、要素、組成物、コンポーネント、領域、層、またはセクションと呼ぶこともできる。
【0022】
本明細書で使用するとき、「存在」または「不在」(代替として「ある」または「ない」)という言葉は、特定のエンティティ(例えば、コンポーネント、アクション、要素)の量またはレベルを説明するために相対的な意味で使用する。例えば、あるエンティティが「ある」と言うとき、それは、このエンティティのレベルまたは量が所定の閾値を超えていることを意味する;逆に、あるエンティティが「ない」と言うとき、それは、このエンティティのレベルまたは量が所定の閾値を下回っていることを意味する。所定の閾値は、エンティティを検出するために使用される特定のテストに関連する検出可能性に関する閾値、または任意の他の閾値でよい。エンティティが「検出される」とき、それは「ある」;一方、エンティティが「検出されない」とき、それは「ない」。
【0023】
本明細書で使用するとき、「増加」または「減少」は、それぞれ、以前に測定された変数の値に対する、事前確立された値に対する、および/または標準対照の値に対する、変数の値の検出可能な(例えば測定された)正または負の変化を参照する。増加は、以前に測定された変数の値、事前確立された値、および/または標準対照の値に対して、好ましくは少なくとも10%、より好ましくは50%、さらにより好ましくは2倍、さらにより好ましくは少なくとも5倍、最も好ましくは少なくとも10倍の正の変化である。同様に、減少は、以前に測定された変数の値、事前確立された値、および/または標準対照の値の好ましくは少なくとも10%、より好ましくは50%、さらにより好ましくは80%、最も好ましくは90%の負の変化である。「より多い」または「より少ない」など、量的な変化または差を示す他の用語は、本明細書では上述したのと同様に使用される。
【0024】
本明細書で使用するとき、「システム」は、共通の目的のために協動する複数の現実のおよび/または抽象的なコンポーネントを参照する。いくつかの実施形態では、「システム」は、ハードウェアおよび/またはソフトウェアコンポーネントの統合された集合体である。いくつかの実施形態では、システムの各コンポーネントは、1つ以上の他のコンポーネントと相互作用し、および/または1つ以上の他のコンポーネントに関連する。いくつかの実施形態では、システムは、方法を制御および指図するためのコンポーネントとソフトウェアとの組合せを参照する。例えば、「システム」または「サブシステム」は、システムまたはサブシステムの機能を行うために:機械デバイス、ハードウェア、ハードウェアコンポーネント、回路、回路構成、論理設計、論理コンポーネント、ソフトウェア、ソフトウェアモジュール、ソフトウェアまたはソフトウェアモジュールのコンポーネント、ソフトウェアプロシージャ、ソフトウェア命令、ソフトウェアルーチン、ソフトウェアオブジェクト、ソフトウェア関数、ソフトウェアクラス、ソフトウェアプログラム、ソフトウェアを含むファイルなどのうちの1つ以上、または任意の組合せを含むことがある。したがって、実施形態の方法および装置、またはその特定の態様もしくは部分は、フロッピーディスク、CD-ROM、ハードドライブ、フラッシュメモリ、または任意の他の機械可読記憶媒体など、有形の媒体で具現化されるプログラムコード(例えば命令)の形を取ることができ、プログラムコードがコンピュータなどの機械にロードされて実行されるとき、その機械が、それらの実施形態を実施するための装置になる。プログラム可能なコンピュータ上でのプログラムコード実行の場合、コンピューティングデバイスは一般に、プロセッサ、プロセッサによって読み出し可能な記憶媒体(例えば、揮発性および不揮発性メモリおよび/または記憶素子)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを含む。1つ以上のプログラムは、例えばアプリケーションプログラミングインターフェース(API)や再利用可能なコントロールなどの使用を通して、実施形態に関連して説明されるプロセスを実装または利用することができる。そのようなプログラムは、好ましくは、コンピュータシステムと通信するために、高レベルの手続き型またはオブジェクト指向プログラミング言語で実装される。しかし、望みであれば、プログラムをアセンブリ言語または機械語で実装することもできる。いずれの場合でも、言語は、コンパイル型言語またはインタプリタ型言語であり、ハードウェア実装と組み合わせることができる。
【0025】
本明細書で使用するとき、「ウェブアプリケーション」という用語は、クライアントによってウェブブラウザで実行されるクライアントサーバ型コンピュータプログラムを参照する。一般的なウェブアプリケーションは、ウェブメール、オンライン小売販売、およびオンラインオークションを含む。いくつかの実施形態では、ウェブアプリケーションは、ユーザインターフェースおよび/またはクライアント側ロジック(例えば、クライアントコンピュータ上で実行されるコード)を含む。いくつかの実施形態では、ウェブアプリケーションは、1つ以上のウェブページを含み、ユーザインターフェースは、1つ以上のウェブページの外観、デザイン、および要素を参照する。いくつかの実施形態では、ウェブページ(例えばウェブアプリケーション)は、関連付けられた「ドキュメントオブジェクトモデル」(DOM)を有する。DOMは、XMLまたはHTMLドキュメントをツリー構造として扱う、クロスプラットフォームの、言語に依存しないインターフェースであり、各ノードは、ドキュメントの一部(「要素」)を表現するオブジェクトである。DOMは、ウェブページ要素に相関されたノードの論理ツリーとしてドキュメントを表現する。ウェブページ(例えばウェブアプリケーション)がロードされるとき、ブラウザは、ページのDOMを作成する。いくつかの実施形態では、DOMは、コード(例えばJavaScript)とドキュメント(例えばウェブページ)自体との間のインターフェースとして機能するHTMLドキュメントのオブジェクト指向表現である。
【0026】
本明細書で使用するとき、「要素」という用語は、要素定義、識別子、および/または1つ以上の他の要素との関係によって識別することができるUIビジュアルコンポーネントおよび/またはデータ構造を参照する。例えば、要素は、名前、数字、またはシンボルなどの文字列である一意の識別子を有することがある。したがって、要素は、識別子を使用して参照および/または検索することができる。さらに、特定の要素が親要素の第1の子要素である場合、親要素へのポインタを使用し、次いで第1の子要素へのポインタを検索して、特定の要素を参照および/または検索することができる。ブラウザおよび/またはランタイム環境は、要素を参照および/または検索するための1つ以上のアプリケーションプログラミングインターフェース(「API」)を提供することがある。したがって、いくつかの実施形態では、「要素」という用語は、ユーザ(例えば、人、別のアプリケーション、アプリケーションプログラミングインターフェースなど)が対話するソフトウェアアプリケーションのコンポーネント(例えば、ウェブアプリケーション(例えば、アプリケーションのグラフィカルユーザインターフェースのグラフィカルコンポーネント))を参照する。いくつかの実施形態では、要素との対話が、アプリケーションに機能を行わせる。いくつかの実施形態では、「要素」は、ボタン、ハイパーリンク、テキストボックス、テキストエリア、チェックボックス、スライダ、ラジオボタン、メニュー、メニューアイテム、スクロールバー、ドロップダウンメニュー、リストアイテム、コンボボックス、トグルボタン、スピンボタン、ツールバー、ウィジェット、画像、ウィンドウ、カレンダー、タブストリップ、リストボックス、サムネイルなどである。いくつかの実施形態では、要素はウェブページまたはスクリーンである。いくつかの実施形態では、ある要素が他の要素を含み、例えばウェブページが1つ以上のボタンやテキストフィールドなどを含む。いくつかの実施形態では、要素に対応するまたは要素に関連付けられるソースコードは、ユーザが閲覧するためのクライアントデバイスのスクリーンに提示される可視要素にマッピング可能である。要素は、例えば、要素の視覚的なレンダリング、テキスト、コード、および/またはコンテキストを分析することによって提供されることができる、1つ以上の属性および/または属性値を有する。
【0027】
本明細書で使用するとき、「ターゲット要素」という用語は、(例えばテストケースおよび/またはテストケースのステップの)アクションが(例えばテストケースおよび/またはテストケースのステップによって)行われるべき要素である。例えば、テストケースのステップが「ログインボタンのクリック」である場合、ログインボタンである要素が、テストケースステップのターゲット要素である。
【0028】
本明細書で使用するとき、「属性」という用語は、要素の外観、挙動、および/またはコンテンツを識別および/または記述するデータを参照する。要素は例えば、要素タイプ;スクリーン、ウィンドウ、またはページ上での場所;色;テキスト;サイズ;ボーダー;タイプフェース;および要素に関連付けられたコードといった、任意の数の属性を有することができる。いくつかの実施形態では、属性は「属性値」を有し、例えば、場所属性は、スクリーン上の場所を記述するx,y座標を含む属性値を有することがある。属性値は、整数、連続および/または不連続の数;クラス;タイプ;カテゴリなどでよい。
【0029】
本明細書で使用するとき、要素の「視覚的レンダリング」という用語は、ソフトウェアアプリケーション(例えばウェブアプリケーション(例えばウェブページ))UI上でレンダリングされるときの要素の視覚的属性および/または属性値の視覚的(例えばグラフィカル)表現を参照する。いくつかの実施形態では、要素の視覚的属性および/または属性値は、UI上の要素を識別して、UIの要素に要素属性および/または属性値を割り当てるために、UIの視覚的レンダリング(例えばビットマップ化されたスクリーンショット)を分析することによって提供される。
【0030】
本明細書で使用するとき、要素の「言語」または「テキスト」という用語は、要素のテキスト属性および/または属性値、例えば文字(例えばASCIIやUnicodeなど)、および/または要素に関連付けられた文字列を参照する。いくつかの実施形態では、要素のテキスト属性および/または属性値は、要素内、要素の周囲、および/または要素の近くに表示される単語または語句(例えば、単語でないスペースによって分離された1つ以上の単語を含む)である。
【0031】
本明細書で使用するとき、要素の「コード」という用語は、要素の属性および/もしくは属性値を定義するデータ、および/またはソフトウェアアプリケーション(例えばウェブアプリケーション(例えばウェブページ))UI上に要素を作り出すソフトウェアコード、例えばコードが実行されるときに要素の画像をディスプレイ上に作り出させるソフトウェアを参照する。本明細書で使用するとき、いくつかの実施形態では、要素のコードは、要素の属性であり;いくつかの実施形態では、要素のコードの分析により、要素の1つ以上の属性および/または属性値が提供される。
【0032】
本明細書で使用するとき、要素の「コンテキスト」という用語は、ソフトウェアアプリケーション(例えばウェブアプリケーション(例えばウェブページ))UIでのその要素の他の要素への関係を記述する要素の属性を参照する。いくつかの実施形態では、要素のコンテキストは:その要素と他の要素との間の距離、その要素および他の要素の要素属性および/もしくは属性値、UI上での要素属性値の分布、および/またはその要素の他の要素に関する相対的な場所のうちの1つ以上を含む。いくつかの実施形態では、要素のコンテキストは、その要素の「局所近傍」内の要素(例えば、要素の場所、要素属性および/または属性値、属性値の分布、要素間の距離)に基づいて、要素に関して決定される。本明細書で使用するとき、要素の「局所近傍」とは、局所近傍にないUIの他の領域までの距離よりも要素への距離が近いUIの領域である。いくつかの実施形態では、局所近傍は、要素を取り囲む軌跡または領域を記述する距離カットオフによって定義される。いくつかの実施形態では、局所近傍は、要素に対する最も近い近傍要素(例えば、要素に最も近接する要素のセット)によって定義される。いくつかの実施形態では、局所近傍は、要素に最も近い近傍要素(例えば、要素に最も近接する要素のセット)と、要素に次に近い近傍要素(例えば、要素に最も近接する要素のセット、および要素に次に近接する要素のセット)とによって定義される。いくつかの実施形態では、局所近傍は、要素に最も近い近傍要素(例えば、要素に最も近接する要素のセット)と、要素に次に近い近傍要素(例えば、要素に最も近接する要素のセット、および要素に次に近接する要素のセット)と、要素に次の次に近い近傍要素(例えば、要素に最も近接する要素のセットと、要素に次に近接する要素のセットと、最も近接する要素および次に近接する要素の外にある、要素に次に近接する要素のセットと)によって定義される。
【0033】
本明細書で使用するとき、「セレクタ」は、要素のセット、例えば要素を含まないセット(空のセット)、1つの要素を含むセット、または複数の要素を含むセットを識別する論理規則またはパターンである。いくつかの実施形態では、セレクタは、要素タイプによって指定される要素、要素属性(例えばidやクラスなど)によって指定される要素、および/または要素の場所によって(例えば他の要素に対する要素の場所によって)指定される要素を識別する。
【0034】
本明細書で使用するとき、「ユーザ」という用語は、アプリケーション(例えばアプリケーションの要素)と対話する人(例えば現実または仮想)を参照する。いくつかの実施形態では、ユーザは、人(例えばグラフィカルユーザインターフェースを通してアプリケーションと対話する人)である。いくつかの実施形態では、ユーザは、アプリケーションと対話する、別のアプリケーション(例えばスクリプト)またはソフトウェアコンポーネントである。
【0035】
本明細書で使用するとき、「ユーザシーケンス」という用語は、ウェブアプリケーションUIの1つ以上の要素とのユーザの対話を模倣する一連のアクションである。
【0036】
本明細書で使用するとき、「モジュール」または「コンポーネント」という用語は、モジュールまたはコンポーネントのアクションを行うように構成されたハードウェアまたはソフトウェアの実装を参照する。いくつかの実施形態では、モジュールまたはコンポーネントは、汎用ハードウェア(例えばコンピュータ可読媒体や処理デバイスなど)上に記憶されるおよび/または汎用ハードウェアによって実行されるソフトウェアオブジェクトまたはソフトウェアルーチンである。いくつかの実施形態では、コンポーネントおよび/またはモジュールは、コンピューティングシステム上で(例えば別個のスレッドとして)実行されるオブジェクトまたはプロセスとして実装される。本開示で説明するシステムおよび方法のいくつかは、一般に、(汎用ハードウェア上に記憶されるおよび/または汎用ハードウェアによって実行される)ソフトウェアに実装されるとして説明されるが、特定のハードウェア実装、ファームウェア実装、またはそれらの任意の組合せも可能であり企図される。本明細書において、「コンピューティングエンティティ」は、本開示で前述したような任意のコンピューティングシステム、またはコンピューティングシステム上で実行する任意のモジュールもしくはモジュールの組合せでよい。
【0037】
本明細書で使用するとき、「ブラウザ」という用語は、例えば、Mozilla Firefox、Internet Explorer、Microsoft Edge、Google Chrome、Apple Safari、またはデスクトップ、ラップトップ、および/またはモバイルデバイスで使用するために提供されている任意の他のウェブブラウザなど、World Wide Web上の情報リソースを検索、提示、および横断するためのソフトウェアアプリケーションを参照する。
【0038】
本明細書で使用するとき、「ユーザインターフェース」(UI)という用語は、表示されたグラフィック情報を利用して、例えばポインタおよび/またはポインティングデバイスによって、ユーザがソフトウェアアプリケーション(例えばウェブアプリケーション(例えばウェブページ))を制御および/または動作させることを可能にするプログラムインターフェースを参照する。ポインタは、カーソル、矢印、またはディスプレイ上に現れる他のシンボルを参照することがあり、UIを介してオブジェクトを選択する、フィールドにポピュレートする、コマンドの入力などのためにポインティングデバイスによって移動または制御することができる。ポインティングデバイスは、例えばウェブアプリケーションのUIを介して、カーソルおよび/または矢印を制御する、オブジェクトを選択する、フィールドにポピュレートする、またはコマンドおよび/またはドロップダウンメニューオプションなどの情報を入力するために使用される任意のオブジェクトおよび/またはデバイスを参照することがある。そのようなポインティングデバイスは、例えば、マウス、トラックボール、トラックパッド、トラックスティック、キーボード、スタイラス、デジタル化タブレット、デジタルペン、タッチスクリーンと組み合わせての指先などを含むことがある。カーソルは、UI内の領域に対して入力選択または作動をすることができるシンボルまたはポインタを参照することがある。
【0039】
本明細書で使用するとき、「クリック」または「クリックする」という用語は、例えばマウスなどの任意のポインティングデバイスによって行われる選択プロセスを参照するが、そのような用語の使用は、そのように限定されることは意図されていない。例えば、選択プロセスは、タッチスクリーンを介して行われてもよい。そのような場合、「クリックする」を「タッチする」または「タップする」に置き換えることもできる。しかし、これらは、オブジェクトを選択するまたは情報を入力する方法の単なる例にすぎず、特許請求される主題は、これらの点で範囲を限定されない。
【0040】
本明細書で使用するとき、「要素と対話する」という用語は、ウェブアプリケーションUIの要素に対してアクションを行って(例えばクリックして)、要素を選択する、要素の状態を変更する、リストからオプションを選択する、プルダウンメニューをアクティブ化する、値を入力する、値を選択するなどを参照する。
【0041】
本明細書で使用するとき、「テストケース」という用語は、定義された出力のセットを生成するソフトウェアアプリケーション上で行われる定義されたアクションのセットおよび/または入力のセットを参照する。一般に、テストケースは、アクションおよび/または入力を指定する命令、予測される結果、および実行条件のセットを含む。テストケースは、ソフトウェアアプリケーションの1つ以上の要素に関係する1つ以上のアクションの所定のコレクションとしてみなされることができる。いくつかの実施形態では、テストケースは、ユーザによるソフトウェアアプリケーションまたはシステムの使用をシミュレートするために、テストケーススクリプトで指定された所定の順序で実行される一連のアクションおよび/または入力を含む。実行される各入力および/またはアクションは、個々のテストケースによって表現することができ、個々のテストケースを共に結合して、より大きなテストケース内のアクションのより複雑なシーケンスを表現することができる。いくつかの実施形態では、ソフトウェアアプリケーションまたは相互関連するシステムのコンポーネントにおける修復が必要なエラーを識別するためにテストケースが実行される。
【0042】
本明細書で使用するとき、「スクリプト」という用語は、コンピュータプログラムまたはウェブアプリケーション内で何らかの目標を達成する、ユーザインターフェース内のユーザ-コンピュータ間の対話のシーケンスを参照する。目標の例は、ユーザパスワードを変更すること;ウェブアプリケーション内で購入トランザクションを行うこと;チーム/グループに参加して、グループによって制御されるファイルを読み出す、書き込む、または破壊する権限を付与すること;またはユーザアカウントに関連付けられた電子メールアドレスを検証/変更することを含む。したがって、いくつかの実施形態では、スクリプトは、特定のタスクを行うために、シミュレートされたユーザ、ウェブアプリケーション、および/またはブラウザによってとられる個別ステップのシーケンス(例えば要素との対話)を定義する。例えば、スクリプトは、ウェブアプリケーションの次のスクリーンに移動するための、ウェブアプリケーション内のボタンのクリックなどのステップを定義することができる。別の例では、スクリプトは、第1の入力をパスワードとして受け入れる前に、ウェブアプリケーションが第1の入力を第2の入力で検証するのを待機するステップを含むことがある。いくつかの実施形態では、スクリプトは、例えばウェブアプリケーションに変更が加えられた後(例えば、ウェブアプリケーションのUIに変更が加えられた後)、ウェブアプリケーションをテストするためにコンピュータによってルーチン的に実行される。いくつかの実施形態では、スクリプトは、定期的に、例えば毎時、毎日、毎週、毎月、および/または毎年実行される。いくつかの実施形態では、スクリプトは、新たなコードがコードリポジトリのマスタブランチにコミットされるたびに自動的に実行される。いくつかの実施形態では、スクリプトは、オペレーティングシステムレベルでデータを入力するステップを使用してユーザアクションをシミュレートする。いくつかの実施形態では、スクリプトは、オペレーティングシステムレベルで出力を追跡するために書かれる。例えば、オペレーティングシステムレベルのスクリプトは、スクリーン上の特定のピクセルをクリックするステップ、またはスクリーン上のピクセルの色の変化を監視するステップを含むことがある。いくつかの実施形態では、スクリプトはデータベース内に提供される。
【0043】
ソフトウェアテストケースの視覚的な検証
いくつかの実施形態では、例えば図1に示されるように、この技術は、ソフトウェアテストケースを視覚的に検証するための方法を提供する。いくつかの実施形態では、方法は、ウェブページおよび/またはアプリケーションインターフェースと対話するためのいくつかのスクリプト化されたユーザアクションを含むソフトウェアテストケース用のスクリプトを取得、提供、および/または記録することを含む。いくつかの実施形態では、ソフトウェアテストケースを視覚的に検証する方法は、(例えばユーザが)ソフトウェアテストケースを定義することを含み、例えば記録ツールを使用して、いくつかのおよび/または一連のユーザアクション(例えば、1つ以上のタイプのユーザアクション、例えばマウスオーバー、クリック、入力、ダブルクリック、ドラッグ、選択、プルダウンなど)、ドキュメントオブジェクトモデル(DOM)内の情報、および/またはウェブページのスクリーンショットを記述するデータをキャプチャする。したがって、いくつかの実施形態では、方法は、いくつかのおよび/または一連のユーザアクション(例えば、1つ以上のタイプのユーザアクション、例えばマウスオーバー、クリック、入力、ダブルクリック、ドラッグ、選択、プルダウンなど)、DOM内の情報、およびページのスクリーンショットを記述するデータをキャプチャして(例えば、ユーザが記録ツールを使用して)、キャプチャされたデータを提供することを含む。いくつかの実施形態では、方法は、キャプチャされたデータを記憶すること、および/またはキャプチャされたデータを使用して、ローカルまたはクラウドで(例えばユーザから遠隔にあるサーバ、コンピュータ、仮想マシン上などで)ソフトウェアテストケースを実行することを含む。したがって、いくつかの実施形態では、方法は、キャプチャされたデータを記憶すること、および/またはキャプチャされたデータを使用して、ソフトウェアテストケースを実行することを含む。いくつかの実施形態では、ソフトウェアテストケースを実行することは、ソフトウェアテストケースをローカルで実行することを含む。
【0044】
いくつかの実施形態では、方法は、ソフトウェアテストケースを実行することを含む。いくつかの実施形態では、ソフトウェアテストケースを実行することは、例えばテストスクリプトによって提供されるような、いくつかのおよび/または一連のアクション(例えばユーザアクション)を(例えばソフトウェアおよび/またはハードウェアによって提供されるテストケース実行モジュールによって)行うことを含む。いくつかの実施形態では、テストスクリプトは、上述したように、いくつかのまたは一連のアクションを記録することによって提供される。いくつかの実施形態では、ソフトウェアテストケースを実行することは、クラウドで(例えばユーザから遠隔にあるサーバ、コンピュータ、仮想マシン上などで)ソフトウェアテストケースを実行することを含む。
【0045】
いくつかの実施形態では、方法は、例えばスクリプトに記述されているように、アプリケーションワークフローをナビゲートすることを含む。いくつかの実施形態では、アプリケーションワークフローをナビゲートすることは、ソフトウェアテストケースの各ステップで要素選択を行って、アプリケーションワークフローをナビゲートすることを含む。いくつかの実施形態では、方法は、テスト実行中(例えばソフトウェアテストケースの1つ以上のステップで)、DOMデータおよびスクリーンショットをキャプチャすることを含む。したがって、いくつかの実施形態では、ソフトウェアテストを実行することは、ソフトウェアテストの1つ以上のステップでDOMデータをキャプチャすることおよび/またはスクリーンショットをキャプチャすることを含む。いくつかの実施形態では、DOMデータおよび/またはスクリーンショットは、以前に記録されたDOMおよび/またはスクリーンショットデータと比較され、例えば、方法は、DOMデータおよび/またはスクリーンショットを、以前に記録されたDOMおよび/またはスクリーンショットデータと比較することを含む。いくつかの実施形態では、方法は、第1のDOMを第2のDOMと比較すること、および/または第1のスクリーンショットを第2のスクリーンショットと比較することを含む。
【0046】
いくつかの実施形態では、ソフトウェアテストケースを実行する(例えばテストスクリプトを実行する)ことは、ウェブページ、ウェブアプリケーション、および/またはウェブページのスクリーンショットを表示すること、およびウェブページ、ウェブアプリケーション、および/またはウェブページのスクリーンショットに対してテストケース(例えばテストスクリプト)の各ステップの実行を示して、スクリプトの実行をリアルタイムで示すことを含む。すなわち、この技術は、アクション、出力、および/またはテストスクリプトによって実行された各アクションの結果を(例えばグラフィカルユーザインターフェースを通して)表示する方法を提供する。いくつかの実施形態では、この技術は、テストスクリプトの実行を一時停止する、テストスクリプトのステップを逆方向に進める(例えばテストスクリプトを「巻き戻す」)、テストスクリプトのステップを順方向に進める(例えばテストスクリプトを「早送りする」)、およびテストスクリプトを再生するためのコントロール(例えばユーザが操作可能なグラフィカルユーザインターフェース上の要素)を提供する。したがって、この技術により、ユーザは、テストスクリプトのアクションの実行を観察し、エラーを識別し、エラーを効率的に修正できるようになる。したがって、いくつかの実施形態により、ユーザは、グラフィカルユーザインターフェースを通してテストスクリプトの実行(例えばテストスクリプトの各ステップ)を観察すること、およびテストスクリプトを一時停止し、順方向と逆方向の両方でテストスクリプトのステップをステップ実行して、エラーを識別し、エラーを修正することができる。
【0047】
いくつかの実施形態では、方法は、第2のスクリーンショットを第1のスクリーンショットと比較することによって、スクリーンショットの視覚的な変化を識別することを含む。いくつかの実施形態では、第2のスクリーンショットを第1のスクリーンショットと比較することは、スクリーンショットの視覚的変化を作り出すために使用される。いくつかの実施形態では、スクリーンショットの視覚的変化は、ソフトウェアテスト実行中に、要素および/または要素に対して行われるアクションに関連付けられる。いくつかの実施形態では、方法は、DOMデータを使用してウェブページ上の要素を識別することを含む。いくつかの実施形態では、方法は、DOMデータおよびスクリーンショットの視覚的変化を使用してウェブページ上の要素を識別することを含む。いくつかの実施形態では、方法は、DOMデータおよびスクリーンショットの視覚的変化を使用して、スクリーンショットをセグメント化して要素サブセグメントを作り出すことを含む。
【0048】
いくつかの実施形態では、方法は、例えば(例えば、第2のスクリーンショットを第1のスクリーンショットと比較することによって決定される)スクリーンショットの視覚的変化をDOM内の要素と相関させる(例えば関連付ける)ことによって、テストケース実行を視覚的に検証することを含む。特定の実施形態では、スクリーンショットの視覚的変化をDOM内の要素と相関させる(例えば関連付ける)ことは、DOM階層内の要素の相対ツリー位置を決定、検索、および/または評価することを含む。いくつかの実施形態では、スクリーンショットの視覚的変化をDOM内の要素と相関させる(例えば関連付けること)ことは、相関結果を作り出す。いくつかの実施形態では、相関結果は、スクリーンショットの視覚的変化のDOM内の1つ以上の要素との相関を記述する。いくつかの実施形態では、相関結果は、スクリーンショットから作り出された要素サブセグメントのDOM内の1つ以上の要素との相関を記述する。
【0049】
いくつかの実施形態では、相関結果がユーザに提供(例えば、表示、報告など)される。したがって、いくつかの実施形態では、方法は、相関結果をユーザに表示および/または報告することを含む。いくつかの実施形態では、相関結果を表示および/または報告することは、ユーザが観察するグラフィカルユーザインターフェース内で相関結果を表示および/または報告することを含む。
【0050】
いくつかの実施形態では、ユーザが観察するグラフィカルユーザインターフェース内で相関結果を表示および/または報告することは、ウェブサイトまたはアプリのスクリーンショットを表示し、スクリーンショット上に1つ以上のボックスをオーバーレイして、上述した視覚的検証プロセスによって見つかった対応する要素を識別することを含む。すなわち、いくつかの実施形態では、方法は、スクリーンショットの視覚的変化およびDOMを使用して、ウェブページの要素に対応する(例えば相関付けられるおよび/または関連付けられる)スクリーンショットのサブ領域(例えばサブセグメント)を識別し、スクリーンショット上にボックスを描画して、(例えばウェブページの要素を識別するために)ウェブページ上の要素の周囲に境界線をひくことを含む。したがって、方法は、ウェブページの要素に対応する(例えば相関付けられるおよび/または関連付けられる)スクリーンショットのサブ領域(例えばサブセグメント)を(スクリーンショットの視覚的変化およびDOMを使用して)識別し、スクリーンショット上にボックスを描画して、サブ領域を識別することを含む。
【0051】
いくつかの実施形態では、方法は、識別された要素の正しさを(例えばユーザが)確認すること、例えば、スクリーンショット上にオーバーレイされたボックスの位置を確認することを含む。いくつかの実施形態では、方法は、識別された要素のエラーを(例えばユーザが)示すこと、例えば、スクリーンショット上にオーバーレイされたボックスの誤った位置を示すことを含む。いくつかの実施形態では、方法は、誤って位置決めされたボックス、および/またはボックスによって誤って識別された要素もしくはボックスによって識別されなかった要素に対して(例えばユーザが)作用する、例えばクリックすることを含む。このようにして、方法によって要素が誤って識別された、および/または識別されなかったときに、ユーザは、グラフィカルユーザインターフェースを使用して、テストケースによって選択されるべきだった要素を示すことができる。いくつかの実施形態では、方法は、ユーザからのデータをソーイング(sawing)および/または使用して、要素選択モデルを強化し、テストケースをその後実行することが、テスト成功をもたらすようにする。いくつかの実施形態では、方法は、テスト成功の発生を最大化するおよび/または増加させるために、ユーザからのデータを人工知能および/または機械学習モデルに提供することを含む。
【0052】
以前の技術とは対照的に、本明細書で説明する技術は、ページDOM内の情報を使用して、画像(例えばスクリーンショット)のセグメント化を支援して、ウェブページ要素を含むスクリーンショットのサブ領域を作り出す。さらに、この技術は、ウェブページ要素を含むサブ領域の正しいまたは誤った識別を示すユーザデータと、フィードバックメカニズムとを使用して、テスト実行モデルを強化し、それは、経時的に後続のテストにおけるテストケースの精度を増加させる。本技術は、テストケース実行の精度を増加させ、ウェブサイトまたはアプリが経時的に変化するときに、テストケースを維持するのにかかる時間量を低減する。
【0053】
以前の技術は、DOM内のデータ量をキャプチャするのが遅く、面倒なデータ管理を必要とするので、ページDOM内のデータを使用していなかった。本明細書で説明する技術は、DOMデータをリアルタイムでキャプチャし、キャプチャは、テストレコーダによって認識されない。特に、本技術は、DOMデータを取得するためにブラウザ内で(例えばJavaScriptを使用して)実行されるカスタム方法を含むテストケースレコーダ(例えば、テストケースレコーダソフトウェアモジュールおよび/またはコンポーネント)を備えるおよび/または提供する。したがって、本明細書で提供される技術は、forループ内でDOMを直接反復するよりも高速である。したがって、増加した効率は、DOMデータとスクリーンショットとが実質的に同時にキャプチャされることをもたらす。
【0054】
したがって、本明細書で説明する技術は、DOMデータと対応するスクリーンショットデータとを実質的に同時に、例えば最小限のタイムラグまたはタイムラグなしで取得されることをもたらす効率で行う。この効率がない場合、特にページアニメーションやダイナミックローディングのインスタンスでは、時間に応じてのウェブページの変化、およびDOMデータとスクリーンショットデータとを異なる時点に取得することに起因して、DOMデータとスクリーンショットデータとが常に対応するとは限らない。したがって、DOMデータとスクリーンショットとが相関されないので、以前の技術は、DOMデータを使用していなかった。したがって、現行の解決策は、要素分類アルゴリズムを改良することに焦点を当てており、これは、要素の識別のためのスクリーンショットのセグメンテーションを改良するためにDOMデータを使用する本技術とは異なる技術である。
【0055】
本明細書で提供される技術のいくつかの実施形態は、データを収集、記憶、および/または分析するための機能をさらに含む。例えば、いくつかの実施形態では、本技術は、プロセッサ、メモリ、および/またはデータベースを備えるシステムを含む;および/または、例えば命令を記憶および実行し、データを分析し、データを使用して計算を行い、データを変換し、データを記憶するために、プロセッサ、メモリ、および/またはデータベースを使用する方法を含む。さらに、いくつかの実施形態では、プロセッサは、本明細書で説明する方法(例えば、ソフトウェアテストケースを視覚的に検証するための方法)を行うように構成される。いくつかの実施形態では、プロセッサは、方法および/またはデータコレクションを行うことを開始および/または終了するために使用される。いくつかの実施形態では、本技術は、方法を行うためにプロセッサによって使用されるユーザ入力を受けるためのユーザインターフェース(例えば、キーボード、ボタン、ダイヤル、スイッチなど)を備えるデバイスを備えるおよび/または提供する。いくつかの実施形態では、コンピューティングデバイスが、外部宛先、例えばコンピュータ、ディスプレイ、ネットワーク、および/または外部記憶媒体にデータを送信するためのデータ出力をさらに備える。
【0056】
いくつかの実施形態では、説明する方法のステップ、例えば、上述したようにデータを作り出すおよび/または変換するようにコンピュータおよび/またはマイクロプロセッサに命令する一連の手順ステップは、ソフトウェアコードで実装される。いくつかの実施形態では、ソフトウェア命令は、例えば、Selenium、BASIC、NeXTSTEP、RealBasic、C#、C、C++、Objective C、Java、MATLAB、Mathematica、Perl、Python、Ruby、Object Pascal、Swift、Scala、Common Lisp、SmallTalk、UNIX、R、またはウェブページもしくはアプリをテストするために使用される他のスクリプト言語などのプログラミング言語で符号化される。
【0057】
いくつかの実施形態では、1つ以上のステップまたはコンポーネントが、モジュラーシステムに接続された個々のソフトウェアオブジェクトに提供される。いくつかの実施形態では、ソフトウェアオブジェクトは拡張可能であり移植可能である。いくつかの実施形態では、オブジェクトは、オブジェクトデータを変換するデータ構造および演算を含む。いくつかの実施形態では、オブジェクトは、それらのデータを操作し、それらのメソッドを呼び出すことによって使用される。したがって、実施形態は、例えば操作可能な数値、形状、データ構造に関して具体的なエンティティを模倣、モデル化、または提供するソフトウェアオブジェクトを提供する。いくつかの実施形態では、ソフトウェアオブジェクトは、コンピュータまたはマイクロプロセッサで動作可能である。いくつかの実施形態では、ソフトウェアオブジェクトは、コンピュータ可読媒体に記憶される。
【0058】
いくつかの実施形態では、本明細書で説明する方法のステップは、オブジェクトメソッドとして提供される。いくつかの実施形態では、本明細書で説明するデータおよび/またはデータ構造は、オブジェクトデータ構造として提供される。
【0059】
いくつかの実施形態は、結果を作り出すために、例えば1つ以上のソフトウェアオブジェクトを含むデータを処理するためのオブジェクト指向パイプラインを提供する。
【0060】
実施形態は、例えば、限定はしないがSelenium、BASIC、NeXTSTEP、RealBasic、C#、C、C++、Objective C、Java、MATLAB、Mathematica、Perl、Python、Ruby、Object Pascal、Swift、Scala、Common Lisp、SmallTalk、UNIX、R、またはウェブページもしくはアプリをテストするために使用される他のスクリプト言語などの言語を使用して符号化された、ソフトウェアオブジェクトを作り出して操作するコードの使用を含む。
【0061】
いくつかの実施形態では、本明細書で提供される技術は、それぞれその全体が引用により本明細書に明示的に組み込まれる、米国特許出願第17/281,566号;第17/287,732号;第17/287,739号;および第16/595,356号で説明される技術を含む。
【0062】
本明細書での開示は、特定の図示された実施形態に言及しているが、これらの実施形態は、限定ではなく例として提示されていることを理解されたい。
【0063】

本明細書で提供される技術の実施形態の開発中、ウェブサイトからDOMを効率的に収集する技術が開発された。特に、例えばdeveloper.mozilla.org/en-US/docs/Web/API/Document/createTreeWalkerによって提供されるDocument.createTreeWalker()creatorメソッドを使用して、TreeWalkerインスタンスが作成された。次に、同じパス内のウェブページから視覚要素およびテキストノードを収集するカスタムの非標準NodeFilter(例えば、バイナリコード「1029」を有する)をビルドした。このプロセスは、例えば、shadow DOMや他のiFrameに隠された要素を収集する、またウェブページから視覚要素およびテキストノードを効率的に収集するために、再帰的に反復された。
【0064】
DOMコレクション技術のテストから収集されたデータは、ページ上の各要素を取得するために、DOMコレクション技術が、ループ(例えば、document.forEach)を使用するよりも約10倍高速であることを示した。
【0065】
上記明細書で言及した全ての公開物および特許は、あらゆる目的のためにそれらの全体が引用により本明細書に組み込まれる。説明された技術の範囲および精神から逸脱することなく、説明された組成物、方法、および技術の使用の様々な修正および変形が当業者には明らかであろう。本技術を特定の例示的実施形態に関連して説明してきたが、特許請求される本発明はそのような特定の実施形態に不当に限定されるべきではないことを理解されたい。実際、本発明を実施するための説明された形態の当業者に明らかな様々な修正は、以下の特許請求の範囲内にあることが意図されている。
図1
【手続補正書】
【提出日】2023-12-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ソフトウェアテストケースを視覚的に検証するための方法であって、
ドキュメントオブジェクトモデル(DOM)情報を取得することと、
ウェブページの第1のスクリーンショットを取得することと、
前記ウェブページ上で作用するユーザアクションのテストスクリプトのステップを実行することと、
前記ウェブページの第2のスクリーンショットを取得することと、
第2のスクリーンショットと第2のスクリーンショットを比較して、視覚的スクリーンショット変化を識別することと、
スクリーンショット変化およびDOM情報を使用してウェブページ要素を識別することと
を含む、方法。
【請求項2】
第1のスクリーンショットまたは第2のスクリーンショットをユーザに表示することと、
ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントの輪郭を描くボックスを、第1のスクリーンショットまたは第2のスクリーンショット上にオーバーレイすることと、
ボックスがウェブページ要素を正しくまたは誤って識別していることを示すユーザ入力を受けることと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ユーザ入力を使用してモデルおよび/またはニューラルネットワークを訓練することをさらに含む、請求項に記載の方法。
【請求項4】
ユーザアクションを記録することによって前記テストスクリプトを提供することをさらに含む、請求項1に記載の方法。
【請求項5】
ユーザアクションのテストスクリプトのステップを実行することが、ローカルコンピュータ上で生じる、請求項1に記載の方法。
【請求項6】
ユーザアクションのテストスクリプトのステップを実行することが、クラウドコンピューティングコンポーネント上で生じる、請求項1に記載の方法。
【請求項7】
ユーザアクションのテストスクリプトのステップを実行することが、テストスクリプトのステップに関する要素選択を行うことを含む、請求項1に記載の方法。
【請求項8】
視覚的スクリーンショット変化およびDOM情報を使用して、第1のスクリーンショットまたは第2のスクリーンショットをセグメント化して、ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントを提供することをさらに含む、請求項1に記載の方法。
【請求項9】
ウェブページ要素とスクリーンショット変化とを相関させること、および/またはDOM要素とスクリーンショット変化とを相関させることをさらに含む、請求項1に記載の方法。
【請求項10】
ウェブページ要素および相関するウェブページ要素の画像を記述する、および/またはウェブページ要素および相関するDOM要素を記述する相関結果を表示することをさらに含む、請求項9に記載の方法。
【請求項11】
前記ウェブページおよび/または前記ウェブページのスクリーンショットをグラフィカルユーザインターフェース上に表示することと、ユーザアクションのテストスクリプトの各ステップの結果を表示することとをさらに含む、請求項1に記載の方法。
【請求項12】
ユーザ入力を受けて、前記テストスクリプトを一時停止する、前記テストスクリプトのステップを順方向で進める、および/または前記テストスクリプトのステップを順方向で進めることをさらに含む、請求項1に記載の方法。
【請求項13】
請求項1に記載の方法を行うように構成されたプロセッサを備える、システム。
【請求項14】
ディスプレイおよびユーザ入力デバイスをさらに備える、請求項13に記載のシステム。
【請求項15】
前記ウェブページを記述するソフトウェアコードをさらに備える、請求項13に記載のシステム。
【請求項16】
前記テストスクリプトを記述するソフトウェアコードをさらに含む、請求項13に記載のシステム。
【手続補正書】
【提出日】2024-03-08
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正の内容】
【0006】
したがって、いくつかの実施形態では、この技術は、ソフトウェアテストケースを視覚的に検証するための方法を提供する。いくつかの実施形態では、方法は、ドキュメントオブジェクトモデル(DOM)情報を取得することと;ウェブページの第1のスクリーンショットを取得することと;ウェブページ上で作用するユーザアクションのテストスクリプトのステップを実行することと;ウェブページの第2のスクリーンショットを取得することと;第のスクリーンショットと第2のスクリーンショットを比較して、視覚的スクリーンショット変化を識別することと;スクリーンショット変化およびDOM情報を使用してウェブページ要素を識別することとを含む。いくつかの実施形態では、方法は、第1のスクリーンショットまたは第2のスクリーンショットをユーザに表示することと;ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントの輪郭を描くボックスを第1のスクリーンショットまたは第2のスクリーンショット上にオーバーレイすることと;ボックスがウェブページ要素を正しくまたは誤って識別していることを示すユーザ入力を受けることとをさらに含む。いくつかの実施形態では、方法は、ユーザ入力を使用してモデルおよび/またはニューラルネットワークを訓練することをさらに含む。いくつかの実施形態では、方法は、ユーザアクションを記録することによってテストスクリプトを提供することをさらに含む。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、ローカルコンピュータ上で生じる。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、クラウドコンピューティングコンポーネント上で(例えばユーザから遠隔にあるサーバ、コンピュータ、仮想マシン上などで)生じる。いくつかの実施形態では、ユーザアクションのテストスクリプトのステップを実行することが、テストスクリプトのステップに関する要素選択を行うことを含む。いくつかの実施形態では、方法は、視覚的スクリーンショット変化およびDOM情報を使用して、第1のスクリーンショットまたは第2のスクリーンショットをセグメント化して、ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントを提供することをさらに含む。いくつかの実施形態では、方法は、ウェブページ要素とスクリーンショット変化とを相関させること、および/またはDOM要素とスクリーンショット変化とを相関させることをさらに含む。いくつかの実施形態では、方法は、ウェブページ要素および相関するウェブページ要素の画像を記述する、および/またはウェブページ要素および相関するDOM要素を記述する相関結果を表示することをさらに含む。いくつかの実施形態では、方法は、ウェブページおよび/またはウェブページのスクリーンショットをグラフィカルユーザインターフェース上に表示することと、ユーザアクションのテストスクリプトの各ステップの結果を表示することとをさらに含む。いくつかの実施形態では、方法は、ユーザ入力を受けて、テストスクリプトを一時停止する、テストスクリプトのステップを順方向で進める、および/またはテストスクリプトのステップを順方向で進めることを含む。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ソフトウェアテストケースを視覚的に検証するための方法であって、
ドキュメントオブジェクトモデル(DOM)情報を取得することと、
ウェブページの第1のスクリーンショットを取得することと、
前記ウェブページ上で作用するユーザアクションのテストスクリプトのステップを実行することと、
前記ウェブページの第2のスクリーンショットを取得することと、
のスクリーンショットと第2のスクリーンショットを比較して、視覚的スクリーンショット変化を識別することと、
スクリーンショット変化およびDOM情報を使用してウェブページ要素を識別することと
を含む、方法。
【請求項2】
第1のスクリーンショットまたは第2のスクリーンショットをユーザに表示することと、
ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントの輪郭を描くボックスを、第1のスクリーンショットまたは第2のスクリーンショット上にオーバーレイすることと、
ボックスがウェブページ要素を正しくまたは誤って識別していることを示すユーザ入力を受けることと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記ユーザ入力を使用してモデルおよび/またはニューラルネットワークを訓練することをさらに含む、請求項に記載の方法。
【請求項4】
ユーザアクションを記録することによって前記テストスクリプトを提供することをさらに含む、請求項1に記載の方法。
【請求項5】
ユーザアクションのテストスクリプトのステップを実行することが、ローカルコンピュータ上で生じる、請求項1に記載の方法。
【請求項6】
ユーザアクションのテストスクリプトのステップを実行することが、クラウドコンピューティングコンポーネント上で生じる、請求項1に記載の方法。
【請求項7】
ユーザアクションのテストスクリプトのステップを実行することが、テストスクリプトのステップに関する要素選択を行うことを含む、請求項1に記載の方法。
【請求項8】
視覚的スクリーンショット変化およびDOM情報を使用して、第1のスクリーンショットまたは第2のスクリーンショットをセグメント化して、ウェブページ要素の画像を含む第1のスクリーンショットまたは第2のスクリーンショットのセグメントを提供することをさらに含む、請求項1に記載の方法。
【請求項9】
ウェブページ要素とスクリーンショット変化とを相関させること、および/またはDOM要素とスクリーンショット変化とを相関させることをさらに含む、請求項1に記載の方法。
【請求項10】
ウェブページ要素および相関するウェブページ要素の画像を記述する、および/またはウェブページ要素および相関するDOM要素を記述する相関結果を表示することをさらに含む、請求項9に記載の方法。
【請求項11】
前記ウェブページおよび/または前記ウェブページのスクリーンショットをグラフィカルユーザインターフェース上に表示することと、ユーザアクションのテストスクリプトの各ステップの結果を表示することとをさらに含む、請求項1に記載の方法。
【請求項12】
ユーザ入力を受けて、前記テストスクリプトを一時停止する、前記テストスクリプトのステップを順方向で進める、および/または前記テストスクリプトのステップを順方向で進めることをさらに含む、請求項1に記載の方法。
【請求項13】
請求項1に記載の方法を行うように構成されたプロセッサを備える、システム。
【請求項14】
ディスプレイおよびユーザ入力デバイスをさらに備える、請求項13に記載のシステム。
【請求項15】
前記ウェブページを記述するソフトウェアコードをさらに備える、請求項13に記載のシステム。
【請求項16】
前記テストスクリプトを記述するソフトウェアコードをさらに含む、請求項13に記載のシステム。
【国際調査報告】