テストに対する考え方
いままでSEという仕事を続けてきて、テストの項目抽出や、手法について、一般的な観点がなかなか見出せなかった。特に、新規開発完了後、障害や追加機能の対応を行った場合、どこまでの範囲を確認すればよいのか、ここに明確な基準がなかったため、新たなバグを埋め込んてしまうことが多々あった。
最近ようやく方向らしきものが見えてきたので、まとめておく。
- テストの定義
- 前提
- システムを構成する永続データ(データベース、ファイル)に着目する。
- 単体テスト
- 機能に対するさまざまな「アクション」に対し、永続データに対する更新操作と「レスポンス」が正しいかを確認する。
- 結合テスト
- 複数機能間の更新操作による応答が正しいかを確認する。
上記「単体テスト」にて使用している単語の定義は以下のとおり。
- アクション
- 機能に対する起動トリガー。ユーザ操作や、システムによる自動実行(定時処理など)が考えられる。
- レスポンス
- ユーザに対する結果の提示を表す。画面表示の更新や、帳票出力などが考えられる。
以上の方法で、記憶にある限り修正に伴うデグレードは未然に防げたと感じている。
ただ、これを実現するために以下の情報が必要となる。
- モジュール - 永続データ参照更新関連表 (いわゆるCURD表)
- モジュール間クロスリファレンス
いままでこれらの情報について、それほど重要性を感じてなく、というよりは、新規開発のとき作成しても、その後の仕様変更や障害対応などできちんとメンテナンスされなかったため、ほとんど作成されていないのだが、テストのことを考えると、ちゃんと作成し、その後も正しくメンテナンスされる仕組みを考える必要があると思う。