選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

長時間測試

焦點模式
長時間測試 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

長時間測試是一款新型測試套件,可監測裝置在長時間運作期間的行為。相較於執行著重於裝置特定行為的個別測試,長時間測試會檢查裝置在其使用壽命內各種實際案例中的行為。Device Advisor 會以最有效率的順序來協調測試。該測試會產生結果和日誌,其中包括一份摘要日誌,詳載有關裝置效能的實用指標。

MQTT 長時間測試案例

在MQTT長時間測試案例中,最初會在MQTT連線、訂閱、發佈和重新連線等滿意案例案例中觀察到裝置的行為。然後,在多個複雜的故障案例中觀察到裝置,例如MQTT重新連線退避、長伺服器中斷連線和間歇連線。

MQTT 長時間測試案例執行流程

執行MQTT長時間測試案例有三個階段:

「MQTT長時間測試執行」,顯示基本測試執行、進階測試執行和額外執行時間。

基本測試執行

此階段的測試案例會以並行方式執行簡易測試。測試將驗證裝置是否依據在組態中所做的選擇進行操作。

根據所選操作,一組基本測試可以包括以下內容:

CONNECT

此案例會驗證裝置是否能夠與代理程式成功建立連線。

基本連線流程,包括傳送CONNECT訊息的裝置,而 Broker 會以成功的傳回碼來回應CONNACK訊息。

PUBLISH

此案例會驗證裝置是否成功針對代理程式進行發佈。

QoS 0

此測試案例會驗證裝置在以 QoS 0 發佈期間是否成功將 PUBLISH 訊息傳送至代理程式。測試不會等待裝置接收關於 PUBACK 的訊息。

QoS 0 PUBLISH 流程,其中包含傳送 QoS 0 層級PUBLISH訊息的裝置。
QoS 1

在此測試案例中,裝置預計將向具有 QoS 1 的代理程式傳送兩條 PUBLISH 訊息。在第一條 PUBLISH 訊息之後,代理程式會等待最多 15 秒,然後再回應。裝置必須在 15 秒的時段中重新嘗試具有相同封包識別碼的原始 PUBLISH 訊息。在此情況下,代理程式會以 PUBACK 訊息回應,且測試會進行驗證。如果裝置沒有重試 PUBLISH,則原始 PUBACK 會傳送到裝置,並將測試標記為附帶警告的通過,同時提供系統訊息。測試執行期間,如果裝置失去連線並重新連接,則測試案例將重置而不會故障,並且裝置必須再次執行測試案例步驟。

QoS 1 PUBLISH 流程,其中包含傳送 QoS 1 層級PUBLISH訊息的裝置,以及與代理程式的多個互動。

SUBSCRIBE

此案例會驗證裝置是否成功針對代理程式進行訂閱。

QoS 0

此測試案例會驗證裝置在以 QoS 0 訂閱期間是否成功將 SUBSCRIBE 訊息傳送至代理程式。測試不會等待裝置收到SUBACK訊息。

SUBSCRIBE QoS 0 流程,包括傳送 QoS 0 層級SUBSCRIBE訊息的裝置,以及以SUBACK訊息和成功 QoS 上限 0 程式碼回應的代理程式。
QoS 1

在此測試案例中,裝置預計將向具有 QoS 1 的代理程式傳送兩條 SUBSCRIBE 訊息。在第一條 SUBSCRIBE 訊息之後,代理程式會等待最多 15 秒,然後再回應。裝置必須在 15 秒的時段中重新嘗試具有相同封包識別碼的原始 SUBSCRIBE 訊息。在此情況下,代理程式會以 SUBACK 訊息回應,且測試會進行驗證。如果裝置沒有重試 SUBSCRIBE,則原始 SUBACK 會傳送到裝置,並將測試標記為附帶警告的通過,同時提供系統訊息。測試執行期間,如果裝置失去連線並重新連接,則測試案例將重置而不會故障,並且裝置必須再次執行測試案例步驟。

QoS 1 SUBSCRIBE 流程,其中包含傳送 QoS 1 層級SUBSCRIBE訊息的裝置,以及與代理程式的多個互動。

RECONNECT

此案例會驗證裝置在從成功的連線中斷之後,是否成功與代理程式重新連線。如果先前已在測試套件期間連線多次,則 Device Advisor 不會中斷裝置連線。相反,它會將測試標記為通過

DUT 與 代理程式之間的RECONNECT流程。

進階測試執行

此階段的測試案例會以序列方式執行較複雜的測試,以驗證裝置是否遵循最佳實務。這些進階測試可供選擇,若無需要可以選擇不執行。根據案例需求,每項進階測試都各有專屬的逾期值。

RETURN PUBACK ON QoS 1 SUBSCRIPTION

注意

只有當您的裝置能夠執行 QoS 1 訂閱時,才可選取此案例。

此案例會驗證在裝置訂閱主題並收到來自代理人的 PUBLISH 訊息之後,是否會傳回 PUBACK 訊息。

DUT 與 代理程式之間的 RETURN PUBACK ON QoS 1 SUBSCTIPTION流程。

RECEIVE LARGE PAYLOAD

注意

只有當您的裝置能夠執行 QoS 1 訂閱時,才可選取此案例。

此案例會驗證裝置在收到具有大型承載的 QoS 1 主題的代理程式發出的 PUBLISH 訊息後,是否會以 PUBACK 訊息進行回應。可以使用 LONG_PAYLOAD_FORMAT 選項設定預期承載的格式。

DUT 與 代理程式之間的RECEIVELARGEPAYLOAD流程。

PERSISTENT SESSION

注意

只有當您的裝置能夠執行 QoS 1 訂閱且可以維持持久性工作階段時,才可選取此案例。

此案例會驗證維持持久性工作階段時的裝置行為。測試會驗證是否滿足下列條件:

  • 裝置連線至具有作用中 QoS 1 訂閱且已啟用持久性工作階段的代理程式。

  • 裝置在工作階段期間成功中斷與代理程式的連線。

  • 裝置會重新連線至代理程式,並繼續訂閱其觸發主題,而不會明確重新訂閱這些主題。

  • 裝置成功接收代理程式為其訂閱主題所儲存的訊息,並如預期執行。

如需 AWS IoT 持久性工作階段的詳細資訊,請參閱使用MQTT持久性工作階段

DUT 與 代理程式之間的PERSISTENTSESSION流程。

KEEP ALIVE

此案例會驗證裝置在未收到代理程式的 Ping 回應後是否能成功中斷連線。必須為連線設定有效的保持連線計時器。在此測試中,代理程式會封鎖所有針對 PUBLISHSUBSCRIBEPINGREQ 訊息而傳送的回應。它也會驗證受測裝置是否中斷MQTT連線。

DUT 與 代理程式之間的KEEPALIVE流程。

INTERMITTENT CONNECTIVITY

此案例會驗證代理程式在隨機間隔內與裝置中斷連線之後,裝置是否可以恢復與代理程式的連線。

DUT 與 代理程式之間的INTERMITTENTCONNECTIVITY流程。

RECONNECT BACKOFF

此案例會驗證代理程式多次中斷連線後,裝置是否會實作退避機制。Device Advisor 會將退避類型報告為指數、抖動、線性或常數。您可以使用 BACKOFF_CONNECTION_ATTEMPTS 選項來設定退避嘗試次數。預設值為 5。可以設定介於 5 到 10 之間的值。

若要通過此測試,建議對受測裝置實作指數退避和抖動機制。

DUT 與 代理程式之間的RECONNECTBACKOFF流程。

LONG SERVER DISCONNECT

此案例會驗證在代理程式長時間 (最多 120 分鐘) 中斷與裝置的連線之後,裝置是否可以成功重新連線。可以使用 LONG_SERVER_DISCONNECT_TIME 選項來設定伺服器中斷連線的時間。預設值為 120 分鐘。此值可以設定的範圍介於 30 至 120 分鐘。

DUT 與 代理程式之間的LONGSERVERDISCONNECT流程。

額外執行時間

額外執行時間是指測試從完成上述所有測試之後到結束測試案例之前所等待的時間。客戶可使用此額外時段來監控裝置並記錄裝置與代理程式的所有通訊。可以使用 ADDITIONAL_EXECUTION_TIME 選項來設定額外執行時間。此選項依預設為 0 分鐘,可設定的範圍介於 0 到 120 分鐘。

MQTT 長時間測試組態選項

MQTT 長時間測試提供的所有組態選項都是選用的。以下是可用的選項:

OPERATIONS

裝置執行的操作清單,例如 CONNECTPUBLISHSUBSCRIBE。測試案例會依據指定的操作來執行情境案例。系統會將未指定的操作假設為有效。

{ "OPERATIONS": ["PUBLISH", "SUBSCRIBE"] //by default the test assumes device can CONNECT }
SCENARIOS

根據所選操作,測試案例會執行情境案例來驗證裝置行為。案例有兩種類型:

  • 基本案例屬於簡易測試,用於驗證裝置是否可以執行在組態中選擇的操作。這些條件會根據組態中指定的操作預先選取。組態中不再需要輸入。

  • 進階案例是對裝置執行較複雜的情境案例,以驗證裝置在真實世界條件下是否遵循最佳實務。這些選項均非強制性質,可以作為案例陣列傳遞給測試套件的組態輸入項。

{ "SCENARIOS": [ // list of advanced scenarios "PUBACK_QOS_1", "RECEIVE_LARGE_PAYLOAD", "PERSISTENT_SESSION", "KEEP_ALIVE", "INTERMITTENT_CONNECTIVITY", "RECONNECT_BACK_OFF", "LONG_SERVER_DISCONNECT" ] }
BASIC_TESTS_EXECUTION_TIME_OUT:

測試案例等待所有基本測試完成的時間上限。預設值為 60 分鐘。此值可以設定的範圍介於 30 至 120 分鐘。

LONG_SERVER_DISCONNECT_TIME:

在「長時間伺服器中斷連線」測試期間,測試案例中斷並恢復與裝置連線所花費的時間。預設值為 60 分鐘。此值可以設定的範圍介於 30 至 120 分鐘。

ADDITIONAL_EXECUTION_TIME:

若設定此選項,系統會在完成所有測試後提供一個時段,用以監控裝置與代理程式之間的事件。預設值為 0 分鐘。此值可以設定的範圍介於 0 至 120 分鐘。

BACKOFF_CONNECTION_ATTEMPTS:

此選項可設定測試案例中斷與裝置連線的次數。重新連線退避測試會使用此功能。預設值為 5 次嘗試。此值可以設定的範圍介於 5 至 10 分鐘。

LONG_PAYLOAD_FORMAT:

當測試案例發佈到裝置訂閱的 QoS 1 主題時,裝置所期望的訊息承載格式。

API 測試案例定義:

{ "tests":[ { "name":"my_mqtt_long_duration_test", "configuration": { // optional "OPERATIONS": ["PUBLISH", "SUBSCRIBE"], "SCENARIOS": [ "LONG_SERVER_DISCONNECT", "RECONNECT_BACK_OFF", "KEEP_ALIVE", "RECEIVE_LARGE_PAYLOAD", "INTERMITTENT_CONNECTIVITY", "PERSISTENT_SESSION", ], "BASIC_TESTS_EXECUTION_TIMEOUT": 60, // in minutes (60 minutes by default) "LONG_SERVER_DISCONNECT_TIME": 60, // in minutes (120 minutes by default) "ADDITIONAL_EXECUTION_TIME": 60, // in minutes (0 minutes by default) "BACKOFF_CONNECTION_ATTEMPTS": "5", "LONG_PAYLOAD_FORMAT":"{"message":"${payload}"}" }, "test":{ "id":"MQTT_Long_Duration", "version":"0.0.0" } } ] }

MQTT 長時間測試案例摘要日誌

相較於一般測試案例,MQTT長時間測試案例的執行持續時間較長。會提供個別摘要日誌,其中列出執行期間的裝置連線、發佈和訂閱等重要事件。詳細資訊包括已測試的項目、未測試的項目以及失敗的項目。測試功能會在日誌結尾列出測試案例執行期間所發生全部事件的摘要。其中包含:

  • 在裝置上設定的保持連線計時器。

  • 裝置上設定的持久性工作階段旗標。

  • 裝置在測試執行期間的連線次數。

  • 裝置重新連線退避類型 (若已通過重新連線退避測試的驗證)。

  • 在測試案例執行期間作為裝置發佈目標的主題。

  • 裝置在測試案例執行期間訂閱的主題。

下一個主題:

裝置位置

上一個主題:

許可和政策
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。