(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-06
(45)【発行日】2023-12-14
(54)【発明の名称】ソフトウェアテスト
(51)【国際特許分類】
G06F 11/36 20060101AFI20231207BHJP
【FI】
G06F11/36 188
(21)【出願番号】P 2021518903
(86)(22)【出願日】2019-10-02
(86)【国際出願番号】 US2019054366
(87)【国際公開番号】W WO2020072701
(87)【国際公開日】2020-04-09
【審査請求日】2022-09-21
(32)【優先日】2018-10-02
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-10-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-10-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522369393
【氏名又は名称】ファンクショナイズ,インコーポレイテッド
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】チェール,タマス
(72)【発明者】
【氏名】シートン,ジョナサン
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2016-033716(JP,A)
【文献】米国特許第08266091(US,B1)
【文献】特開2000-112784(JP,A)
【文献】特開2018-116496(JP,A)
【文献】特開2017-102912(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
ユーザインターフェースを含むウェブアプリケーションの失敗したソフトウェアテストの根本原因を特定するための方法であって、前記方法は、
ユーザインターフェースを含むウェブアプリケーションを提供するステップ、
各テストステップは、前記ユーザインターフェースの要素上で行われるアクションを含む一連のテストステップを含むスクリプトを提供するステップで、
前記ウェブアプリケーション上で前記スクリプトを実行するステップ、
失敗したソフトウェアテストが失敗を報告する前記スクリプトのエラーステップを特定するステップ、
コンピュータビジョンを用いて、前記ユーザインターフェースの第1のバージョンの第1の要素を特定し、前記第1の要素の各要素に要素属性を決定するステップ、
コンピュータビジョンを用いて、前記ユーザインターフェースの第2のバージョンの第2の要素を特定し、前記第2の要素の各要素に要素属性を決定するステップ、
前記第1の要素の各要素のための前記要素属性を前記第2の要素の各要素のための前記要素属性と比較するステップにより、前記ユーザインターフェースの前記第1のバージョンと前記ユーザインターフェースの前記第2のバージョンとの間の差を特定するステップ、
トレーニングされた確率論的モデルを生成するために、前記差を使用する確率論的モデルをトレーニングするステップ、
各テストステップ及び/又は前記ユーザインターフェースの各要素に、各テストステップ及び/又は各要素が前記失敗したソフトウェアテストの根本原因である可能性を割り当てるステップ、並びに
各提案されたテストステップ及び/又は要素が前記失敗したソフトウェアテストの前記根本原因である可能性によってランク付けされた、提案されたテストステップ及び/又は要素のリストを生成するステップ、
を含む、方法。
【請求項2】
前記提案されたテストステップは、前記エラーステップに先行する、請求項1に記載の方法。
【請求項3】
コンピュータビジョンを用いることは、テキストボックスを検出すること、文字を認識すること、要素を検出すること、オブジェクトを検出すること、及び/又はレイアウトを検出することを含む、請求項1に記載の方法。
【請求項4】
前記トレーニングするステップは、前記ユーザインターフェースの1、2、3、4、5、6、7、8、9、10、20、30、40、50、60、70、80、90、100、又はそれ以上のバージョンを比較することにより、特定される差を入力として受信するステップを含む、請求項1に記載の方法。
【請求項5】
前記ユーザインターフェースの前記第1のバージョンと前記ユーザインターフェースの前記第2のバージョンとの間の差を特定するステップは、前記ユーザインターフェースの前記第1のバージョンの第1のグラフィカル及び/又は属性モデルを、前記ユーザインターフェースの前記第2のバージョンの第2のグラフィカル及び/又は属性モデルと比較して、確率論的グラフィカル及び/又は属性モデルを生成するステップを含む、請求項1に記載の方法。
【請求項6】
前記トレーニングは、属性カテゴリ、要素、及び/又はテストステップに、重み付けされたスコアを割り当てるステップを含む、請求項1に記載の方法。
【請求項7】
前記割り当てるステップは、各テストステップ及び/又は各要素が前記失敗したソフトウェアテストの根本原因である前記可能性を決定するために、前記確率論的モデルを評価するステップを含む、請求項1に記載の方法。
【請求項8】
前記トレーニングは、機械学習を用いることを含む、請求項1に記載の方法。
【請求項9】
前記トレーニングは、ニューラルネットを用いることを含む、請求項1に記載の方法。
【請求項10】
前記第1の要素の各要素の要素属性を決定するステップ、及び/又は前記第2の要素の各要素の要素属性を決定するステップは、前記第1の要素の各要素に関連付けられたソースコードを分析するステップ、及び/又は前記第2の要素の各要素に関連付けられたソースコードを分析するステップを含む、請求項1に記載の方法。
【請求項11】
前記根本原因を訂正するための提案された訂正を提供するために、各提案されたテストステップ及び/又は要素は、ルールエンジンによって評価される、請求項1に記載の方法。
【請求項12】
失敗したテストステップを含む、失敗したソフトウェアテストケース構成を訂正するための方法であって、前記方法は、
失敗したテストステップの各候補が失敗したソフトウェアテストの根本原因である可能性によってランク付けされた、失敗したテストステップの候補のリストを受信するステップ、
失敗したテストステップの各候補のための複数の試行テストケース構成を生成するために、失敗したテストステップの候補のリストの失敗したテストステップの各候補を、マルコフ決定プロセスに提供するステップ、
失敗したテストステップの各候補のための各試行テストケース構成を実行するステップ、
成功するソフトウェアテストを特定するステップ、
前記成功するソフトウェアテストを生成した試行テストケース構成を特定するステップ、
前記失敗したソフトウェアテストケースに関連する前記試行テストケース内の差を特定するために、前記失敗したソフトウェアテストケース構成と、前記成功するソフトウェアテストを生成した前記試行テストケース構成を比較するステップ、
失敗したステップを訂正されたステップに置き換えることによって、前記失敗したソフトウェアテストケース構成を訂正するステップであって、前記訂正されたステップは、前記失敗したソフトウェアテストケースに関係する前記試行テストケース内の前記差を実装するステップと、
を含む、方法。
【請求項13】
前記実行するステップは、失敗したテストステップの各候補のための各試行テストケース構成を並列に実行するステップを含む、請求項12に記載の方法。
【請求項14】
失敗したテストステップの候補の前記リストは、
ユーザインターフェースを含むウェブアプリケーションを提供するステップ、
一連のテストステップを含むスクリプトを含むソフトウェアテストケース構成を提供するステップであって、各テストステップは、前記ユーザインターフェースの要素上で行われるアクションを含み、
前記ウェブアプリケーション上で前記スクリプトを実行するステップ、及び
失敗したテストステップの各候補が前記失敗したソフトウェアテストの前記根本原因である可能性によってランク付けされた失敗したテストステップの候補の前記リストを生成するステップ、
を含む方法によって生成される、請求項12に記載の方法。
【請求項15】
失敗したテストステップの候補の前記リストを生成するステップは、
コンピュータビジョンを用いて、前記ユーザインターフェースの第1のバージョンの第1の要素を特定し、前記第1の要素の各要素の要素属性を決定するステップ、
コンピュータビジョンを用いて、前記ユーザインターフェースの第2のバージョンの第2の要素を特定し、前記第2の要素の各要素の要素属性を決定するステップ、
前記第1の要素の各要素のための前記要素属性を、前記第2の要素の各要素のための前記要素属性と比較することにより、前記ユーザインターフェースの前記第1のバージョンと前記ユーザインターフェースの前記第2のバージョンとの間の差を特定するステップ、
トレーニングされた確率論的モデルを生成するために、前記差を用いて確率論的モデルをトレーニングするステップ、及び
各テストステップ及び/又は前記ユーザインターフェースの各要素に、各テストステップ及び/又は各要素が前記失敗したソフトウェアテストの根本原因である前記可能性を割り当てるステップ、
を含む、請求項14に記載の方法。
【請求項16】
ユーザインターフェースを含むウェブアプリケーションにおける失敗を自律的に特定するための方法であって、前記方法は、
前記ユーザインターフェースの要素を特定するために、ウェブアプリケーションユーザインターフェースを分析するステップ、
1つ又は複数の要素機能を特定するために、ウェブアプリケーションのソースコードを分析するステップ、
要素-機能の関連付けを生成するために、要素機能を前記ユーザインターフェースの要素に関連付けるステップ、
ニューラルネットワークをトレーニングするためにウェブアプリケーションユーザインターフェースの形状、テキスト、及び画像を入力するステップ、
前記ウェブアプリケーションにおいて失敗を生成する前記ウェブアプリケーションユーザインターフェースにおける異常を特定するために、前記要素、複数の要素機能、及び要素-機能の関連付けを前記トレーニングされたニューラルネットワークに入力するステップ、
を含む、方法。
【請求項17】
前記ユーザインターフェースの要素を特定するためにウェブアプリケーションユーザインターフェースを分析するステップは、コンピュータビジョンの使用を含む、請求項16に記載の方法。
【請求項18】
複数の要素機能を特定するためにウェブアプリケーションのソースコードを分析するステップは、自然言語処理の使用を含む、請求項16に記載の方法。
【請求項19】
ウェブアプリケーションユーザインターフェースを提供するために並列ウェブクローラを提供するステップを更に含む、請求項16に記載の方法。
【請求項20】
前記ウェブアプリケーションの複数のウェブアプリケーションユーザインターフェースを提供するために、並列ウェブクローラを提供するステップを更に含む、請求項16に記載の方法。
【請求項21】
前記方法は、ウェブアプリケーションユーザインタフェースを検証するために、テストスクリプトの各ステップについて行われる、請求項16に記載の方法。
【請求項22】
ウェブアプリケーションユーザインターフェースの新しい要素である要素を特定するための方法であって、前記方法は、
ユーザインターフェースを含むウェブアプリケーションを提供するステップ、
各テストステップは、前記ユーザインターフェースの要素上で行われるアクションを含む一連のテストステップを含むスクリプトを提供するステップ、
前記ウェブアプリケーション上で前記スクリプトを実行するステップ、
失敗したソフトウェアテストが失敗を報告する前記スクリプトのエラーステップを特定するステップ、及び
各提案された要素が前記ユーザインターフェースの新しい要素である、及び/又は変更された要素属性が要素機能に関連する可能性によってランク付けされた提案された要素のリストを生成するステップ、
を含む、方法。
【請求項23】
前記生成するステップは、
コンピュータビジョンを用いて、前記ユーザインターフェースの第1のバージョンの第1の要素を特定し、前記第1の要素の各要素の要素属性を決定するステップ、
コンピュータビジョンを用いて、前記ユーザインターフェースの第2のバージョンの第2の要素を特定し、前記第2の要素の各要素の要素属性を決定するステップ、
前記第1の要素の各要素についての前記要素属性と前記第2の要素の各要素についての前記要素属性を比較することにより、前記ユーザインターフェースの前記第1のバージョンと前記ユーザインターフェースの前記第2のバージョンとの間の差を特定するステップ、
トレーニングされた確率論的モデルを生成するために、前記差を用いて確率論的モデルをトレーニングするステップ、及び
各要素が前記ユーザインターフェースの新しい要素であること、及び/又は変更された要素属性が要素機能に関連することの前記可能性を、前記ユーザインターフェースの各要素に割り当てるステップ、
を含む、請求項
22に記載の方法。
【請求項24】
前記トレーニングされた確率論的モデルは、前記ユーザインターフェースの前記第1のバージョンと前記ユーザインターフェースの前記第2のバージョンとの間の差を、以下の 1)ソフトウェアテストの失敗の根本原因、
2)新しいユーザインターフェース要素、又は
3)要素機能に関連する要素属性における変更、
として分類する、請求項23に記載の方法。
【請求項25】
新しいウェブアプリケーションユーザインターフェース要素、又はウェブアプリケーションユーザインターフェース要素の変更された属性を説明するために、テストスクリプトの前記エラーステップを訂正するステップを更に含む、請求項23に記載の方法。
【請求項26】
ウェブアプリケーションユーザインターフェースが新しい要素を含むこと、又はユーザインターフェース要素の属性が変更されたことを、ユーザに警告するステップを更に含む、請求項23に記載の方法。
【請求項27】
ウェブアプリケーションユーザインタフェースが新しい要素を含むこと、又はユーザインターフェース要素の属性が変更されたことのユーザ確認を受信するステップを、更に含む、請求項26に記載の方法。
【請求項28】
請求項1に記載の方法を行うように構成されたシステム。
【請求項29】
請求項12に記載の方法を行うように構成されたシステム。
【請求項30】
請求項16に記載の方法を行うように構成されたシステム。
【請求項31】
請求項22に記載の方法を行うように構成されたシステム。
【発明の詳細な説明】
【技術分野】
【0001】
〔関連出願の相互参照〕
本出願は、2018年10月2日に出願された米国仮特許出願第62/740,409号、2018年10月23日に出願された米国仮特許出願第62/749,490号、及び2018年10月23日に出願された米国仮特許出願第62/749,533号の優先権を主張し、これらの各々は、その全体が参照により本明細書に組み込まれる。
【0002】
本明細書ではテストソフトウェアに関する技術であって、特に確率論的グラフィカルモデルを用いる失敗したソフトウェアテストの原因を特定するための方法、及びグラフィカルユーザインターフェースを有するウェブアプリケーションの失敗の可能性によってテストステップを評価及びソートするためのルールエンジンが提供されるが、これらに限定されない。
【背景技術】
【0003】
ソフトウェアテスト及び保守のコストの主な要因は、ソフトウェアテスト中に失敗したアクションがソフトウェアテストの失敗の原因ではないことが多いことである。このような場合、ソフトウェアテストの失敗の原因を特定し、失敗の原因を修復することは、時間とリソースを必要とし、ソフトウェアのダウンタイムを増加させ、ユーザエクスペリエンスに悪影響を与える。例えば、ユーザインターフェース(UI)テストは、ソフトウェア配信処理の一部である。これは、ソフトウェアが適切に機能していることを確認し、バグを検査するために使用される。従来、UIテストは、優秀なエンジニアによって行われていた。しかしながら、そのアプローチは、UIがより重要な役割を果たす現代のアプリケーションではスケーリングされていない。したがって、ソフトウェアテストの失敗の原因を特定するために、新しい技術が必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
自動化されたテストのためのいくつかの技術は、開発されている。初期の解決方法には特定のソフトウェアプロジェクトごとに特注のテストがあったが、より最近の解決方法は、UIテストのためのオープンソースフレームワーク(例えばセレニウム(Selenium))を含む。セレニウムは、UIとやり取りするユーザのアクションを複製するように設計されたシステムである。これら及び関連するシステムは、いくつかの構成要素を含み、エンジニアはスクリプト言語を用いてテストスクリプトを構築し、これらのテストスクリプトは、セレニーズ(Selenese)と呼ばれるドメイン特有の言語に変換される。テストが実行されるとき、セレニーズスクリプトは、ウェブドライバーモジュールに渡される。このモジュールは、セレニーズスクリプトをブラウザで行う一連のアクションに変換し、アクションの結果が評価される。このアプローチは強力である一方、いくつかの欠点がある。第1に、テストスクリプトを構築するプロセスは、遅く、骨の折れるものである。全てのテストステップにおいて、スクリプトライターは、ユーザ及びテストスクリプトがやり取りする要素を特定し、要素に対して行うアクションを決定し、期待される(正しい)結果が発生することを確認する。このプロセスは、スクリプトのステップ毎に繰り返される。更に、スクリプトの構成は、アクションを行う正しい要素を一意に特定することを含む。これは、要素セレクタを使用して行われ、誤った要素セレクタを選択すると、失敗のテスト結果を生成することがある。最後に、ユーザインターフェースは時間とともに変化する。結果として、要素及び要素セレクタも変化し、したがってテストは、誤って失敗する。したがって、以前の技術は、テスターが新しい要素セレクタを用いて各テストを手動で更新すること必要としていた。
【0005】
多くのテストの失敗は、簡単に特定でき、例えばスクリプトが正しい要素を見つけることができないためにテストが失敗した場合などである。その他の失敗は、微妙であり、例えばスクリプトは、要素を選択するが、選択した要素は正しい要素ではない。通常、このような失敗は、テストの後の多くのステップにより検出される。一つの例としての実施形態は、ショッピングカートにアイテムを追加するための2つのボタンを含むショッピングサイトである。第1のボタンは、表示されたアイテムを追加し、第2のボタンは、特別なオファーアイテムを追加する。閲覧されたアイテムをカートに追加することを確認し、次いでカート内のアイテムの費用を確認するスクリプトが誤って第2のボタンを選択した場合、スクリプトがショッピングカートの内容及び費用を確認するとき、テストは、エラーを生成する。
【0006】
テスト失敗の根本原因を特定することは、手動で行うことが困難である。テストエンジニアは、テストにおいてステップを遡らなければならない。各テストステップにおいて、エンジニアは、実際に起こったことと起こることが予想されたことを比較する。エラーの可能性のある原因を発見すると、エンジニアは変更を行い、テストを再度、実行し、変更がエラーを修正したかどうかを判定する。多くの場合、このプロセスは、行うべき正しい変更を特定するために何度かの反復を含む。失敗のタイプは、誤った要素選択、データ変更、及び過度な精度又は不適切な比較が含まれるが、これらに限定されない。誤った要素選択は、スクリプトがページ上の誤った要素、例えば違うボタン、メニュー上の違う項目などを選択した場合に発生する。これは、ページが再度表された後、又はレイアウトが変更された後に発生する可能性がある。データ変更に関して、最新のUIのほとんどは、データベースから動的に構築される。データベース内のデータが変更される場合、UIは、大幅に変更される可能性がある。いくつかのケースにおいて、結果としてスクリプトが予期せず失敗することがある。最後に、テストによって生成された値を、不適切な精度を使用して期待値と比較するときに、過度な精度、又は不適切な比較エラーが生じる可能性がある。これら及び他の問題は、実際及び偽の失敗を特定し、偽の失敗の原因を特定する困難を増大させる。
【0007】
したがって、本明細書では、例えばUIを含むウェブアプリケーションについて、ソフトウェアテストの失敗の原因を特定するための技術が提供される。いくつかの実施形態において、本技術は、例えば失敗したテストの根本原因を含むテストステップを置き換えるために新しいテストステップを提案及び/又は提供し、ソフトウェアテストが成功するまで新しいステップを繰り返し行うことにより、失敗したソフトウェアテストを自己回復及び修復することを更に提供する。いくつかの実施形態において、各ステップは、ウェブアプリケーションUI上の異常を特定するために検証される。いくつかの実施形態において、本技術は、UIの変更を検出し、その変更が新しい特徴であることをユーザに警告する分類分けを含む。いくつかの実施形態において、本明細書で説明される本技術は、確率論的グラフィカルモデル(PGM)及びルールエンジンを組み合わせることによって、失敗したソフトウェアテストの原因を特定する。いくつかの実施形態において、ソフトウェアテストケース(例えばテストアプリケーション(例えばテストウェブアプリケーション)及び一連のテストステップ(例えばテストウェブアプリケーションとの一連の対話(例えばテストウェブアプリケーションの一つ以上の要素との一連の対話))を含む)が全てのテストステップ及び検証がテストアプリケーションのために成功して行われるように構築される。いくつかの実施形態において、本技術は、例えばテストケースの後続の実行のためのテスト要素の位置及び/又は機能の変更を引き起こす、アプリケーションの動的構造(例えばアプリケーションの要素の属性及び/又は機能の変更)によって引き起こされるアプリケーションの失敗を特定する。いくつかの実施形態において、確率論的グラフィカルモデルは、アプリケーション上の要素の状態、及び各テストステップの間に行われる対話から構築される。テストが失敗すると、確率論的グラフィカルモデルは、評価されて、失敗の可能性によってテストステップは、ソートされる。更に、いくつかの実施形態において、本技術は、特定された失敗を補完及び/又はオーバーライドするためのルールエンジンを含む。
【0008】
したがって、いくつかの実施形態において、本技術は、ユーザインターフェースを含むウェブアプリケーションの失敗したソフトウェアテストの根本原因を特定するための方法を提供する。例えば、いくつかの実施形態において、本方法は、ユーザインターフェースを含むウェブアプリケーションを提供するステップ、一連のテストステップを含むスクリプトを提供するステップであって、各テストステップはユーザインターフェースの要素に対して実行されるアクションを含み、ウェブアプリケーション上でスクリプトを実行するステップ、失敗したソフトウェアテストが失敗を報告する、スクリプトのエラーステップを特定するステップ、各提案されたテストステップ及び/又は要素が失敗したソフトウェアテストの根本原因である可能性によってランク付けされた要素のリストを生成するステップを含む。いくつかの実施形態において、生成するステップは、コンピュータビジョンを用いて、ユーザインターフェースの第1のバージョンの第1の要素を特定し、第1の要素の各要素に対して要素属性を決定するステップ、コンピュータビジョンを用いて、ユーザインターフェースの第2のバージョンの第2の要素を特定し、第2の要素の各要素に対して要素属性を決定するステップ、第1の要素の各要素のための要素属性を第2の要素の各要素のための要素属性と比較することにより、ユーザインターフェースの第1のバージョンとユーザインターフェースの第2のバージョンとの間の差を特定するステップ、トレーニングされた確率論的モデルを生成するために差を使用する確率論的モデルをトレーニングするステップ、並びに各テストステップ及び/又はユーザインターフェースの各要素に、各テストステップ及び/又は各要素が失敗したソフトウェアテストの根本原因である可能性を割り当てるステップを含む。いくつかの実施形態において、提案されたテストステップは、エラーステップに先行する。
【0009】
いくつかの実施形態において、コンピュータビジョンを用いることは、テキストボックスを検出すること、文字を認識すること、要素を検出すること、オブジェクトを検出すること、及び/又はレイアウトを検出することを含む。いくつかの実施形態において、トレーニングするステップは、ユーザインターフェースの1、2、3、4、5、6、7、8、9、10、20、30、40、50、60、70、80、90、100、又はそれ以上のバージョンを比較することにより、特定される差を入力として受信することを含む。いくつかの実施形態において、ユーザインターフェースの第1のバージョンとユーザインターフェースの第2のバージョンとの間の差を特定するステップは、ユーザインターフェースの第1のバージョンの第1のグラフィカル及び/又は属性モデルを、ユーザインターフェースの第2のバージョンの第2のグラフィカル及び/又は属性モデルと比較して、確率論的グラフィカル及び/又は属性モデルを生成するステップを含む。いくつかの実施形態において、トレーニングは、属性カテゴリ、要素、及び/又はテストステップに重み付けされたスコアを割り当てるステップを含む。いくつかの実施形態において、割り当てるステップは、各テストステップ及び/又は各要素が失敗したソフトウェアテストの根本原因である可能性を決定するために、確率論的モデルを評価するステップを含む。いくつかの実施形態において、トレーニングは、機械学習を用いることを含む。いくつかの実施形態において、トレーニングは、ニューラルネットを用いることを含む。いくつかの実施形態において、第1の要素の各要素の要素属性を決定するステップ、及び/又は第2の要素の各要素の要素属性を決定するステップは、第1の要素の各要素に関連付けられたソースコードを分析するステップ、及び/又は第2の要素の各要素に関連付けられたソースコードを分析するステップを含む。いくつかの実施形態において、根本原因を修正するための提案された修正を提供するために、各提案されたテストステップ及び/又は要素は、ルールエンジンによって評価される。
【0010】
いくつかの実施形態において、本技術は、失敗したテストステップを含む、失敗したソフトウェアテストケース構成を訂正するための方法に関する。例えば、いくつかの実施形態において、本方法は、失敗テストステップ各候補が、失敗したソフトウェアテストの根本原因である可能性によってランク付けされた、失敗したテストステップの候補のリストを受信するステップ、失敗したテストステップの各候補のための複数の試行テストケース構成を生成するために、失敗したテストステップの候補のリストのうち各候補を、マルコフ決定プロセスに提供するステップ、失敗したテストステップの各候補のための各試行テストケース構成を実行するステップ、成功するソフトウェアテストを特定するステップ、成功するソフトウェアテストを生成した試行テストケース構成を特定するステップ、失敗したソフトウェアテストケースに関連する試行テストケース内の差を特定するために、失敗したソフトウェアテストケース構成と、成功するソフトウェアテストを生成した試行テストケース構成を比較するステップ、失敗したステップを訂正されたステップを用いて置き換えることによって、失敗したソフトウェアテストケース構成を訂正するステップを含み、訂正されたステップは、失敗したソフトウェアテストケースに関係する試行テストケース内の差を実装する。いくつかの実施形態において、実行するステップは、失敗したテストステップの各候補のための各試行テストケース構成を並列に実行するステップを含む。いくつかの実施形態において、候補の失敗したテストステップのリストは、ユーザインターフェースを含むウェブアプリケーションを提供するステップ、一連のテストステップを含むスクリプトを含むソフトウェアテストケース構成を提供するステップであって、各テストステップは、ユーザインターフェースの要素上で行われるアクションを含み、ソフトウェアテストケース構成を提供するステップ、ウェブアプリケーション上でスクリプトを実行するステップ、各候補の失敗したテストステップが失敗したソフトウェアテストの根本原因である可能性によってランク付けされた候補の失敗したテストステップのリストを生成するステップを含む方法によって生成される。いくつかの実施形態において、失敗したテストステップの候補のリストを生成するステップは、コンピュータビジョンを用いて、ユーザインターフェースの第1のバージョンの第1の要素を特定し、第1の要素の各要素の要素属性を決定するステップ、コンピュータビジョンを用いて、ユーザインターフェースの第2のバージョンの第2の要素を特定し、第2の要素の各要素の要素属性を決定するステップ、第1の要素の各要素のための要素属性を、第2の要素の要素属性と比較することにより、ユーザインターフェースの第1のバージョンとユーザインターフェースの第2のバージョンとの間の差を特定するステップ、トレーニングされた確率論的モデルを生成するために差を用いて確率論的モデルをトレーニングするステップ、各テストステップ及び/又はユーザインターフェースの各要素に、各テストステップ及び/又は各要素が、失敗したソフトウェアテストの根本原因である可能性を割り当てるステップを含む。
【0011】
いくつかの実施形態において、本技術は、ユーザインターフェースを含むウェブアプリケーションにおける失敗を自律的に特定するための方法に関する。例えば、いくつかの実施形態において、方法は、ユーザインターフェースの要素を特定するためにウェブアプリケーションユーザインターフェースを分析するステップ、要素機能を特定するためにウェブアプリケーションのソースコードを分析するステップ、要素機能をユーザインターフェースの要素に関連付け、要素-機能の関連付けを生成するステップ、ニューラルネットワークをトレーニングするためにウェブアプリケーションユーザインターフェースの形状、テキスト、及び画像を入力するステップ、ウェブアプリケーションユーザインターフェースにおいて失敗を生成するウェブアプリケーションユーザインターフェースにおける異常を特定するために、要素、複数の要素機能、及び要素-機能の関連付けをトレーニングされたニューラルネットワークに入力するステップ、を含む。いくつかの実施形態において、ユーザインターフェースの要素を特定するためにウェブアプリケーションユーザインターフェースを分析するステップは、コンピュータビジョンの使用を含む。いくつかの実施形態において、要素機能を特定するためにウェブアプリケーションのソースコードを分析するステップは、自然言語処理の使用を含む。いくつかの実施形態において、方法は、ウェブアプリケーションユーザインターフェースを提供するために並列ウェブクローラを提供するステップを更に含む。いくつかの実施形態において、方法は、ウェブアプリケーションの複数のウェブアプリケーションユーザインターフェースを提供するために、並列ウェブクローラを提供するステップを更に含む。いくつかの実施形態において、方法は、ウェブアプリケーションユーザインターフェースを検証するために、テストスクリプトの各ステップに対して行われる。
【0012】
いくつかの実施形態において、本技術は、ウェブアプリケーションユーザインターフェースの新しい要素である要素、又は要素の変更された属性が要素機能に関連することを特定するための方法を提供する。本明細書で使用されるように、「要素機能に関連する属性」は、変更されるとき、ソフトウェアテストエラーを生成する可能性が高い属性を指す。例えば人間の目に知覚できない要素の色又はフォントサイズのわずかな変更は、UI上で最小限の影響を有し、ソフトウェアテストエラーを引き起こすことは予想されない。しかしながら、ボタン又はテキスト入力フィールドといった要素の位置の変更は、UIに実質的な影響を有し、ソフトウェアテストエラーを引き起こすことが予想されるであろう。
【0013】
いくつかの実施形態において、方法は、ユーザインターフェースを含むウェブアプリケーションを提供するステップ、一連のテストステップを含むスクリプトを提供するステップであって、各テストステップがユーザインターフェースの要素上で行われるアクションを含むステップ、ウェブアプリケーション上でスクリプトを実行するステップ、失敗したソフトウェアテストが失敗を報告するスクリプトのエラーステップを特定するステップ、並びに各提案された要素がユーザインターフェースの新しい要素であり、及び/又は変更された要素属性が要素機能に関連する可能性により、ランク付けされた提案された要素のリストを生成するステップを含む。いくつかの実施形態において、生成するステップは、コンピュータビジョンを用いて、ユーザインターフェースの第1のバージョンの第1の要素を特定し、第1の要素の各要素の要素属性を決定するステップ、コンピュータビジョンを用いて、ユーザインターフェースの第2のバージョンの第2の要素を特定し、第2の要素の各要素の要素属性を決定するステップ、第1の要素の各要素の要素属性と第2の要素の各要素の要素属性を比較することにより、ユーザインターフェースの第1のバージョンとユーザインターフェースの第2のバージョンとの間の差を特定するステップ、差を用いて確率論的モデルをトレーニングし、トレーニングされた確率論的モデルを生成するステップ、及び各要素がユーザインターフェースの新しい要素であること、及び/又は変更された要素属性が要素機能に関連することの可能性を、ユーザインターフェースの各要素に割り当てるステップ、を含む。いくつかの実施形態において、トレーニングされた確率論的モデルは、ユーザインターフェースの第1のバージョンとユーザインターフェースの第2のバージョンとの間の差を、ソフトウェアテスト失敗の根本原因、新しいユーザインターフェース要素、又は要素機能に関連する要素属性の変更として分類する。いくつかの実施形態において、方法は、新しいウェブアプリケーションユーザインタフェース要素、又はウェブアプリケーションユーザインタフェース要素の変更された属性を説明するために、テストスクリプトのエラーステップを訂正するステップを更に含む。いくつかの実施形態において、方法は、ウェブアプリケーションユーザインターフェースが新しい要素を含むこと、又はユーザインターフェース要素の属性が変更されたことをユーザに警告すること、及び/又はウェブアプリケーションユーザインターフェースが新しい要素を含むこと、又はユーザインターフェース要素の属性が変更されたことのユーザの確認を受信するステップを更に含む。関連するシステム及び使用も提供される。
【0014】
追加の実施形態は、本明細書に含まれる開示に基づいて、関連技術の当業者には明らかであろう。
【図面の簡単な説明】
【0015】
本技術のこれら及び他の特徴、態様、及び利点は、以下の図面を提示することにより、より良く理解されるのであろう。
【
図1】
図1は、失敗したソフトウェアテストの原因を特定するために本明細書で提供される技術の一実施形態のフローチャートである。
【
図2】
図2は、失敗したソフトウェアテストに対する解決方法を自律的に見つけるための、本明細書で提供される技術の一実施形態のフローチャートである。
【
図3】
図3は、ソフトウェアテスト失敗の根本原因を特定し、提案を提供するための、本明細書で説明される技術の一実施形態を示すフロー図である。
【
図4】
図4は、ウェブアプリケーションユーザインタフェースを分析するためのコンピュータビジョンシステムのアーキテクチャを示す模式図である。
【
図5】
図5は、テキストボックス検出技術により処理される例示的な入力ウェブアプリケーション、及びテキストボックス検出技術により生成される例示的な出力の概略図を示す。
【
図6】
図6は、密度ベースのクラスタリング技術の出力をグラフプロットとして示す。
【
図7】
図7は、テキストボックス検出技術により処理される例示的な入力ウェブアプリケーション、及びテキストボックス検出技術により生成される例示的な出力の概略図を示す。テキストボックス検出技術の出力は、要素検出技術に渡される。要素検出技術の例示的な出力が示されている。
【
図8】
図8は、オブジェクト検出技術により処理される例示的な入力ウェブアプリケーション、及びオブジェクト検出技術により生成される例示的な出力の模式図を示す。
【
図9A】
図9Aは、二つの異なる日におけるウェブページの要素の色属性の頻度分布を示し、要素間の確率論的関連付けを割り当てる。
【
図9B】
図9Bは、二つの異なる日におけるウェブページの要素の高さ属性の頻度分布を示し、要素間の確率論的関連付けを割り当てる。
【
図9C】
図9Cは、二つの異なるページにおける要素幅のヒストグラムを示し、本明細書で提供される本技術によって決定される分布に従って、二つのページ上の要素を関連付けている。
【0016】
図面は、必ずしも一定の縮尺で描かれているわけではなく、図面中のオブジェクトは、必ずしも互いに対して一定の縮尺で描かれているわけでもないことを理解されたい。図面は、本明細書で開示される装置、システム、及び方法の様々な実施形態を明確にし、理解することを意図した描写である。図面において、同一の参照番号は、可能な限り同一、又は類似の部分に用いる。更に、図面は、本開示の範囲を決して限定することを意図していないことを理解されたい。
【発明を実施するための形態】
【0017】
〔詳細な説明〕
本明細書ではテストソフトウェアに関連する技術が提供され、特に動的アプリケーションの失敗の可能性によってテストステップを評価し、ソートするための確率論的グラフィカルモデル及び/又はルールエンジンを用いて、失敗したソフトウェアテストの原因を特定するための方法が提供されるが、これに限定されるものではない。
【0018】
様々な実施形態のこの詳細な説明において、説明の目的として、多数の特定の細部が記載され、開示された実施形態の完全な理解を提供する。しかしながら、当業者は、これらの様々な実施形態がこれらの特定の細部を用いて、又は用いずに実施され得ることを理解するであろう。他の例において、構造及びデバイスは、ブロック図形式で示される。更に、当業者は、方法が提示され、実行される特定のシーケンスが例示的なものであり、シーケンスを変更することができ、それでもなお、本明細書で開示される様々な実施形態の精神及び範囲内にあることが企図されることを容易に理解することができる。
【0019】
特許、特許出願、論文、本、論文、及びインターネットウェブページを含む、これらに限定されないが、本出願において引用される全ての文献及び類似の材料は任意の目的のために、それらの全体が参照により明示的に組み込まれる。別段の定義がない限り、本明細書で使用される全ての技術用語及び科学用語は、本明細書で説明される様々な実施形態が属する当業者によって一般に理解されるものと同じ意味を有する。組み込まれた参考文献における用語の定義が本開示において提供される定義と異なるように見えるとき、本開示において提供される定義を、優先するものとする。本明細書で使用されるセクション見出しは、編成目的のためだけのものであり、説明される主題をいかなる形でも限定するものとして解釈されるべきではない。
【0020】
〔定義〕
本技術の理解を容易にするために、いくつかの用語及び句を以下に定義する。詳細な説明の全体にわたって、追加の定義を述べる。
【0021】
本明細書及び特許請求の範囲の全体を通して、以下の用語は、その他であることを明示しない限り、本明細書で明示的に関連付ける意味をとる。本明細書で使用される「一実施形態において」という語句は、必ずしも同じ実施形態を指すわけではないが、同じ実施形態を指す場合もある。更に、本明細書で使用される「別の実施形態において」という語句は、必ずしも異なる実施形態を指すわけではないが、そうであってもよい。したがって、以下で説明するように、本発明の範囲又は精神から逸脱することなく、本発明の様々な実施形態を容易に組み合わせることができる。
【0022】
その上、本明細書で使用される場合、「又は」という用語は、文脈が明白に指示しない限り、包括的な「又は」オペレータであり、「及び/又は」という用語に等価である。「に基づく」という用語は、排他的ではなく、文脈が明示的に指示しない限り、記載されていない追加の要因に基づくことを許容する。その上、「一つの(a)」、「一つの(an)」及び「その(the)」の意味は、明細書全体を通じて、複数の参照を含む。「の中で(in)」の意味は、「の中で(in)」及び「の上で(on)」を含む。
【0023】
本明細書中で使用される場合、用語「約(about)」、「ほぼ(approximately)」、「実質的に(substantially)」、及び「有意に(significantly)」は当業者によって理解され、それらが使用される文脈においてある程度変化する。それらが使用される文脈において当業者に明らかでないこれらの用語の使用がある場合、「約(about)」及び「ほぼ(approximately)」は、特定の用語の10%以下を意味し、「実質的に(substantially)」及び「有意に(significantly)」は、特定の用語の+10%以上、又は-10%以上を意味する。
【0024】
本明細書で使用されるように、範囲の開示は、全ての値の開示、及び範囲について与えられたエンドポイント及びサブ範囲を含む、全範囲内の更なる分割された範囲を含む。
【0025】
本明細書で使用されるように、接尾辞「フリー(-free)」とは「フリー(-free)」が付加されている単語のベースルートの特徴を省略した技術の一実施形態である。即ち、用語「Xフリー(X-free)」は、「Xフリー(X-free)」技術で省略された技術の特徴である。例えば、「グラフィカル処理ユニットフリー(graphical processing unit-free)」システムは、グラフィカル処理ユニットを含んでおらず、「ソーティングフリー(sorting-free)」方法は、ソーティングステップを含まない、などである。
【0026】
用語「第1の(first)」、「第2の(second)」、「第3の(third)」などは、本明細書では様々なステップ、要素、組成物、構成要素、領域、層、及び/又はセクションを説明するために使用され得るが、これらのステップ、要素、組成物、構成要素、領域、層、及び/又はセクションは、特に示されない限り、これらの用語に限定されない。これらの用語は、一つのステップ、要素、組成物、構成要素、領域、層、及び/又はセクションを、別のステップ、要素、組成物、構成要素、領域、層、及び/又はセクションから区別するために使用される。「第1の(first)」、「第2の(second)」などの用語、及び本明細書で使用される場合の他の数値用語は文脈によって明確に示されない限り、シーケンス又は順序を意味しない。したがって、本明細書で論じる第1のステップ、要素、組成物、構成要素、領域、層、又はセクションは、技術から逸脱することなく、第2のステップ、要素、組成物、構成要素、領域、層、又はセクションと呼ぶことができる。
【0027】
本明細書で使用される「増加(increase)」又は「減少(decrease)」は、予め確立された値に対する、及び/又は標準対照の値に対する、可変の以前に測定された値に対する可変の値における、検出可能な(例えば測定された)正又は負の変化をそれぞれ指す。増加は、可変の以前に計測された値、予め確立された値、及び/又は標準対照の値に対して、好ましくは少なくとも10%、より好ましくは50%、さらにより好ましくは2倍、さらにより好ましくは少なくとも5倍、最も好ましくは少なくとも10倍の正の変化である。同様に、減少は、可変の以前に計測された値、予め確立された値、及び/又は標準対照の値に対して、好ましくは少なくとも10%、より好ましくは50%、さらにより好ましくは少なくとも80%、最も好ましくは少なくとも90%の負の変化である。「より多い(more)」又は「より少ない(less)」などの、定量的な変更又は差を示す他の用語は、本明細書において、上記と同じ様式で使用される。
【0028】
本明細書で使用される「システム(system)」は、共通の目的のために共に動作する複数の実際の構成要素及び/又は抽象的な構成要素を指す。いくつかの実施形態において、「システム(system)」は、ハードウェア及び/又はソフトウェア構成要素の統合アセンブリである。いくつかの実施形態において、システムの各構成要素は、一つ以上の他の構成要素と対話し、及び/又は一つ以上の他の構成要素に関連する。いくつかの実施形態において、システムは、方法を制御及び指示するための構成要素及びソフトウェアの組合せを指す。
【0029】
本明細書で使用されるように、用語「ウェブアプリケーション(web application)」は、ウェブブラウザにおいてクライアントにより実行されるクライアント-サーバコンピュータプログラムを意味する。共通ウェブアプリケーションは、ウェブメール、オンライン小売販売、及びオンラインオークションを含む。いくつかの実施形態において、ウェブアプリケーションは、ユーザインターフェース及び/又はクライアント側ロジック(例えばクライアントコンピュータ上で実行されるコード)を含む。いくつかの実施形態において、ウェブアプリケーションは、一つ以上のウェブページを含み、ユーザインターフェースは、一つ以上のウェブページの外観、デザイン、及び要素を指す。
【0030】
本明細書で使用する用語「要素(element)」は、識別子及び/又は別の要素との関係により特定することができるデータ構造を指す。例えば要素は、名前、数字、又は記号といった文字列である一意の識別子を有することができる。したがって、要素は、識別子を用いて参照及び/又は検索することができる。更に、特定の要素が親要素の第1の子要素である場合、その特定の要素は、親要素へのポインタを使用して参照及び/又は検索されてから、第1の子要素へのポインタを取得することができる。ブラウザ及び/又はランタイム環境は、要素を参照及び/又は検索するための一つ以上のアプリケーションプログラミングインターフェース(「API(Application Programming Interfaces)」)を提供することができる。したがって、いくつかの実施形態において、用語「要素(element)」は、ユーザ(例えば人、別のアプリケーション、アプリケーションプログラミングインターフェースなど)が対話するウェブアプリケーションの構成要素(例えばアプリケーションのグラフィカルユーザインターフェースのグラフィカル構成要素)を指す。いくつかの実施形態において、要素と対話することは、ウェブアプリケーションが機能を実行することを引き起こす。いくつかの実施形態において、「要素(element)」は、ボタン、ハイパーリンク、テキストボックス、テキスト領域、チェックボックス、スライダ、ラジオボタン、メニュー、メニューアイテム、スクロールバー、コンボボックス、トグルボタン、スピンボタン、ツールバー、ウィジェット、画像、ウィンドウ、カレンダー、タブストリップ、リストボックス、サムネイルなどである。いくつかの実施形態において、要素は、ウェブページ又は画面である。いくつかの実施形態において、要素は、他の要素、例えば、一つ以上のボタン、テキストフィールドなどを含むウェブページを含む。いくつかの実施形態において、要素に対応する、又は要素に関連付けられたソースコードは、ユーザが見るためにクライアント装置のスクリーン上に提示された可視の要素にマッピング可能である。
【0031】
本明細書で使用される用語「属性(attribute)」は、要素の外観、挙動、及び/又は内容を特定及び/又は説明するデータを指す。要素は、例えば要素の種類、画面、ウィンドウ又はページ上の位置、色、テキスト、サイズ、ボーダー、書体、及び要素に関連付けられたコードなど、任意の数の属性を有することができる。
【0032】
本明細書で使用される用語「ユーザ(user)」は、アプリケーション(例えばアプリケーションの要素)と対話する人(例えば現実又は仮想)を指す。いくつかの実施形態において、ユーザは、人である(例えばグラフィカルユーザインターフェースによってアプリケーションと対話する)。いくつかの実施形態において、ユーザは、アプリケーションと対話する別のアプリケーション(例えばスクリプト)又はソフトウェア構成要素である。
【0033】
本明細書で使用される用語「モジュール(module)」又は「構成要素(component)」は、モジュール又は構成要素のアクションを行うように構成されたハードウェア又はソフトウェアの実装形態を指す。いくつかの実施形態において、モジュール又は構成要素は、汎用ハードウェア(例えばコンピュータ読み取り可能な媒体、処理装置など)により記憶及び/又は実行されるソフトウェアオブジェクト又はソフトウェアルーチンである。いくつかの実施形態において、構成要素及び/又はモジュールは、コンピューティングシステム上で実行するオブジェクト又はプロセスとして(例えば別のスレッドとして)実装される。本開示で説明されるシステム及び方法のいくつかは一般に、(汎用ハードウェア上に格納され、及び/又は汎用ハードウェアによって実行される)ソフトウェアで実装されるものとして説明されるが、特定のハードウェア実装、ファームウェア実装、又はそれらの任意の組合せも可能であり、企図される。本明細書において、「コンピューティングエンティティ(computing entity)」は、本開示で前述したような任意のコンピューティングシステム、又はコンピューティングシステム上で実行される任意のモジュール又はモジュールの組合せとすることができる。
【0034】
本明細書で使用される用語「ユーザシーケンス(a user sequence)」は、ウェブアプリケーションUIの一つ以上の要素を用いてユーザの対話を模倣する一連のアクションである。
【0035】
本明細書で使用される用語「ブラウザ(browser)」は、例えばモジラ ファイアフォックス(Mozilla Firefox)、インターネットエクスプローラ(Internet Explorer)、マイクロソフトエッジ(Microsoft Edge)、グーグルクローム(Google Chrome)、アップル サファリ(Apple Safari)、又はデスクトップ、ラップトップ、及び/又はモバイル装置上で使用するために提供される他の任意のウェブブラウザといった、ワールドワイドウェブ(World Wide Web)上の情報リソースを検索、提示、及び横断するためのソフトウェアアプリケーションを指す。
【0036】
本明細書で使用される用語「ユーザインターフェース(user interface)」(UI)は、ユーザが例えばポインタ及び/又はポインティングデバイスにより、ウェブアプリケーションを制御及び/又は操作することを可能にするために、表示されたグラフィカル情報を利用するプログラムインターフェースを指す。ポインタは、ディスプレイ上に現れるカーソル、矢印、又は他のシンボルを参照することができ、UIを介してオブジェクトの選択、フィールドへの入力、コマンドの入力などを行うためにポインティングデバイスを用いて移動又は制御することができる。ポインティングデバイスは、例えばウェブアプリケーションのUIを介して、カーソル及び/又は矢印の制御、オブジェクトの選択、フィールドへの入力、又はコマンド及び/又はドロップダウンメニューオプションなどの情報の入力に使用される任意のオブジェクト及び/又はデバイスを参照することができる。こういったポインティングデバイスは例えば、マウス、トラックボール、トラックパッド、トラックスティック、キーボード、スタイラス、デジタルタブレット、デジタルペン、タッチスクリーンと組み合わせた指先などを含むことができる。カーソルは、UI内の領域に関して入力選択又は動作がなされ得るシンボル又はポインタを参照し得る。
【0037】
ここで、用語「クリック(click)」又は「クリッキング(clicking)」は、例えばマウス等のポインティングデバイスによる選択処理を指すが、それらの用語の使用は、限定されるものではない。例えば、タッチスクリーンを介した選択処理であってもよい。この場合において、「クリッキング(clicking)」を「タッチング(touching)」に置き換えてもよい。しかしながら、これらは、オブジェクトを選択したり、情報を入力したりする方法の一例に過ぎず、特許請求の範囲の主題はその範囲に限定されるものではない。
【0038】
本明細書で使用される用語「要素と対話する(interact with an element)」は、ウェブアプリケーションUIの要素上でアクション(例えばクリッキング)を実行し、それを選択し、その状態を変更し、リストからオプションを選択し、プルダウンメニューをアクティブにし、値を入力し、値を選択する等をすることを意味する。
【0039】
本明細書で使用される用語「スクリプト(script)」は、コンピュータプログラム又はウェブアプリケーション内のいくつかの目標を達成する、ユーザインターフェース内のユーザ-コンピュータの対話のシーケンスを指す。目標の例としては、ユーザパスワードの変更、ウェブアプリケーション内での購入トランザクションの実行、グループによって制御されるファイルの読み取り、書き込み、又は破棄の権限を付与するチーム/グループへの参加、又はユーザアカウントに関連付けられた電子メールアドレスの確認/変更などを含む。したがって、いくつかの実施形態において、スクリプトは、あるタスクを実行するためにシミュレートされたユーザ、ウェブアプリケーション、及び/又はブラウザによってとられる離散的なステップのシーケンス(例えば要素と対話する)を定義する。例えばスクリプトは、ウェブアプリケーション内のボタンをクリックして、アプリケーションの次のスクリーンに移動するなどのステップを定義することができる。別の例において、スクリプトが第1の入力をパスワードとして受け入れる前に、ウェブアプリケーションが第2の入力を用いて第1の入力を検証するのを待つステップを含むことができる。いくつかの実施形態において、スクリプトは、例えばウェブアプリケーションに変更が加えられた後(例えばウェブアプリケーションのUIに変更が加えられた後)、ウェブアプリケーションをテストするために、コンピュータによって日常的に実行される。いくつかの実施形態において、スクリプトは、周期的に、例えば時間単位、日単位、週単位、月単位、及び/又は年単位で実行される。いくつかの実施形態において、スクリプトは、スクリプトがコードリポジトリのマスターブランチ(master branch)に新しいコードがコミットされるたびに自動的に実行される。いくつかの実施形態において、スクリプトは、オペレーティングシステムレベルでデータを入力するステップを使用してユーザアクションをシミュレートする。いくつかの実施形態において、スクリプトは、オペレーティングシステムレベルで出力をトラックするために書き込まれる。例えば、オペレーティングシステムレベルスクリプトは、スクリーン上の特定のピクセルをクリックする、又はスクリーン上のピクセルの色の変更を監視するステップを含むことができる。いくつかの実施形態において、スクリプトは、データベースに提供される。
【0040】
本明細書で使用する用語「根本原因(root cause)」は、ソフトウェアテスト失敗の開始原因(例えば要素属性変更、アクション、ステップ)を指し、用語「根本原因」は、いくつかの実施形態において、ソフトウェアテスト失敗を引き起こす一連のテストステップにおける最も早い要素属性変更、ステップ、又はアクションを指す。
【0041】
〔説明〕
ウェブアプリケーションはしばしば、UI要素の置換及び組み合わせがテストされるべき潜在的なコマンド及びコマンドシーケンスの膨大なフィールドを生み出すため、複雑なUIを有する。更に、ウェブアプリケーションは、時間とともに変更し、以前のテストスクリプトを実行不可能にレンダリングする。したがって、いくつかの実施形態において、本明細書により提供される本技術は、ウェブアプリケーションの自動化されたテスト(例えばウェブアプリケーションのUI)及びソフトウェアテスト失敗の原因であるウェブアプリケーションの変更(例えばウェブアプリケーションのUI)の特定に関する。本明細書で提供されるソフトウェアテスト技術のいくつかの実施形態において、テスト自動化は、テストの実行、及び実際の結果と予測される結果との比較を制御するために、通常、テストされるソフトウェアとは別のソフトウェアを使用する。今日のソフトウェアアプリケーションの多くは、インターネットブラウザ又はブラウザエンジン内で実行するウェブベースのアプリケーションとして書かれている。ソフトウェアテストを自動化することには、例えばテストの再現性及び実行速度に関連して、多くの利点がある。
【0042】
いくつかの実施形態において、本技術は、ウェブアプリケーションUIテスト失敗の根本原因を特定するための方法及びシステム、例えばウェブアプリケーションUI要素を構成する一つ以上のウェブページを含むウェブアプリケーションを提供する。本技術は、ウェブアプリケーションの一つのバージョンから後続のバージョンのウェブアプリケーションに行われるさまざまなタイプの変更(例えば要素属性及び/又はウェブアプリケーションコード)の確率を決定する。この確率は、ウェブアプリケーションがテストされるとき、どの要素及びタイプの変更が失敗を生成することの予測を提供するために使用される。
【0043】
例えば、いくつかの実施形態において、本技術は、ウェブアプリケーションUIを評価し、一つ以上のウェブページ上に存在する要素を特定する。いくつかの実施形態において、本技術は、ウェブページ上に存在する要素の一つ以上の属性を特定する。いくつかの実施形態において、本技術は、ウェブページ及び/又はウェブページ上の要素に関連付けられたコードを評価する。いくつかの実施形態において、本技術は、ウェブページ上の要素のペアの関係(例えば距離や相対配置)を特定し、定量化する。いくつかの実施形態において、本技術は、ウェブページ上の要素及びウェブページ上の要素間の関係を表すグラフィックモデルを構築する。
【0044】
いくつかの実施形態において、本技術は、(例えば時間、バージョン、開発などの関数として)ウェブアプリケーション及び/又はウェブアプリケーションの要素が変更する確率を特定することに関する。いくつかの実施形態において、本技術は、要素の属性の変更、及び/又はウェブアプリケーションUIの第1のバージョン(例えばウェブページの第1のバージョン)とウェブアプリケーションUIの第2のバージョン(例えば、ウェブページの第2のバージョン)との間のウェブページコードの変更を特定する。いくつかの実施形態において、ウェブアプリケーションUIの第1のバージョン(例えばウェブページの第1のバージョン)とウェブアプリケーションUIの第2のバージョン(例えばウェブページの第2のバージョン)との間の要素の属性の変更、及び/又はウェブページコードの変更は、グラフィカルモデルの変更によって表される。いくつかの実施形態において、確率論的方法(例えばベイズ分析、隠れマルコフモデルなど)を使用し、要素の属性がウェブアプリケーションUIの第1のバージョン(例えばウェブページの第1のバージョン)とウェブアプリケーションUIの第2のバージョン(例えばウェブページの第2のバージョン)との間で変更するであろう確率を決定する。いくつかの実施形態において、確率論的方法(例えばベイズ分析、隠れマルコフモデルなど)を使用し、ウェブページの特定の領域がウェブアプリケーションUIの第1のバージョン(例えばウェブページの第1のバージョン)及びウェブアプリケーションUIの第2のバージョン(例えばウェブページの第2のバージョン)からの変更を含む確率を決定する。いくつかの実施形態において、グラフィカルモデルの変更の確率は、ウェブアプリケーションの要素属性及び/又はコードの変更の確率論的グラフィカルモデルを提供するために計算される。
【0045】
いくつかの実施形態において、ルールエンジンは、テストの間に入力及び/又は計算された要素及び/又は値を検査するためのルールを含む。いくつかの実施形態において、ルールエンジンのルールは、最小値よりも大きい値、及び/又は最大値よりも小さい値を検査する。
【0046】
いくつかの実施形態において、確率論的グラフィカルモデル及びルールエンジンを使用し、エラーを生成する可能性のあるウェブアプリケーションにおいて、可能性のある変更のランク付けされたリストを生成する。いくつかの実施形態において、ランク付けされたリストは、ウェブアプリケーションが発生する変更の確率によってソートされる。いくつかの実施形態において、ウェブアプリケーションのテストが実行され、エラーが発生するとき、エラーを生成する可能性のあるウェブアプリケーションにおいて、可能性のある変更のランク付けされたリストが照会され、可能性のある変更は、エラーの可能性のあるソースとして検査される。例えば
図3を参照してほしい。
【0047】
本技術の実施形態は、全体にハードウェアの実施形態、全体にソフトウェアの実施形態、又はハードウェア及びソフトウェアの構成要素の両方を含む実施形態の形態をとる。いくつかの実施形態において、本技術は、ファームウェア、常駐ソフトウェア、マイクロコードなどをソフトウェアに含み、実装されるが、これらに限定されない。
一つ又は複数の実施形態は、コンピュータ又は任意の命令実行システムを用いた、又は関連して使用するプログラムコードを提供する、コンピュータ使用可能又はコンピュータ読み取り可能媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。コンピュータ使用可能媒体又はコンピュータ読み取り可能な媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを格納、通信、伝搬、又は輸送する任意の装置を含むことができる。媒体は、電子、磁気、光、電磁気、赤外線、又は半導体のシステム(又は装置若しくはデバイス)、又は伝播媒体とすることができる。例えば媒体は、半導体又はソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、リジッド磁気ディスク及び光ディスク等のコンピュータ読み取り可能媒体を含み得る。
いくつかの実施形態において、本技術は、例えばウェブページ上の要素の属性を特定するために、ウェブアプリケーションUIを評価するためのコンピュータビジョンの使用を含む。いくつかの実施形態において、本技術は、ウェブアプリケーションに関連付けられたコードを特徴付けるためのコード分析の使用を含む。いくつかの実施形態において、本技術は、ウェブアプリケーションUIの一つ以上の要素の属性の変更を、あるバージョンから別のバージョンへと特定するための、コンピュータビジョンの使用を含む。いくつかの実施形態において、本技術は、ウェブアプリケーションのあるバージョンから別のバージョンへのウェブアプリケーションに関連付けられたコードの変更を特定するためのコード分析の使用を含む。いくつかの実施形態において、本技術は、ウェブアプリケーションのあるバージョンから別のバージョンへの変更を特定するために、コンピュータビジョン及びコード分析の両方の使用を含む。
【0048】
いくつかの実施形態において、本技術は、大規模分散データベースに関連付けられた超並列コンピューティングシステム上で実行されるコンピュータソフトウェアにおいて実装される。いくつかの実施形態において、本技術は、クラウド技術を使用して実装される。いくつかの実施形態において、モデルは、単一のローカルマシン上で、又はクラウド環境内の一つ以上の仮想マシン上で生成され、評価される。
【0049】
〔ウェブアプリケーション〕
本明細書で説明するように、本技術は、UIを含むウェブアプリケーションのテストエラーの原因を特定することに関する。ウェブアプリケーションは、一つ以上のウェブページを含むことができる。ウェブアプリケーションは、データベースと通信することができる。
【0050】
いくつかの実施形態において、サーバコンピュータは、クライアント側でウェブアプリケーションを実行するウェブページに、ファイル、及び他のコンテンツをウェブブラウザに供給するサーバ側のウェブアプリケーションのためにコードを実行する。いくつかの実施形態において、クライアント側のアプリケーションは、ブラウザを使用せずに実行される。いくつかの実施形態において、ウェブアプリケーションは、コンピュータビジョンを使用することにより、及び/又はアクセス可能なソースコードの分析により、特定され、配置され、モニタされる要素を有する。例えばいくつかの実施形態において、一連のHTMLウェブページとしてクライアント側で実行するウェブアプリケーションは、特定可能な文書オブジェクトモデル(DOM)要素を含む。HTML DOMにおいて、要素オブジェクトは、HTML要素を表す。HTML要素オブジェクトは、子ノード(タイプエレメントノード、テキストノード、又はコメントノードなど)を有することができる。HTML要素オブジェクトは、属性を有することもできる。したがって、いくつかの実施形態において、コンピュータビジョン及び/又はソースコードの分析を使用して(例えば一意である特定子によって、及び/又はDOM内の相対的及び/又は絶対的位置によって、要素を参照及び/又は取り出すために)、DOM要素を特定し、配置し、モニタする、本明細書で提供される本技術の実施形態によって、DOM要素を配置し、モニタすることができる。
【0051】
いくつかの実施形態において、ウェブアプリケーションは、標準的なDOM要素を使用せずに、特定され、配置され、及びモニタ可能な要素を有する。例えば、これらの要素は、XMLファイル、JSONファイル、又はその他の独自のファイルタイプを使用して定義できる。したがって、いくつかの実施形態において、本技術は、コンピュータビジョン、及び/又はコンピュータソースコードの分析に基づいて、これらの要素を特定して、配置して、モニタするように構成された自動テストユーティリティに関する。ウェブアプリケーションが複数の画面又はページを有する実施形態において、各スクリーン又はページは、親要素内に含まれる要素を有する別のウェブ要素として定義されてもよい。
【0052】
〔テスト〕
いくつかの実施形態において、本技術は、ウェブアプリケーション、例えばウェブブラウザの自動化をテストするためのスクリプトを作成し、スクリプトを実行するツールを提供する自動化されたテストユーティリティを提供する。したがって、いくつかの実施形態において、各スクリプトは、ウェブブラウザ内で発生する少なくとも一つのアクション又はイベント(例えば要素との対話)を定義する。いくつかの実施形態において、自動化されたテストユーティリティは、ウェブブラウザのためのプラグインとして提供される。いくつかの実施形態において、自動化されたテストユーティリティは、ユーザ(例えば開発者、ソフトウェアエンジニア)が初めから多数のステップを含むスクリプトを書くことを、要求しない。いくつかの実施形態において、自動化されたテストユーティリティは、特定のアクション又はイベントを記録及び編集するための制御、スクリプトへのテスト特定のコマンドの追加を容易にする制御、及び/又は英語のフレーズをスクリプトステップに翻訳するための自然言語処理を実行する構成要素を含む。
【0053】
〔モニタリング構成要素〕
いくつかの実施形態において、本技術は、ウェブアプリケーションの変更をモニタする構成要素を含む。いくつかの実施形態において、自動化されたテストが実行されている間、モニタリング構成要素は、ウェブアプリケーションのスクリーンショットを取得し、記憶する。いくつかの実施形態において、自動化されたテストが行われている間、モニタリング構成要素は、一つ以上のスクリプト、自動化されたテストユーティリティ、及び/又はウェブアプリケーションからメタデータをキャプチャする。いくつかの実施形態において、本技術は、例えば外部プログラム、ブラウザのためのプラグイン、又は自動化されたテストユーティリティの拡張であるモニタリング構成要素を提供する。いくつかの実施形態において、モニタリング構成要素は、自動化されたテストユーティリティによって生成されたスクリーンショット及びデータをキャプチャする。いくつかの実施形態において、モニタリング構成要素は、テストされているアプリケーション又はアプリケーションを実行している環境(例えばウェブブラウザ)を直接モニタする。いくつかの実施形態において、モニタリング構成要素は、スクリーンショットとしてウェブページの写真を格納し、モニタリング構成要素は、スクリーンショットとしてキャプチャされたウェブページの写真に関連付けられたソースコードを格納する。いくつかの実施形態において、スタイルシート及び画像は、ソースコードと共に記録される。いくつかの実施形態において、モニタリング構成要素は、自動化されたテストユーティリティを実行し、ウェブアプリケーションのテスト中にスクリーンショットをキャプチャし、テストが実行されているコンテキストを記述するメタデータをキャプチャする。いくつかの実施形態において、メタデータは、特定の自動化されたテストに特有である(例えばメタデータは、特定の自動化されたテストの実行中に取得されたすべてのスクリーンショット(例えばテストスクリプトの名前、ウェブアプリケーションの名前など))に適用可能である。いくつかの実施形態において、メタデータは、自動化されたテストのステップ又は部分に特有である(例えばメタデータは、一つ以上の特定のスクリーンショットに適用可能である)。
【0054】
したがって、一つ又は複数の実施形態は、一連の命令を自動化されたテストユーティリティに提供するスクリプトを提供し、自動化されたテストユーティリティは、ウェブアプリケーションと対話する。自動化されたテストユーティリティによってスクリプトが実行されている間、モニタリング構成要素は、ウェブアプリケーションのUIのスクリーンショットをキャプチャする。いくつかの実施形態において、定義された基準が満たされたとき、例えばスクリプト内で一部の種類のステップが特定されたとき、一部の種類のアクション又はイベントがウェブアプリケーション内で発生したとき、又はそれらの組合せのとき、スクリーンキャプチャは、記録される。いくつかの実施形態において、自動化されたテストユーティリティによって処理される前、又はウェブアプリケーションのUIに表示された後、スクリーンキャプチャは、記録される。したがって、いくつかの実施形態において、モニタリング構成要素は、スクリプトを分析することにより、対話が行われる前に対話を追跡し、UIが変更する前にスクリーンキャプチャが発生する。いくつかの実施形態において、ウェブアプリケーションがシミュレートされたユーザによって取られたアクションに応答した後、モニタリング構成要素は、スクリーンキャプチャを記録する。画面キャプチャは、スクリプトで発生するアクション又はイベントを特定し、ウェブアプリケーションでアクションイベントが発生するのを待機しているモニタリング構成要素に関連して記録される(例えばUIの変更など)。
【0055】
いくつかの実施形態において、ユーザ(例えばスクリプト)アクションは、UIによって入力として受信されるクリックであり、スクリーンショット及び関連付けられたメタデータは、クリックの間に記録される。いくつかの実施形態において、ウェブアプリケーションイベント、例えば満たされるべき検証イベント、セットフラグ、変数、又は閾値条件が満たされたとき、DOM要素といった特定の要素の作成又は消去、サーバ側ウェブアプリケーションとクライアント側ウェブアプリケーションとの間の、いずれかの方向又は両方向での通信、データをデータベースに転送する前にユーザ入力が特定の最初の種類又は特定の長さであるといった内部検証機能、マルウェアのスキャンなどといったサブルーチン又は機能の正常な実行、又はそれらの任意の組み合わせの間、スクリーンショット及び関連付けられたメタデータは、記録される。いくつかの実施形態において、例えばページのロード、ブラウザ履歴での前のページのロード、ブラウザ履歴での次のページのロード、新しいブラウザでの新しいページのオープン、新しいタブでの新しいページのオープン、ページの保存、ページの印刷、ページのオープン、印刷プレビュースクリーンのオープン、ウェブブラウザでのテキストのサイズの変更、又はそれらの任意の組み合わせであるブラウザイベントの間、スクリーンショット及び関連付けられたメタデータは、記録される。いくつかの実施形態において、モニタリング構成要素は、電子メール又は印刷文書を、自動化されたテスト中に送信されたとき、記録する。いくつかの実施形態において、モニタリング構成要素は、ウェブアプリケーションのUIの一部ではないスクリーンショット、例えば確認メッセージ、通知(例えばSMSメッセージ、ソーシャルメディアを介して送信されるメッセージ、又は当技術分野で既知の他のメッセージングサービス)、及び/又はウェブアプリケーションの一部として第三者のソフトウェアを介して送信される外部認証機構又は電子メールを使用するウェブアプリケーションなどの他の外部ウェブアプリケーションとの対話から生じる通信を記録する。いくつかの実施形態において、スクリーンショットは、記録され、格納され、スクリーンショットの分析がグラフィカルモデルを構築するために使用される。モニタリング構成要素は、スクリーンショットの記録に加えて、キャプチャされたスクリーンショットに関連付けられたメタデータを記録する。いくつかの実施形態において、自動化されたテストの間にスクリーンショットが記録されている間、メタデータ(例えばスクリーンショットをキャプチャさせた対話、ページ上でクリックされた要素の位置及び寸法、クリックを受信したページのURL、及びクリックされているページにアクセスしたユーザのタイプ)がキャプチャされる。いくつかの実施形態において、メタデータは、スクリーンショットを生成するために使用されたウェブページのURL、現在のユーザ、ユーザ電子メール、ユーザタイプ(例えば特定の許可を有する、ベーシック、プロ、リターニング顧客)、アカウント番号、ユーザの国、ユーザIPアドレス、テスト中に記録されたスクリーンショットの数、スクリーンショットに対応するスクリプト内のステップ、又はページに適用された任意のフラグを含む。いくつかの実施形態において、メタデータは、例えばスクリプトの名前又は自動化されたテスト、スクリプトが最後に更新されたとき、現在のテストの時刻、スクリプト又は自動化されたテストのスクリプタ、テストされているウェブアプリケーションにアクセスする装置の実際の又はシミュレートされたGPS位置、アクセス中の日の時刻、又はそれらの任意の組合せを含む。
【0056】
〔コンピュータビジョン〕
いくつかの実施形態において、本技術は、ウェブアプリケーション(例えばウェブアプリケーションUI(例えばウェブアプリケーションUIのスクリーンショット))を分析するためのコンピュータビジョンの使用を含む。
【0057】
いくつかの実施形態において、本技術は、デジタル画像を取得し、処理し、分析し、理解するためにコンピュータビジョンを使用することを含む。本明細書で使用される用語「理解する」は、視覚画像を、データベース、データ構造(例えばグラフィカルモデル)に格納し、及び/又は後続の分析によって使用される画像の説明に変換することを指す。いくつかの実施形態において、理解することは、幾何学、物理学、統計学、及び学習理論に基づいたモデルを使用して、画像データから情報を生成することを含む。いくつかの実施形態において、コンピュータビジョンは、ウェブアプリケーションUI内の要素の有無を決定し、ウェブアプリケーションUI内の要素のサイズ及び/又は位置を決定し、及び/又はウェブアプリケーションUI内の要素の他の属性を決定するために使用される。いくつかの実施形態において、コンピュータビジョンは、例えばウェブアプリケーションUIのコンピュータビジョン分析によって決定された属性に基づいて、要素を認識し(例えば特定し)、要素を分類する。いくつかの実施形態において、コンピュータビジョンは、畳み込みニューラルネットワークを生成するための技術の使用を含む。いくつかの実施形態において、コンピュータビジョンは、ウェブアプリケーションUIの複数のバージョン(例えば1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95、100、又はそれ以上のバージョン)の要素の属性の変更を特定することを含む。
【0058】
いくつかの実施形態において、本技術は、コンピュータビジョンを用いてウェブアプリケーションUIを点検及び/又は検証する。いくつかの実施形態において、文書テンプレート検証(DTV:document template validation)技術は、テキストボックス検出(TBD:text box detection)構成要素、文字認識(OCR:character recognition)構成要素、要素検出(ED:element detection)構成要素、レイアウト検出(LD:layout detection)構成要素、及び/又はテンプレート検証(TV:template validation)構成要素を含む。いくつかの実施形態において、本技術は、文書テンプレート検証(DTV:document template validation)を実行するステップを含む方法を提供し、例えばテキストボックスを検出し、文字(例えばテキスト文字)を認識し、要素を検出し、レイアウトを検出し、及び/又はテンプレートを検証することを含む方法を提供する。いくつかの実施形態において、本技術は、テキストボックス検出、文字認識、要素検出、レイアウト検出、及び/又はテンプレート検証を実行するように構成されたモジュール及び/又は構成要素を含むシステムを提供する。例えば
図4を参照してほしい。いくつかの実施形態において、システム実施形態の構成要素は、例えば
図4に示すように、システムアーキテクチャに従って対話する(例えば通信し、データ及び/又は命令を送信する)。例えば、いくつかの実施形態において、TBD構成要素は、LD構成要素及び/又はOCR構成要素と対話し、ED構成要素は、LD構成要素と対話し、OCR構成要素及び/又はLD構成要素は、TV構成要素と対話する。いくつかの実施形態において、通信フローは、例えば、
図4に示すように、一方向である。例えば、いくつかの実施形態において、データ及び/又は命令は、TBD構成要素からLD構成要素及び/又はOCR構成要素に通信され、データ及び/又は命令はED構成要素からLD構成要素に通信され、データ及び/又は命令は、OCR構成要素及び/又はLD構成要素からTV構成要素に通信される。いくつかの実施形態において、データ及び/又は命令は、本明細書で説明されるシステムアーキテクチャに従って、これらの構成要素間で双方向に移動する。いくつかの実施形態において、各構成要素(例えばテキストボックス検出(TBD)構成要素、文字認識(OCR)構成要素、要素検出(ED)構成要素、レイアウト検出(LD)構成要素、及び/又はテンプレート検証(TV)構成要素)は、システムアーキテクチャに従って、別の構成要素から情報及び/又はデータを提供及び/又は受信するように構成される。
【0059】
いくつかの実施形態において、各モジュールは、その機能を実行するために機械学習及び/又は深層学習を実行するように構成される。例えば、いくつかの実施形態において、文書テンプレート検証(DTV)技術は、機械学習及び/又は深層学習を使用してテキストボックスを検出することを含む方法を実行するように構成されたテキストボックス検出(TBD)構成要素、機械学習及び/又は深層学習を使用して文字を認識することを含む方法を実行するように構成された文字認識(OCR)構成要素、機械学習及び/又は深層学習を使用して要素を検出することを含む方法を実行するように構成された要素検出(ED)構成要素、機械学習及び/又は深層学習を使用してレイアウトを検出することを含む方法を実行するように構成されたレイアウト検出(LD)構成要素、及び/又は機械学習及び/又は深層学習を使用してテンプレートを検証することを含む方法を実行するように構成されたテンプレート検証(TV)構成要素を備える。
【0060】
いくつかの実施形態において、本技術は、ウェブアプリケーションUI上のテキストボックスを検出するためのシステム及び方法を提供する。いくつかの実施形態において、テキストボックスを検出することは、ウェブアプリケーションUI上のテキストボックスの位置及び/又は寸法を特定することを含む。いくつかの実施形態において、テキストボックスを検出することは、ウェブアプリケーションUI上のテキストボックスの位置(例えばテキストボックスを含むウィンドウ又は要素に対するx-yスクリーン座標及び/又はx-y座標)及び/又は寸法(例えば高さ及び幅)を記述する値を生成することを含む。いくつかの実施形態において、ウェブアプリケーションUI上のテキストボックスの位置及び寸法を記述するテキストボックス及び/又は値は、文字認識モジュールに渡される。
【0061】
いくつかの実施形態において、テキストボックスを検出することは、画像(例えばスクリーン画像)内のテキストを検出するためにニューラルネットワークを提供すること、及び/又は使用することを含む。いくつかの実施形態において、テキストを検出するように構成された構成要素は、画像(例えばスクリーン画像)内のテキストを検出するためにニューラルネットワークを使用するように構成される。いくつかの実施形態において、本明細書で提供される技術は、参照によりBaek(2019)「Character Region Awareness for Text Detection」arXiv:1904.01941[cs.CV]に記載されるようなニューラルネットワークを含むことが、本明細書に組み込まれる。いくつかの実施形態において、ニューラルネットワークは、バッチ正規化を用いるVGG-16に基づく中央畳み込みアーキテクチャを備える(例えば参照により本明細書に組み込まれるSimonyan(2018)「Very Deep Convolutional Networks for Large-Scale Image Recognition」arXiv:1409.1556[cs.CV]を参照されたい)。いくつかの実施形態において、ニューラルネットワークは、スキップ接続(例えばスキップ接続を含むニューラルネットワークの構成要素の復号)を含む。いくつかの実施形態において、スキップ接続は、U-net(例えばRonneberger(2015)「U-Net:Convolutional Networks for Biomedical Image Segmentation」arXiv:1505.04597[cs.CV]を参照されたい)に類似している。いくつかの実施形態において、(例えばニューラルネットワークを含んでいる)テキストボックス検出のための方法及び/又はシステムは、スコアマップとして二つのチャンネルを含む出力を生成する:1)画像内の個々の文字をローカライズするために使用される領域スコア;及び2)各文字を単一のインスタンスにグループ化するために使用される類似性スコア。実施例1を参照して欲しい。
【0062】
いくつかの実施形態において、本技術は、ウェブアプリケーションUI上の要素を検出するための方法及びシステムを提供する。いくつかの実施形態において、ウェブアプリケーションUI上の要素を検出するための方法は、テキストボックスをグループ化し、テキストカテゴリにないオブジェクト(テキストカテゴリにないオブジェクト(例えばボタン、入力ボックス、アイコンなど))を検出することを含む。いくつかの実施形態において、ウェブアプリケーション上の要素を検出するためのシステムは、テキストボックスをグループ化するように構成された構成要素、及びテキストカテゴリにないオブジェクト(例えばボタン、入力ボックス、アイコンなど)を検出するように構成された構成要素を含む。いくつかの実施形態において、要素検出のための方法は、グループ化されたテキストボックスを含むテキストボックス及び/又は要素を検出することを含む。いくつかの実施形態において、要素検出のための方法は、オブジェクト(例えばテキストボックスでないオブジェクト)を検出することを含む。いくつかの実施形態において、要素検出のためのシステムは、グループ化されたテキストボックスを含むテキストボックス及び/又は要素を検出するように構成された構成要素を含む。いくつかの実施形態において、要素検出のためのシステムは、オブジェクト(例えば、テキストボックスでないオブジェクト)を検出するように構成された構成要素を含む。
【0063】
いくつかの実施形態において、要素を検出することは、ウェブアプリケーションUI上の要素の位置及び/又は寸法を特定することを含む。いくつかの実施形態において、要素を検出することは、ウェブアプリケーションUI上の要素の位置(例えば要素を含むウィンドウ又は要素に対するx-yスクリーン座標及び/又はx-y座標)及び/又は寸法(例えば高さ及び幅)を記述する値を生成することを含む。いくつかの実施形態において、ウェブアプリケーションUI上の要素の位置及び寸法を記述する要素及び/又は値は、文字認識モジュールに渡される。
【0064】
いくつかの実施形態において、UIの要素は、グループ化されたテキストボックスを含む。いくつかの実施形態において、本技術は、ベクトルu=(x、y、w、h)によってテキストボックスを表し、ここで、x及びyは、文書スクリーンショット又はビューポート内のピクセル位置を表し、w及びhは、ボックスの幅及び高さを表す。いくつかの実施形態において、テキストボックス間の距離は、決定される。いくつかの実施形態において、テキストボックス間の距離は、ソフトウェアにおける符号化された関数によって実行される方法を使用して決定される。いくつかの実施形態において、テキストボックス間の距離は、以下のように符号化された関数を使用して決定される:
【0065】
【0066】
ここで、この関数におけるu及びvは、要素がu=(x、y、w、h)のように定義された要素の二つのベクトルである。いくつかの実施形態において、テキストボックス間の距離は、テキストボックスをグループ化し、テキストボックスのクラスタを出力する密度ベースのクラスタリングのための方法に提供される(例えば
図6及び
図7を参照して欲しい)。いくつかの実施形態において、テキストボックスをグループ化する密度ベースのクラスタリングは、例えば、要素を特定するためのテキストボックスのクラスタを生成する。実施例2を参照して欲しい。
【0067】
いくつかの実施形態において、本技術は、ウェブアプリケーションUI上のオブジェクトを検出するための方法及びシステムを提供する。いくつかの実施形態において、要素検出のための方法は、オブジェクト検出のステップを含む。いくつかの実施形態において、オブジェクトを検出することは、ウェブアプリケーションUI上のオブジェクトの位置及び/又は寸法を特定することを含む。いくつかの実施形態において、オブジェクトを検出することは、ウェブアプリケーションUI上のオブジェクトの位置(例えばオブジェクトを含むウィンドウ又は要素に対するx-yスクリーン座標及び/又はx-y座標)及び/又は寸法(例えば高さ及び幅)を記述する値を生成することを含む。いくつかの実施形態において、ウェブアプリケーションUI上のオブジェクトの位置及び寸法を記述するオブジェクト及び/又は値は、文字認識モジュールに渡される。いくつかの実施形態において、要素を検出するように構成された構成要素を含むシステムは、オブジェクトを検出するように構成されたサブの構成要素を含む。いくつかの実施形態において、ウェブアプリケーションUI上のオブジェクトを検出するための方法は、YOLOニューラルネットワークを提供及び/又は使用することを含む。いくつかの実施形態において、ウェブアプリケーションUI上のオブジェクトを検出するためのシステムは、YOLOニューラルネットワークを含む(例えばRedmon(2015)「You Only Look Once:Unified、Real-Time Object Detection」arXiv:1506.02640[cs.CV];Redmon(2016)「YOLO9000:Better、Faster、Stronger」arXiv:1612.08242[cs.CV];及びRedmon(2018)「YOLOv3:An Incremental Improvement」arXiv:1804.02767[cs.CV]を参照し、それらの各々は、参考として本明細書に組み込まれる)。いくつかの実施形態において、ニューラルネットワークは、非テキストオブジェクト、例えばアイコン、ボタン、及び/又は正方形の入力ボックスを特定するようにトレーニングされる。いくつかの実施形態において、ニューラルネットワークは、アイコンのデータセットを用いてトレーニングされたアイコン分類器を含む。いくつかの実施形態において、アイコン分類器は、カートアイコン、矢印アイコン、オープンファイルアイコン、セーブファイルアイコン、ログインアイコン、チェックアイコン、箇条書きアイコン、及び/又はクローズアイコンとしてアイコンを特定及び/又は分類する。いくつかの実施形態において、実施例3を参照して欲しい。
【0068】
〔コード分析〕
いくつかの実施形態において、本技術は、コンピュータソフトウェア(例えばウェブアプリケーションに関連付けられたソースコード及び/又はオブジェクトコード)を分析することを含む。いくつかの実施形態において、本技術は、ウェブアプリケーションを実行することなく、ソースコード及び/又はオブジェクトコードを分析することを含む。いくつかの実施形態において、本技術は、ウェブアプリケーションが実行している間、ソースコード及び/又はオブジェクトコードを分析することを含む。いくつかの実施形態において、自然言語処理は、ソース及び/又はオブジェクトコードを分析し、アクションを特定し、ユーザインターフェース要素と関連付けるために使用される(例えばコンピュータビジョン及び/又はソースコードの分析によって特定される)。
【0069】
〔グラフィックモデル、グラフィックモデル比較、及び確率論的グラフィックモデル〕
1つ又は複数の実施形態は、ウェブアプリケーションの要素のグラフィカルモデルを生成するための技術を提供する。いくつかの実施形態において、グラフィカルモデルは、ウェブアプリケーションの要素間の関係を含む。例えばいくつかの実施形態において、グラフィカルモデルは、ウェブアプリケーションUIの要素の相対位置のマップを含む。いくつかの実施形態において、グラフィカルモデルは、グラフィカルモデル内の要素の属性(例えば位置、タイプ、状態、色、サイズ、形状など)を記述する情報(例えばデータ)を含む。いくつかの実施形態において、本技術は、ウェブアプリケーションをモニタし、ウェブアプリケーションのためのグラフィカルモデルにおける変更を特定する。例えば、ウェブアプリケーションのUI上のボタンの位置を変更は、UIを記述するグラフィカルモデルの変更を生じる。したがって、いくつかの実施形態において、本技術は、ウェブアプリケーションの第2のバージョンを記述する第2のグラフィカルモデルに関連したウェブアプリケーションの第1のバージョンを記述する第1のグラフィカルモデルにおける変更を特定する。いくつかの実施形態において、本技術は、他の変更と相関するグラフィカルモデルの変更を特定する。例えばいくつかの実施形態において、グラフィカルモデルの分析は、グラフィカルモデルにおける第1の変更がグラフィカルモデルにおける第3の変更と共に(例えば計算された第2の確率を用いて)生じるよりも頻繁に、グラフィカルモデルにおける第2の変更と共に(例えば計算された第1の確率を用いて)生じるグラフィカルモデルにおける第1の変更を特定する。いくつかの実施形態において、グラフィカルモデルの変更は、コンピュータビジョンを使用して特定される。いくつかの実施形態において、ソースコードの変更は、分析される。いくつかの実施形態において、グラフィカルモデルの変更は、コンピュータビジョンを用いて特定され、ソースコードの変更が分析される。
【0070】
いくつかの実施形態において、モニタリング構成要素は、トリガアクション又はイベントを含むスクリプト内のステップを特定し、モニタリング構成要素は、トリガアクション又はイベントに関連付けられたそのステップ内のオブジェクト(例えば要素)を特定する。いくつかの実施形態において、要素がウェブアプリケーションUI内で見えることを示す属性を有することをソースコードの分析が示す、及び/又はスクリーンショットの分析によって(例えばコンピュータビジョンによって)見えるものとして要素が検出される場合、ウェブアプリケーション内の要素の位置は、記録される。いくつかの実施形態において、要素のサイズデータも、またキャプチャされる。オブジェクトが見えない場合、要素のデータ(例えば属性)は、依然としてキャプチャされ得る。いくつかの実施形態において、要素の属性(例えば状態、位置、及びサイズ)は、自動化されたテストユーティリティによって記録される。いくつかの実施形態において、モニタリング構成要素は、対応するスクリプトからアクション又はイベントをトリガする要素を特定し、次に、特定された要素の名前又は別の要素との関係に基づいて、自動化されたテストユーティリティが特定された要素の位置を生成することを要求する。いくつかの実施形態において、要素の位置は、ブラウザディスプレイの左上隅からのピクセルの数(例えばスクリーンをx値、y値として記述する座標系を使用する)である。いくつかの実施形態において、要素の位置は、UIから撮られたスクリーンショットにマッピングされる。いくつかの実施形態において、データは、本明細書に記載されるようなグラフィカルモデルに格納される。
【0071】
いくつかの実施形態において、モニタリング構成要素は、特定された可視の要素の親要素を分析し、可視の要素が別の可視の要素内に含まれるかどうかを決定する。例えば、いくつかの実施形態において、要素の関連位置は、親要素内の位置、例えば親要素の左上隅に対する要素の位置であり、ウェブブラウザ画面に対する要素の位置ではない。したがって、いくつかの実施形態において、本技術は、「スクリーン内のスクリーン」効果の位置を調整することを含む、要素位置を決定するための方法を提供し、例えば、モニタリング構成要素は、可視の要素が親要素内に提供されることを示すために可視の要素に作用するスクリプトステップを分析する。別の要素内に提供される要素を特定すると、モニタリング構成要素は、子要素の位置に加えて、親要素の相対位置を自動化されたテストユーティリティに要求する。いくつかの実施形態において、親要素の相対位置は、子要素の実際の位置を決定するために、子要素の相対位置と組み合わされる。例えば、親要素のx値は、その親要素内にある子要素のx値に追加することができる。同様に、親要素のy値は、子要素のy値に追加してもよい。このプロシージャは、複数の親要素(例えばブラウザ内の要素内の要素)の深さである子要素に対して再帰的に実行されることがある。いくつかの実施形態において、可視の要素の位置及びサイズデータは、例えば同様の色のピクセルのグループを特定し、それらのピクセルを単一の可視の要素として関連付けることによりエッジ検出を行うように構成されたコンピュータビジョン及び画像分析を使用して、エッジ検出を行った後にキャプチャされる。いくつかの実施形態において、要素の位置及びサイズデータは、次いで、モニタリング構成要素によってキャプチャされる。したがって、本技術の実施形態は、ブラウザによって提供及び/又はアクセスされないウェブアプリケーションのための使用を発見する。いくつかの実施形態において、モニタリング構成要素は、ウェブアプリケーションのソースコードを分析することに基づいて、要素の相対位置を特定する。いくつかの実施形態において、ウェブアプリケーションの要素は、UI内に可視の要素を提供することが分かっている要素及びそれらの属性の名前及び位置を特定するキーワードについてソースコードを分析することによって特定され、要素の相対位置は、記録される適切なスクリーンショットにマッピングされる。
【0072】
上述したように、コンピュータビジョン及び/又はソースコードの分析によって特定される要素は、グラフィカルモデルに記録される。更に、要素、要素属性データ、及び/又はメタデータの位置(例えば相対位置)は、グラフィカルモデルに記録される。
【0073】
いくつかの実施形態において、本技術は、記録されたスクリーンショットを分析するためのコンピュータビジョンの使用、UI内の要素を特定するためのコード分析の使用、及びウェブアプリケーションUIのグラフィカルモデルを作成するためのスクリーンショットに関連して記録されたメタデータの使用を含む。
【0074】
いくつかの実施形態において、本技術は、本明細書に提供される本技術のユーザによる検査のために、UIのスクリーンショット上に、例えば強調表示された領域の注釈を生成する。いくつかの実施形態において、本技術は、スクリーンショットを分析するため、及び/又は注釈付きスクリーンショットを生成するために、コンピュータビジョンを使用することを含む。いくつかの実施形態において、強調表示された領域は、特定の形状(例えば長方形、楕円形、正方形、円形、又は雲形)又は色(例えば赤、黄、青、緑、紫、ピンク、オレンジ、又は灰色)を使用して提供される。いくつかの実施形態において、特定の形状及び/又は色は、本明細書で提供される本技術によって特定される要素のタイプ及び/又は要素の変更のタイプに関して、本明細書で提供される本技術のユーザに情報を提供する。例えば、いくつかの実施形態において、ユーザ入力を示す強調表示された色又は形状は、ウェブアプリケーションイベントの発生を示す色又は形状とは異なる強調表示された色又は形状である。いくつかの実施形態において、注釈は、ユーザアクションとウェブアプリケーションイベント(例えばグレイスケールで提示されるデータ)に対して同じ色で提供され、要素の変更は、ユーザ入力アクションを示す注釈とウェブアプリケーションイベントに対して異なる形状、テクスチャ、又はアイコンによって示される。いくつかの実施形態において、テキスト、シンボル、サウンド、アニメーション、振動、又は当技術分野で知られている他の形式の出力を使用し、区別が提供される。
【0075】
〔比較構成要素〕
いくつかの実施形態において、本技術は、比較構成要素を含む。いくつかの実施形態において、比較構成要素は、入力として第1のグラフィカルモデル及び第2のグラフィカルモデルを受け入れ、出力としてグラフィカルモデル差モデルを生成する。グラフィカルモデル差モデルは、第1のグラフィカルモデル及び第2のグラフィカルモデルから変更した属性を有する要素を特定する要素差エントリを含む。いくつかの実施形態において、グラフィカルモデル差モデルは、第1のグラフィカルモデル及び第2のグラフィカルモデルから変更していない属性を有する要素を特定する要素同一エントリを含む。したがって、いくつかの実施形態において、グラフィカルモデル差モデルは、第1のグラフィカルモデル及び第2のグラフィカルモデルから変更された、いくつかの属性を有し、第1のグラフィカルモデル及び第2のグラフィカルモデルから変更されていない、いくつかの属性を有する要素を特定するエントリを含む。いくつかの実施形態において、ウェブアプリケーションUIの複数のバージョンを記述する複数のグラフィカルモデルは、比較され、差は、特定される。いくつかの実施形態において、確率論的モデル(例えば隠れマルコフモデル)を使用して、複数のグラフィカルモデルの比較に基づいて、スクリーンの要素及び/又は領域の変更の確率を割り当てる。
【0076】
したがって、いくつかの実施形態において、本技術は、グラフィカルモデルを生成するように構成されたグラフィカルモデリング構成要素、及びグラフィカルモデル比較構成要素を含む。いくつかの実施形態において、グラフィカルモデリング構成要素は、バージョンN(例えば「アプリケーション vN」)を有するウェブアプリケーション(例えばUIを含む)を受け入れ、vNグラフィカルモデルを作成する。いくつかの実施形態において、グラフィカルモデリング構成要素は、バージョンN+1(例えば「アプリケーション vN+1」)を有するウェブアプリケーション(例えばUIを含む)を受け入れ、vN+1グラフィカルモデルを作成する。いくつかの実施形態において、グラフィカルモデル比較構成要素は、グラフィカルモデル差モデルを生成するために、vNグラフィカルモデル及びvN+1グラフィカルモデルを受け入れる。いくつかの実施形態において、vNグラフィカルモデルは、ウェブアプリケーションの第1のバージョンのモデルであり、vN+1グラフィカルモデルは、ウェブアプリケーションの後続のバージョンのモデルである。
【0077】
いくつかの実施形態において、グラフィカルモデリング構成要素は、バージョン番号N、N+1、...、N+X(例えば「アプリケーションvN」、「アプリケーションvN+1」、...、「アプリケーションvN+X」)を有する(例えばUIを含む)ウェブアプリケーションの複数のバージョンを受け入れ、vNグラフィカルモデル、vN+1グラフィカルモデル、...、及びvN+Xグラフィカルモデルを作成する。いくつかの実施形態において、グラフィカルモデル比較構成要素は、グラフィカルモデル差モデルを生成するために、vNグラフィカルモデル、vN+1グラフィカルモデル、...、及びvN+Xグラフィカルモデルを受け入れる。
【0078】
いくつかの実施形態において、確率論的モデルを使用して、グラフィカルモデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する確率が高い要素を特定する。いくつかの実施形態において、確率論的モデルを使用して、グラフィカルモデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する確率が高い画面、ページ、ウィンドウ、及び/又は親要素の領域を特定する。いくつかの実施形態において、確率論的モデルを使用して、グラフィカルモデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する要素の確率に従って要素をランク付けする。いくつかの実施形態において、確率論的モデルを使用して、グラフィカルモデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する確率が高い画面、ページ、ウィンドウ、及び/又は親要素の領域をランク付けする。いくつかの実施形態において、要素のランク付けされたリストは、失敗したソフトウェアテストの可能性のある原因のユーザに出力を提供するために使用される。いくつかの実施形態において、要素のランク付けされたリストは、ソフトウェア失敗の自律的な特定により修正する問題を特定するために使用される。いくつかの実施形態において、要素のランク付けされたリストは、ソフトウェア失敗の自律的な修復により修正するための問題を特定するために使用される。
【0079】
いくつかの実施形態において、本技術は、ウェブアプリケーションUI上の要素の属性を記述する属性モデルを生成することを含む。いくつかの実施形態において、本技術は、ウェブアプリケーションUIの複数のバージョン(例えば第1のバージョン、第2のバージョン、...)のための複数の属性モデル(例えば第1の属性モデル、第2の属性モデル、...)を生成することを含む。いくつかの実施形態において、比較構成要素は、入力として第1の属性モデル及び第2の属性モデルを受け入れ、出力として属性モデル差モデルを生成する。属性モデル差モデルは、第1の属性モデル及び第2の属性モデルから変更した属性を有する要素を特定する要素差エントリを含む。いくつかの実施形態において、属性モデル差モデルは、第1の属性モデル及び第2の属性モデルから変更されていない属性を有する要素を特定する要素同一エントリを含む。したがって、いくつかの実施形態において、属性モデル差モデルは、第1の属性モデル及び第2の属性モデルから変更された、いくつかの属性を有し、第1の属性モデル及び第2の属性モデルから変更されていない、いくつかの属性を有する要素を特定するエントリを含む。いくつかの実施形態において、ウェブアプリケーションUIの複数のバージョンを記述する複数の属性モデルは、比較され、差は、特定される。いくつかの実施形態において、確率論的モデル(例えば隠れマルコフモデル)を使用して、複数の属性モデルの比較に基づいて、画面の要素及び/又は領域の変更の確率を割り当てる。
【0080】
したがって、いくつかの実施形態において、本技術は、属性モデルを生成するように構成された属性モデリング構成要素、及び属性モデル比較構成要素を含む。いくつかの実施形態において、属性モデリング構成要素は、バージョンN(例えば「アプリケーション vN」)を有するウェブアプリケーション(例えばUIを含む)を受け入れ、vN属性モデルを作成する。いくつかの実施形態において、属性モデリング構成要素は、バージョンN+1(例えば「アプリケーション vN+1」)を有するウェブアプリケーション(例えばUIを含む)を受け入れ、vN+1属性モデルを作成する。いくつかの実施形態において、属性モデル比較構成要素は、vN属性モデル及びvN+1属性モデルを受け入れ、属性モデル差モデルを生成する。いくつかの実施形態において、vN属性モデルは、ウェブアプリケーションの第1のバージョンのモデルであり、vN+1属性モデルは、ウェブアプリケーションの後続バージョンのモデルである。
【0081】
いくつかの実施形態において、属性モデリング構成要素は、バージョン番号N、N+1、N+X(例えば「アプリケーション vN」、「アプリケーション vN+1」、...、「アプリケーション vN+X」)を有するウェブアプリケーション(例えばUIを含む)の複数のバージョンを受け入れ、vN属性モデル、vN+1属性モデル、...、及びvN+X属性モデルを生成する。いくつかの実施形態において、属性モデル比較構成要素は、vN属性モデル、vN+1属性モデル、...、及びvN+X属性モデルを受け入れ、属性モデル差モデルを生成する。
【0082】
いくつかの実施形態において、確率論的モデルを使用し、属性モデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する高い確率を有する要素を特定する。いくつかの実施形態において、確率論的モデルを使用し、属性モデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する確率が高い画面、ページ、ウィンドウ、及び/又は親要素の領域を特定する。いくつかの実施形態において、確率論的モデルを使用し、属性モデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する要素の確率に従って要素をランク付けする。いくつかの実施形態において、確率論的モデルを使用し、属性モデル差モデルを分析し、ウェブアプリケーションのバージョン間で変更する確率が高い画面、ページ、ウィンドウ、及び/又は親要素の領域をランク付けする。いくつかの実施形態において、要素のランク付けされたリストは、失敗したソフトウェアテストの可能性のある原因のユーザに出力を提供するために使用される。いくつかの実施形態において、要素のランク付けされたリストは、ソフトウェア失敗の自律的な特定によって修正する問題を特定するために使用される。いくつかの実施形態において、要素のランク付けされたリストは、ソフトウェア失敗の自律的な修復によって修正するための問題を特定するために使用される。
【0083】
いくつかの実施形態において、比較は、ウェブアプリケーションUIのバージョン間の差を特定するために(例えばモデル間の差(例えばUIのバージョンを記述するグラフィカルモデル及び/又は属性モデル)を特定することにより)、確率論的モデルを使用して実行される。いくつかの実施形態において、比較構成要素は、確率論的モデルを提供及び/又は評価し、確率論的モデルに対する入力を受け入れ、及び/又は確率論的モデルからの出力を生成するように構成される。いくつかの実施形態において、確率論的モデルは、統計的仮定、データに関連付けられた変数、ルール、及び/又は重みのペアの間の数学的関係、及び/又は数学的関係及び/又は仮定を含む統計モデルである。いくつかの実施形態において、確率論的モデルは、統計的仮定、データ及び/又は数学的関係及び/又は仮定に関連する変数、規則、及び/又は重みのペアの間の数学的関係を入力として受け取る統計モデルである。いくつかの実施形態において、確率論的モデルは、トレーニングセットデータを受信し、トレーニングセットデータを特徴付けるモデルを生成し、トレーニングセットデータを特徴付けるモデルを評価することにより、データ及び/又は数学的関係及び/又は仮定に関連する変数、規則、及び/又は重みのペアの間の統計的仮定、数学的関係、及び/又は重みを特定及び/又は生成する統計モデルである。いくつかの実施形態において、確率論的モデルは、テストステップが失敗したソフトウェアテストの根本原因である確率を出力し、アクションによって作用されたテスト要素は、失敗したソフトウェアテストの根本原因である可能性などを出力する。いくつかの実施形態において、確率論的モデルは、隠れマルコフモデルである(例えばモデルは、モデルがマルコフシステムを記述すると仮定する)。例えば、Baum(1966)「Statistical Inference for Probabilistic Functions of Finite State Markov Chains」(The Annals of Mathematical Statistics 37:1554-63)、Baum(1967)「An inequality with applications to statistical estimation for probabilistic functions of Markov processes and to a model for ecology」(Bulletin of the American Mathematical Society 73:360)、Baum(1968)、「Growth transformations for functions on manifolds」(Pacific Journal of Mathematics 27:211-27)、Baum(1970)「A Maximization Technique Occurring in the Statistical Analysis of Probabilistic Functions of Markov Chains」(The Annals of Mathematical Statistics 41:164-71)、及びBaum(1972)「An Inequality and Associated Maximization Technique in Statistical Estimation of Probabilistic Function of a Markov Process」(Inequalities 3:1-8)を参照し、それらの各々は、参照として本明細書に組み込まれる。いくつかの実施態様において、確率論的モデルは、条件付き確率場の使用を含む。いくつかの実施態様において、確率論的モデルは、マルコフランダムフィールドの使用を含む。例えば、Kindermann(1980)「Markov Random Fields and Their Applications」(Contemporary Mathematics,1、American Mathematical Society、Providence、R.I.)、Li(2009)「Markov Random Field Modeling in Image Analysis.」(Springer、3rd ed(編集者Sameer Singh))、及びLauritzen(1996)「Graphical models」(Oxford、Clarendon Press、page 33ページ以降)を参照し、これらの各々は、参照として本明細書中に組み込まれる。
【0084】
〔根本原因の特定〕
いくつかの実施形態において、失敗したソフトウェアテストは、失敗したテストの根本原因である可能性に関連付けられた提案されたアクション(例えばテストステップ)を提供するスクリプトを実行するようにトリガする。いくつかの実施形態において、テスト失敗の確率を個々のアクションに割り当てることは、ウェブアプリケーションのバージョン間の各アクションに対する要素属性値の変更を定量化することを含む。いくつかの実施形態において、全ての属性に対して等しい重みが割り当てられる。いくつかの実施形態において、例えば、バージョンからバージョンに変更されたとき、属性は、(例えば知識(例えばデータ、統計、ルール)に基づいて)頻繁にソフトウェアテスト失敗を引き起こす属性に、(例えば知識(例えばデータ、統計、ルール)に基づいて)あまり頻繁には起こらないソフトウェアテスト失敗を引き起こす属性よりも、より多くの重みを割り当てられる。いくつかの実施形態において、本技術は、ニューラルネット及び/又は決定木モデルを含み、ニューラルネット及び/又は決定木モデルは、(例えばトレーニングセットを評価することによって、及び/又は機械学習を使用することによって、決定されるように)ソフトウェアテストの失敗の原因である属性の可能性に応じて、属性及び/又は属性グループに割り当てるための重みを学習する。その上、いくつかの実施形態において、ニューラルネット及び/又は決定木モデルは、例えば、空間又は時間における失敗したアクションに対するテストステップアクションの近さ、アクションのタイプ、要素のタイプ、失敗のタイプといったデータを使用し、属性及び/又は属性グループに重みを割り当てる。
【0085】
いくつかの実施形態において、アクションは、一つ以上の属性を有する要素に対して実行される。したがって、本明細書で提供される本技術の実施形態は、(例えばモデルに対する入力特徴の一定数を維持するために)属性を属性カテゴリにグループ化する。いくつかの実施形態において、カテゴリは、テキスト、値、要素、位置(例えば選択された要素のx、y座標、及び親、子、兄弟要素)、CSS(例えば「c_」がプレフィックスされた全てのCSS属性)、セレクタ(例えばXpath及びSelector属性)、親(例えばx、y座標以外の全ての親要素属性)、子(例えばx、y座標以外の全ての子要素属性)、兄弟(例えばx、y座標以外の全ての兄弟要素属性)、その他の属性(例えばクラス、id、hrefといったHTML属性)、及びその他(先行するリストにないもの)である。
【0086】
いくつかの実施形態において、スコアは、安定性に基づいて各属性カテゴリに割り当てられる。例えば属性が非常に安定しており(例えばウェブアプリケーションバージョン間で変更し、ソフトウェアテストエラーを引き起こす確率が低い)、失敗したテストが低い確率の値を有する場合、属性は、高いスコアを受け取る。いくつかの実施形態において、ニューラルネット及び/又は決定木モデルは、属性について「変更度スコア」を使用する。例えば、数値属性は、ウェブアプリケーションの複数のバージョンでソフトウェアテストを実行することから得られた数値属性の複数(例えば複数及び/又は全て)の値から計算された平均及び標準偏差を割り当てられ、失敗したテストからの値は、平均値からの標準偏差の数を決定するために比較される。いくつかの実施形態において、レーベンシュタイン(Levenshtein)距離は、テキスト値に使用される。したがって、テキスト属性は、平均レーベンシュタイン距離が割り当てられ、ウェブアプリケーションの複数のバージョンに対するソフトウェアテストの実行から得られたテキスト属性の複数(例えば複数及び/又は全て)のレーベンシュタイン距離から計算された標準偏差と失敗したテストからのレーベンシュタイン距離とが比較され、平均レーベンシュタイン距離からの標準偏差のレーベンシュタイン距離の数が決定される。
【0087】
いくつかの実施形態において、各カテゴリは、そのカテゴリ内にあるウェブアプリケーションの要素の全ての値の平均である全体スコアを割り当てられる。いくつかの実施形態において、平均は、ニューラルネットワーク及び/又は決定木モデルに提供される。いくつかの実施形態において、標準偏差は、例えば各カテゴリ内のスコアの構造に関する情報を提供するために、ニューラルネットワーク及び/又は決定木モデルに提供される。
【0088】
いくつかの実施形態において、ニューラルネットワーク及び/又は決定木モデルは、入力として、ソフトウェアテストの各ステップ(例えばアクション)に、各ステップがテスト失敗の原因である可能性を割り当てるために使用される一つ以上の追加の入力を受信する。いくつかの実施形態において、ニューラルネットワーク及び/又は決定木モデルは、各テストステップと失敗を引き起こしたステップとの間のステップ数を記述する値を入力として受け取る(例えば失敗を引き起こしたステップに近いステップは、失敗を引き起こしたステップから遠いステップよりも失敗の原因である可能性が高いと考えられる)。いくつかの実施形態において、ニューラルネットワーク及び/又は決定木モデルは、入力として、ソフトウェアテストが失敗した場所(例えば同じページイントセグメントにあるアクションは、根本原因である可能性がより高い)と同じページイントセグメントにおいてアクションが発生したか、又は発生しなかったことを示すブーリアン値を受信する。いくつかの実施形態において、アクションタイプ(例えばクリック、検証、ページイントなど)、要素タイプ、及び/又は失敗タイプは、例えば、異なるアクション、要素、及び/又は失敗タイプが異なる確率並びに修正の提案を有することができるため、ニューラルネット及び/又は決定木モデルに提供される。いくつかの実施形態において、異なるブラウザを異なる修正の提案に関連付けることができるため、ブラウザタイプは、ニューラルネット及び/又は決定木モデルに提供される。
【0089】
いくつかの実施形態において、ソフトウェアテストは、複数回行われる。いくつかの実施形態において、ソフトウェアテストは、ソフトウェアテストエラーなしに複数回行われる。いくつかの実施形態において、ソフトウェアテストエラーなしに複数回テストされたウェブアプリケーションは、失敗したソフトウェアテストの際に本明細書で提供される本技術によるソフトウェアテストエラーの原因を特定するための候補である。いくつかの実施形態において、ソフトウェアテストエラーは、スクリプトをトリガし、例えばテキスト、値、タイプ、要素、位置、CSS、セレクタ、親、子、兄弟、その他の属性、及び要素属性の他の値、安定性値、変更の程度(平均及び/又は標準偏差)、レーベンシュテイン距離(平均及び/又は標準偏差)、総合スコア、及び/又はテストステップ距離、同じページイントブーリアン、アクションタイプ、要素タイプ、失敗タイプ、及び/又はブラウザタイプに関して上述した追加入力といった、本明細書及び/又は上述したデータの一つ以上の項目を収集する。いくつかの実施形態において、テストは、訂正される(修正される)。いくつかの実施形態において、テストを訂正した後、どのステップが修正されたか、及びどのステップが修正を必要とした理由を示すデータポイント及びラベルを出力するスクリプトが実行される。いくつかの実施形態において、変更セットは、ソフトウェアテスタによって生成される。いくつかの実施形態において、どのステップが修正されたかを示す顧客データポイントが生成されることによって、テストが修正される。
【0090】
いくつかの実施形態において、失敗したステップに至り、それを含む各アクションは、データポイントである。いくつかの実施形態において、各アクションについて収集されたデータポイントは、ステップが根本原因(例えばY又はN)として特定されたかどうかを示すラベルを含む。いくつかの実施形態において、ステップのデータポイントは、根本原因であると特定されなかったステップの「N/A」で、修正の理由を示すラベルを含む。いくつかの実施形態において、データを使用し、モデルをトレーニングし、各アクションが根本原因である可能性、及び修正するために必要な最も可能性の高い理由を予測する。いくつかの実施形態において、機能は、例えば可能性の有意義な推定値を提供するために、根本原因であるテスト内の各アクションの確率を提供する。
【0091】
いくつかの実施形態において、ステップは、根本原因として特定され、ステップは修正され、後続のステップは、テスト失敗を引き起こす。したがって、いくつかの実施形態において、本技術は、修正を成功として示し、通常通りデータポイントを作成する。いくつかの実施形態において、ソフトウェアは、そのような場合のデータ点の作成を制御するロジックを含む。いくつかの実施形態において、このプロセスは、テストを通過するまで(例えば反復的に)繰り返される。いくつかの実施形態において、データポイント及び/又はラベルの作成は、自動化される。例えば、いくつかの実施形態において、データポイントは、ステップが成功して修正されるたびに作成される。いくつかの実施形態において、変更セット及び編集履歴は、例えば成功したテストの完了時にAPIに格納される。いくつかの実施形態において、データは、データベース、テキストファイル、CSVファイルなどに格納される。いくつかの実施形態において、データは、スケーラブルなカラム形式(例えばクラウドデータストア)に格納される。いくつかの実施形態において、データは、ソースコード(例えばHTML)のコンピュータビジョン及び/又は自然言語処理を使用して取得される。
【0092】
いくつかの実施形態において、モデル(例えば候補テストステップ及び/又は要素が根本原因である、候補テストステップ及び/又は要素に確率を割り当てるために使用されるモデル)のためのトレーニングデータは、大勢のソース処理によって、生成される。したがって、いくつかの実施形態において、単一の意見ではなく、大勢のコンセンサスは、確率を決定するために使用される。いくつかの実施形態において、ユーザフィードバックを使用して、提案された失敗に対する修正を特定し、失敗のタイプ及び原因を特定し、失敗の修正(及びその成功又は失敗)を、さらなるトレーニングのためにモデルに入力する。
【0093】
〔属性分布〕
いくつかの実施形態において、本技術は、ページ上の位置(例えばUI内の位置)の機能として要素属性の変更を評価する。いくつかの実施形態において、本技術は、時間の機能として(例えばUIバージョンの機能として)要素属性の変更を評価する。
【0094】
いくつかの実施形態において、本技術は、ページ上の位置の機能(例えばUI内の位置)及び/又は時間の機能として(例えばUIバージョンの機能として)、属性変更の確率を決定及び/又は評価する。実施例4を参照して欲しい。
【0095】
いくつかの実施形態において、本技術は、個々の要素(例えば個々の要素の個々の属性、個々の要素の複数の属性)を評価する。いくつかの実施形態において、本技術は、UI全体にわたる要素及び/又は要素属性を(例えばページ上の位置の機能として)及び/又は時間の機能として(例えばUIバージョンの機能として)評価する。いくつかの実施形態において、UIの一つ以上のページ及び/又はバージョンの要素属性の頻度が生成され、評価される。いくつかの実施形態において、確率的関連付けは、例えば属性が第1のページから第2のページ及び/又はUIに変更した要素を特定するために、一つのページ及び/又はUIのバージョン内の要素と、第2のページ及び/又はUIのバージョンとの間で、計算及び/又は生成される。
【0096】
いくつかの実施形態において、本技術は、複数の要素及び/又は要素属性(例えばページ上(例えばUI上))の要素及び/又は要素属性の統計的分布を決定する。いくつかの実施形態において、本技術は、ページ上の位置の機能(例えばUI上の位置の機能として)及び/又は時間の機能(例えばUIバージョンの機能として)として、複数の要素及び/又は要素属性に対する要素及び/又は要素属性の統計的分布を決定する。いくつかの実施形態において、本技術は、ページ上の要素及び/又は要素属性の特定の分布の確率を(例えばUI上の位置の機能として)及び/又は時間によって(例えばUIバージョンの機能として)決定する。
【0097】
〔自動化されたビジュアルテスト〕
いくつかの実施形態において、ビジュアルテストは、自動化される。いくつかの実施形態において、テストは、ニューラルネット及び/又は決定木モデル(例えば畳み込みニューラルネット)の使用を含む。いくつかの実施形態において、本技術は、ウェブページが正しくレンダリングされたかどうかを決定することを含む。したがって、本明細書で提供される本技術の実施形態は、例えば静的要素と動的要素とを区別すること、ページ要素(例えばリンク、ボタン、ポップダウンなど)を特定すること、マークアップに入れ子にされた画像を検出することなど、そのビジュアル的な意味を評価することによって、ウェブページレンダリングを評価する。いくつかの実施形態において、本技術は、デザインの幅、デザインの構成要素(例えばフォント)、低レベルブラウザ及び/又はバージョンレンダリングバリエーション、レスポンシブデザインによって駆動される動的レイアウト変更、並びに任意のページ複雑性のためのテスト技術を提供する。本技術は、何十、何百、何千、又はそれ以上のページ、任意選択で複数の言語、を含む頻繁なリリース(例えばウェブサイト及び/又はウェブアプリケーションの新しいバージョンを提供すること)をテストする自動化されたテストを提供する。
【0098】
いくつかの実施形態において、本技術は、開発者及びQA/テストエンジニアがテストケースを準備する際にコーディングを回避するのを助ける際の使用を考え、例えば本技術は自動化されたテストを提供する。したがって、いくつかの実施形態において、本技術は、ユーザによって提供されたテストケースを記録し、本技術は、ページレンダリングのレビュー可能な「フィルムストリップ」をキャプチャする(例えばスクリーンキャプチャの手動又は自動取得は必要とされない)。レンダリングは、ページを複数の領域にセグメント化する決定木によって分析され、次いで、ページ要素を発見し、問い合わせ、分類する(例えばテキストを制御及びグラフィックスから特定する、静的オブジェクト対動的オブジェクトを特定する、ページのどの部分がテストするのに最も重要であるかを自動的に決定する、など)ための一連のビジュアル処理ツールを呼び出す。本明細書で説明するように、本技術の実施形態は、フォント、ボタン、及び制御、並びに他のビジュアル要素のサンプルライブラリ上でトレーニングされた畳み込みニューラルネットワーク、並びにソース画像処理、光学文字認識、及び他の基本機能のためのロバストな標準化された解決方法の使用を含む。テストケースが記録され、検証されると、それは、サポートされる複数のブラウザ及びエミュレートされたデバイスにわたって実行される。いくつかの実施形態において、本技術は、人工知能のビジュアル要素分類、ウェブコード、及びリアルタイムDOM分析を組み合わせる。したがって、本技術は、いくつかの実施形態において、例えば少数の記録されたテストケースから全てのビューポート構成の範囲にわたって複数のデバイス上で実行されるレスポンシブデザインにわたる非常に大きなウェブサイトの信頼性のあるビジュアルテストを提供するためのロバストな技術を提供する。いくつかの実施形態において変更がなされるとき、テストは例えば、ディープDOM分析と洗練されたビジュアル処理とを組み合わせることによって自己更新され、本技術は、何が変更されたか、及びユーザに関連する変更又は他の変更によって生じる機能性のいかなる変更も決定する。いくつかの実施形態において、本技術は、実際のユーザサイト対話の記録を使用し、そのビジュアル分析を精緻化し、焦点を合わせ、ユーザが実際にサイトで行っていることに応答して、このリソース集約型プロセスを制約する。
【0099】
いくつかの実施形態において、本技術は、データベース、例えばトレーニングセットを含む。いくつかの実施形態において、本技術は、ニューラルネットワークと、ニューラルネットワークのためのトレーニングセットとを含む。
【0100】
〔ルールエンジン〕
いくつかの実施形態において、本技術は、ルールエンジンの使用を含む。いくつかの実施形態において、ルールエンジンは、入力基準を受け入れ、入力基準がルールエンジンのルールと一致するかどうかを決定し、入力基準と一致するルールのアクションを実行する。したがって、いくつかの実施形態において、ルールエンジンは、失敗したテストからのデータを分析及び評価し、テストをどのように修正するかについての提案を提供する構造化された方法を提供する。いくつかの実施形態において、ルールエンジンのルールは、ルール構文言語(例えば「if-then」又は「if-then-else」ロジックとして)で符号化される。したがって、いくつかの実施形態において、ルールエンジンがルール及び提案を含む。
【0101】
いくつかの実施形態において、ルールエンジンは、(例えば決定木として)評価されるルールと、(例えばルールの名前によって参照される)提案とを含む。いくつかの実施形態において、個々のルールは、提案、バー(vars)、又は他のルールを含むこともできる。本明細書で使用されるように、「バー(var)」は、言語表現に対応する新しい特定子を定義する鍵/値のペアのリストを指す。いくつかの実施形態において、ルール自身は、バー(vars)部分を含む。いくつかの実施形態において、ルールは、その「when」条件が満たされたときにトリガされる(ブーリアンが真(true))。ルールがトリガされた場合、その提案は、評価され、返されるか、又はその子が評価される。ルールがトリガされない場合(例えば、「when」条件が満たされないため)、その子が評価される。ルールは、必要な限り深く入れ子にすることができる。表1を参照して欲しい。
【0102】
【0103】
いくつかの実施形態において、ルールエンジンは、一つ以上の提案を含む。いくつかの実施形態において、提案は、それ自身を記述するメタデータ(例えば名前及び記述)と、テスト入力上のどのフィールドがテストを修正するために更新されるべきかを示す鍵/値のペアの任意のマップを含む変更フィールドとを含む。例えば、表2を参照して欲しい。
【0104】
【0105】
〔ソフトウェア失敗の自律的な特定〕
いくつかの実施形態において、本明細書で提供される本技術は、例えば人工知能を使用して、ソフトウェアアプリケーション(例えばウェブアプリケーション)における失敗を特定することに関する。例えばいくつかのウェブベースの技術は、ウェブアプリケーション環境のベースURLでウェブページをロードすることによって、典型的にそのクロールを開始するリンククローラの使用を含む。そのベースページに関する情報(例えばスクリーンショット、ロード時間、エラー情報などを含む)を収集した後、クローラは、ページ上の一つ以上の要素と対話し、例えばそのページ上の最初のハイパーリンクをクリックし、結果を検査することによって、更なるアクションを行うだろう。ハイパーリンクが提供されたベースURLのドメイン内にある場合、クローラは、ページを訪れ、(例えばスクリーンショット、ロード時間、エラー情報などを含む)ベースページに関する情報を収集したのと同じ方法によってリンクされたページに関する情報を収集する。ベースページ上で特定された更なるリンクとその後に訪れたページは、同じ方法で訪問される。本技術は、各ページについて収集される情報を制限するものではなく、例えば本明細書に記載するウェブアプリケーション、スクリーンショット、メタデータ、要素、要素属性、及び/又はグラフィカルモデルデータのいずれかを含む。
【0106】
いくつかの実施形態において、本技術は、ウェブアプリケーションUIのコンピュータビジョン分析(例えば、ウェブアプリケーションUIのスクリーンショット)を自然言語処理と組み合わせて、不正確なアイコン、破損したアプリケーションプログラミングインターフェース、ビジュアル異常、スペルエラー、破損したリンク、及び当技術分野で知られている他のウェブアプリケーションエラーなどの失敗を見つけるクローラに関する。いくつかの実施形態において、本技術は、大規模分散データベースに関連する超並列コンピューティングシステム上で実行されるコンピュータソフトウェアで実現される。いくつかの実施形態において、本技術は、クラウド技術を使用して実装される。いくつかの実施形態において、クローラは、単一のローカルマシン上で、又はクラウド環境内の一つ以上の仮想マシン上で生成され、実行される。
【0107】
いくつかの実施形態において、本技術は、ソフトウェアアプリケーションにおける失敗の自律的な特定及び/又は検出に関する。いくつかの実施形態において、本技術は、コンピュータビジョン、自然言語処理、及び並列ウェブクローラの組合せを使用することを含む。特に、いくつかの実施形態は、コンピュータビジョン分析の使用を提供し、例えば、本明細書に記載するように、UI内のユーザインターフェース要素を特定し、(例えばソフトウェアコードで符号化された)アクションをユーザインターフェース要素と特定し、関連付けるためのテキスト及び言語処理の使用を行う。いくつかの実施形態において、本技術は、要素を検出するステップ、任意選択で要素をローカライズするステップ、要素を記述するデータ(例えば要素属性(例えば位置、サイズ、状態))、及び(例えば要素に関連付けられたソフトウェアコードによって提供されるような)ウェブアプリケーション内の要素の機能との組合せを使用して要素を分類するステップを含む。いくつかの実施形態において、要素を分類することは、検出された要素にアクション及び/又は機能を割り当てる。いくつかの実施形態において、自然言語処理は、要素との関連付けに従ってアクション及び/又は機能の意味を決定する。いくつかの実施形態において、ウェブアプリケーションのテキストコンテンツは、文書オブジェクトモデル(DOM)によって取得され、ウェブアプリケーションの分析は、人工ニューラルネットワークの使用によって提供される。いくつかの実施形態において、アクション及び/又は機能とコンピュータビジョンによって検出された要素との関連付けは、要素の幾何学的属性、例えばレンダリングにおける位置、他の要素(例えば親要素及び/又は兄弟要素及び/又は同じレベルの要素)に対する相対位置によって決定される。いくつかの実施形態において、本技術は、ソフトウェアエラー及び/又は他の異常を特定するために、要素の幾何学的属性、テキスト、及び画像を使用するニューラルネットワークの使用を含む。
【0108】
〔ソフトウェア失敗の自律的な修復〕
いくつかの実施形態において、本技術は、例えば人工知能を使用して、ソフトウェア失敗及び/又はソフトウェアテストケースの自律的な修復(例えば、補正、修正など)に関する。例えば、本明細書で説明するように、(例えばソフトウェアテストによって特定される)ソフトウェア失敗の根本原因は、場合によっては複数の解決方法を用いて解決することができる。例えば正しい解決方法がすぐには明らかにならない場合、本技術は、利用可能な提案された解決方法のそれぞれを使用してソフトウェアテストを自動的に再実行する自己修復機能を提供する。しかしながら、自動化されたテストにおけるテスト失敗のデバッグは、多くの場合、テストのスクリプト化又は記録、失敗するまでの実行、失敗の特定、テストスクリプトの更新、及び再実行の試行が必要になる。多くの場合、このプロセスは、テストが作業する前に繰り返し繰り返される。その後のアプリケーションの変更は、テストを中断させる可能性があり、プロセス全体を繰り返す必要がある。
【0109】
したがって、本技術の実施形態は例えば、大規模な分散データベースを使用する大規模並列コンピューティングシステム上で実行されるセットのコンピュータプログラムとして実装される技術として、ソフトウェア失敗の自律的修復を提供する。いくつかの実施形態において、本技術は、テストされるウェブアプリケーションの失敗を検出する存在下又は不在下での使用を考える。第1に、実施形態は例えば、本明細書で説明するウェブアプリケーションUIのソフトウェアテスト失敗の根本原因である可能性によってランク付けされた、提案されたテストステップ、テストアクション、及び/又は要素のリストで提供されるような、失敗を起こしたソフトウェアテストケース内の失敗ステップの候補のリストを特定すること、提供すること、及び/又は取り出すことを含む。次に、失敗ステップの候補の各々を入力として使用し、マルコフ決定プロセス(MDP)モデル(例えばBersekas(2011)「Dynamic Programming and Optimal Control」第3版、第2巻、MIT Press、Cambridge、Mass.,を参照し、参照として本明細書に組み込まれる)をトレーニングし、成功したソフトウェアテストを生成し得る各候補失敗ステップの可能な変更を特定する。MDPは、MDPから決定された複数の異なる構成を使用して各候補失敗ステップを再構成することによって、失敗ステップの各候補について複数の試行ステップを生成する。異なる構成の各々は、試行ステップを提供し、これは、試行ステップが候補失敗ステップ置き換えるときに、成功したテストをもたらし得る候補失敗ステップの可能な置き換えである。次に、全ての試行ステップ(例えば候補失敗ステップの候補報の修正案)又は失敗ステップの候補を試行ステップに置き換えるテストスクリプトが並行して実行され、ウェブアプリケーションUIがテストされる。いくつかの実施形態において、このプロセスは、反復的であり、ソフトウェアテストケースが成功裏に合格すると完了する。最後に、本技術は、ソフトウェアテストケースについて検出された失敗したテストの許容可能な解決方法を提供するために、失敗したソフトウェアテストケースと成功したソフトウェアテストケースとの差(例えば失敗したテストステップと成功したテストステップとの間の差)を特定する。例えば
図2を参照して欲しい。
【0110】
〔ハードウェア〕
いくつかの実施形態において、本明細書で提供される本技術は、一つ以上の専用コンピューティングデバイスによって実施される。いくつかの実施形態において、専用コンピューティングデバイスは、本技術の実施形態を実行するために回路設計され、いくつかの実施形態において、ハードウェアは、本技術の実施形態を実行するように永続的にプログラムされる一つ以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)といったデジタル電子デバイスを含む。いくつかの実施形態において、ハードウェアは、ファームウェア、メモリ、他の記憶装置、又はその組み合わせにおけるプログラム命令に基づいた本技術の実施形態を実行するようにプログラムされた一つ以上の汎用ハードウェアプロセッサを含む。いくつかの実施形態において、専用コンピューティングデバイスは、カスタムに回路設計されたロジック、ASIC、及び/又はフィールドプログラマブルゲートアレイ、並びに本技術の実施形態を達成するためのカスタムプログラミングの使用を含む。いくつかの実施形態において、専用のコンピューティングデバイスは、例えば、デスクトップPCシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイス、又は本技術を実装するために回路設計された及び/又はプログラムロジックを組み込んだ他の任意のデバイスである。
【0111】
いくつかの実施形態において、本技術は、コンピュータシステムの使用を含む。いくつかの実施形態において、コンピュータシステムは、情報を通信するように構成されたバス又は他の構成要素と、情報を処理するためにバスに結合されたハードウェアプロセッサとを含む。いくつかの実施形態において、ハードウェアプロセッサは、汎用マイクロプロセッサである。いくつかの実施形態において、コンピュータシステムは、プロセッサによって実行される情報及び命令を格納するためにバスに結合された、ランダムアクセスメモリ(RAM)又は他の動的記憶装置などのメインメモリを含む。いくつかの実施形態において、メインメモリは、プロセッサによって実行される命令の実行中に、一時変数又は他の中間情報を格納するために使用される。いくつかの実施形態において、(例えばプロセッサにアクセス可能な一時的でない記憶媒体に格納される)命令は、命令で指定された動作を実行するようにカスタマイズされた専用のマシンを提供するために、コンピュータシステムに提供される。いくつかの実施形態において、コンピュータシステムは、プロセッサのための静的情報及び命令を格納するために、バスに結合された読み出し専用メモリ又は他の静的記憶装置を含む。いくつかの実施形態において、情報及び命令を格納するために、磁気ディスク、光ディスク、又はソリッドステートドライブといった記憶デバイスは、提供され、バスに結合される。いくつかの実施形態において、コンピュータシステムは、バスによって、コンピュータユーザに情報を表示するために、ブラウン管(CRT)、液晶ディスプレイ、又は当該技術分野で公知の他のディスプレイ技術などのディスプレイに結合されている。いくつかの実施形態において、(例えば英数字及び他のキーを含む)入力装置は、情報及びコマンド選択をプロセッサに通信するためにバスに結合される。いくつかの実施形態において、カーソル制御のための使用を見出す他のタイプのユーザ入力デバイスは、例えばプロセッサに方向情報及びコマンド選択を伝達し、ディスプレイ上のカーソル移動を制御するためのマウス、トラックボール、又はカーソル方向キーを含む。入力デバイスは、典型的には第1の軸(例えばx)と第2の軸(例えばy)の二つの軸において二つの自由度を有し、これにより、デバイスは、平面内の位置を指定することができる。
【0112】
いくつかの実施形態において、コンピュータシステムは、カスタマイズされた回路設計されたロジック、一つ以上のASIC又はFPGA、ファームウェア、及び/又はプログラムロジックを使用して、本明細書に記載する本技術の実施形態を実行し、コンピュータシステムと組み合わせて、コンピュータシステムを専用のマシンにするか、又はプログラムする。いくつかの実施形態において、本明細書で説明される方法は、メインメモリに含まれる一つ以上の命令の一つ以上の配列を実行するプロセッサに応答して、コンピュータシステムによって実行される。いくつかの実施形態において、命令は、記憶デバイスといった別の記憶媒体からメインメモリに読み込まれる。いくつかの実施形態において、メインメモリに含まれる命令のシーケンスの実行は、プロセッサに、本明細書で説明されるプロセスステップを実行させる。いくつかの実施形態において、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせて、回路設計された回路が使用される。
【0113】
本明細書で使用される用語「記憶媒体」は、マシンを特定の様式で動作させるデータ及び/又は命令を記憶する任意の非一時的媒体を指す。そういった記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含むことができる。不揮発性媒体は、例えば記憶デバイス(例えば光ディスク、磁気ディスク、又はソリッドステートドライブ)を含む。揮発性媒体は、メインメモリといったダイナミックメモリを含む。記憶媒体の一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は他の任意の磁気データ記憶媒体、CD-ROM、他の任意の光データ記憶媒体、穴のパターンを有する任意の物理媒体、RAM、PROM、及びEPROM、FLASH-EPROM、NVRAM、又は他の任意のメモリチップ又はカートリッジが挙げられる。記憶媒体は、伝送媒体とは異なるが、伝送媒体と併せて使用することができる。伝送媒体は、記憶媒体間の情報転送に関与する。例えば、伝送媒体は、バスを含むワイヤを含む同軸ケーブル、銅線及び光ファイバを含む。伝送媒体は、電波(例えばIEEE802.11)及び赤外線データ通信中に生成されるような音波又は光波の形態をとることもできる。伝送メディアは、インターネット、ワイドエリアネットワーク、ローカルエリアネットワークも含む。
【0114】
いくつかの実施形態において、様々な形態の媒体は、実行のために一つ以上の命令の一つ以上の配列をプロセッサに搬送する。例えば、命令は最初に、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上で搬送されてもよい。遠隔コンピュータは、そのダイナミックメモリに命令をロードし、送信媒体を介して命令を送ることができる。ローカルコンピュータシステムは、伝送媒体上でデータを受信することができ、適切な回路は、バス上にデータを配置することができる。バスは、データをメインメモリに伝送し、そこからプロセッサが命令を検索して実行する。メインメモリによって受信された命令は、プロセッサによって実行される前又は後のいずれかで、任意選択で記憶装置に格納することができる。いくつかの実施形態において、コンピュータシステムは、バスに結合された通信インターフェースを含む。いくつかの実施形態において、通信インターフェースは、ローカルネットワークに接続されているネットワークリンクへの双方向データ通信結合を提供する。例えば、通信インターフェースは、統合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデム、イーサネットカード、無線機、又はモデムであり、対応するタイプの電話回線へのデータ通信接続を提供することができる。別の実施例として、通信インターフェースは、互換性のあるLANへのデータ通信接続を提供するためのローカルエリアネットワーク(LAN)カードであってもよい。無線リンクは、実装されることも可能である。任意のそういった実装形態において、通信インターフェースは、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁気信号、又は光信号を送受信する。
【0115】
いくつかの実施形態において、ネットワークリンクは、一つ以上のネットワークによって他のデータ装置にデータ通信を提供する。例えば、ネットワークリンクは、ローカルネットワークによって、ホストコンピュータ又はインターネットサービスプロバイダ(ISP)によって操作されるデータ装置への接続を提供することができる。次に、ISPは、現在一般的に「インターネット」と呼ばれているワールドワイドパケットデータ通信ネットワークによって、データ通信サービスを提供する。ローカルネットワーク及びインターネットは両方とも、デジタルデータストリームを搬送する電気信号、電磁気信号、又は光信号を使用する。様々なネットワークを通る信号、及びネットワークリンク上の信号、及び通信インターフェースを通る信号は、コンピュータシステムとの間でデジタルデータを運ぶものであり、伝送媒体の一例である。
【0116】
いくつかの実施形態において、コンピュータシステムは、1つ又は複数のネットワーク、ネットワークリンク、及び通信インターフェースを介して、メッセージを送信し、プログラムコードを含むデータを受信する。例えば、サーバは、インターネット、ISP、ローカルネットワーク、及び通信インターフェースを介して、アプリケーションプログラムに対して要求されたコードを送信することができる。いくつかの実施形態において、受信されたコードは、後の実行のために、受信されるときにプロセッサによって実行される、及び/又は記憶装置又は他の不揮発性記憶装置に格納される。
【0117】
いくつかの実施形態において、これらのハードウェア構成要素のいずれかは、エミュレーション及び/又はクラウドコンピューティングを使用して仮想的な構成要素として提供される。したがって、本明細書で使用されるように、本明細書で説明するハードウェアの用語「ハードウェア」及びハードウェアの構成要素は、クラウド環境における一つ以上の仮想マシン上でエミュレーションによって提供されるローカル又はリモートの物理的なハードウェア又はハードウェア及び/又はハードウェア構成要素も指す。
【0118】
〔方法〕
いくつかの実施形態において、本技術は、ウェブアプリケーションの失敗したソフトウェアテストの根本原因(例えばステップ、アクション、要素)を特定するための方法に関する(例えば
図3を参照して欲しい)。いくつかの実施形態において、方法は、ウェブアプリケーション(例えば一つ以上の要素を含む)を提供することを含む。いくつかの実施形態において、方法は、ウェブアプリケーションとの一つ以上のユーザ対話(例えばウェブアプリケーションの要素と対話するユーザのアクション)を模倣する一連のテストアクションを提供することを含む。いくつかの実施形態において、スクリプトは、一連のテスト動作を一連のステップとして提供する。いくつかの実施形態において、方法は、ウェブアプリケーションと、ステップがウェブアプリケーション(例えばトレーニングセット)上で実行されるときにウェブアプリケーションの成功したテストをもたらす一連のステップを含むスクリプトとを提供することを含む。いくつかの実施形態において、方法は、ウェブアプリケーションのテストに成功する複数(例えば1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、30、40、50、60、70、80、90、100、又はそれ以上)のスクリプトを提供することを含む。いくつかの実施形態において、方法は、ウェブアプリケーションのソフトウェアテストが失敗したことを決定することを含む。いくつかの実施形態において、方法は、テストが失敗したソフトウェアテストのステップを特定することを含む。いくつかの実施形態において、方法は、テストが失敗したソフトウェアテストのステップのアクションを特定することを含む。いくつかの実施形態において、方法は、失敗したソフトウェアテストを特定及び/又は検出することと、機械学習を使用して、各テストアクションが失敗したテストの根本原因である可能性に従ってテストアクションをランク付けすることとを含む。
【0119】
いくつかの実施形態において、方法は、(例えばトレーニングセットからのデータを使用する)機械学習を使用し、アクションがウェブアプリケーションのテストにおいてエラーを生成する可能性(例えばアクションが失敗したテストの根本原因となる可能性)を関連付けることを含む。いくつかの実施形態において、機械学習は、ニューラルネットの使用を含む。いくつかの実施形態において、機械学習は、入力として要素属性を使用することを含む。いくつかの実施形態において、機械学習は、入力として要素属性の変更を使用することを含む。いくつかの実施形態において、要素属性の変更は、ウェブアプリケーションのソフトウェアコード(例えばソースコード及び/又はオブジェクトコード)のコンピュータビジョン及び/又は分析を使用して決定される。いくつかの実施形態において、方法は、可能性のある根本原因(例えばステップ、アクション、要素)がソフトウェアテストを失敗させる可能性に従って、ソフトウェアテストの可能性のある根本原因をランク付けすることを含む。いくつかの実施形態において、機械学習を使用し、可能性のある根本原因(例えば、ステップ、アクション、要素)がソフトウェアテストを失敗させる可能性に従って、ソフトウェアテストの可能性のある根本原因をランク付けする。いくつかの実施形態において、方法は、ウェブアプリケーションの失敗したテストを生成する可能性によってランク付けされた、可能性のある根本原因(例えばステップ、アクション、要素)のランク付けされたリストを生成することを含む。
【0120】
いくつかの実施形態において、方法は、ルール(例えば条件(例えばデータ、ステップ、アクション)によって満たされたときに提案をトリガする基準(例えばルールの「when」部分)を含むルール)を含むルールエンジンを提供することを含む。いくつかの実施形態において、可能性のある根本原因のランク付けされたリストは、ルールエンジンに提供される。いくつかの実施形態において、ルールエンジンのルールは、可能性のある根本原因によってトリガされ、ルールエンジンは、失敗したソフトウェアテストの根本原因を修正するための提案を生成する。
【0121】
いくつかの実施形態において、方法は、機械学習の提案サービスを提供することを含む。いくつかの実施形態において、機械学習の提案サービスは、失敗したソフトウェアテストの可能性のある根本原因を特定し、特定された根本原因の修正を提案するために、機械学習及び一つ以上のトレーニングセットを使用することに基づいて、失敗したソフトウェアテストの根本原因を修正するための提案を含む。
【0122】
いくつかの実施形態において、ルールエンジンによって生成された提案及び機械学習の提案サービスによって生成された提案は、提案プールに組み合わされる。いくつかの実施形態において、提案プールは、ソート及び/又は重複排除される。いくつかの実施形態において、方法は、ソートされた及び/又は重複排除された提案プールを、例えばユーザに、ソフトウェア失敗の自動化された修復などを提供するように構成された構成部品を出力する。
【0123】
いくつかの実施形態において、方法は、ウェブアプリケーションの要素のグラフィカルモデルを生成することを含む。いくつかの実施形態において、1つ又は複数の方法は、ウェブアプリケーションの複数のバージョンのための複数のグラフィカルモデルを生成することを含む。いくつかの実施形態において、1つ又は複数の方法は、ウェブアプリケーションの二つのバージョン(例えばウェブアプリケーションUI)及び/又はウェブアプリケーションの一つ以上のバージョン(例えばウェブアプリケーションUI)に対応する一つ以上のグラフィカルモデルの間の一つ以上のグラフィカル要素の差を特定することを含む。
【0124】
いくつかの実施形態において、方法は、ウェブアプリケーションと、ウェブアプリケーション(例えばテストケース)をテストするためのスクリプトとを提供することを含む。いくつかの実施形態において、スクリプトは、ウェブアプリケーションをテストするために実行される。いくつかの実施形態において、ウェブアプリケーションに対する変更(例えばウェブアプリケーションの一つ以上の要素の一つ以上の属性の値の変更)は、行われ、スクリプトが実行され、ウェブアプリケーションがテストされる。いくつかの実施形態において、ウェブアプリケーション上の複数のバージョンをテストするために、異なるステップを含む(例えば異なるアクションを含む)スクリプトが提供される。いくつかの実施形態において、方法は、(例えばウェブアプリケーションの複数のバージョンを記述する複数のグラフィカルモデルから、及び任意選択で、第2のグラフィカルモデルに対する第1のグラフィカルモデルの変更を記述する)確率論的グラフィカルモデル(PGM)を生成することを含む。いくつかの実施形態において、PGMは、コンピュータビジョン、機械学習、ニューラルネット、及び/又はウェブアプリケーションソースコード及び/又はオブジェクトコードの分析を使用して生成される。いくつかの実施形態において、方法は、ソフトウェアテスト失敗の根本原因である可能性が高いアクションを特定するためにPGMを評価することを含む。いくつかの実施形態において、方法は、各アクションがソフトウェアテスト失敗の根本原因である可能性に従ってスクリプトのアクションをランク付けするためにPGMを評価することを含む。いくつかの実施形態において、方法は、ソフトウェアテスト失敗の根本原因である各アクションの可能性によってソートされたスクリプトのアクションのリストを生成することを含む。いくつかの実施形態において、ソフトウェアテスト失敗の根本原因である各アクションの可能性によってソートされたスクリプトのアクションのリストは、一つ以上のルールによってテストされるルールエンジンに提供される。いくつかの実施形態において、ルールエンジンは、失敗したテストの根本原因を修正するための提案を提供する。例えば
図1を参照して欲しい。
【0125】
〔システム〕
いくつかの実施形態は、ウェブアプリケーションの失敗したソフトウェアテストの根本原因(例えばステップ、アクション、要素)を特定するためのシステムに関する(例えば
図3を参照して欲しい)。いくつかの実施形態において、システムは、スクリプト(例えばテストアクションを含む)を含む。いくつかの実施形態において、システムは、スクリプトを実行し、ウェブアプリケーション(例えばウェブアプリケーションのUI)上でテストアクションを実行する構成要素を含む。いくつかの実施形態において、システムは、トレーニングセットを含む。いくつかの実施形態において、システムは、複数のスクリプト、ウェブアプリケーションの複数のバージョン、及び/又は複数のトレーニングセットを含む。いくつかの実施形態において、トレーニングセットは、ウェブアプリケーション、テストスクリプト、及びウェブアプリケーション上で実行されるテストスクリプトのテスト結果を含む。いくつかの実施形態において、システムは、各テスト動作がテスト失敗の根本原因である可能性に従ってテスト動作をランク付けするための構成要素を含む。いくつかの実施形態において、テスト失敗の根本原因である各テスト動作の可能性に従ってテスト動作をランク付けするための構成要素は、機械学習の構成要素である。いくつかの実施形態において、機械学習の構成要素は、ニューラルネットを含む。いくつかの実施形態において、システムは、ウェブアプリケーションUIのグラフィカルモデルを含む。いくつかの実施形態において、システムは、ウェブアプリケーションUIの異なるバージョンの複数のグラフィカルモデルを含む。いくつかの実施形態において、一つ以上のグラフィカルモデルは、機械学習を用いて評価され、各テストアクションがテスト失敗の根本原因である可能性を提供する。いくつかの実施形態において、テスト失敗の根本原因である各テストアクションの可能性に従ってテストアクションをランク付けするための機械学習の構成要素がテスト不合格の根本原因である各テストアクションの可能性に従ってランク付けされるテストアクションのリストを生成する。いくつかの実施形態において、システムは、機械学習の提案サービスを提供するように構成された構成要素を含む。いくつかの実施形態において、システムは、ルールエンジンを含む。いくつかの実施形態において、システムは、提案マネージャを含む。いくつかの実施形態において、システムは、提案マネージャによって生成された、マージされフィルタリングされた提案を含む。
【0126】
本明細書の開示は、特定の例示的な実施形態に言及するが、これらの実施形態は、例として提示したものであり、限定でないことを理解すべきである。
【0127】
〔実施例〕
〔実施例1-テキストボックス検出〕
本明細書で提供される本技術の実施形態の開発の間、テキストボックス検出のための方法及びシステムをテストするために(例えばウェブアプリケーションUI上のテキストボックスを検出するために)、実験が行われた。
図5に示すように、ウェブアプリケーションは、テンプレート検証システムのテキストボックス検出の構成要素に提供された。テキストボックス検出の構成要素の機械学習及び/又は深層学習(ニューラルネットワークなど)は、入力ウェブアプリケーション(ウェブアプリケーションのUIなど)を分析する。テキストボックス検出の構成要素は、UI上のテキストボックスの位置及び寸法を含む出力を生成する。
【0128】
〔実施例2-要素検出〕
本明細書で提供される本技術の実施形態の開発の間、(例えばウェブアプリケーションUI上の要素を検出するために)要素検出のための方法及びシステムをテストするための実験が行われた。
図7に示すように、ウェブアプリケーションは、テンプレート検証システムのテキストボックス検出の構成要素に提供された。テキストボックス検出の構成要素の機械学習及び/又は深層学習(ニューラルネットワークなど)は、入力ウェブアプリケーション(ウェブアプリケーションのUIなど)を分析する。テキストボックス検出の構成要素は、UI上のテキストボックスの位置及び寸法を含む出力を生成し、その出力を要素検出の構成要素に提供する。要素検出の構成要素グループは、非テキストボックスオブジェクトを検出し、各テキストボックスをベクトルu=(x、y、w、h)として定義することにより、テキストボックスをグループ化する。x及びyは、文書スクリーンショット又はビューポート内のピクセル位置を表す。w及びhは、ボックスの幅と高さを表し、テキストボックス間の距離を決定し、密度ベースのクラスタリングを実行して、テキストボックスをテキストボックスのクラスタにグループ化する。例えば、テキストボックス検出の構成要素は、テキスト「アマゾン(amazon)」を含む第1のテキストボックスを特定し、テキスト「プライム(prime)」を含む第2のテキストボックスを特定した。要素検出の構成要素は、距離計算及びクラスタリングを実行して、「アマゾン(amazon)」テキストボックス及び「プライム(prime)」テキストボックスの両方を含むテキストボックスクラスタリングを生成した。例えば
図7を参照して欲しい。同様に、他のテキストボックスは、要素検出の構成要素によってグループ化され、出力された。
【0129】
〔実施例3-オブジェクト検出〕
本明細書で提供される本技術の実施形態の開発の間、(例えばウェブアプリケーションUI上の非テキストオブジェクトを検出するために)オブジェクト検出のための方法及びシステムをテストするための実験が行われた。
図8に示すように、ウェブアプリケーションUIは、テンプレート検証システムのオブジェクト検出の構成要素に提供された。オブジェクト検出の構成要素の機械学習及び/又は深層学習(例えばニューラルネット)はアイコンのトレーニングセット(例えばカートアイコン、矢印アイコン、オープンファイルアイコン、セーブファイルアイコン、ログインアイコン、チェックアイコン、箇条書きアイコン、及びクローズアイコン)を使用してトレーニングされていた。オブジェクト検出の構成要素は、UI上のオブジェクトの位置及び寸法を含む出力を生成する。
図8を参照されたい。オブジェクト検出の構成要素は、UI上のオブジェクトの位置及び/又は寸法を特定する。
【0130】
〔実施例4-選択ロジック〕
本明細書に記載の技術の実施形態の開発の間、要素及び/又は要素属性の分布を評価し、ページ全体及び/又は時間によって、要素及び/又は要素属性の分布の確率を決定するシステム及び方法をテストするために実験を行った。要素に使用された背景色の頻度は、2019年6月25日(バージョン1)及び2019年7月20日(バージョン2)のページについて記録された。
図9Aを参照されたい。
図9Aにおいて、色の頻度(左の列)は、右の列に与えられている。属性分布(例えば色の頻度)を使用して、バージョン間の要素間の確率的関連付けを生成した(例えば
図9Aの%を用いて要素を関連付ける矢印を参照されたい)。本明細書に記載の本技術は、バージョン2には存在しなかったバージョン1の色219、219、219を有する要素を特定した。本技術は、色254、249、219を有するバージョン2上の関連する要素を特定した。
図9Aに示すように、確率的関連は、90%であった。したがって、本技術は、色219、219、219を有するバージョン1の要素が色254、249、219を有する要素に変更された確率(例えば高い確率)(例えばその要素の色属性がバージョン1からバージョン2に変更された確率)を算出した。ページバージョンの後続の分析において、ソフトウェアは、その新しい色254、249、219を使用することによって、部品の要素を特定した。本技術は、ユーザに変更を警告した。全ての要素及び全ての要素の全ての属性について分析を繰り返した。いくつかの実施形態において、本技術は、例えばテンソルを使用して、より高次元の要素及び/又は要素属性の特定及び評価を実行することを含む。同様の実験において、15ピクセルから5ピクセルに変更する高さ属性を持つ要素が特定された。
図9Bを参照して欲しい。
図9Bは、列1内にある特定の色を有し、列2~7内の要素について0、1、5、10、13、及び15画素の高さの分布を有する要素を示す。属性分布(例えば、高さの頻度)を使用して、バージョン間の要素間の確率的関連付けを生成した。確率的関連付けは、変更した高さを有する要素を特定するために使用された。
更に、追加の実験において、本技術は、二つの異なるページ上の要素の幅の分布を決定した。
図9Cを参照して欲しい。いくつかの実施形態において、UIの第1のページ又は第1のバージョンの幅の第1の分布が決定され、UIの第2のページ又は第2のバージョンの幅の第2の分布が決定される。属性分布(例えば、幅の頻度)を使用して、二つのページ間の要素間の確率的関連付けを生成した。本技術は、幅の分布又は任意の特定の要素属性を決定することに限定されない。したがって、本技術は、ページ又はUIのバージョンのための要素属性の分布を決定することを含む。いくつかの実施形態において、本技術は、UIの第1のページ又は第1のバージョンの要素属性の第1の分布を決定するステップと、UIの第2のページ又は第2のバージョンの要素属性の第2の分布を決定するステップと、UIの第1のページ又はバージョンの要素とUIの第2のページ又はバージョンの要素との間の確率的関連付けを割り当てるステップとを含む。上述した実験は色、幅、及び高さの分布の使用を記載しているが、本技術は、一つのページ又はUIバージョン上の要素を第2のページ又はUIバージョンに関連付けるために、任意の要素属性の分布を生成及び評価することを含む。
上記明細書に記載された全ての刊行物及び特許は、全ての目的のためにその全体が参照により本明細書に組み込まれる。記載された構成要素、方法、及び技術の使用の種々の改変及びバリエーションは、記載された技術の範囲及び精神から逸脱することなく、当業者に明らかである。本技術は、特定の例示的な実施形態に関連して説明されてきたが、クレームされる本発明は、そのような特定の実施形態に過度に限定されるべきではないことを理解されたい。実際に、当業者に明らかな、本発明を実施するための記載されたモードの種々の改変は、以下の特許請求の範囲内であることが意図される。