テスト

プロジェクトのテスト

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

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

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

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

さらに、CI では次の処理を行います。

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

OSS ファズ

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

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

プロダクトのテスト

次のツールを使用して、独自の OpenThread プロダクトをテストします。

ワイヤーシャーク

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

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

ピスピネル

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

Pyspinel の用途は次のとおりです。

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

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