JP2017516230A - 高度なアプリケーションのためのイベントベースの記録及び再生 - Google Patents

高度なアプリケーションのためのイベントベースの記録及び再生 Download PDF

Info

Publication number
JP2017516230A
JP2017516230A JP2016567661A JP2016567661A JP2017516230A JP 2017516230 A JP2017516230 A JP 2017516230A JP 2016567661 A JP2016567661 A JP 2016567661A JP 2016567661 A JP2016567661 A JP 2016567661A JP 2017516230 A JP2017516230 A JP 2017516230A
Authority
JP
Japan
Prior art keywords
event
recording
application
events
recorded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016567661A
Other languages
English (en)
Other versions
JP6529987B2 (ja
Inventor
ハン,ジュインチャオ
ディーン,ジュインヨーン
ローア,ヨーンニャーン
シュウ,カーンユエン
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2017516230A publication Critical patent/JP2017516230A/ja
Application granted granted Critical
Publication of JP6529987B2 publication Critical patent/JP6529987B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

アプリケーションイベントを、信頼できる決定論的方法で記録し再生することを可能にする技術を提示する。コンピューティングシステムは、メモリと、メモリに通信可能に結合されるプロセッサを含む。プロセッサは、アプリケーションのアプリケーションロジックを実行し、アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録し、記録されたイベントを将来の再生のためにメモリ内に格納する。記録されるイベントは、例えばユーザ対話、タイミングイベント、ネットワークダウンロード、コールバック又はウェブワーカータスク等を含み得る。イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ及び/又は戻り値を含む関連データを記録することを含む。記録されたイベントは、記録されていないイベントを抑制している間に、記録された関連データを使用して順番に再生され得る。

Description

本明細書で説明される技術は、一般に、コンピューティングシステムアプリケーションの記録(record)及び再生(replay)に関する。
アプリケーション分析、デバッグ、チューニング等にとって、コンピュータシステムアプリケーションの自動的かつ反復可能なテストケース又はワークロードを構築することは望ましいことがある。これは、複雑なアプリケーション、例えばウェブアプリケーション(例えばインターネット上でアクセスされるアプリケーション)及びランタイム等にとって、特に、高度かつ素早く進歩するHTML5及びオープンウェブプラットフォーム技術の観点から重大なことであり得る。そのような複雑なアプリケーションでは、アプリケーションフローを記録し、記録段階中にキャプチャされたものを正確に反復することは課題となり得る。再現性及び信頼性は、アプリケーションの様々な非決定論的特性によって大いに影響を受けることがあり、その結果、再生の際の一貫性のない挙動又は完全に誤った挙動につながることがある。
現在の記録及び再生のソリューションは、時間ベースの記録及び再生を用いる。このソリューションでは、同様のタイミングを使用して(例えば記録したタイムスタンプに基づいて)アプリケーションへの入力をキャプチャして反復し、アプリケーションフローを再作成することができる。再生中に、記録された入力は、これらの入力について記録されたタイミングを使用してシミュレートされる。そのようなソリューションの欠点は、一部のアプリケーション(例えばウェブアプリケーション)のランダム性が、再生段階の「時間」に関して、所望の挙動を予想外に変化させ得る、かなりの相違を生じ得ることである。例えば再生中の必要なリソースのロードが、記録中のロードよりも遅くなる可能性があり、これは、記録された時間に従って入力(例えばユーザアクション)に関連する更なるシミュレーションが依然として起こる場合に、誤った結果又は予期しない結果を招く可能性がある。別の例では、その順序が定義又は同期されていない場合、かつ/又はランタイムがマルチスレッドである場合にも、再生の際にコールバック(例えばタイマー、アニメーション等)が異なるシーケンスで起動される可能性がある。更に別の例では、記録段階中にタイムスタンプを記録するのに使用されるタイマーが正確でない場合、この不正確性が再生にも伝搬されて、完全に予期しないアプリケーションフローを生じる可能性がある。これらの問題を回避することを試みる現在のソリューションは時間ベースであり、十分に信頼性がない可能性がある。
一実施形態に係る、例示のアプリケーションのブロック図である。 一実施形態に係る、記録及び再生段階の例示のイベント順序のブロック図である。 一実施形態に係る、イベントの記録及び再生の方法を示す例示のフローチャートである。 一実施形態に係る、例示のコンピューティングデバイスのブロック図である。 図面において、参照番号の最も左の桁は、その参照番号が最初に現れる図面を特定していることがある。
本明細書で説明される実施形態では、アプリケーションイベントを、信頼性がある決定論的な方法で記録し再生することができる。この技術では、アプリケーションの非決定論的挙動を、機能(関数、function)起動のイベントベースの方法で記録し、再生中に、記録時と正確に同じ方法で挙動するように管理することができる。再生は、潜在的なランダム性の除去により、本質的に決定論的かつ反復可能であり得る。
上記で議論したように、現在使用されている記録及び再生技術は、同様のタイミングを使用して(例えば記録されたタイムスタンプに基づいて)アプリケーションへの入力をキャプチャして反復し、アプリケーションフローを再作成する、時間ベースの記録及び再生を用いる。再生中に、記録された入力が、これらの入力について記録されたタイミングを使用してシミュレートされる。しかしながら、これらの時間ベースの技術では、一部のアプリケーションのランダム性が、再生段階の「時間」に関して、所望の挙動を予想外に変化させ得る、かなりの相違を生じる可能性がある。図1は、この問題を簡単な手法で図示する、例示のアプリケーションのブロック図である。図1では、記録済みのゲームが、シミュレーションで再生されている。スクリーンショット102では、プレイヤ104が、プラットフォーム16上へジャンプしようとしている。言い換えると、ジャンプイベントがまさに発信されようとしているところである。ゲームが、時間ベースの記録技術を使用して記録された場合、プレイヤ104が、スクリーンショット108に示されるようにプラットフォーム106上へのジャンプを成功させるためには、記録されるタイムスタンプが、元々プレイされていたゲーム内の順序と(正確でない場合は)ほぼ正確であることが必要とされ得る。タイムスタンプがほんのわずかでもずれた場合、プレイヤ104は、代わりに、スクリーンショット110に示されるように地面に落ちる可能性がある。再生中の非常に小さな差異が、予期とは大いに異なるようにアプリケーションを挙動させることになり、これは、再生されるシミュレーションが、その目的を満たすことを失敗させ得る。
本明細書で説明される実施形態では、使用される記録及び再生技術は、以前のソリューションのような時間ベースではない。むしろ、アプリケーションのトレース(すなわち記録)は、機能起動に基づく、イベントベースである。機能が、非決定論的順序で起動される場合も、あるいはこれらが非決定論的結果を生じる場合も、これらの機能をトレースへ記録することができる。非決定論的順序で起動され得る機能の例には、これらに限定されないが、コールバック(例えばアニメーションのコールバック)、ネットワークダウンロード、マルチスレッドウェブワーカー等が含まれ得る。このタイプの記録された機能の再生中に、機能は、記録された順序と同じ順序で再生される。非決定論的結果を生じ得る機能の例には、これらに限定されないが、例えばアプリケーションプログラミングインタフェース(API)(例えばMath.random()、Date.now()等のようなJavaScript(登録商標)API)が含まれ得る。このタイプの記録された機能の再生中に、記録されたものと同じ出力が生成される。出力が同じになるようにアプリケーションに対する外部入力が固定され得るので、この方法で記録されるアプリケーションは、信頼性があり反復可能である。
実行中のアプリケーションは、これらに限られないが、ユーザ入力、タイミングイベント、(例えばゲームの複数のプレイヤが存在する場合)ネットワークイベント等を含め、複数のイベントを伴う。各イベントは、対応するイベントハンドラ機能によって処理され得る。イベントは、非決定論的順序で起こり、かつ/又は非決定論的結果を返し得る。記録中に、各トップレベルの機能の起動が、これらの順序に従って記録され得る。このような順序は機能実行シーケンスを形成し得る。これは、一実施形態に従って図2で明らかにされている。図2の記録段階220では、メインのロジック機能222(A1)が記録され、続いて順番に、ユーザ入力224(B1)、ネットワークイベント226(D1)、メインロジック機能228(A2)及びタイミングイベント230(C1)の記録が続く。したがって、記録されるアプリケーションは、全体の順序232「A1 B1 D1 A2 C1」を含む。機能とともに、例えば機能パラメータ(function parameter)及び戻り値(例えばAPIの戻り値)を含む、各機能に関連付けられるデータも記録され得る。この結果、記録後には、関連する実行データコンテキストとともに、機能起動順序の完全なトレースが得られ、これにより、再生時、最初に実行されたアプリケーションのロジック挙動を完全に決定することができる。
図2の再生段階234では、機能A1、B1、D1、A2及びC1の実行フロー及びスケジューリングが、記録段階220中に記録されたトレースに従って管理され得る。アプリケーションの再生は、アプリケーションの実行が非決定論的イベントハンドラによる影響を受けないように、イベントフリーの方法で実行されるように管理され得る。様々なイベントが、自動再生中(例えばユーザ入力)に存在しないようになるか、あるいは抑制されることになる。抑制されることになるイベント(例えばタイミングイベント、ネットワークイベント等)は、フックされてバイパスされ得る。アプリケーションフローの間にいかなる未管理イベントも入れることなく、全ての機能の実行順序が、制御された方法でメインロジックによって決定され得る。これらの非メインロジックのイベント(例えばユーザ入力イベント、タイミングイベント、ネットワークイベント等)は、記録された機能の実行順序に従って、イベントハンドラを含むよう、その先行メインロジックイベントへラップされ得る。図2に図示される例では、メインロジック機能A1は、イベントブロック236(「A1 B1 D1」)へラップされ、メインロジック機能A2は、イベントブロック238(「A2 C1」)へラップされる。したがって、再生段階234では、全体の機能実行シーケンス240は、「A1 B1 D1 A2 C1」のままである。記録された機能パラメータ及び戻り値を再生中に提供して整列せることができ、その結果、全ての機能が記録段階220と同じデータコンテキストで実行されることになる。同じデータコンテキストの下で同じ機能の起動順序を用いて、アプリケーションを、記録段階と正確に同じロジック及び決定論的挙動を用いて完全に再生することができる。
諸実施形態では、ソフトウェアスタックの異なるレイヤで記録及び再生する、複数の可能性がある実装が存在し得る。例えば本明細書で説明される技術は、スクリプトエンジン(例えばJavaScript(登録商標)エンジン)、アプリケーションレイヤ(例えばJavaScript(登録商標))、(例えばエクステンションとしての)ブラウズエンジン、オペレーティングシステム等のうちの1つ以上で実装され得る。これらの例は、単に説明の目的のためであり、限定するようには意図されていない。
例として、様々なアプリケーション(例えばウェブアプリケーション)を記録して再生するツールを(例えばJavaScript(登録商標)で)書くことができる。アプリケーションのフローは、ツールによってトレースされ得る(例えばアニメーションコールバック、タイムアウトコールバック、ユーザイベントハンドラ等の)様々な機能によって駆動され得る。アニメーションコールバックは、例えばスクリーンペイントが必要とされるときにブラウザによって起動されるので、ツールは、メインアプリケーションロジックとしてアニメーションコールバックの実行を処理することができる。このようにして、アプリケーションのレンダリングの性質が維持され得る。タイムアウトコールバック及びユーザイベントハンドラは、記録トレースに従ってツールによって自動的に起動されることになるイベントとして扱われ得る。ツールは、組込機能(例えばツールがJavaScript(登録商標)で書かれている場合は組込JavaScript(登録商標)機能)をフックしてワープし、スクリプト言語の動的な特徴を用いることができる。
図3は、実施形態に係る、イベント記録及び再生の方法300を示す例示のフローチャートである。302において、アプリケーションのアプリケーションロジックが実行され得る。304において、アプリケーションに関連付けられるイベントが、これらのイベントに関連付けられる機能の実行に基づいて記録され得る。イベントを記録することは、トップレベルのイベントを、その順序に従って記録することを含んでよく、また、例えば使用される機能パラメータ及び戻り値のように、記録されるイベントに関連するデータを記録することを含んでもよい。306において、記録されたイベントが、将来の再生のためにメモリ内に格納され得る。308において、再生中に実行しようとする、未記録のイベントを抑制しつつ、記録されたイベントが、この記録されたイベントに関連付けられる記録されたデータを使用して順番に再生され得る。
本明細書で開示される1つ以上の特徴は、別個の又は集積回路ロジック、特定用途向け集積回路(ASIC)ロジック及びマイクロコントローラを含め、ハードウェア、ソフトウェア、ファームウェア又はその組合せで実装されてよく、ドメイン固有の集積回路パッケージの一部として、あるいは集積回路パッケージの組合せとして実装されてもよい。本明細書で使用されるとき、ソフトウェア及びファームウェアという用語は、少なくとも1つのコンピュータ読取可能媒体を含むコンピュータプログラム製品を指す。コンピュータ読取可能媒体は、コンピュータシステムに、本明細書で開示される1つ以上の特徴及び/又は特徴の組合せを実行させるコンピュータ実行可能命令等のコンピュータプログラムを有する。コンピュータ読取可能媒体は、一時的であっても、非一時的であってもよい。一時的なコンピュータ読取可能媒体の例は、ローカル又はワイドエリアネットワークを通して、あるいはインターネット等のネットワークを通して、無線周波数又は導電体を介して伝送されるデジタル信号であり得る。非一時的コンピュータ読取可能媒体の例は、コンパクトディスク、フラッシュメモリ、SRAM、DRAM、ハードドライブ、半導体ドライブ又は他のデータ記憶デバイス等であり得る。
上記のように、諸実施形態では、本明細書で説明される処理の一部又は全てがハードウェア、ソフトウェア及び/又はファームウェアとして実装され得る。そのような実施形態は、図4に図示される例示のコンピューティングシステム450のコンテキストで説明され得る。コンピューティングシステム450は、リンク458又は同様の機構によってメモリ454及び1つ以上の二次記憶デバイス456に接続される、1つ以上のプロセッサ452を含み得る。プロセッサ452は、本明細書で説明される方法を実施するための1つ以上の論理ユニットを含み得る。当業者には、論理ユニットの機能が単一の論理ユニットによって実行されてもよく、複数の論理ユニットによって実行されてもよいことが認識されよう。コンピューティングシステム450は、任意選択で、通信インタフェース460及び/又はユーザインタフェースコンポーネント462を含み得る。通信インタフェース460は、ハードウェア又はハードウェアとソフトウェアの組合せで実装されてよく、ネットワークへの有線又は無線ネットワークインタフェースを提供し得る。ユーザインタフェースコンポーネント462は、例えばタッチスクリーン、ディスプレイ、1つ以上のユーザ入力コンポーネント(例えばキーボード、マウス等)、スピーカ等又はその任意の組合せを含み得る。本明細書で説明される方法を介して処理されるデータ及び/又はグラフィクスは、1つ以上のユーザインタフェースコンポーネント上に表示され得る。1つ以上の二次記憶デバイス456は、例えば1つ以上のハードドライブ等であってよく、プロセッサ452によって実行されるロジック464(例えばアプリケーションロジック)を記憶することができる。一実施形態において、プロセッサ452はマイクロプロセッサであってよく、ロジック464は、プロセッサ452による実行のためにメモリ454に記憶又はロードされて、本明細書で説明される機能を提供する。本明細書で説明される実施形態に従って、記録されたイベント及び関連するデータがメモリ454に記憶されてもよい。図示されていないが、コンピューティングシステム450は追加のコンポーネントを含んでもよいことに留意されたい。
本明細書で説明される技術は、信頼性がある決定論的な方法で、アプリケーションイベントを記録及び再生することを可能にする。アプリケーションの非決定論的挙動は、機能起動イベントベースの方法で記録され、再生中に、記録されたときと正確に同じ方法で挙動するように管理され得る。再生は本質的に、潜在的なランダム性の除外により、決定論的で反復可能である。上記で議論したように、ワークロード、ベンチマーク及びテストケースのために信頼性がある決定論的な記録及び再生技術の使用は、アプリケーション分析、デバッグ及びチューニングに重要であり得る。本明細書で説明される技術は、特に、豊富なアニメーション及びユーザ対話を含み得る高度なウェブアプリケーション(例えばウェブワーカー、ウェブベースのゲーム(例えばスライシングゲーム、シューティングゲーム、カーレーシングゲーム等)、オンライン生産ツール(電子メール、ドキュメント管理システム等)等)に有益である。そのような新しいウェブアプリケーションは、従来の記録及び再生ソリューションを使用して一貫性のある一致した方法で再生することは非常に困難であり得る。というもの、非常に小さな相違が、再生中の挙動では大きな相違となり得るからである。本明細書で説明される技術は、従来のソリューションの潜在的な問題を回避する。例えば一部のアプリケーションでは、時間ベースの技術は再生時に予期しない挙動につながることがあるので、タイムスタンプではなく、画面又はフレームの変化に基づいて機能を起動することによって、より良い再生結果を得ることができる。
本明細書で説明される技術を使用することに様々な利点が存在する。例えば1つの利点では、アプリケーションを、あるプラットフォームで記録し、信頼性及び反復性を失うことなく、別のプラットフォーム上で再生することができることにある。多くの他の利点も考えられ得る。
本明細書で使用される特定の例及びシナリオは、理解を容易にするためであり、限定するものではない。本明細書で説明される特徴は、当業者には理解されるように多くの他のコンテキストにおいて使用されてもよい。
以下の例は、更なる実施形態に関する。
例1は、メモリと、メモリに通信可能に結合されるプロセッサとを備えるコンピューティングシステムを含み、プロセッサが、アプリケーションのアプリケーションロジックを実行し;アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録し;記録されたイベントを将来の再生のためにメモリ内に格納する。
例2は、例1に係る主題を含んでよく、アプリケーションは、ウェブアプリケーション、ゲームアプリケーション又は生産性アプリケーションのうちの1つ以上である。
例3は、例1又は例2に係る主題を含んでよく、イベントは、ユーザ対話、タイミングイベント、ネットワークダウンロード、コールバック又はウェブワーカー(web worker)タスクのうちの1つ以上を含む。
例4は、例1乃至例3のいずれか1つに係る主題を含んでよく、イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録することとを含む。
例5は、例4に係る主題を含んでよく、プロセッサは更に、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生する。
例6は、例5に係る主題を含んでよく、記録すること及び再生することは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる。
例7は、例1乃至例6のいずれか1つに係る主題を含んでよく、イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む。
例8では、例1乃至例7のうちのいずれか1つが、任意選択で、プロセッサ及びネットワークと通信可能に結合される通信インタフェースと;ナビゲーションデバイス及びディスプレイを含み、プロセッサと通信可能に結合されるユーザインタフェースと;アプリケーションロジックを記録し、プロセッサと通信可能に結合されるストレージと;を含んでよく、プロセッサは、アプリケーションロジックをロードして実行し、アプリケーションロジックの実行は、ユーザインタフェースを介してアプリケーションを提示することを含む。
例9は、コンピュータプログラムロジックを有する少なくとも1つのコンピュータ読取可能媒体を含む少なくとも1つのコンピュータプログラム製品を含んでよく、コンピュータプログラムロジックは、プロセッサに:アプリケーションのアプリケーションロジックを実行させ;アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録させ;記録されたイベントを将来の再生のためにメモリ内に格納させるロジックを含む。
例10は、例9に係る主題を含んでよく、イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録することとを含む。
例11は、例10に係る主題を含んでよく、コンピュータプログラムロジックは更に、プロセッサに、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生させるロジックを含む。
例12は、例11に係る主題を含んでよく、記録すること及び再生することは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる。
例13は、例9乃至12のいずれか1つに係る主題を含んでよく、イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む。
例14は、コンピューティング装置であって:アプリケーションのアプリケーションロジックを実行するための手段と;アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するための手段と;記録されたイベントを将来の再生のためにメモリ内に格納するための手段と;を備える、コンピューティング装置を含み得る。
例15は、例14に係る主題を含んでよく、イベントを記録するための手段は、各イベントのトップレベルの機能をその順序に従って記録し、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録するための手段を含む。
例16において、例15は、任意選択で、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生するための手段を更に含み得る。
例17は、例16に係る主題を含んでよく、記録及び再生は、ソフトウェアスタックの1つ以上の異なるレイヤで行われる。
例18は、例14乃至17のいずれか1つに係る主題を含んでよく、イベントを記録するための手段は、非メインロジックのイベントを、その先行するメインロジックイベントにラップするための手段を含む。
例19は、アプリケーション処理の方法を含んでよく、当該方法は:プロセッサによって、アプリケーションのアプリケーションロジックを実行するステップと;プロセッサによって、アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するステップと;プロセッサによって、記録されたイベントを将来の再生のためにメモリ内に格納するステップと;を備える。
例20は、例19に係る主題を含んでよく、イベントを記録するステップは、各イベントのトップレベルの機能をその順序に従って記録するステップと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録するステップを含む。
例21において、例20は、任意選択で、記録されていないイベントを抑制している間に、記録された関連データを使用して、記録されたイベントを順番に再生するステップを含み得る。
例22は、例21に係る主題を含んでよく、記録するステップ及び再生するステップは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる。
例23は、例19乃至22のいずれか1つに係る主題を含んでよく、イベントを記録するステップは、非メインロジックのイベントを、その先行するメインロジックイベントにラップするステップを含む。
例24は、コンピューティングデバイス上で実行されたことに応答して、該コンピューティングデバイスに例19乃至23のいずれか1つに係る方法を実行させる複数の命令を備える、少なくとも1つのマシン読取可能媒体を含み得る。
例25は、例19乃至23のいずれか1つに係る方法を実行する装置を含み得る。
例26は、例19乃至23のいずれか1つに係る方法を実行するコンピュータシステムを含み得る。
例27は、例19乃至23のいずれか1つに係る方法を実行するマシンを含み得る。
例28は、例19乃至23のいずれか1つに係る方法を実行するための手段を備える装置を含み得る。
例29は、例19乃至23のいずれか1つに係る方法を実行するチップセット及びメモリを備えるコンピューティングデバイスを含み得る。
本明細書では、機能、特徴及びその関係を示す機能構築ブロックを用いて方法及びシステムが開示されている。これらの機能構築ブロック図の境界の少なくとも一部は、説明の便宜性のために本明細書において任意に適宜されている。指定される機能及びその関係が適切に実行される限り、代替的な境界を適宜してもよい。
本明細書では、様々な実施形態が開示されるが、これらは、限定ではなく、単なる例示として提示されていることを理解されたい。本明細書で開示される方法及びシステムの範囲から逸脱することなく、形式及び詳細における様々な変更を行ってもよいことが当業者には明らかであろう。したがって、特許請求の範囲の広さ及び範囲は、本明細書で開示される例示の実施形態のいずれによっても限定されるべきではない。
本明細書及び特許請求の範囲で使用されるとき、「〜の1つ以上」という用語によって結合されるアイテムの列挙は、列挙される用語の任意の組合せを意味する可能性がある。例えば「A、B又はCのうちの1つ以上」及び「A、B及びCのうちの1つ以上」というフレーズは、A;B;C;A及びB;A及びC;B及びC;あるいはA、B及びCを意味する可能性がある。

Claims (26)

  1. コンピューティングシステムであって:
    メモリと;
    前記メモリに通信可能に結合されて、
    アプリケーションのアプリケーションロジックを実行し、
    前記アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録し、
    前記記録されたイベントを将来の再生のためにメモリ内に格納する、
    プロセッサと;
    を備える、コンピューティングシステム。
  2. 前記アプリケーションは、ウェブアプリケーション、ゲームアプリケーション又は生産性アプリケーションのうちの1つ以上である、
    請求項1に記載のコンピューティングシステム。
  3. 前記イベントは、ユーザ対話、タイミングイベント、ネットワークダウンロード、コールバック又はウェブワーカータスクのうちの1つ以上を含む、
    請求項1に記載のコンピューティングシステム。
  4. 前記イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録することとを含む、
    請求項1に記載のコンピューティングシステム。
  5. 前記プロセッサは更に、
    記録されていないイベントを抑制している間に、前記記録された関連データを使用して、前記記録されたイベントを順番に再生する、
    請求項4に記載のコンピューティングシステム。
  6. 前記の記録すること及び前記の再生することは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる、
    請求項5に記載のコンピューティングシステム。
  7. 前記イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む、
    請求項1に記載のコンピューティングシステム。
  8. 前記プロセッサ及びネットワークと通信可能に結合される通信インタフェースと;
    ナビゲーションデバイス及びディスプレイを含み、前記プロセッサと通信可能に結合されるユーザインタフェースと;
    前記アプリケーションロジックを記録し、前記プロセッサと通信可能に結合されるストレージと;
    を更に備え、前記プロセッサは、アプリケーションロジックをロードして実行し、前記アプリケーションロジックの実行は、前記ユーザインタフェースを介して前記アプリケーションを提示することを含む、
    請求項1乃至7のいずれか一項に記載のコンピューティングシステム。
  9. プロセッサに、
    アプリケーションのアプリケーションロジックを実行させ、
    前記アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録させ、
    前記記録されたイベントを将来の再生のためにメモリ内に格納させる、
    コンピュータプログラム。
  10. 前記イベントを記録することは、各イベントのトップレベルの機能をその順序に従って記録することと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録することとを含む、
    請求項9に記載のコンピュータプログラム。
  11. 前記プロセッサに更に、
    記録されていないイベントを抑制している間に、前記記録された関連データを使用して、前記記録されたイベントを順番に再生させる、
    請求項10に記載のコンピュータプログラム。
  12. 前記の記録すること及び前記の再生することは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる、
    請求項11に記載のコンピュータプログラム。
  13. 前記イベントを記録することは、非メインロジックのイベントを、その先行するメインロジックイベントにラップすることを含む、
    請求項9乃至12のいずれか一項に記載のコンピュータプログラム。
  14. コンピューティング装置であって:
    アプリケーションのアプリケーションロジックを実行するための手段と;
    前記アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するための手段と;
    前記記録されたイベントを将来の再生のためにメモリ内に格納するための手段と;
    を備える、コンピューティング装置。
  15. 前記イベントを記録するための手段は、各イベントのトップレベルの機能をその順序に従って記録し、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録するための手段を含む、
    請求項14に記載のコンピューティング装置。
  16. 記録されていないイベントを抑制している間に、前記記録された関連データを使用して、前記記録されたイベントを順番に再生するための手段、
    を更に備える、請求項15に記載のコンピューティング装置。
  17. 前記の記録及び前記の再生は、ソフトウェアスタックの1つ以上の異なるレイヤで行われる、
    請求項16に記載のコンピューティング装置。
  18. 前記イベントを記録するための手段は、非メインロジックのイベントを、その先行するメインロジックイベントにラップするための手段を含む、
    請求項16に記載のコンピューティング装置。
  19. アプリケーション処理の方法であって:
    プロセッサによって、アプリケーションのアプリケーションロジックを実行するステップと;
    前記プロセッサによって、前記アプリケーションに関連付けられるイベントを、該イベントに関連付けられる機能の起動に基づいて記録するステップと;
    前記プロセッサによって、前記記録されたイベントを将来の再生のためにメモリ内に格納するステップと;
    を備える、方法。
  20. 前記イベントを記録するステップは、各イベントのトップレベルの機能をその順序に従って記録するステップと、機能パラメータ又は戻り値のうちの1つ以上を含む関連データを記録するステップを含む、
    請求項19に記載の方法。
  21. 記録されていないイベントを抑制している間に、前記記録された関連データを使用して、前記記録されたイベントを順番に再生するステップ、
    を更に備える、請求項20に記載の方法。
  22. 前記の記録するステップ及び前記の再生するステップは、ソフトウェアスタックの1つ以上の異なるレイヤで行われる、
    請求項21に記載の方法。
  23. 前記イベントを記録するステップは、非メインロジックのイベントを、その先行するメインロジックイベントにラップするステップを含む、
    請求項19に記載の方法。
  24. 請求項19乃至23のいずれか一項に記載の方法を実行する装置。
  25. 請求項19乃至23のいずれか一項に記載の方法を実行するチップセット及びメモリを備えるコンピューティングデバイス。
  26. 請求項9乃至13のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ読取可能記憶媒体。

JP2016567661A 2014-05-14 2014-05-14 高度なアプリケーションのためのイベントベースの記録及び再生 Active JP6529987B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/077435 WO2015172326A1 (en) 2014-05-14 2014-05-14 Event-based record and replay for advanced applications

Publications (2)

Publication Number Publication Date
JP2017516230A true JP2017516230A (ja) 2017-06-15
JP6529987B2 JP6529987B2 (ja) 2019-06-12

Family

ID=54479149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016567661A Active JP6529987B2 (ja) 2014-05-14 2014-05-14 高度なアプリケーションのためのイベントベースの記録及び再生

Country Status (4)

Country Link
US (1) US10901810B2 (ja)
JP (1) JP6529987B2 (ja)
CN (1) CN106664285B (ja)
WO (1) WO2015172326A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105683938A (zh) * 2013-10-30 2016-06-15 慧与发展有限责任合伙企业 记录应用测试
US10069855B1 (en) * 2015-09-23 2018-09-04 Wells Fargo Bank, N.A. Automated security analysis of software libraries
US10067848B2 (en) * 2016-07-27 2018-09-04 Facebook, Inc. Methods and systems for benchmarking web browser performance
US10061604B2 (en) 2016-08-09 2018-08-28 Red Hat, Inc. Program execution recording and playback
US9697101B1 (en) 2016-09-20 2017-07-04 International Business Machines Corporation Detecting errors in web application runtime environments
CN107193734B (zh) * 2017-05-17 2021-01-01 上海交通大学 用于移动Web应用的重放方法及重放系统
CN109684175B (zh) * 2018-12-26 2022-07-19 百度在线网络技术(北京)有限公司 应用软件操作的记录方法和装置以及复现方法和装置
US11416348B2 (en) * 2020-04-03 2022-08-16 Ivanti, Inc. Incident-responsive, computing system snapshot generation
CN115543562A (zh) * 2022-09-16 2022-12-30 杨正 应用的运行处理方法、装置、电子设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134464A (ja) * 1999-11-09 2001-05-18 Canon Inc 情報処理方法および装置
US20090089404A1 (en) * 2007-09-28 2009-04-02 Chao Yang Guo Web-based record/replay
JP2010020562A (ja) * 2008-07-10 2010-01-28 Ricoh Co Ltd 画像処理装置、情報処理装置、ソフトウェア動作テスト方法、ソフトウェア動作テストプログラム、及びそのプログラムを記録した記録媒体
US8578340B1 (en) * 2010-09-24 2013-11-05 Ca, Inc. Recording and replaying computer program execution with recorded execution event breakpoints

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373548B2 (en) * 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
US8079019B2 (en) * 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US20110191676A1 (en) * 2010-01-29 2011-08-04 Microsoft Corporation Cross-Browser Interactivity Recording, Playback, and Editing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134464A (ja) * 1999-11-09 2001-05-18 Canon Inc 情報処理方法および装置
US20090089404A1 (en) * 2007-09-28 2009-04-02 Chao Yang Guo Web-based record/replay
JP2010020562A (ja) * 2008-07-10 2010-01-28 Ricoh Co Ltd 画像処理装置、情報処理装置、ソフトウェア動作テスト方法、ソフトウェア動作テストプログラム、及びそのプログラムを記録した記録媒体
US8578340B1 (en) * 2010-09-24 2013-11-05 Ca, Inc. Recording and replaying computer program execution with recorded execution event breakpoints

Also Published As

Publication number Publication date
US20170075738A1 (en) 2017-03-16
WO2015172326A1 (en) 2015-11-19
CN106664285A (zh) 2017-05-10
CN106664285B (zh) 2020-06-16
JP6529987B2 (ja) 2019-06-12
US10901810B2 (en) 2021-01-26

Similar Documents

Publication Publication Date Title
JP6529987B2 (ja) 高度なアプリケーションのためのイベントベースの記録及び再生
Lo et al. Imagen: Runtime migration of browser sessions for javascript web applications
US8689214B2 (en) Replication of machine instances in a computing environment
US8645765B2 (en) Serialized error injection into a function under test
US9823991B2 (en) Concurrent workload simulation for application performance testing
US10949332B2 (en) Data race analysis based on altering function internal loads during time-travel debugging
CN110998541A (zh) 调试器中的代码的试验性执行
CN105574416A (zh) 一种浏览器漏洞检测方法及装置
US9229846B1 (en) Testing application code changes using a state assertion framework
US8863095B2 (en) Recording and playback of system interactions in different system environments
JP2016514326A (ja) コンピューターシステムアクティビティのトレースタイムラインを解析するための方法およびシステム
EP3559813B1 (en) Parallel replay of executable code
US10956304B2 (en) Dynamic diagnostic code instrumentation over a historic program execution
CN113485908A (zh) 一种覆盖率的获取方法、装置及电子设备
AU2018309575B2 (en) Focused execution of traced code in a debugger
CN113785284A (zh) 基于历史调试追踪来标识数据不一致和数据争用
CN109460366A (zh) 一种软件稳定性测试方法、装置、设备及介质
CN105095198B (zh) 一种访问数据实体的方法及装置
US11847433B2 (en) Source code editing combining edit and continue with hot reload
TWI479417B (zh) 電子產品測試裝置及方法
CN106371992B (zh) 浏览器错误检测方法及错误检测装置
JP2022548475A (ja) ディフグラムを用いた時間遡及トレースの索引付け及び再現
JP5288124B2 (ja) 論理シミュレーションシステム、論理シミュレーション方法及び論理シミュレーションプログラム
CN113377632A (zh) 用户行为的回溯方法及装置
Chen Developing a music player mobile application with cloud server

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190515

R150 Certificate of patent or registration of utility model

Ref document number: 6529987

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250