テスト JavaScript API の実行

テストは、重大な影響をもたらすテストに対応した、厳正なオンライン評価を提供するブラウザー ベースの UWP アプリです。これにより、教育者はセキュリティ保護されたテスト環境を提供する方法ではなく、コンテンツの評価に集中することができます。 これを実現するために、任意の Web アプリケーションが利用できる JavaScript API を使用します。 テスト API は、重要性の高い一般的なコア テスト用の SBAC ブラウザー API 標準をサポートします。

アプリ自体の詳細については、「テスト アプリのテクニカル リファレンス」を参照してください。 トラブルシューティングのヘルプについては、「イベント ビューアーを使用した Microsoft テストのトラブルシューティング」を参照してください。

リファレンス ドキュメント

テスト API は次の名前空間に存在します。 すべての API はグローバル SecureBrowser オブジェクトに依存します。

名前空間 説明
セキュリティ名前空間 テスト用にデバイスをロックダウンし、テスト環境を使用できる API が含まれています。

セキュリティ名前空間

セキュリティ名前空間を使用すると、デバイスのロックダウン、ユーザー プロセスとシステム プロセスの一覧の確認、MAC および IP アドレスの取得、キャッシュされている Web リソースのクリアを行うことができます。

メソッド 説明
ロックダウン テスト用にデバイスをロックダウンします。
isEnvironmentSecure ロックダウン コンテキストが引き続きデバイスに適用されるかどうか判断します。
getDeviceInfo テスト アプリケーションが稼働しているプラットフォームの詳細を取得します。
examineProcessList 稼働中のユーザー プロセスとシステム プロセスの一覧を取得します。
閉じる ブラウザーを閉じ、デバイスのロックを解除します。
getPermissiveMode 制限解除モードがオンかオフかどうか確認します。
setPermissiveMode 制限解除モードのオンとオフを切り替えます。
emptyClipBoard システム クリップボードをクリアします。
getMACAddress デバイスの MAC アドレスの一覧を取得します。
getStartTime テスト アプリが起動した時刻を取得します。
getCapability 機能が有効か無効か確認します。
setCapability 指定した機能を有効化または無効化します。
isRemoteSession 現在のセッションがリモートでログインしているかどうか確認します。
isVMSession 現在のセッションが仮想マシンで稼働しているかどうか確認します。

ロックダウン

デバイスをロックダウンします。 デバイスのロックを解除するためにも使用されます。 テスト Web アプリケーションは、学生にテストの開始を許可する前にこの呼び出しを実施します。 実装担当者は、テスト環境をセキュリティで保護するために必要なアクションを実行する必要があります。 環境をセキュリティで保護するための手順はデバイスごとに異なり、たとえば、画面キャプチャの無効化、セキュア モードでのボイス チャットの無効化、システム クリップボードのクリア、キオスク モードへの移行、OSX 10.7 以降のデバイスでの Spaces の無効化などの側面が含まれます。テスト アプリケーションを使用すると、評価が開始する前にロックダウンを有効化でき、学生が評価を完了し、セキュリティで保護されたテストから外れると、ロックダウンを無効化できます。

構文
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);

Parameters

  • enable - true は、ロック画面上でテスト アプリを実行し、このドキュメントで説明されているポリシーを適用します。 false を設定すると、アプリがロックダウンされていない場合を除いて、ロック画面の上でテストの実行を停止しテストを閉じます。その場合、影響は発生しません。
  • onSuccess - [オプション] ロックダウンが正常に有効または無効にされた後で呼び出す関数です。 これは Function(Boolean currentlockdownstate) の形式である必要があります。
  • onError - [オプション] ロックダウン操作に失敗した場合に呼び出す関数です。 これは Function(Boolean currentlockdownstate) の形式である必要があります。


Windows 10 のバージョン 1709 以降


isEnvironmentSecure

ロックダウン コンテキストが引き続きデバイスに適用されるかどうか判断します。 学生がテストを開始できるようになる前と、テスト実施中に定期的に、テスト Web アプリケーションはこれを呼び出します。

構文
void SecureBrowser.security.isEnvironmentSecure(Function callback);

Parameters

  • callback - この関数が完了したときに呼び出す関数です。 これは Function(String state) の形式である必要があり、state は 2 つのフィールドを含む JSON 文字列です。 1 つ目のフィールドは secure で、セキュリティで保護されたテスト環境を有効にするために必要なすべてのロックが有効化され (または機能が無効化され)、アプリがロックダウン モードになってからこれらのいずれも侵害されていない場合にのみ true を表示します。 もう 1 つのフィールドの messageKey には、ベンダー固有のその他の詳細または情報が含まれます。 ここでの目的は、ベンダーがブール値の secure フラグを拡張する追加情報を配置できるようにすることです。
{
    'secure' : "true/false",
    'messageKey' : "some message"
}


Windows 10、バージョン 1709 以降


getDeviceInfo

テスト アプリケーションが稼働しているプラットフォームの詳細を取得します。 これを使用すると、ユーザー エージェントから識別可能な情報を拡張できます。

構文
void SecureBrowser.security.getDeviceInfo(Function callback);

Parameters

  • callback - この関数が完了したときに呼び出す関数です。 これは Function(String infoObj) の形式である必要があり、infoObj は複数のフィールドを含む JSON 文字列です。 次のフィールドをサポートする必要があります。
    • os OS の種類を表します (例: Windows、macOS、Linux、iOS、Android)。
    • name 存在する場合、OS リリースの名前を表します (例: シエラ、Ubuntu)。
    • version OS バージョンを表します (例: 10.1、10 Pro)。
    • brand セキュリティで保護されたブラウザーのブランドを表します (例: OAKS、CA、SmarterApp)。
    • model モバイル デバイスのデバイス モデルのみを表します。デスクトップ ブラウザーに対しては null または未使用です。


Windows 10、バージョン 1709 以降


examineProcessList

ユーザーが所有するクライアント コンピューターで稼働しているすべてのプロセスの一覧を取得します。 テスト アプリケーションはこれを呼び出して一覧を調べ、テスト サイクル中に拒否リストと見なされたプロセスの一覧と比較します。 この呼び出しは、評価の開始時と、学生が評価を受けている間に定期的に呼び出す必要があります。 拒否リストのプロセスが検出された場合は、テストの整合性を維持するために評価を停止する必要があります。

構文
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);

Parameters

  • denylistedProcessList - テスト アプリケーションが拒否リストに追加した評価の一覧。
    callback - アクティブなプロセスが見つかった後で呼び出す関数です。 これは Function(String foundDenylistedProcesses) の形式である必要があり、foundDenylistedProcesses"['process1.exe','process2.exe','processEtc.exe']" の形式になります。 拒否リストのプロセスが見つからなかった場合は空になります。 null の場合は、元の関数呼び出しでエラーが発生したことを示します。

備考 この一覧にはシステム プロセスは含まれません。


Windows 10、バージョン 1709 以降


閉じる

ブラウザーを閉じ、デバイスのロックを解除します。 ユーザーがブラウザーを終了することを選択した場合、テスト アプリケーションはこれを呼び出す必要があります。

構文
void SecureBrowser.security.close(restart);

Parameters

  • restart - このパラメーターは無視されますが、指定する必要があります。

備考 Windows 10 バージョン 1607 では、デバイスを最初にロックダウンする必要があります。 以降のバージョンでは、デバイスがロックダウンされているかどうかに関係なくこのメソッドはブラウザーを閉じます。


Windows 10、バージョン 1709 以降


getPermissiveMode

テスト Web アプリケーションはこれを呼び出して、制限解除モードがオンかオフか判断する必要があります。 制限解除モードでは、セキュリティで保護されたブラウザーで支援技術を提供できるように、ブラウザーは厳格なセキュリティ フックの一部を緩和する必要があります。 たとえば、他のアプリケーション UI がブラウザー上に表示されるのを積極的に防ぐブラウザーの場合、制限解除モードではこの状況を緩和したい場合があります。

構文
void SecureBrowser.security.getPermissiveMode(Function callback)

Parameters

  • callback - この呼び出しが完了したときに呼び出す関数です。 これは Function(Boolean permissiveMode) の形式である必要があり、permissiveMode はブラウザーが現在制限解除モードであるかどうかを示します。 未定義または null の場合、get 操作でエラーが発生しています。


Windows 10、バージョン 1709 以降


setPermissiveMode

テスト Web アプリケーションはこれを呼び出して、制限解除モードのオンとオフを切り替える必要があります。 制限解除モードでは、セキュリティで保護されたブラウザーで支援技術を提供できるように、ブラウザーは厳格なセキュリティ フックの一部を緩和する必要があります。 たとえば、他のアプリケーション UI がブラウザー上に表示されるのを積極的に防ぐブラウザーの場合、制限解除モードではこの状況を緩和したい場合があります。

構文
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)

Parameters

  • enable - 目的の制限解除モードの状態を示すための Boolean 値。
  • callback - この呼び出しが完了したときに呼び出す関数です。 これは Function(Boolean permissiveMode) の形式である必要があり、permissiveMode はブラウザーが現在制限解除モードであるかどうかを示します。 未定義または null の場合、set 操作でエラーが発生しています。


Windows 10、バージョン 1709 以降


emptyClipBoard

システム クリップボードをクリアします。 テスト アプリケーションはこれを呼び出して、システム クリップボードに格納できるデータを強制的にクリアする必要があります。 lockDown 関数もこの操作を実行します。

構文
void SecureBrowser.security.emptyClipBoard();


Windows 10、バージョン 1709 以降


getMACAddress

デバイスの MAC アドレスの一覧を取得します。 テスト アプリケーションはこれを呼び出して、診断を支援する必要があります。

構文
void SecureBrowser.security.getMACAddress(Function callback);

Parameters

  • callback - この呼び出しが完了したときに呼び出す関数です。 これは Function(String addressArray) の形式である必要があり、addressArray"['00:11:22:33:44:55','etc']" の形式になります。

注釈
ファイアウォール、NAT、プロキシは学校で一般的に使用されているため、ソース IP アドレスに基づいてテスト サーバー内のエンド ユーザー マシンを区別することは困難です。 MAC アドレスを使用すると、アプリは診断目的で共通のファイアウォールの背後にあるエンド クライアント マシンを区別できます。


Windows 10、バージョン 1709 以降


getStartTime

テスト アプリが起動した時刻を取得します。

構文
DateTime SecureBrowser.security.getStartTime();

Return
テスト アプリが起動した時刻を示す DateTime オブジェクト。


Windows 10、バージョン 1709 以降


getCapability

機能が有効か無効か確認します。

構文
Object SecureBrowser.security.getCapability(String feature)

Parameters
feature - 照会する機能を特定する文字列。 有効な機能文字列は、"screenMonitoring"、"printing"、"textSuggestions" です (大文字と小文字は区別されません)。

戻り値
この関数は、JavaScript オブジェクトまたは {<feature>:true|false} の形式のリテラルを返します。 参照された機能が有効な場合は true、機能が有効化されていない場合や機能文字列が無効な場合は false

要件 Windows 10、バージョン 1703 以降


setCapability

ブラウザーで特定の機能を有効化または無効化します。

構文
void SecureBrowser.security.setCapability(String feature, String value, Function onSuccess, Function onError)

Parameters

  • feature - 設定する機能を特定する文字列。 有効な機能文字列は、"screenMonitoring""printing""textSuggestions" です (大文字と小文字は区別されません)。
  • value - 機能の目的の設定です。 これは "true" または "false" のいずれかである必要があります。
  • onSuccess - [オプション] Set 操作の後に呼び出す関数は、正常に完了しました。 これは Function(String jsonValue) の形式である必要があり、jsonValue{<feature>:true|false|undefined} の形式になります。
  • onError - [オプション] Set 操作に失敗した場合に呼び出す関数です。 これは Function(String jsonValue) の形式である必要があり、jsonValue{<feature>:true|false|undefined} の形式になります。

注釈
対象となる機能がブラウザーにとって不明な場合、この関数はコールバック関数に undefined の値を渡します。

要件 Windows 10、バージョン 1703 以降


isRemoteSession

現在のセッションがリモートでログインしているかどうか確認します。

構文
Boolean SecureBrowser.security.isRemoteSession();

戻り値
現在のセッションがリモートの場合は true、そうでない場合は false


Windows 10 のバージョン 1709 以降


isVMSession

現在のセッションが仮想マシンで稼働しているかどうか確認します。

構文
Boolean SecureBrowser.security.isVMSession();

戻り値
現在のセッションが仮想マシンで稼働している場合は true、そうでない場合は false

注釈
この API チェックは、適切な API を実装する特定のハイパーバイザーで稼働している VM セッションのみを検出できます


Windows 10 のバージョン 1709 以降