「ソフトウェアテストの教科書」を読んだ個人的感想

# はじめに
テストを実装するときに、以下のようなことを思っていました。

- この機能のテスト設計どうしよう、、、
- どこまでの範囲をテストすればいいのだろうか、、、

テストを考える際の基礎的な考えが全く定着していなかったので、先輩エンジニアに相談したところ、この本を紹介していただきました。
重要なところをピックアップして、個人的な感想ですが、記載していこうと思います。


# 引用文献
[【この1冊でよくわかる】ソフトウェアテストの教科書　［増補改訂 第２版］](https://amzn.asia/d/ik5iQwW)

# 各章の解説
## Part１　ソフトウェアテストの基本
### Chapter1 ソフトウェアテストとは
ここでは、ソフトウェアテストの概要がまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 求められる品質意識
本書では以下の記載があります。

> 開発仕様書上では欠陥に分類されないものでも、ユーザーが不満に感じると考えられるものは欠陥として拾い上げ、品質を高めるべく働きかけることも重要

ただ仕様に沿ってテストするだけでなく、更なる付加価値をユーザーに与えるために、テストする際に少しでも疑問に思えば、相談しようと思いました。

狩野モデルと呼ばれる、ユーザー満足と品質の関係を示しているモデルがあるので、そこも勉強していく。

https://www.rymoc.co.jp/framework_03_03.html


### Chapter2 ソフトウェア開発の流れとテスト工程
ここでは、テスト工程の位置付けや開発工程との対応関係がまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### テスト工程の流れ
テストの工程は、いくつかに分かれていて、以下があると本書には記載があります。（他にもあります）

- 単体テスト
- 統合テスト
- 機能テスト
- システムテスト

これらを一つずつ理解して、今の業務にどう落とし込めるか考えてみようと思います。


### Chapter3 ホワイトボックステストとブラックボックステスト
ここでは、それぞれの概要とテスト技法がまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### モジュールと論理構造
各モジュールの処理の流れや実行順序のことを、「論理構造」と言います。
ここを間違えると、正しい処理が実行されなかったりするので、フローチャートにまとめるなどして、視覚的にもわかりやすくまとめて、レビュー依頼を出そうと思いました。



## Part２　さまざまなテスト技法
### Chapter4 同値分割テスト・境界値テスト
ここでは、上記のテストについてまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 同値分割テストの実施方法
有効同値パーティションと無効同値パーティションがあり、有効となる値と無効になる値をそれぞれテストするのが、同値分割テストになります。

境界値テストは知っていましたが、同値分割テストもあることを知りました。
一見、境界値テストと比べてテスト範囲が少ないのでは？と思いましたが、あくまでテスト効率を上げる方法として紹介されていました。

上記のテスト方法があることを知った上で、テスト実装に取り掛かろうと思いました。


### Chapter5 デシジョンテーブルテスト
ここでは、上記のテスト技法についてまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### デジションテーブルテストの概要
複数の条件によって決定されるソフトウェアの動作を一覧するための表になります。
単一条件だけでなく、複数条件に対応できるのと表になるので、視覚的にもわかりやすいなと思いました。

この辺りも業務で使えるか検討してみようと思いました。


### Chapter6 状態遷移テスト
ここでは、上記のテスト技法についてまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 状態遷移図だけでは不十分
「状態」・「イベント」・「遷移」をフロー図にするだけだと、できることに目がいってしまうので、**「できないはずのこと」** も網羅的にわかる状態遷移図も必要になります。

テストで抜け漏れがないよう、両方用意するようにしようと思います。


### Chapter7 組合せテスト技法
ここでは、上記のテスト技法についてまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 組合せテストの必要性
単一の条件だけでは発生しない、複数の条件が組み合わさった際に発生する欠陥を見つけるために行います。
システムにおいて、いろんな条件があると思うので、ここは考えられるようになっておきたいです。

組合せテストをする前に、単一テストを十分にするようにと本書に記載があるので、そこも守ろうと思います。


### Chapter8 テスト技法適用チャート
ここでは、実際のテスト現場において適切なテスト技法を選択するためのヒントがまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 現状の悩みから探す
本書では、〇〇を確認したいなら〇〇テストが良い。などいくつか事例を取り上げて、解説をしています。
また、チャートもあるので、実際にテスト技法に迷った際に、見てみようと思いました。


## Part３　テストドキュメントとモニタリング
### Chapter9 テストドキュメントの作成
ここでは、上記の概要がまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### テストドキュメントの種類
本書では以下の種類のドキュメントがあると記載があります。

> ・テスト全体計画書
> ・（個別）テスト計画書
> ・テスト設計仕様書
> ・テストケース
> ・テストログ
> ・不具合報告書
> ・進捗管理表
> ・テストサマリレポート

必要な場面で適切な内容のドキュメントをまとめられるように、上記を参考にしようと思います。


### Chapter10 テストドキュメントの正しい書き方
ここでは、例を用いて、ドキュメントを作成する際のポイントがまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### テスト設計仕様書：記述の粒度
本書では、ドキュメントは詳しく書いてあるほど良いと思われがちですが、そういうわけではない。と記載があります。これはテスト設計仕様書に限らない話だと思っていて、どのドキュメントにも言えることだと思っています。

さまざまな読み手が理解できる粒度の文章を、心がけようと思いました。


### Chapter11 テスト実施のモニタリング
ここでは、上記の方法がまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### 状況の把握
本書では、時間経過による状況変化と不具合の分類による状況の把握に分けて、解説をしています。
それぞれでグラフにして、状況を把握しています。

この辺りはSaasに任せている部分も大きいかなと思っています。あまり自分で考えることはなかったので、こういうモニタリングがあるのかと勉強になりました。


## Part４　次のステップへ
### Chapter12 アジャイル開発とテスト
ここでは、本書で学んだ内容が、アジャイル開発でどのように活かされるのかがまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### ウォーターフォールモデルとの違い
アジャイルとウォーターフォールとで、「同じ」部分と「異なる」部分があることを、本書ではまとめています。その中で、「同じ」部分として、以下の２点がありました。
（※ 他にも「同じ」部分はありますが、自分が大切だと思った箇所だけ抜粋しています。）

> ・テストの全体計画
> ・テストの設計

開発方法が違えど、テストの計画や設計は同じなため、しっかり計画・設計できるようになります。


### Chapter13 テスト自動化
最後に、テスト自動化を支援するツールの概要から導入など幅広くまとまっています。
その中で、自分が大切だと思った考え方は、以下になります。

#### テスト自動化ツールの選び方
本書では、ツールの選定時に注意すべきこととして、以下を挙げています。

> - 導入を検討しているツールは何ができるのか
> - どのような事前準備が必要か
> - ツールの実行環境

サポートが受けられるかも重要ですが、一番は「何ができるのか」が重要になってくると個人的に思っています。携わっているシステムで解決したい課題とそれを解決するために、どのような手段がいいのか、しっかりツールを見極める必要があります。


# 最後に
今まで業務の中で、テストを学んできましたが、本を読み体系的に学ぶことができてよかったです。開発だけではなく、テストまでしてこそなので、業務で生かせられるよう、しっかり復習します。

最後までご覧いただき、ありがとうございました。