Test System
Compare
Docs
https://elinux.org/Testing https://elinux.org/Test_Systems#Test_Projects https://elinux.org/images/9/9f/Linux-Kernel-Testing-Where-are-we.pdf (2016) http://events17.linuxfoundation.org/sites/events/files/slides/PRE-trunk-ELCE-Automation-beyond-Testing_1.pdf (2017)
Videos
https://www.youtube.com/watch?v=NRywFwe0uwU introduce multiple frameworks available to test your Embedded Linux System and compare the use-cases (2018) Slide: https://elinux.org/images/0/08/Primer-Testing-Your-Embedded-System-What-is-a-ptest-Lava-Fuego-KernelCI-and...-Jan-Simon-Moeller-The-Linux-Foundation.pdf
Test Suites
Linux Test Project
https://github.com/linux-test-project/ltp/wiki
http://ltp.sourceforge.net/documentation/how-to/ltp.php#_3.2
LTP-DDT
https://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/AM335X/linux/Foundational_Components_Kernel_LTP-DDT_Validation.html LTP-DDT focuses on embedded device driver tests.
Android
https://android.googlesource.com/platform/external/ltp/
dev-tools
https://www.kernel.org/doc/html/latest/dev-tools/
Selftests
https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html
"The magical fantasy land of Linux kernel testing" - Russell Currey (LCA 2020): https://www.youtube.com/watch?v=9Fzd6MapG3Y
KUnit - Kernel Unit Testing Framework
https://www.kernel.org/doc/html/latest/dev-tools/kunit/index.html
Storage
xfstests
blktests
https://github.com/osandov/blktests https://zonedstorage.io/tests/blktests/
Group name
Description
block
Block layer generic tests
loop
Loopback device tests
meta
blktests self tests
nbd
Network block device driver tests
nvme
NVMe driver tests
nvmeof-mp
NVME-over-fabrics multipath tests
scsi
SCSI layer tests
srp
SCSI RDMA Protocol driver tests
zbd
Zoned block device tests
Test Automation Tools
0Day
test suites used by 0-Day performance test and LKP test tool: https://01.org/lkp/documentation/0-day/lkp-test-suites-description
KernelCI - Python
https://kernelci.org/ | Linux Foundation project use LAVA with KernelCI: https://github.com/kernelci/kernelci-core/blob/main/doc/lava.md
LAVA - Python
Linaro Automated Validation Architecture | https://www.lavasoftware.org/ Source: https://git.lavasoftware.org/lava/lava Docker: https://github.com/kernelci/lava-docker/
Fuego - Mitsubishi
https://elinux.org/images/6/6c/Introduction-to-Fuego-JJ58-1.pdf Fuego = (Jenkins + abstraction scripts + pre-packaged tests) inside a container
Source: https://bitbucket.org/fuegotest/
Introduction Videos:
U-Boot “pytest suite”
https://github.com/u-boot/u-boot/tree/master/test/py only for U-Boot (with build support)
tbot - Python
https://tbot.tools/ https://github.com/Rahix/tbot allow running tests in an automated setting (CI).
labgrid - Python
https://github.com/labgrid-project/labgrid#purpose create an abstraction of the hardware control layer needed for testing of embedded systems, automatic software installation and automation during development
pytest plugin to write tests for embedded systems connecting serial console or SSH
remote client-exporter-coordinator infrastructure to make boards available from different computers on a network
power/reset management via drivers for power switches or onewire PIOs
upload of binaries via USB: imxusbloader/mxsusbloader (bootloader) or fastboot (kernel)
Labgrid itself is not a testing framework, but is intended to be combined with pytest (and additional pytest plugins).
r4d - Python
https://github.com/ci-rt/r4d r4d means 'Remote For Device-under-test' and is an infrastructure for power-control and console access for multiple Linux Boards that should be controlled by a test-infrastructure like jenkins.
Yocto project / ptest
https://wiki.yoctoproject.org/wiki/Ptest Ptest (package test) is a concept for building, installing and running the test suites that are included in many upstream packages, and producing a consistent output format for the results. Source: http://git.yoctoproject.org/clean/cgit.cgi/poky/tree/
Kerneltests.org
Created to test stable release candidates https://kerneltests.org/builders
Robot Framework - Python
http://robotframework.org/robotframework/#user-guide
OperatingSystem | Process | Dialogs / String | Telnet
More
http://fuegotest.org/wiki/Other_test_systems
https://elinux.org/Test_Stack_Survey#Responses
Static Code Analyzers
Sparse
https://www.kernel.org/doc/html/latest/dev-tools/sparse.html
https://sparse.docs.kernel.org/en/latest/ the semantic parser, provides a compiler frontend capable of parsing most of ANSI C as well as many GCC extensions, and a collection of sample compiler backends, including a static analyzer also called sparse.
clang / LLVM
https://clang-analyzer.llvm.org/ the analyzer is part of Clang
Coccinelle
https://coccinelle.gitlabpages.inria.fr/website/
smatch
https://github.com/error27/smatch a semantic parser of source files
Coverity
Commercial Static Analyzer: https://scan.coverity.com/o/oss_success_stories
Fuzzing Tools
Paper: https://ftp.cs.wisc.edu/paradyn/technical_papers/fuzz.pdf
Trinity
https://github.com/kernelslacker/trinity a system call fuzzer which employs some techniques to pass semi-intelligent arguments to the syscalls being called.
Syzcaller
https://github.com/google/syzkaller/blob/master/docs/internals.md
kcov - code coverage for fuzzing
https://www.kernel.org/doc/html/latest/dev-tools/kcov.html kcov exposes kernel code coverage information in a form suitable for coverage- guided fuzzing (randomized testing)
https://www.netbsd.org/~kamil/Maciej_Grochowski-FS_Fuzzing_EuroBSDCon2019.pdf
Last updated