長期テスト - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

長期テスト

長期テストは、デバイスが長期間動作しているときの動作を監視する新しいテストスイートです。デバイスの特定の動作に焦点を当てた個別のテストを実行する場合と比較して、長期テストでは、デバイスの寿命全体にわたるさまざまな現実世界のシナリオにおけるデバイスの動作を調べます。Device Advisor は、可能な限り効率的な順序でテストを調整します。テストでは、テスト中のデバイスのパフォーマンスに関する有用なメトリクスを含む概要ログを含む結果とログが生成されます。

MQTT 長期テストケース

MQTT の長期テストケースでは、MQTT Connect、サブスクライブ、発行、再接続などのハッピーケースシナリオでデバイスの動作が最初に確認されます。次に、デバイスが MQTT 再接続バックオフ、長期のサーバー切断、断続的な接続など、複数の複雑な障害シナリオに見舞われます。

MQTT 長期テストケース実行フロー

MQTT 長期テストケースの実行には、次の 3 つのフェーズがあります。

「基本テスト実行」、「拡張テスト実行」、および「追加実行時間」が表示される「MQTT 長時間テスト実行」。

基本テストの実行

このフェーズでは、テストケースは簡単なテストを並行して実行します。このテストでは、設定で選択したオペレーションがデバイスにあるかどうかを検証します。

基本テストのセットには、選択したオペレーションに基づいて次の内容が含まれる場合があります。

CONNECT

このシナリオでは、デバイスがブローカーと正常に接続できるかどうかを検証します。

デバイスが CONNECT メッセージを送信し、Broker が CONNACK メッセージを成功リターンコードで応答することを含む基本的な接続フローです。

発行

このシナリオでは、デバイスがブローカーに対して正常に発行されているかどうかを検証します。

QoS 0

このテストケースは、QoS 0 での発行中に、デバイスがブローカーに PUBLISH メッセージを正常に送信するかどうかを検証します。このテストでは、デバイスが PUBACK メッセージを受信するまで待ちません。

QoS 0 レベルのパブリッシュメッセージを送信するデバイスを含む公開 QoS 0 フロー。
QoS 1

このテストケースでは、デバイスは QoS 1 で 2 つの PUBLISH メッセージをブローカーに送信することが想定されます。最初の PUBLISH メッセージの後、ブローカーは最大 15 秒待ってから、応答します。デバイスは、15 秒以内に同じパケット ID を使用して元の PUBLISH メッセージを再試行する必要があります。その場合、ブローカーは PUBACK メッセージを返し、テストが検証します。デバイスが PUBLISH を再試行しない場合、元の PUBACK がデバイスに送信され、テストはシステムメッセージとともに警告付きで合格とマークされます。テスト実行中にデバイスが接続を失って再接続した場合、テストシナリオは失敗することなくリセットされます。そのため、デバイスはテストシナリオのステップを再実行する必要があります。

QoS 1 レベルの PUBLISH メッセージを送信するデバイスと、ブローカーとの複数のインタラクションを含む PUBLISH QoS 1 フロー。

サブスクライブ

このシナリオでは、デバイスがブローカーに対して正常にサブスクライブしているかどうかを検証します。

QoS 0

このテストケースは、QoS 0 でのサブスクライブ中にデバイスがブローカーに SUBSCRIBE メッセージを正常に送信するかどうかを検証します。このテストでは、デバイスが SUBACK メッセージを受信するまで待ちません。

サブスクライブ QoS 0 フローには、QoS 0 レベルのサブスクライブメッセージを送信するデバイスと、SUBACK メッセージと Success Maximum QoS 0 コードで応答するブローカが含まれます。
QoS 1

このテストケースでは、デバイスは QoS 1 で 2 つの SUBSCRIBE メッセージをブローカーに送信することが想定されます。最初の SUBSCRIBE メッセージの後、ブローカーは最大 15 秒待ってから、応答します。デバイスは、15 秒以内に同じパケット ID を使用して元の SUBSCRIBE メッセージを再試行する必要があります。その場合、ブローカーは SUBACK メッセージを返し、テストが検証します。デバイスが SUBSCRIBE を再試行しない場合、元の SUBACK がデバイスに送信され、テストはシステムメッセージとともに警告付きで合格とマークされます。テスト実行中にデバイスが接続を失って再接続した場合、テストシナリオは失敗することなくリセットされます。そのため、デバイスはテストシナリオのステップを再実行する必要があります。

SUBSCRIBE QoS 1 フローには、QoS 1 レベルの SUBSCRIBE メッセージを送信するデバイスと、ブローカーとの複数のインタラクションが含まれます。

再接続

このシナリオでは、デバイスが正常に接続から切断された後に、デバイスがブローカーと正常に再接続するかどうかを検証します。テストスイート中にデバイスを複数回接続しても、Device Advisor はデバイスを切断しません。代わりに、テストを [Pass] (合格) としてマークします。

DUT とブローカ間の再接続フロー。

高度なテストの実行

このフェーズでは、テストケースはより複雑なテストを連続して実行し、デバイスがベストプラクティスに従っているかどうかを検証します。これらの高度なテストは選択可能で、必要ない場合はオプトアウトできます。それぞれの高度なテストには、シナリオの要求に応じて独自のタイムアウト値があります。

QoS 1 サブスクリプションで PUBACK を返す

注記

このシナリオは、デバイスが QoS 1 サブスクリプションを実行できる場合にのみ選択してください。

このシナリオでは、デバイスがトピックをサブスクライブしてブローカーから PUBLISH メッセージを受信した後に PUBACK メッセージを返すかどうかを検証します。

DUT とブローカ間の QoS 1 サブスクリプションフローのリターンアップバック。

大きなペイロードを受け取る

注記

このシナリオは、デバイスが QoS 1 サブスクリプションを実行できる場合にのみ選択してください。

このシナリオでは、ペイロードが大きい QoS 1 トピックの PUBLISH メッセージをブローカーから受信した後、デバイスが PUBACK メッセージで応答するかどうかを検証します。想定されるペイロードの形式は、LONG_PAYLOAD_FORMAT オプションを使用して設定できます。

DUT とブローカーの間の RECEIVE LARGE ペイロードフロー。

永続セッション

注記

このシナリオは、デバイスが QoS 1 サブスクリプションを実行でき、永続セッションを維持できる場合にのみ選択してください。

このシナリオは、永続セッションを維持する際のデバイスの動作を検証します。以下の条件が満たされると、テストは検証されます。

  • デバイスは、アクティブな QoS 1 サブスクリプションと永続セッションが有効になっているブローカーに接続します。

  • デバイスはセッション中にブローカーから正常に切断されます。

  • デバイスはブローカーに再接続し、そのトリガートピックへのサブスクリプションを再開します。これらのトピックを明示的に再サブスクライブする必要はありません。

  • デバイスは、サブスクライブされたトピックについてブローカーに保存されたメッセージを正常に受信し、想定どおりに動作します。

永続セッションについて詳しくは、「MQTT AWS IoT 永続セッションの使用」を参照してください。

DUT とブローカー間の永続セッションフロー。

KEEP ALIVE

このシナリオでは、デバイスがブローカーから ping 応答を受信しない後に正常に切断されるかどうかを検証します。接続には有効なキープアライブタイマーが設定されている必要があります。このテストの一環として、ブローカーは、PUBLISHSUBSCRIBE、および PINGREQ メッセージに送信されるすべての応答をブロックします。テスト対象のデバイスが、MQTT 接続を切断しているかどうかも検証します。

DUT とブローカー間のキープアライブフロー。

断続的な接続

このシナリオでは、ブローカーがデバイスをランダムな間隔で一定時間切断した後に、デバイスがブローカーに再び接続できるかどうかを検証します。

DUT とブローカー間の接続フローは断続的です。

再接続のバックオフ

このシナリオでは、ブローカーが複数回接続を切断したときに、デバイスにバックオフメカニズムが実装されているかどうかを検証します。Device Advisor は、バックオフタイプを指数関数、ジッター、線形、または定数として報告します。バックオフの試行回数は、BACKOFF_CONNECTION_ATTEMPTS オプションを使用して設定できます。デフォルト値は 5 です。この値は 5~10 の間で設定できます。

このテストに合格するには、テスト対象のデバイスに、エクスポネンシャルバックオフとジッターメカニズムを実装することをお勧めします。

DUT とブローカー間の再接続バックオフフロー。

長期のサーバー切断

このシナリオでは、ブローカーがデバイスを長時間 (最大 120 分) 切断した後に、デバイスが正常に再接続できるかどうかを検証します。サーバーを切断する時間は、LONG_SERVER_DISCONNECT_TIME オプションを使用して設定できます。デフォルト値は 120 分です。この値は 30 分から 120 分まで設定できます。

DUT とブローカー間の長時間のサーバー切断フロー。

追加実行時間

追加実行時間は、上記のすべてのテストを完了してからテストケースを終了するまでにテストが待機する時間です。顧客はこの追加時間を利用して、デバイスとブローカーとの間のすべての通信を監視および記録します。追加実行時間は、ADDITIONAL_EXECUTION_TIME オプションを使用して設定できます。デフォルトでは、このオプションは 0 分に設定されており、0~120 分に設定できます。

MQTT 長期テスト設定オプション

MQTT 長期テストで提供される設定オプションはすべてオプションです。以下のオプションが利用できます。

オペレーション

デバイスが実行するオペレーションのリスト (CONNECTPUBLISH および SUBSCRIBE など)。テストケースは、指定されたオペレーションに基づいてシナリオを実行します。指定されていないオペレーションは有効とみなされます。

{ "OPERATIONS": ["PUBLISH", "SUBSCRIBE"] //by default the test assumes device can CONNECT }
シナリオ

選択したオペレーションに基づいて、テストケースはシナリオを実行してデバイスの動作を検証します。シナリオには、次の 2 つのタイプがあります。

  • 基本シナリオは、デバイスが設定の一部として上記で選択したオペレーションを実行できるかどうかを検証する簡単なテストです。これらは、構成で指定されたオペレーションに基づいて事前に選択されています。設定にこれ以上入力する必要はありません。

  • 高度なシナリオは、デバイスに対して実行されるより複雑なシナリオで、デバイスが実際の条件を満たしたときにベストプラクティスに従っているかどうかを検証します。これらはオプションで、シナリオの配列としてテストスイートの設定入力に渡すことができます。

{ "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 長期テストケースは、通常のテストケースよりも長時間実行されます。実行中のデバイス接続、発行、サブスクライブなどの重要なイベントを一覧表示する概要ログが別途提供されます。詳細には、テストされた内容、テストされなかったもの、失敗したものが含まれます。ログの最後には、テストケースの実行中に発生したすべてのイベントの概要がテストに含まれます。これには、以下が含まれます。

  • デバイスに設定されているキープアライブタイマー。

  • デバイスに設定された永続セッションフラグ。

  • テスト実行中のデバイス接続数。

  • デバイス再接続バックオフタイプ (再接続バックオフテストで検証された場合)。

  • テストケースの実行中にデバイスが発行したトピック。

  • テストケースの実行中にデバイスがサブスクライブしたトピック。