今回のテーマは,『⁠同値クラスを上流工程で使う』です。上流工程で仕様を記述する際に,知っておくと役に立つアイデアを皆さんと一緒に考えていければと思います。「同値クラス⁠」⁠,あるいは「同値分割」とは何でしょうか。さまざまな定義がありますが,JSTQBのソフトウェアテスト標準用語集(※)によれば,「⁠同値分割:仕様上,コンポ-ネントやシステムの動作が同じと見なせる入力定義域や出力定義域の部分」とされています。私たちはこの「動作が同じと見なせる」という考え方にのっとって,より効率的なテストを実施することができるわけです。(⁠但しaは整数とする⁠)⁠」をテストするのに,10から99までの全ての値を入れなくてもそのうちの幾つかの値を入力することで済みます。このように便利な同値クラスですが,その一方で,テスト担当者が,同値クラステストで一番恐れるのは,設計仕様書に表れていない同値クラスの存在です。仕様書を元にソフトウェアは実装されますが,実装の過程で,仕様書には無い境界値や同値クラスが作りこまれてしまうことは少なくありません。実装担当者しか知らないその同値クラスがテスト担当者に伝わらなければ,テスト自体が抜けてしまう恐れがあります。前回,「⁠設計⁠」⁠,「⁠実装⁠」⁠,「⁠テスト」の「3点の一致」が取れていることがソフトウェア開発では大切と申し上げました。そこで,実装担当者の方にお勧めしたいのが,仕様書に無い同値クラスを実装した際には,後から見てわかるように,仕様書になんらかの反映を行う,ということです。「そんなこと,時間が無くてやってられないよ!」というのであれば,手書きでもいいので,第2回の図のような数直線を仕様書に添付しておくとよいでしょう。それだけでも,テストのとき,あるいは仕様変更のときには大きな威力を発揮します。「⁠仕様書に記載のない同値クラス」の周知,ぜひご検討ください。ひとつ同値クラスの活用例を。要求定義を基本設計に落とし込む際などに,同値クラスの考え方を応用できます。今回お勧めしたいのは,「⁠どうやってこの仕様をテストするか」を出来るだけ設計段階から考えて,そのテストの観点を一覧表にして仕様書に加えておく,というアプローチです。あるサンプルとして,パスワード設定の文字入力の仕様を考えてみましょう。「入力文字数は4桁とする。使える文字は半角英数とする。」まず,この仕様において「有効」となる入力文字を考えてみます。仕様によれば4桁であることと,使える文字は半角英数のみ。これを「有効同値クラス」と呼びたいと思います。「無効同値クラス」となる入力は何でしょうか。