2014年2月11日火曜日

システム開発におけるテストとはそもそも何なのか?

以下、私信を少し手直しして公開したものである。

テストって本質的に何なのか考えているのですが、よくわからないのです。1.システムで実現したい目的(要件)が用意され、2.それを元にシステム仕様が決まり、3.それを元に開発が行われ、4.テスト仕様書が用意され、5.テストを行って製品の品質を上げる。これらのプロセスには当たり前すぎて疑問の余地はないように思えますが、まじめに考えるとよくわからない点があるのです。
テスト仕様書(テストケース)を書く際の元となる情報がシステム仕様書以外にあるのかどうか。システム仕様を考える人たちとテストをする人たちに、同じ人員をあてていいのか、あてたほうがいいのか、それともよくないのか。
これは「コミュニケーションコスト」をプロジェクトのコスト構成要素として、どれくらいまじめに考慮すべきかという問題でもあるので、プロジェクトマネジメント観点で考える必要があるようにも思えます。
というわけで、今までの不勉強をさらけだすようで恥ずかしいですが、課題をまとめてみました。
1.「設計された仕様を元に開発する」が「テストケースを設計用意しそれを元にテストする」に対応すると単純に考えていいのか。
2.テストケースの設計のもとになる情報は何で、その伝達コストはどの程度のものであるべきなのか。
3.役に立つテスター(テスト設計書作成担当者ではなく)をそうあらしめている要素は何か?
4.しっかりテストすればソフトウェアの品質は上がるのか?その際の「しっかり」とは何か?品質が高いとは何か?ともに定量的な測定が可能なのか?
5.非機能要件(例:UIの使いやすさ)はテスト対象になるべきものか?
おいおい考えて、何か解があればご報告します。