Project testing

OpenThread released by Nest is tested by a number of tools.

Continuous integration

Travis CI AppVeyor Codecov

OpenThread uses Travis CI and AppVeyor for continuous integration (CI), and Codecov for code coverage.

CI performs the following tests on the OpenThread repository:

  1. Build checks
    1. Build all example platforms using the GNU Arm Embedded Toolchain (arm-gcc, across versions 4.9, 5.4, 6)
    2. Build the simulator platform (POSIX) using GCC and Clang
    3. (a) and (b) for all example applications
    4. (a) and (b) for both Full Thread Device (FTD) and Minimal Thread Device (MTD) configurations
    5. (a) and (b) for both System-on-Chip (SoC) and Network Co-Processor (NCP) configurations
  2. Static analysis, using Clang Static Analyzer
  3. Code style checks
  4. Unit tests
  5. Functional tests


OpenThread is fuzz tested with OSS-Fuzz. In this testing technique, invalid and random inputs are submitted at a high frequency and volume to software in order to find issues such as memory leaks or crashes.

See the OpenThread repository for the current fuzzing build targets.

Product testing

Use the following tools to test your own OpenThread product.


Wireshark is an open-source network protocol analyzer for traffic running on physical and virtual network interfaces. The Thread protocol is supported in Wireshark 2.4.0 and later. Documentation and downloads for this tool can be found at wireshark.org.


Pyspinel is a Python CLI for the Spinel protocol, used to configure and manage OpenThread NCPs. This CLI is primarily targeted to CI tests, but can be used manually to experiment with and test OpenThread NCP instances.

Pyspinel is used:

  • to add simulated NCP testing to continuous integration
  • to automate testing of testbeds running NCP firmware on hardware
  • to debug NCP builds of OpenThread

For more information, see the README in the Pyspinel repository.

Pyspinel Sniffer

Pyspinel comes with a sniffer tool that turns a Spinel NCP node into a promiscuous packet sniffer. This tool intializes a device into sniffer mode and outputs a pcap stream that can be saved or piped directly into Wireshark.

For more information on how to use the sniffer, see the README in the OpenThread repository.