認定テストスイートの重要性

ミドルウェアや言語のランタイム実行環境などの相互運用性(もっと簡単に言うと互換性)を確保するためには、認定テストスイートが重要になる。

たとえば、webブラウザレンダリングの非互換性の問題は、Acidテストができ、そのテストをクリアしようと各ブラウザの開発者が努力したことで、レンダリングの互換性が向上した。
Webブラウザ標準適合性のわなとAcidテストの正体(1/3) − @IT


また、一般的でない環境用のJREJDKは、Java SE Test Compatibility Kit (TCK)をパスしなければ、javaと名乗ることが出来ない。これもjavaがどこでも同じように動作するということを保証するためにやっていることだ。
http://journal.mycom.co.jp/news/2009/07/17/046/index.html


このように互換性を確保するうえで、その互換性の基準となるテストスイートを用意することはすごく重要なのだ。仕様書をきちんと書いていても、その解釈しだいで微妙に異なる実装がされてしまい、その実装の差によって互換性が失われてしまうのではないかと思う。


その昔、CORBAミドルウェアのベンダーがいろいろ混じっていて、相互運用性の問題でデスマーチと化したプロジェクトもあったらしい。

標準化団体が策定した仕様に基づいた製品の相互運用性には注意したい。たとえばXML署名だと、あるXML署名ライブラリで署名したXML文書を、別のXML署名ライブラリで検証すると検証に失敗するなんて例が考えられる。
そういうわけでXML署名についてはIPAガイドライン(PDF)をだしているけど、仕様の隅をつつくような検証をしなければいけないので、かなりコストがかかりそうだ。