最近、「できない理由の大天才」というフレーズをテレビでよく耳にします。
組み込みプログラマも超天才かもしれません。
「組み込みだから」にごまかされてはいけません。
最近見かけた風景で、「単体テストを全くしない」現場がありました。
理由はというと、他のモジュールとの強結合のため、単体で動かしてOKでも、全体としてNGとなるなら、単体テストに意味が無い、という???な説明でした。
???の部分は、1週間くらいヒキって考え込むくらいの???です。
もし切り離せないなら、切り離せる部分で単体テストしなければなりません。相手モジュールの担当者も同じように考えているなら、このインターフェース部分は、全くテストされずに結合されていることになります。
それではと、一肌脱いで単体テストしようとするとつまづきます。
単体の仕様書が無いのです。
要求仕様は概要仕様のみです。パワポで3枚とかそういうレベルです。実装担当者間でテケトーに談合してインターフェース仕様が勝手に定義されています。
それを明文化するルールもありませんし、レビューの議事録すらありません。これ後から見てどうやって追跡するんでしょうかネ。
・単体テストしても意味がない
高度な部品は組み立ててみないとよしあしが分からないから、単品でケンサしても意味がないんだよ。昔の職人の逃げ口上です。
”工芸”であればそれは許されますが、”工業”だと許されません。
ソフトウェア産業が”工芸”から脱皮するにはそこをなんとかしなければなりません。
この話をすると妙なことを言い出す人が居ました。
たとえば、“嵌め合い”部品では、作ってみてからサイズの合う者同士を組み合わせて完成品とすることがあるじゃないか、あれも”工芸的”というのか?
オス部品とメス部品の分布がとんでもなく違ったら、その工程はダメ工程ですよね。
単体テストが完璧でも結合テストで不具合が出るんだからやっぱりまとめて結合テストだけでいいじゃないか・・・
このいかにももっともらしい説にうなずいている限りそれは工芸でしょうね。単体テストを契約の単位にすれば、偽装請負問題なんて何の心配もありません。
単体テストの結果で1次検収、結合で2次、いかにもシンプルじゃないですか。
結合単位はより上位の下請に流して、その下に孫請けが入って単体テストをする。見事なピラミッド構造です。
いくら古臭かろうが、まずその態勢でやるべきことをやればおのずとフィードバック可能なプロセスが実現できるものと思います。工芸だとフィードバックかけようがありません。
・記録を残さない
実装が結果だとするとそれに至る根拠を説明できる資料を残さないのは、背任行為ですね。
・特殊なハードだから・・・
なんというか”時代の最先端思い込み症候群”ていうんですかね、台湾かシンガポールの展示会でたたき売られているボードの1周遅れのパクリ仕様の”国内製プラットフォーム”に誇りを持つのはまぁ結構なことですが。
どっちにしたって、単体テストをやらない理由にはなりません。特殊なハードだからといって、原発の制御ソフトが単体テストされていないとすれば、それを許せますか?