
【OS開発よもやま話】ファイル改竄はできません!→テスター「では・・・」
2010 年頃、OS 開発チームで仕事していた私は、自身の担当箇所が落ち着いてきたので、ファイルシステムチームを手伝うことになりました。
今日は、そのときのお話です。
なにかしら、ソフトウェア開発の教訓が得られればと思います。(^^;
《求められたのは堅牢なファイルシステム》
このときのファイルシステムチームに求められていたのは、堅牢さ です。
大きく、以下の二つの機能に力を入れていました。
ファイル破損を検出、防止できること。
改竄されたファイルを読み込めなくすること。
ここで内部設計に関して詳しく書くことはできませんが、
・・・そもそも覚えてませんしね。(^^;
エラーコードの設計、実装コード、テストプログラムなどを全てレビューし、動作確認も終え、無事 OS に組み込むことができました。

そしてハードウェアに組み込み、いよいよ検証フェーズです。
◎最大のうっかりミス
テスター「では、エラーメッセージが正しく表示されるか検証するので、ファイルの改竄方法について教えてください。」
私「えっ?(^^;」
テスター「えっ?」
もちろん、ファイルは改竄できないように作ってあります。
「・・・堅牢に作ることばかり考えて、テスターのことを考えてませんしたー!ヽ( ´ー`)ノ」
私「テスト用のツールに、このシステムコールを使いたいんですが・・・」
アーキテクト「外部に出ていくツールに、そんな危険な権限付与できませんよ!」
私「ですよねー^^」
最終的には、検証チームのいる建物内に特定の人しか入れない部屋を用意してもらい、そこで厳重に管理するルールのもと検証をしてもらいました。

部屋の準備から、手続きやルール作り、テスターへの教育を含めると、かなり大変でした。(^^;
《優秀なテスターの指摘で判明する不備》
検証ではバグも見つかりますが、事前に開発側でもテストをしているので、そこまで大量のバグは出てきません。
実は、優秀なテスターがよく指摘してくれるのは「仕様の不備」なのです。
「破損と改竄が同時に起きている場合は、どちらのエラーコードが優先されますか?」
「ファイルテーブルが破損している場合は、どのタイミングでエラーが検出されますか?」
「ファイルシステムを丸ごとコピーしたときは、エラーになりますか?」
すべて仕様書に書かれてません。
そして、開発者も「ええと、どうだったかな・・・?」となってしまう質問ばかりです。
仕様書に記載がないと、あとあとアプリ開発者たちから同じ質問がたくさん寄せられてしまいます。
第三者の検証では、このような ”気付き” も大変貴重なのです。

それ以前に、テスト不能なシステムを渡してはいけません。(^^;