単純なコーディングミスからインタフェースミスマッチまで、IoTには多様なバグが生息している。

 IoTシステムの仕様に未確定の部分があったり、構造や機能が複雑になったりすると、バグは繁殖し、システムは虫だらけになる。その種類も多様で、昆虫図鑑が作れるほどだ。

 IoTシステムでは、企画の意図がしばしば要求分析に伝わらず、重要な要求が設計では無視され、設計の意図はプログラミングで実装されない。これらがすべてバグを生み出す卵となる。ああ、IoTの仕様のなんとうつろいやすいことか!

 こうしたバグを見つけるために不可欠なのが、IoTのテストである。テストで多くのバグを見つけるほど、IoTの品質は向上する。今は動いているIoTでも、ある日、突然バグで動かなくなることもある。テストでバグをあらかじめ取り除いておけば、「動かないIoT」という未来からシステムを救うことができる。

IoTのバグはテストで駆除する
IoTのバグはテストで駆除する
[画像のクリックで拡大表示]

 ただしIoTのテストは、一般的なシステムのテストよりもはるかに複雑で、難しい。

 IoTシステムはデバイスからサーバーまで全てが並行で動作する。同じ時刻に多数のイベントが発生する。IoTシステムは様々な要因が絡み合う、非線形で挙動不審で予測不可能な一種の複雑系である。

 IoTからバグを駆除するためのテストは、並行動作する複雑系のIoTを相手にしなければならない。従来のシーケンシャルな線形世界を相手にするテストはもはや通じない。

 今回はIoTシステムのテストについて、一般的なエンタープライズ系や組込み系のシステムとの違いを中心に見ていくことにする。