組み込み開発のためのPython · レッスン 216 / 220
プロトコル試験ハーネスを作る
テストパターン、応答検証、タイムアウト、再現条件を分けて自動化します。
同じ試験を何度も行うなら、送信・待機・検証・記録を分けたハーネスにすると再現性が上がります。実機に対して破壊的な操作を行わないよう、試験範囲を限定します。
試験項目と期待結果を先に書く
要求・応答のバイト列、許容時間、再試行回数、成功条件を試験ケースとして表します。正常系だけでなく、不正長、未知の応答、タイムアウトも確認します。試験結果にはケースID、ファームウェア版、接続構成を記録し、失敗を一つの「NG」にまとめないようにします。
実機への作用を小さくする
送信コマンドが設定変更、書込み、モーター起動などを引き起こす可能性を調べます。実機試験の前に、シミュレーター、ループバック、読み取り専用コマンドで通信部分を確認します。再試行が状態変更コマンドを重複実行しないかも、プロトコルの性質に基づいて判断します。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
def verify_reply(reply: bytes, expected_prefix: bytes) -> None:
if not reply:
raise TimeoutError("応答が空です")
if not reply.startswith(expected_prefix):
raise ValueError(f"想定外の応答: {reply.hex(' ')}")
# まず実機ではなく固定の記録データで検証します。
verify_reply(b"OK,3300\r\n", b"OK,")手を動かす課題
固定の正常・異常応答を使い、期待する失敗理由とログがケースごとに区別できるテストを追加してください。