突然の実行時エラー発生で、業務が停止。これは避けたいものです。
みなさん、こんにちは。セルネッツ竹本です。
今回は、システム品質を決定づける最も重要な工程「テスト設計」について解説したいと思います。
◆テスト設計は何のためにある?
目的は品質保証、品質担保のためです。システム開発で怖いのは、大きく2つ。
1、バグがもたらす別のバグ
2、リカバリできないデータ損失
システム納入責任という観点から、凡ミスも許されないケースがあります。
◆一般的にやるべき定番テスト項目
「どんな業務システム開発でも共通する」といっても過言ではないくらい定番必須のテストを挙げてみました。
(行うべき動作テスト)
0件テスト
1件テスト
少量テスト
大量テスト
パターン混在テスト
重複テスト
欠落テスト
数式欠落テスト
実測妥当性テスト
根拠立証テスト
競合テスト
など・・・・
Excel開発では他のシステム開発と異なり、より「データ状態」に注意が必要。
何故なら、信頼性の高いデータベースを取り扱うことよりも、手入力による不正値が混在したExcelを使うケースが圧倒的に多いためです。
◆入力チェックの種類について [基本はこれ]
1.存在チェック(対象が存在するかどうか有無)
2.必須・任意チェック(必須なら値があること)
3.妥当性チェック
生年月日の例:常識の範囲かどうか
電話番号の例:桁数は問題ないか
4.単一条件、複合的条件チェック
日付が入力された時だけ、品名は入力必須
但し、予定の場合は、ノーチェック
など、信頼できるシステムは、信頼できるデータが前提となるため、入力チェックは精度を高めるために大切な処理になります。
◆テスト設計の基本的な工程
1、テストケースを洗い出す(まずはコレ)
想定し得る、データ到来パターン洗い出し(できるだけ多く)
想定し得る、誤操作の洗い出し
想定し得る、誤入力の洗い出し
想定し得る、データ状態の洗い出し
動作環境など多種にわたる場合は、「前提条件」を謳うことでカバー
2、テストデータを作る
設計書に基づき当該データを作成する
実は、これが結構な労力を要するため、
値や数字をランダムに用意するケースでは、「テストデータ作成ツール」を作成することもある
3、設計書に基づき検証する
「テストID」ごとに動作を検証してゆくこと
期待値を得られたかどうか記録(期待値も定める)
4、上記結果を「エビデンス」証拠書類として書面化
想定し得る全てのテストを行ない
正常動作を保証する根拠データが完成
これにより最低限の品質保証を担保することができます。
◆エンジニアに求められるスキルは想像力
テストケースは、「想定のもと」に洗い出されるため、経験が武器になり、
「思い浮かぶパターンが少ない人」
「思い浮かぶパターンが多い人」
に顕著に分かれます。
きめ細かいテストが出来ていれば、バグ発生率は激減できるのです。
今回のテーマは、Excelマクロ開発に特化した内容ではなく、あらゆる開発言語においても重要な作業です。
本記事が、品質向上において、ご参考お役立てになれば幸いです。