テスト

プロジェクトのテスト

Google がリリースした OpenThread は、さまざまなツールでテストされています。

継続的インテグレーション

OpenThread は、継続的インテグレーション(CI)に GitHub Actions を、コード カバレッジに Codecov を使用しています。

CI は、GNU Arm Embedded Toolchain を使用してすべてのサンプル プラットフォームのビルドチェックを実行し、GCC、Clang、Android を使用してシミュレートされたサンプルのビルドチェックを実行します。また、x86、プラットフォーム アーキテクチャ、Thread デバイス構成に対してビルドとテストを行います。特定のテストとチェックの詳細については、ワークフローをご覧ください。

また、CI は次の処理も行います。

  1. clang-format を使用したコードスタイルのチェック
  2. 単体テスト
  3. CLI と Pyspinel に対する機能テスト

OSS-Fuzz

OpenThread は OSS-Fuzz でファズテストされています。このテスト手法では、無効な入力とランダムな入力を高い頻度と量でソフトウェアに送信し、メモリリークやクラッシュなどの問題を見つけます。

現在のファジング ビルド ターゲットについては、OpenThread リポジトリをご覧ください。

プロダクト テスト

次のツールを使用して、独自の OpenThread 製品をテストします。

Wireshark

Wireshark は、物理ネットワーク インターフェースと仮想ネットワーク インターフェースで実行されるトラフィック用のオープンソース ネットワーク プロトコル アナライザーです。Thread プロトコルは、Wireshark 2.4.0 以降でサポートされています。このツールのドキュメントとダウンロードは、wireshark.org で確認できます。

Wireshark で Thread がサポートされる方法について詳しくは、Pyspinel を使用したパケット スニッフィングをご覧ください。

Pyspinel

Pyspinel は、OpenThread NCP または RCP の構成と管理に使用される Spinel プロトコル用の Python CLI です。この CLI は主に CI テストを対象としていますが、OpenThread Co-Processor インスタンスのテストと実験を手動で行うために使用することもできます。

Pyspinel は次の目的で使用されます。

  • 継続的インテグレーションにシミュレートされた Co-Processor テストを追加します。
  • ハードウェア上でコプロセッサ ファームウェアを実行するテストベッドのテストを自動化します。
  • OpenThread の Co-Processor ビルドをデバッグします。
  • OpenThread Co-Processor をパケット スニファに変換します。

詳細については、Pyspinel リポジトリの README をご覧ください。