Testland
Browse all skills & agents

qa-embedded

Embedded C/C++ testing: GoogleTest on ARM, ThrowTheSwitch Unity-C and Ceedling, gcov coverage, QEMU system emulation

Install this plugin

/plugin install qa-embedded@testland-qa

Part of role bundle: qa-role-mobile-desktop

qa-embedded

Embedded C/C++ testing: GoogleTest on ARM, ThrowTheSwitch Unity-C and Ceedling, gcov coverage, QEMU system emulation

Components

TypeNameDescription
skillembedded-coverage-strategy-referenceCoverage criteria, gcov + llvm-cov toolchains, MISRA / DO-178C / ISO 26262 expectations
skillhardware-in-loop-referenceHIL pattern, MIL/SIL/PIL/HIL V-cycle, vendor stack (NI / dSPACE / Vector / Speedgoat), bus emulation, fault injection, DO-178C / ISO 26262 alignment
skillceedling-mocks-referenceCMock generated API surface (Expect / Ignore / ReturnThruPtr / Stub / Callback), cmock.yml :plugins, Unity teardown verification, strict vs ignore matching
skillgoogletest-embedded-armGoogleTest 1.17+ for embedded C++ on ARM: TEST/TEST_F/TEST_P/TYPED_TEST, EXPECT vs ASSERT, cross-compile with arm-none-eabi-g++, QEMU run, XML/JSON output
skillunity-test-framework-cThrowTheSwitch Unity for pure-C unit tests (8-bit through 64-bit). Distinct from the Unity game-engine Test Framework at docs.unity3d.com
skillceedling-build-runnerCeedling build orchestration: project.yml schema, ceedling new / test:all / gcov:all / release tasks, JUnit XML + gcov plugins, CI wiring
skillqemu-system-test-runnerQEMU system emulation for embedded tests: mps2-* / virt / lm3s6965evb boards, -kernel ELF, ARM semihosting, GDB stub, QMP, CI integration
agentembedded-test-authorAuthors one embedded C/C++ unit test per spec - detects Ceedling / CMake+GoogleTest / bare Makefile from the project root, picks Unity / GoogleTest / Ceedling-Unity, pairs with QEMU for cross-compiled runs
Agentembedded-framework-selectorRecommends an embedded test framework + execution path (host / QEMU / on-target) from the project's toolchain.
Agentembedded-test-scaffolderGenerates a from-zero embedded test-project skeleton (Ceedling project.yml / GoogleTest CMakeLists).

Install

/plugin marketplace add testland/qa
/plugin install qa-embedded@testland-qa

Skills

ceedling-build-runner

Author and run the Ceedling build system for C unit testing - the canonical build orchestration on top of Unity (assertions) + CMock (mocks) + CException (exceptions). Covers ceedling new project scaffolding, the project.yml schema (:project / :paths / :files / :defines / :flags / :tools / :test_runner / :cmock / :unity / :cexception / :gcov / :plugins), the task surface (ceedling test:all, ceedling test:<name>, ceedling test:pattern, ceedling test:path, ceedling release, ceedling clean / clobber, ceedling gcov:all, ceedling module:create, ceedling environment, ceedling dumpconfig), JUnit XML output via the report_tests_pretty_stdout / report_tests_junit_xml plugins, gcov plugin integration, host vs cross-build flow, and CI wiring. Use when a C project wants the standard ThrowTheSwitch trio bundled by one build command. For the Unity assertion API see unity-test-framework-c; for CMock semantics see ceedling-mocks-reference.

ceedling-mocks-reference

Pure-reference catalog of CMock and Ceedling mocking semantics for C. Defines what CMock generates from a C header (the full Expect / ExpectAndReturn / ExpectAnyArgs / ExpectWithArray / Ignore / IgnoreAndReturn / IgnoreArg_<param> / ReturnThruPtr_<param> / AddCallback / Stub / ExpectAndThrow naming family), the cmock.yml :plugins list (ignore, ignore_stateless, ignore_arg, expect_any_args, array, callback, cexception, return_thru_ptr) and what each enables, mock-suffix and mock-prefix conventions, how Unity teardown validates expectations, the resetTest mid-test verification, strict vs ignore argument-matching modes, and the trade-offs between mock / stub / spy / fake. Use as the CMock semantics reference when authoring Ceedling tests with mocks or when reading an unfamiliar mock-driven test suite.

embedded-coverage-strategy-reference

Pure-reference catalog of code-coverage strategy for embedded C/C++. Defines the coverage criteria hierarchy (statement / branch / decision / condition / MC/DC), the gcov toolchain (.gcno + .gcda files, -fprofile-arcs / -ftest-coverage / --coverage), the LLVM source-based coverage toolchain (-fprofile-instr-generate + -fcoverage-mapping, default.profraw, llvm-profdata merge, llvm-cov show/report/export), host-build vs QEMU-build instrumentation selection, MISRA-C:2012 and DO-178C structural-coverage expectations by safety level (DAL A maps to MC/DC), and report-format choices (gcov text, JSON, LCOV info, llvm-cov HTML). Physical .gcda retrieval from hardware (semihosting, UART/SWO transport) is covered by hardware-in-loop-reference; for QEMU machine flags and exit-code capture see qemu-system-test-runner. Use as the coverage-criterion reference when choosing what level of structural coverage to require for an embedded C/C++ project and when wiring gcov or llvm-cov into the build.

googletest-embedded-arm

Author and run GoogleTest 1.17+ for embedded C++ on ARM targets - TEST() / TEST_F() / TEST_P() / TYPED_TEST(), EXPECT_* vs ASSERT_* assertions, fixtures with SetUp() / TearDown(), value-parameterised tests, GoogleMock when paired, cross-compile with arm-none-eabi-g++, run on host or under QEMU via the qemu-system-test-runner skill, --gtest_filter / --gtest_output=xml:results.xml / --gtest_shuffle / --gtest_repeat command-line flags, and XML / JSON output parsing for CI. Use when the unit-under-test is C++ (modern C++17+) and the team wants the de-facto C++ test framework instead of the C-only Unity. For C use unity-test-framework-c; for pure mocks use ceedling-mocks-reference.

hardware-in-loop-reference

Pure-reference catalog of hardware-in-the-loop (HIL) testing for embedded systems. Defines the HIL pattern (ECU-under-test + real-time plant simulator + I/O cards emulating sensors / actuators / buses), the V-cycle progression (MIL → SIL → PIL → HIL), the canonical vendor stack (NI VeriStand + PXI / CompactRIO, dSPACE SCALEXIO / MicroAutoBox, Vector CANoe + VT System, Speedgoat real-time targets), bus emulation per protocol (CAN / CAN FD / LIN / FlexRay / Automotive Ethernet / SOME-IP), fault-injection patterns (short-to-ground, open-circuit, signal corruption), DO-178C / ISO 26262 / IEC 61508 alignment, and the test-evidence chain HIL produces. Use as the HIL terminology + vendor + standard reference when scoping an embedded test rig or interpreting an automotive / aerospace / industrial HIL test report.

qemu-system-test-runner

Author and run QEMU system emulation as an embedded-test target - qemu-system-arm / qemu-system-aarch64 / qemu-system-riscv32 launching cross-compiled ELF binaries on virtual MCUs and SoCs. Covers machine selection (-M virt / mps2-an385 / mps2-an386 / mps2-an500 / mps2-an511 / mps3-an524 / lm3s6965evb / raspi3b / xilinx-zynq-a9), CPU selection (-cpu cortex-m0 / cortex-m3 / cortex-m4 / cortex-m33 / cortex-a15 / cortex-a57 / max), -kernel ELF load, -nographic + -serial stdio, ARM semihosting via -semihosting-config enable=on,target=native (so cross-compiled GoogleTest / Unity binaries print to host stdio and exit with the test return code), GDB stub via -S -gdb tcp::1234, QMP monitor via -qmp tcp:host:port for automated test orchestration, and CI wiring. Use when host-only test runs are insufficient and the team wants arch-correct (endianness / alignment / interrupt-vector) behaviour on a virtual MCU without committing to physical hardware-in-loop.

unity-test-framework-c

Author and run ThrowTheSwitch Unity (the C unit-testing library) for bare-metal and RTOS C code. Distinct from the Unity game-engine Test Framework at docs.unity3d.com: this is the ThrowTheSwitch C testing library at throwtheswitch.org/unity, a single C file plus headers that runs on 8-bit MCUs through 64-bit hosts. Anchored on the Unity assertion API and configuration macros regardless of execution environment: the TEST_ASSERT_EQUAL_* / _FLOAT / _DOUBLE / _STRING / _MEMORY / _BITS assertion families, setUp/tearDown/RUN_TEST/UNITY_BEGIN/UNITY_END semantics and the exit-code contract, the generate_test_runner.rb generator, build-time config defines (UNITY_INCLUDE_DOUBLE, UNITY_OUTPUT_CHAR, UNITY_EXCLUDE_SETJMP), and CI integration via Ceedling JUnit XML; applies to host builds, cross-builds, and QEMU-run targets alike. For QEMU machine flags, semihosting, and exit-code capture, see qemu-system-test-runner. Use when the unit-under-test is pure C and the target ranges from 8-bit AVR to Cortex-M0 to Linux ARM.

Agents

embedded-framework-selector

Reads a target embedded project (CMakeLists.txt, Makefile, project.yml, or a directory of source files) and emits one concrete embedded test framework + execution path recommendation - Unity+Ceedling, GoogleTest, or a bare Unity build - plus rationale and which preloaded SKILL.md to read next. Distinct from qa-process/framework-choice-advisor (a prose catalog of trade-offs across all test layers): this agent reads the actual target repo and returns one framework per project rather than enumerating options. Use when starting a new embedded test project and the team has not yet committed to a framework or execution path (host / QEMU / on-target).

embedded-test-author

Action-taking agent that authors one embedded C/C++ unit test file per spec - detects build system (Ceedling project.yml, CMake with find_package(GTest), or bare Makefile) and target toolchain (arm-none-eabi-gcc or host gcc) from the project root, then emits a test in the matching framework: ThrowTheSwitch Unity (C), GoogleTest (C++), or Ceedling-Unity with CMock auto-mocks. Pairs with qemu-system-test-runner for cross-compiled runs. Distinct from qa-shift-left/spec-to-suite-orchestrator (language-agnostic skeleton workflow) - narrower scope, embedded C/C++ only. Sibling of qa-unit-tests-* authors and qa-desktop/desktop-test-author. Use when adding a new embedded C/C++ unit test.

embedded-test-scaffolder

Generates a from-zero embedded test-project skeleton for C or C++ firmware targets - emitting a Ceedling project.yml plus canonical src/test/vendor directory tree for Unity/CMock/C projects, or a CMakeLists.txt with FetchContent GoogleTest wiring for C++ projects. Distinct from embedded-test-author (which writes individual test cases into an existing harness): this agent scaffolds the harness itself when none exists. Use when starting a brand-new embedded test project and no test infrastructure is in place yet.