Take a Test 是一款基於瀏覽器的 UWP 應用程式,能呈現鎖定的線上評量,以應付高風險測驗,讓教育者能專注於評量內容,而非如何提供安全的測驗環境。 為此,它使用任何網頁應用程式都能使用的 JavaScript API。 Take-a-test API 支援 SBAC 瀏覽器 API 標準 ,適用於高風險的共同核心測試。
欲了解更多關於該應用程式本身的資訊,請參閱 Take a Test 應用程式的技術參考 資料。 如需故障排除協助,請參閱「 用事件檢視器進行 Microsoft Take a Test 的故障排除」。
參考文件
Take a Test API 存在於以下命名空間中。 請注意,所有 API 都依賴於一個全域 SecureBrowser 物件。
| Namespace | Description |
|---|---|
| 安全命名空間 | 包含 API,讓你能鎖定裝置進行測試並強制執行測試環境。 |
安全命名空間
安全命名空間允許你鎖定裝置、檢查使用者與系統程序清單、取得 MAC 和 IP 位址,以及清除快取的網路資源。
| 方法 | Description |
|---|---|
| 封鎖 | 將裝置鎖定以進行測試。 |
| isEnvironmentSecure | 判斷鎖定情境是否仍套用於裝置。 |
| getDeviceInfo | 取得測試應用程式所運行平台的詳細資訊。 |
| examineProcessList | 取得正在執行的使用者與系統程序清單。 |
| 近 | 關閉瀏覽器並解鎖裝置。 |
| getPermissiveMode | 檢查允許模式是開啟還是關閉。 |
| setPermissiveMode | 切換允許模式為開啟或關閉。 |
| emptyClipBoard | 清除系統剪貼板。 |
| getMACAddress | 取得裝置的 MAC 位址清單。 |
| getStartTime | 它能取得測試應用程式啟動的時間。 |
| getCapability | 查詢某項能力是否啟用或停用。 |
| setCapability | 啟用或停用指定功能。 |
| isRemoteSession | 檢測目前會話是否遠端登入。 |
| isVMSession | 檢查目前的會話是否在虛擬機中執行。 |
鎖定模式
鎖定裝置。 也用來解鎖裝置。 測試網頁應用程式會在允許學生開始測驗前啟動此呼叫。 實作者必須採取任何必要行動來保障測試環境的安全。 保護環境的步驟因裝置而異,例如關閉螢幕擷取、在安全模式下關閉語音聊天、清除系統剪貼簿、進入自助服務亭模式、在 OSX 10.7+ 裝置中停用 Spaces 等。測驗應用程式會在評量開始前啟用封鎖,並在學生完成評量且離開安全考試時解除封鎖。
Syntax
void SecureBrowser.security.lockDown(Boolean enable, Function onSuccess, Function onError);
參數
-
enable- 啟動 Take-a-Test 應用程式,使其在鎖定畫面上方運行,並套用 Take-a-Test 應用程式技術參考中討論的政策。 false 會停止在鎖定畫面上方執行 Take-a-Test,除非應用程式未被鎖定,否則會關閉該視窗;在這種情況下,就沒有影響。 -
onSuccess- [可選] 在鎖定功能成功啟用或停用後呼叫的函式。 它必須是形式Function(Boolean currentlockdownstate)。 -
onError- [可選] 鎖定操作失敗時呼叫的函式。 它必須是形式Function(Boolean currentlockdownstate)。
要求
Windows 10 版本 1709 或更新版本。
環境是否安全
判斷鎖定情境是否仍套用於裝置。 考試網頁應用程式會在學生開始測試前及測試期間定期調用此功能。
Syntax
void SecureBrowser.security.isEnvironmentSecure(Function callback);
參數
-
callback- 當該函式完成時要呼叫的函式。 它必須是包含兩個欄位的 JSON 字串形式Function(String state)state。 第一個是欄位secure,只有在所有必要的鎖已啟用(或功能被停用),以便啟用安全的測試環境時,此欄位才會顯示true,而且自從應用程式進入封鎖模式後,這些鎖定或功能都未被破解。 另一個欄位messageKey,包含其他供應商專屬的細節或資訊。 此處的目的是讓廠商能加入額外資訊,以增強布林值secure標記:
{
'secure' : "true/false",
'messageKey' : "some message"
}
要求
Windows 10 版本 1709 或更新版本
getDeviceInfo
取得測試應用程式所運行平台的詳細資訊。 此功能用以增強用戶代理可辨識的任何資訊。
Syntax
void SecureBrowser.security.getDeviceInfo(Function callback);
參數
-
callback- 當該函式完成時要呼叫的函式。 它必須是包含多個欄位的 JSON 字串形式Function(String infoObj)infoObj。 以下欄位必須支援:-
os代表作業系統類型(例如:Windows、macOS、Linux、iOS、Android 等) -
name代表作業系統的發行名稱(例如:Sierra、Ubuntu)。 -
version代表作業系統版本(例如:10.1、10 Pro 等) -
brand代表安全的瀏覽器品牌(例如:OAKS、CA、SmarterApp 等) -
model僅代表行動裝置的裝置模型;桌面瀏覽器則是空/未使用。
-
要求
Windows 10 版本 1709 或更新版本
examineProcessList (檢查流程清單)
取得使用者擁有的客戶端機器上所有正在執行的程序清單。 測試應用程式會啟動此條件來檢視清單,並與測試週期中被認定為拒絕名單的流程清單進行比較。 此呼喚應在評量開始時及學生進行評量時定期啟動。 若偵測到拒絕名單的流程,應停止評估以維護測試完整性。
Syntax
void SecureBrowser.security.examineProcessList(String[] denylistedProcessList, Function callback);
參數
-
denylistedProcessList- 測試應用程式已拒絕列出的程序清單。
callback- 在找到活躍程序後調用的函式。 它必須是形式:Function(String foundDenylistedProcesses)其中foundDenylistedProcesses形式為:"['process1.exe','process2.exe','processEtc.exe']"。 如果找不到拒絕名單的流程,該系統將是空的。 若為空值,表示原始函式呼叫發生錯誤。
備註 此清單未包含系統程序。
要求
Windows 10 版本 1709 或更新版本
關閉
關閉瀏覽器並解鎖裝置。 測試應用程式應在使用者選擇退出瀏覽器時啟動此程序。
Syntax
void SecureBrowser.security.close(restart);
參數
-
restart- 此參數被忽略,但必須提供。
備註 在 Windows 10 版本 1607 中,裝置必須一開始就鎖定。 在後續版本中,無論裝置是否鎖定,此方法都會關閉瀏覽器。
要求
Windows 10 版本 1709 或更新版本
getPermissiveMode
測試網頁應用程式應調用此參數來判斷允許模式是開啟還是關閉。 在允許模式下,瀏覽器預期會放寬部分嚴格的安全鉤子,以允許輔助技術與安全瀏覽器協同運作。 例如,積極阻止其他應用程式介面在它們上方呈現的瀏覽器,可能想在允許模式下放寬這個限制。
Syntax
void SecureBrowser.security.getPermissiveMode(Function callback)
參數
-
callback- 當此呼叫完成時,要調用的函式。 它必須以以下形式Function(Boolean permissiveMode):其中permissiveMode表示瀏覽器目前是否處於允許模式。 若為未定義或空,則表示取得操作發生錯誤。
要求
Windows 10 版本 1709 或更新版本
setPermissiveMode
測試網頁應用程式應該會調用此參數來切換允許模式的開關。 在允許模式下,瀏覽器預期會放寬部分嚴格的安全鉤子,以允許輔助技術與安全瀏覽器協同運作。 例如,積極阻止其他應用程式介面在它們上方呈現的瀏覽器,可能想在允許模式下放寬這個限制。
Syntax
void SecureBrowser.security.setPermissiveMode(Boolean enable, Function callback)
參數
-
enable- 布林值,表示預期的允許模式狀態。 -
callback- 當此呼叫完成時,要調用的函式。 它必須以以下形式Function(Boolean permissiveMode):其中permissiveMode表示瀏覽器目前是否處於允許模式。 若未定義或為空,則表示集合操作發生錯誤。
要求
Windows 10 版本 1709 或更新版本
空剪貼簿
清除系統剪貼板。 測試應用程式應呼叫此命令,強制清除系統夾板中可能儲存的資料。 lockDown 函式也執行此操作。
Syntax
void SecureBrowser.security.emptyClipBoard();
要求
Windows 10 版本 1709 或更新版本
getMACAddress
取得裝置的 MAC 位址清單。 測試應用程式應會引用此資訊以協助診斷。
Syntax
void SecureBrowser.security.getMACAddress(Function callback);
參數
-
callback- 當此呼叫完成時,要調用的函式。 它必須是形式:Function(String addressArray)其中addressArray形式為:"['00:11:22:33:44:55','etc']"。
Remarks
由於學校常用防火牆、NAT 或代理伺服器,難以依賴來源 IP 來區分測試伺服器內的終端使用者機器。 MAC 位址讓應用程式能區分最終用戶端機器,這些機器位於共用防火牆後,以便診斷。
要求
Windows 10 版本 1709 或更新版本
getStartTime
它能取得測試應用程式啟動的時間。
Syntax
DateTime SecureBrowser.security.getStartTime();
返回
一個DateTime物件,表示測試應用程式啟動的時間。
要求
Windows 10 版本 1709 或更新版本
getCapability
查詢某項能力是否啟用或停用。
Syntax
Object SecureBrowser.security.getCapability(String feature)
參數
feature - 用於決定查詢哪個功能的字串。 有效的功能字串包括「screenMonitoring」、「printing」和「textSuggestions」(大小寫不區分)。
回報價值
此函式會回傳 JavaScript 物件或字面量,形式為:{<feature>:true|false}。
若查詢 能力已啟用,則為 true;若未啟用該能力或能力字串無效,則為 false 。
需求 Windows 10,版本 1703 或更新版本
設定能力
啟用或停用瀏覽器的特定功能。
Syntax
void SecureBrowser.security.setCapability(String feature, String value, Function onSuccess, Function onError)
參數
-
feature- 決定要設定哪個能力的字串。 有效的能力字串為"screenMonitoring"、 、"printing"和"textSuggestions"(大小寫不區分)。 -
value- 該功能的預期設定。 它必須是"true"或"false"。 -
onSuccess- [可選性] 在集合操作成功完成後呼叫的函式。 必須是Function(String jsonValue)的形式,其中 jsonValue 是:{<feature>:true|false|undefined}。 -
onError- [可選] 若集合操作失敗時呼叫的函式。 它必須是Function(String jsonValue)jsonValue 的形式為:{<feature>:true|false|undefined}。
Remarks
如果目標功能瀏覽器未知,這個函式會將 的 undefined 值傳給回調函式。
需求 Windows 10,版本 1703 或更新版本
isRemoteSession(是否為遠端會話)
檢測目前會話是否遠端登入。
Syntax
Boolean SecureBrowser.security.isRemoteSession();
傳回值
如果目前會話是遠端,則為 true;否則為 false。
要求
Windows 10 版本 1709 或更新版本。
isVMSession
檢查目前的會話是否在虛擬機器中運行。
Syntax
Boolean SecureBrowser.security.isVMSession();
傳回值
若當前會話正在虛擬機器中執行,則為 true;否則為 false。
Remarks
此 API 檢查只能偵測在某些實作適當 API 的虛擬機管理程式中運行的虛擬機的會話
要求
Windows 10 版本 1709 或更新版本。