単体テスト工程について
システム開発における 単体テスト(ユニットテスト) は、最小単位(関数・メソッド・クラスなど)の機能が正しく動作するかを検証する工程です。スケジュールが詰まってくると結合テストから実施などと考えられないスケジュールを引くリーダがいますが、1step単位で正しく動作するか確認して、当工程にて実施すると、以後のトラブルの多くを回避できますので、その意味から品質担保に重要な役割を果たします。又、その結果、全体のスケジュールの短縮にもなりますので、正しく実施しましょう。
💻単体テストで実施する内容
作業項目 | 内容 |
---|---|
1. テスト対象の識別 | モジュール・クラス・メソッド単位に対象を特定 |
2. テストケース作成 | 正常系・異常系・境界値などの観点からケースを設計 |
3. 入力値の設定 | テスト用のパラメータ・入力データを定義 |
4. 期待結果の定義 | 出力値、戻り値、副作用(DB更新など)を定義 |
5. テストコード実装 | テストフレームワークを用いて自動実行用コードを作成(例:xUnit, NUnit, MSTestなど) |
6. モックの利用(必要に応じて) | 外部依存(DB/APIなど)を切り離してテスト実行 |
7. テスト実行と確認 | テストを自動実行し、期待値と一致するか確認 |
8. テスト結果の記録 | テストログ/結果一覧を保存(成功/失敗、エラーメッセージなど) |
9. バグの報告・修正 | 失敗時の不具合の修正と再テスト |
💻単体テストの分類
テストタイプ | 内容 |
---|---|
単体テスト(モジュール単位) | ① 正常ルート、異常ルートテスト ②①にて抽出できない箇所を全ルートを目視ではなく動作して確認)※できない場合は、机上確認でも可。 ③外部処理(共通処理等も含)の確認 ④ テーブル検索の1件目、中間件数目(複数を確認)、最終件数目の確認 ⑤繰り返し箇所確認(ループ無し、ありの場合は、1件目、中間値、最大値、最大値+1) ⑥変数の上限下限値確認 ⑦エラーチェックの確認(メッセージをすべて出力) ⑧演算箇所の確認(ゼロ除算確認等は必須) ⑨①~⑧以外で必要であれば。 |
💻成果物例
成果物 | 内容 |
---|---|
テストコード | テストクラス内に各メソッドのテスト |
テストケース表 | Excelなどで入力条件、期待結果、テスト結果を管理 |
テストパターン表 | テストケースを実施する際のパターンを記載。 入力値、関連テストケース番号、結果を管理 ※テストケースとは、1対1又は、1対nになります。テストケースの為の入力値等が複雑でない場合は、テストケース表だけでも可です。 |
実行ログ/レポート(エビデンス)※必須 | 自動実行結果(成功/失敗、実行時間など) |
不具合報告書 | 発見されたバグの詳細、修正内容、再テスト結果 |
🛠️ 使用ツール例(言語別)
言語 | テストフレームワーク |
---|---|
C# (.NET) | MSTest, NUnit, xUnit |
Java | JUnit, TestNG |
JavaScript | Jest, Mocha |
Python | unittest, pytest |
PHP | PHPUnit |
🔁 テストの自動化
- プルリクエストやコミット時に自動でユニットテストを実行し、品質を担保
- GitHub Actions / Azure DevOps / Jenkins などのCIツールでテストを自動化
技術者で仕事を始めた際は面倒な工程かとは思いましたが、長く開発を実施すると当工程の重要さがわかってきます。テスト仕様書に記載できない細かなことも、目視で確認する様にしましょう。
あとテスト時にバグがでるとその数を隠しがちですが、本番でバグがでないために、単体テストのバグは多く出しましょう。
テスト | テスト数値(単位:kstep) |
---|---|
単体テスト(モジュール単位) | 1.テストケース数※システムによって検討要 ①下限値 35ケース ②中間値110ケース ③上限値155ケース 2.バグ検出件数※システムによって検討要 ①下限値 2件 ②中間値10件 ③上限値15件 |
つぎは、結合テストを説明していきます。少々お待ちください。
Share this content:
コメントを送信