Wモデル

SQiPのWeb内で公開されている「ソフトウエア品質のホンネ」でWモデルの連載があったので自分なりに考えてみた。そもそもWモデルを理解するのが難しいのだけど、私は要件定義に対して実施すべきテストの設計や作成を、要件定義と同時に行うものと理解している。でもこの"同時"の解釈が難しい。筆者の鈴木さんは3つのパターンを提示している。
A-1:要件定義書の作成と同時に、テスト設計を行う場合
A-2:要件定義書を作成した後に、テスト設計を行う場合
B:基本設計工程で、システムテストのテスト設計を行う場合
ただこの3つの分類、ソフトウエア開発という観点で見ると違いがないように思う。A群とBの差は明らかに契約といったビジネス上での違いしかないし、A群の2つは、要件定義->テスト設計という単位のサイズの違いしかないからだ。

そもそも要件定義とテスト設計は、時間的に区別できるタイミングってあるのだろうか? 要件定義している間に、要件の実現性のリスクを考えたら、それはテスト設計になってしまうと思うのだ。私は、要件定義とテスト設計の違いは視点の違いであり、何かをクリエイトし、その創造物が正しいかを考えることを何度も何度も繰り返していくものだと考えている。要件定義に限らず、設計やコーディングと、それに対応するレビューやリスクコントロールは、まさに表裏一体の関係と言えるのではないか。id:m_sekiに話をしてみたら「ずーっと、(表裏一体)じゃない?」と言わた。

ただ現実は、確かに要件定義でもテスト設計的なことを考えるけど、不十分なことが多いように感じる。
昨年の夏、秋山さんのSQiPチュートリアルを受講し、始めてテスト手法を学ぶことができた。そのとき、これらテスト技法を持ち込みやすい設計が美しいコードにつながることに気づき、これらテスト技法を学ぶのはテスターを目指す人というより、むしろソフト開発で要件定義や設計、コードを書く人だろうと確信した。

もうテスト担当者だ開発担当者だと言っている時代は終わり、テストはソフトウエア開発のクリエイトな部分と異なる視点を導入できるツールのような存在で、その技法はソフトウエア開発に必要なものなのだ。そしてそれらはもはや、プロセスで定義するには細かすぎるくらいのミクロな、かつ大きく人に依存している。で結論は、ソフトウエア開発をしていると思っている人はみんな、秋山さんのチュートリアルを学ぶべきだ!! やや冗談も入っているけど、でもテスト技法はソフト設計には欠かせないツールであると私は考えている。