forked from RIOT-OS/RIOT
-
Notifications
You must be signed in to change notification settings - Fork 1
RIOT's new test system: requirements and challenges
LudwigOrtmann edited this page Dec 1, 2014
·
4 revisions
- Unit tests: at least for API functions of most core/sys modules
- Acceptance tests for modules/functions which require
real or simulated hardware. This includes for example:
- network simulations to test the behavior of routing protocol
- hardware based tests for transceivers
- Compile tests: every example application / build test for a module should compile for every platform if not stated differently in the Makefile.
- Code analyzers: the code should be checked by various automated code analyzers for quality issues. For example:
- static code analyzers should be used to identify defects such as memory leaks or control flows which lead to a NULL pointer being dereferenced.
- code style checker could be used to check for any obvious violation of RIOT's coding style.
- model checker could be used to search for complex defects which are difficult to spot for static code analyzers. However, this might not be possible with open-source tools.
- Divine might be a candidate for embedded model checking of certain modules
- CPAchecker is another model checker for C.
- We need to support various different toolchains (e.g.: clang/gcc for native and gcc for avr, arm and msp430).
- we need to be able to automatically determine if a driver or a hardware dependent module works as expected on all platforms it supports.
- wast architectural differences (e.g.: 8 bit atmel vs 32 bit arm cortex) between supported platforms makes a generalized emulation / simulation approach for testing difficult if not impossible to implement.
- the steadily rising number of boards we support implies that a single organization cannot possibly provide a physical test platform for all of those.
- the test system has to function reliable and fast. If the test system often fails for no apparent reason developers will start to ignore test results. Likewise if the system needs a long time to end a test run developers are likely to implement and use their own test system (or worse: cease to use any test system at all).
- the system has be user / developer friendly. An easy to use github integration is therefore very important.
RIOT - The friendly Operating System for the Internet of Things
Homepage | [GitHub] (https://github.com/RIOT-OS/) | Developers Mailing List | Users Mailing List | Twitter @RIOT_OS
- Family: ARM
- Board: Airfy Beacon
- Board: Arduino Due
- Board: CC2538DK
- Board: CC2650STK
- Board: HikoB Fox
- Board: IoT LAB M3
- Board: LimiFrog-v1
- Board: mbed_lpc1768
- Board: MSB-IoT
- Board: MSBA2
- Board: Nucleo-L1
- Board: Nucleo-F334
- Board: Nucleo-F303
- Board: Nucleo-F091
- Board: Mulle
- Board: OpenMote
- Board: PCA1000x (nRF51822 Development Kit)
- Board: Phytec phyWAVE-KW22
- Board: RFduino
- Board: SAMR21-xpro
- Board: SAML21-xpro
- Board: Seeeduino Arch-Pro
- Board: Spark Core
- Board: STM32F0discovery
- Board: STM32F3discovery
- Board: STM32F4discovery
- Board: UDOO
- Board: yunjia-nrf51822
- Board: Zolertia remote
- Family: ATmega
- Board: Arduino Mega2560
- Board: Arduino Uno
- Board: Arduino Duemilanove
- Family: MSP430
- Board: MSB-430H
- Board: TelosB
- Board: WSN430
- Board: Zolertia Z1
- Board: eZ430-Chronos
- Family: native
- Board: native
- Family: x86
- Board: Intel Galileo