Open10

組込みソフトウェアでTDDが効果を発揮しそうなシーン

阿部耕二阿部耕二

組込みソフトウェアでTDDを適用するメリット

  • 再現性の低いハードウェア異常・外部装置の異常を容易に再現することが可能

TDDが効果を発揮しそうなシーン

マイコン依存

アーキテクチャ

エンディアン

int型サイズ

スタックサイズ

ヒープサイズ

標準ライブラリの挙動

ホストの標準ライブラリと違う挙動があるかもしれない

マイコン制限事項

マイコンに制限事項がありホストと挙動が違うことがあるかもしれない

マイコンメーカ配布のコード

レジスタ定義ファイル

  • レジスタのアドレスに間違いない
  • レジスタのbit割り当ては1bitたりとも間違いはない???
阿部耕二阿部耕二

通信エラー

通信相手の通信途絶

通信相手からの異常ステータス受信

意図しない通信データ受信時の振る舞い

誤り訂正データの異常

通信開始で接続相手の異常で足並みが揃わない

阿部耕二阿部耕二

再現が難しい現象

温度xx以上

湿度xx以上

接続デバイスの接続⇛未接続

接続デバイスの未接続⇛接続

外部デバイスのウォームアップ時間中の挙動

  • 起動時のxxms間だけxxbitが1になるなど
阿部耕二阿部耕二

連続運転試験

温度xx, 湿度xx をxx時間

連続運転の条件 xx条件: ON時間 xx時間 OFF時間 xx時間をxx日間

阿部耕二阿部耕二

データ

データ初期値

データ範囲(最小・最大)

データ範囲外

データ範囲外でソフトの挙動が変わるケース

  • 表示の色を変える
  • 最小・最大値の固定表示
  • なにもしない(範囲外を無視し他に影響を与えないこと)

バッファオーバーフロー

  • バッファがフルになったあとの挙動 
     最古上書きなのか、要求仕様による
阿部耕二阿部耕二

再現性の低いハードウェア故障

入力ポートのショート(Low固着、High固着)

入力ポートのオープン

デバイスが故障

RTC電池切れ

外部デバイスとの通信線