『いちばんやさしいソフトウェアテストの本』を読んだ感想

##概要

[『いちばんやさしいソフトウェアテストの本』](URL "https://www.amazon.co.jp/%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E6%9C%AC-%E6%8A%80%E8%A9%95SE%E6%96%B0%E6%9B%B8-19-%E7%9F%B3%E5%8E%9F-%E4%B8%80%E5%AE%8F/dp/4774137456/ref=sr_1_1?s=books&ie=UTF8&qid=1534933993&sr=1-1&keywords=%E3%81%84%E3%81%A1%E3%81%B0%E3%82%93%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E6%9C%AC")の読書メモです。

テストについて体系的/基礎的な知識が身につく本
はじめてテストを任された人や、テスト設計者、またテストの考え方をしりたい技術者におすすめできます
テスト駆動開発とか、CIとか開発者の行う割と新しいテスト技術についてなんかはフォローしていないので,
そのあたりが知りたい人には期待外れの内容かもしれません。
新書サイズ、152ページとコンパクト、通勤時間でさくっと読めました。

##本書の構成

　*　1.ソフトウェアテストとは
　*　2.開発の流れとテスト
　*　3.テストの流れとドキュメント
　*　4.ソフトウェア開発における2種類のテスト　ホワイトボックステストとブラックボックステスト
　*　5.ブラックボックステスト技法
　*　6.先輩たちの勘所

*****
###1.ソフトウェアテストとは
ソフトウェアってなに？というところから、実際に起きたソフトウェア障害を紹介し、なぜテストが必要かを順序だてて解説されています。

>また工程の早い段階から関与すると同時に、開発者とは異なる視点で製品に接することがテストエンジニアには求められます。
>ここにテストエンジニアの大きな存在意義があるのです。

としたうえで、テストエンジニアに必要な２つの視点を以下の通り紹介しています。

>　*　（1）正しく製品を作っているか/正しい製品を作っているか（Vewification/Velidation）
>　*　（2）当たり前品質と魅力的品質

**（1）正しく製品を作っているか/正しい製品を作っているか（Vewification/Velidation）**
 現場で働いていて、”正しく製品を作っているか（Vewification）”、
 つまり、テスト項目書に忠実に動いているかを確認できる人はわりといらしゃります。しかし
 ”正しい製品を作っているか（Velidation）”、妥当性評価の視点をもっていないエンジア、これもまた結構みかけるのです。
 仕様が要求を満たしていない、というやつです。

 このあたりをきちんと発見できるかどうかというのは、テストの技術力ではなく、お客様の要求をきちんと把握しているか 
 自分がテストするシステムに対して、誠実であるか、想像力をもって仕事しているかというところだと思うので
 常に気を付けていきたいです。

 …精神論になってしまうので、自己改善は簡単なんですけれど
 他のひとに、これを要求するときというのが、なんといったらいいか大変苦労するんですよね…
 蛇足ですが、行動心理学とかマネジメントとかの分野に、精神論ではなく具体的な行動として定義する方法があるのではないかなと
 活路を探しているところです。

**（2）当たり前品質と魅力的品質**
 狩野モデルの紹介しつつ説明。
 これは上述の内容と同じく、いかに顧客の視点に立ち想像力を働かせるかが、よい仕事かどうかの分かれ目ですねといった内容でした。


###2.開発の流れとテスト
ウォーターフォールのプロジェクトを例にV字モデルとW字モデルのテストについての解説です。
知っている人は読み流していいし、業界未経験の方はきちっと読むと基本知識が入りますねという感じ。
アジャイルなんかの説明のフォローはありません。

###3.テストの流れとドキュメント
「計画」「設計」「実施」「管理」という要素にわけて、テストの流れを解説しています。
このあたりは[『ソフトウェアテスト入門』](URL 
"https://www.amazon.co.jp/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%86%E3%82%B9%E3%83%88%E5%85%A5%E9%96%80-%E6%8A%BC%E3%81%95%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84-%E8%A6%81%E7%82%B9%E3%83%BB%E9%87%8D%E7%82%B9-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88PRESS%E7%B7%A8%E9%9B%86%E9%83%A8/dp/4774134546")が出展元らしいので、こちらもいずれ読みたいところ。

上記解説したうえで、とはいえ

> 100%残らず全てテストすることは不可能

としたうえで、限られた資源（人、物、金、時間）の中でテスト品質をあげるためにはどうしたらよいかについて説明しています。
ここ、繰り返し本書の中で展開されるテーマですね。

完全ではない条件の中で、いかにお客様に満足していただける高い品質を目指していくのか。
趣味のプログラミングと仕事のプログラミングの境目です。

このあたりを、ドキュメントの必要性やテストの種類なんかの解説を含めつつ、解説しています。
…割と、自分だけがわかるドキュメントで満足してしまいがちなので耳が痛い章でした。


###4.ソフトウェア開発における2種類のテスト　ーホワイトボックステストとブラックボックステスト
この章はそのまま、ホワイトボックステストとブラックボックステストの解説です。
2章と同様、知っている人は読み流していいし、テスト初心者のかたはきちっと読むと基本知識が入りますねという感じ。


###5.ブラックボックステスト技法
テストエンジニアの視点からブラックボックステストと「組み合わせテスト」をはじめとする、さまざまなテスト技法について
掘り下げていく章です。

テスト技法書としては、ここがメインディッシュの部分。

3.テストの流れとドキュメントにて書かれていた
『100%残らず全てテストすることは不可能』とはどういうことなのか
そして『限られた資源（人、物、金、時間）の中でテスト品質をあげるためにはどうしたらよいか』の具体的な方法論が書かれています。

数学的な説明については、割愛されているので
エンジニアのくせにコードや数式を文章でみるとイライラする私みたいな人間には大変ありがたいです。

おそらく単語は知らなくてもマトリクスのテスト表なんかを作るときに使っている
「因子（項目）」「水準（値）」「禁則処理」について解説があります。

ただこの章わかりやすく解説はしてもらえるのですが、この章を読めば
魔法みたいにテスト設計ができるようになる、という内容ではないです。
ここで概要を掴んだうえで専門的な内容を書いている書籍や、ネット記事で自分で学んでいく必要があります。
自分で学べるようになるために、下準備をしてもらえる感じです。


###6.先輩たちの勘所
基本的に心構えや仕事に誠実であれ、また効率のよい段取りについてという感じの内容。
仕事術とかの本に書いてありそうな感じです。

以下のあたりはテスト技法書ならではという感じでした

>「バグは偏って存在する」という原則です
>「80％のバグは20％の領域に存在する」という言葉もあるほどで、バグは全領域に均等に存在するものではんく、ある特定の箇所に集中して潜んでいます。

具体的には境界値なんかをあげられてるのですが、感覚として分かっていても、明確に言語化されるとた、たしかに～！なるほど～！という感動がありました。

##まとめ
概要にも記載しましたが、テストの本とはいっても、
TDDやCIなんかの新しい今はやりのテスト技法の話ではなくて、古典的基礎的な内容を体系的に平易に書いてあるといった内容です。

それだけに、どんな環境でどんなやり方でテストをしている人でも、読む価値のある内容になっていると思います。
この本の「おわりに」にもあるのですが、テスト初心者の方ならは、まず１冊この本を読んで、テスト概要を理解した後、各テスト技法の専門書にうつっていくための入門書として
中級者以上の方なら、知識の振り返りや抜け漏れの確認や、気が緩んだ際に初心にかえるための戒めの書として。

開発がメインの人間にとっても、システムの品質を担保するにあたって、テストについて勉強することはマイナスにはならないですから。

お値段も1000円以下と技術読み物としてはお手頃でした。