品質と品質保証について
昨日「品質が上がればコストが下がるじゃん」と言われてもやっとしたのですが、反論をうまく説明できずにその場を取り繕ってしまいました。帰っても少しもやもやしていたので、現時点で品質と品質保証の考えをちょっとまとめておこうかと思います。
なお、結論はありません。現時点では主観と客観が未分化です。
前提
今回の話は「品質とは何か」がテーマではないので、品質特性や品質保証のあり方やテスト手法(手動か自動かなど)についてはエントリの中では触れません。このエントリに必要なのは、品質には「高い」「低い」という評価があって、それを担保するのが品質保証というプロセスだという前提です。
これ以上深く入ると怖い人に見つかる可能性があります。
何故もやるのか?
言外に「見積もり高いよ、値段下げて」と言いたいのが伝わってきたからだと思います。そして、おそらくですが「品質が高ければテストが削れる」と思ってるんですね。これはもしかすると以下のように考えられているのかもしれません。
- 品質が高いプロダクトのテストはバグが出ない
- バグが出ないということはただ動かしただけと同義
- 動かすだけで終わるなら最初からなくて良いのでは?
つまり、品質が高ければテストがいらないという結論です。まあエンジニアでない人がそう思ってしまうのはある意味仕方ないのかも知れませんが。。。これは品質という結果とその担保(証明)との関係をごちゃ混ぜにしているから出てくる思考なのかな、と思っています。
品質はあくまで結果論
品質についてそれぞれに思うところはあれど、我々エンジニアが高品質のプロダクトを世に出すことを仕事にし、プライドを持っていることは確かだと思います。そのために自分の技術力を高め、開発プロセスを整備し、テストコードを書くのです。
エンジニアの活動において品質に相関しそうな活動をあげてみましょう。
- 要件の理解
- コードの品質
- 開発者テストの充実
- レビュー時の指摘の質
おおむねこのあたりが開発プロセスの中で品質を上げていく中心的な活動になるかと思います。
ただし、これらの質が高かったからといって品質が高いことが担保されたわけではありません。もちろん相関はあります。これらの実施が高いレベルでなされているプロダクトは、間接的に品質が高いことを示します。これで十分でしょうか?私は直接的に知りたいと思います。
大事なことはプロダクト全体に対して、品質が高いことを観測・評価することです。その結果を持って初めて品質が高いことを担保することができます。つまり、高品質であること品質保証のコストは別問題ということです。「テストをして不具合がなかった」=「品質が高い」=「テストはやらなくても良かった」ではなく、「品質が高いという結果を担保するためにテストが必要だった」ということですね。
具体的にイメージしてもらう言葉がなかった
今回、何故言葉を濁してしまったかというと、私が上記を経験でしか理解しておらず伝わるように説明できなかったからです。何か良いたとえ話でも思いつかないかな、と考えていたのですが、残念ながらまだ見つかっていません。
とりあえず、自分の中では割とつながってきたので、何度も説明してみようかと思います。
以上、自己満足エントリをお届けしました。