Embedded Test 01 · ブラックボックステストとは — 中身を信じず、外から確かめる

Chapter 01

ブラックボックステストとは — 中身を信じず、外から確かめる

この章のゴール.

「ソースコードを信じられない組み込み機器」を、外部から観測できる振る舞いだけで検証する——という立場を理解し、 何を観測点にし、何を「正しさの基準(オラクル)」にするかを設計できるようになること。

1. なぜブラックボックスなのか

ブラックボックステスト(black-box testing)とは、中身の作りを一切前提にせず、入力と出力・観測できる振る舞いだけで対象を検証する手法である。 反対語のホワイトボックステストは、ソースコードや内部状態を見ながら「この行が通ったか」を確かめる。

組み込み開発では、次のような理由でブラックボックスが不可欠になる。

状況なぜ中を信じられないか
生成 AI にコーディングさせたもっともらしいが検証されていないコードが、実機で本当に仕様どおり動く保証はない。「テストが通る」と AI が言っても、そのテスト自体が正しいとは限らない
ソース・ビルド環境が失われた古い製品中身を見られない
他社製モジュール・チップデータシートと実物が食い違うことがある
認証・受け入れ検査「作った人が正しいと言っている」ではなく、第三者として振る舞いを確認する必要がある
セキュリティ評価攻撃者はソースを持たずに外から探る

本編は特に 1 番目——生成 AI が書いた組み込みファームウェアを、人間が外から検証する——を主眼に置く。 AI 生成コードは、コンパイルが通り、一見動き、簡単なデモも成功する。だが「電波法の規定を守っているか」「電源が切れる瞬間にフラッシュを壊さないか」「無効な BLE パケットで固まらないか」といった実機・実環境でしか露見しない振る舞いは、コードを読むだけでは分からない。動かして、外から測るしかない。

ソースを読めなくても、外から入れて外から測れば検証できる生成 AI が書いたファームウェア中身は読めない・信用できない刺激(入れる)電源・電圧信号・コマンド無線パケット観測(測る)消費電流信号波形パケット・ログこの「入れて/測って/期待と照らす」の繰り返しがブラックボックステスト
図1-1 中身が読めない相手を、入出力だけで検証する。

2. 観測点の地図 — どこから見えるか

組み込み機器は「箱」だが、外に向かって多くの観測点を持つ。本編はこの一つ一つを開けていく。

観測点何が分かるか章
電源・消費電流動作状態、スリープの深さ、処理のタイミング、異常な発熱03
デジタル信号線(ロジックアナライザ)GPIO・バス・割り込みのやり取り04
UART / シリアルログ、コマンド、ブートメッセージ05
I²C / SPIセンサ・EEPROM・周辺 IC との通信06
アナログ(ADC/DAC/PWM/センサ)実世界とのやり取り07
デバッグポート(SWD/JTAG)半分は中が見える(グレーボックス)08
BLE / Wi-Fi / サブGHz 無線通信内容、接続の振る舞い、電波の出方09〜12
USB列挙(エニュメレーション)、クラス動作13
タイミング(応答遅延・ジッタ)リアルタイム性、締め切り違反14

これらを「受動的に盗聴する(バスをただ眺める)」と「能動的に刺激を与えて反応を見る」の 2 モードで使い分ける。後者が本当のテストである。

一つの基板は、外から触れる「観測点・刺激点」の集まりMCU / 基板電源・消費電流3 章GPIO・デジタル4 章UART コンソール5 章I²C・SPI バス6 章無線 (BLE/Wi-Fi)9〜12 章アナログ入出力7 章デバッグポート8 章(半BB)USB・有線13 章
図1-2 MCU を取り巻く観測点・刺激点。どこから触れるかで章が分かれる。

3. オラクル問題 — 「正しい」を誰が決めるか

ブラックボックステストの最大の難所は、観測した振る舞いが正しいかどうかを何で判断するかである。これをテストオラクル(test oracle)と呼ぶ。 中を見ないのだから、「変数 x が 42 になっているべき」とは言えない。代わりに、外から確認できる基準を用意する。

オラクルの種類例
仕様書「ボタンを押したら 100 ms 以内に LED が点く」「BLE の広告間隔は 100 ms」
規格Bluetooth Core 仕様、USB クラス仕様、電波法の技術基準
リファレンス実装既知の正しい機器・公式アプリと同じ振る舞いをするか
メタモルフィック関係「入力を 2 倍にしたら出力も 2 倍のはず」のような、正解を知らなくても成り立つ関係
不変条件「どんな入力でもクラッシュしない」「消費電流が常に上限以下」
差分(回帰)前のバージョン・別の個体と比べて変化がないか

生成 AI のコードを検証するときは、AI が書いたテストをオラクルにしてはいけない。同じ誤解が実装とテストの両方に入るからだ。人間が仕様・規格・独立したリファレンスからオラクルを立てる。

4. 決定性・再現性・記録 — テストの三本柱

外から観測するテストは、放っておくと「たまに失敗する」「昨日は再現したのに」に陥る。三本柱で守る。

見える度合いで 3 つ——本編は左端を主役に、中央も道具として使うブラックボックス入出力だけ。中は不明。製品に最も近い視点。=本編の主役グレーボックスデバッグポートで内部を少し覗く(8 章)。開発中の観測に強いホワイトボックスソース・回路を全部見る。=コードレビューや単体テスト。本編の範囲外見える情報が増える →(ただし「製品そのもの」からは遠のく)
図1-3 ブラック/グレー/ホワイトの連続体。

5. 安全と法 — 始める前に

6. 本編の構成

部章内容
I. 土台01〜02立場、オラクル、テスト設計、機材
II. 配線で触れる観測03〜08電源、ロジック、UART、I²C/SPI、アナログ、デバッグポート
III. 無線を見る・つつく09〜13BLE(把握と能動)、Wi-Fi、サブGHz と SDR、USB とその他有線
IV. 質を測る・追い込む14〜17タイミング、HIL、ファジングと堅牢性、セキュリティ
V. 仕組みにする18〜20テストハーネス、自作ツール、テスト計画とケース

7. 手を動かす

観測点とオラクルを結びつける


この章のポイント