TISの単体テスト仕様書テンプレ＆サンプルが役立ちそうなので共有しておく

## はじめに

[前回の記事](https://qiita.com/otomaru97/items/b991bb99b5c07105e2ea)で、TISのテスト種別＆テスト観点のカタログがすごいという記事を書きましたが、その後資料を漁っているとテスト観点に紐づいた「単体テスト仕様書」のテンプレ・サンプルも見つけることができ、これがまた有用だったので紹介しておきます。

## 単体テスト仕様書テンプレ・サンプル
単体テスト仕様書のサンプルですが、1つの機能に対して1つのExcelブックにまとめられています。

また、今回のサンプルは1つの機能を2つの画面で構成しているので、いくつかのExcelシートにテスト仕様が分かれています。

出典：[単体テスト仕様書サンプル（検索機能）](https://github.com/Fintan-contents/spring-sample-project/blob/main/設計書/A1_プロジェクト管理システム/030_アプリ設計/110_テスト仕様書/単体テスト仕様書_リクエスト・取引単体(画面)_WA10202_プロジェクト照会.xlsx)

　WA1020201シート：　検索画面のテスト仕様
　WA1020202シート：　詳細画面のテスト仕様
　取引単体シート：　画面間のテスト仕様

サンプル機能の画面遷移図は以下のようになっています。
![画面遷移図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/967a30e8-6abf-a828-fd10-6829063def48.png)

### 検索画面のテスト仕様
理解しやすいように画面レイアウトも合わせて載せておきます。

#### 画面レイアウト（設計書より抜粋）
![画面レイアウト・検索画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/ddf2cbdc-d819-dbde-3c24-a9a3f56e9cb1.png)

#### 単体テスト仕様書
![検索画面のテスト仕様](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/041746cb-fc69-58fd-83c6-88521995bb3a.png)

検索画面のテスト仕様では、バリデーションチェックやDB操作、そして画面表示、画面操作のテスト仕様が並んでいます。

例えばDB操作では、単一条件、複数条件、完全一致、部分一致といったテスト観点に対して、テスト内容や想定結果が記載されています。

### 詳細画面のテスト仕様
理解しやすいように画面レイアウトも載せておきます。

#### 画面レイアウト（設計書より抜粋）
![画面レイアウト・詳細画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/bb97dd60-b3c5-2f37-58ce-27130075262e.png)

#### 単体テスト仕様書
![詳細画面のテスト仕様](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/f2dbf530-6c10-b5c5-822e-a8669db20d24.png)

検索結果からリンク押下で遷移した先の画面です。

バリデーションチェックは入力項目が無いのでグレーアウトされており、DB操作や画面表示、画面操作のテスト仕様が並んでいます。

詳細画面の表示においても、情報を取得するためのDBアクセスはあるので、DB操作のテスト仕様が列挙されています。

### 画面間のテスト仕様
そして最後のシートには、画面間のテスト仕様が列挙されています。
こちらもイメージしやすいように画面遷移図を再掲しておきます。

#### 画面遷移図
![画面遷移図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/967a30e8-6abf-a828-fd10-6829063def48.png)

#### 単体テスト仕様書
![画面間のテスト仕様](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/ac9b9ecd-d2a1-de5e-2ce3-23d10de57929.png)

画面遷移パターンは、正常系、戻るイベント、更新イベント、検索結果0件、異常系、連続実行といった内容となっています。


## （補足）単体テスト仕様の入力文書

上記の単体テスト仕様書を見るだけでもテスト内容は伝わると思いますが、テスト仕様をより理解するためには、テスト仕様書の入力文書（作成するための元ネタ）も合わせて見ておいた方が良いと思います。

テスト仕様では、下図のようにシステム機能設計書から個別の機能要件を、そしてテスト観点カタログから一般的なテスト観点をインプットしています。

![単体テスト仕様の入力文書](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/3d94a089-831b-953c-33e5-51387c58a79d.png)

テスト観点カタログは前回の記事で紹介した下図のものです。バリデーションやDB操作などのテスト観点が列挙されています。

![テスト観点カタログ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739239/28bd3749-aba9-ef60-56b2-c8b5f785e23b.png)

## その他のテスト仕様サンプル、および機能仕様のリンク
今回紹介したのは検索機能のテスト仕様だけですが、登録や更新のテスト仕様もあるので、githubからダウンロードしてみてください。

[単体テスト仕様書サンプル](https://github.com/Fintan-contents/spring-sample-project/tree/main/設計書/A1_プロジェクト管理システム/030_アプリ設計/110_テスト仕様書)

また、テスト仕様書のインプットとなるサンプルへのリンクも記載しておきますね。

[テスト観点カタログ](https://github.com/Fintan-contents/testing-viewpoint/blob/master/docs/テスト観点カタログ.xlsx)

[画面遷移図](https://github.com/Fintan-contents/spring-sample-project/blob/main/設計書/A1_プロジェクト管理システム/010_要件定義/040_画面設計/画面遷移図_プロジェクト管理システム.xlsx)

[システム機能設計](ttps://github.com/Fintan-contents/spring-sample-project/tree/main/設計書/A1_プロジェクト管理システム/030_アプリ設計/010_システム機能設計)

↑ 画面例アウト、画面項目定義、画面イベント一覧、画面イベント詳細、などの機能仕様が記載されています。

## おわりに
ということで、今回も大手SIerのTIS社のテックブログから役立ちそうなドキュメントを紹介しました。

またいろいろ漁ってみて良さげなドキュメントがあったら共有したいと思います。