※2022/11/27に書籍のリンク情報を最新化しました
2018年初出の記事ですが、掲載書籍とリンクを随時見直し・更新しています。
筆者は幸せなことに社内外の勉強会にてソフトウェアテストに関することを講義する機会がありますが、講義終了後に「テストを学んでみようと思う。ついてはおすすめの本はないですか。」と質問をいただくことがあります。これが何回もあるので、せっかくならば記事にしておこうと思います。
なお、質問をいただくのはだいたい新人か若い層の技術者の方々です。そういった方々に毎回おすすめしている10冊を以下に紹介します。
■まずはソフトウェアテストの世界を覗こう
いざテストを学ぼうと思っても、右も左もわからないと何から手を付けてよいかわかりません。また、いきなり専門的な本を読むと、書いてあることがわからなさすぎて辛さのイメージが付いています。ですから、まずは軽く読める本から、電車移動中に読めるくらいの感じで初めてみるのが良いと思います。
そこでおすすめなのが次の2冊と手前味噌な1冊です。
「知識ゼロから学ぶソフトウェアテスト」はテストの全体感を軽い文章で概観できます。また、もっと敷居を下げ楽しくテストの日常を感じてみるために、漫画が苦手ではない方は「テスターちゃん」を一読するのもよいでしょう。「マインドマップから始めるソフトウェアテスト」は、手前味噌で恐縮ですが、テストの一連の活動をケース設定して優しい文章で解説していますので、テストってどういった段取りで進めていくのだろうかという疑問に対して参考にしていただけるのではと思います。
最初に読む本はとにかくサラリと手軽に読める本が良いと思います。まずは興味関心を得ることが大切だからです。
なお、開発者の方はこの3冊に加えて「ソフトウェア品質を高める開発者テスト 改訂版 アジャイル時代の実践的・効率的でスムーズなテストのやり方」も加えると良いでしょう。
■テストの基本的な考え方を体系的に抑えよう
テストの概観とか日常とか、一連の作業のイメージを掴んだところで、テスト技術の基本的な考え方を体系的に抑えるとよいでしょう。守破離でもありませんが、まずはきちんとまとめられた守を学ぶことが大切だと思います。
そこでおすすめなのが次の1冊です。
世の中には様々な体系がありますが、テスト技術者の認定資格を運営しているISTQBが発行しているシラバスがとても参考になります。シラバスは、ISTQBの日本国内委員会であるJSTQBが翻訳して公開していますが、その解説や例題をもりこんだ書籍を発行しています。まずはこの本でひとつの体系を理解すると、以降の読書や勉強がぐっと楽になります。
※体系というものは世の中にたくさんあります。ISTQBは数ある体系のなかのひとつと理解しておきましょう。
■テスト技法を身につけよう
テストを学びたいという欲求は多くの場合「テストの実行や実行期間を短くしたい」というものですが、何も考えないままだと「ツール導入すればいいじゃん」ということになりがちです。ですが、テストの実行を非効率にしているのは、テストの実行の前にあるテストの設計がいまひとつだからであることがほとんどです。”とりあえずテストツールを入れる”というアプローチはやめたほうが良いです。
さて、実行するテストケースはテスト技法と呼ばれるものを活用して作る必要があります。そこで、次の3冊をおすすめします。
「ソフトウェアテスト技法ドリル」は、テスト技法を学ぶ上での最初の一冊として強くおすすめします。理由として、多くの技法を紹介しているのもあるのですが、日本人による日本国内の状況を踏まえて解説する技法が選択されていることです。より実践的、ということですね。JSTQBに取り上げられている技法も多く掲載されています。
ドリルで技法を学んだあとは練習してみましょうということで、「ソフトウェアテスト技法練習帳」がおすすめです。この本はドリルの著者が監修していることもあり、副読本としてとても相性がよいです。問題数も40問と豊富ですし、バラエティ豊かです。
そして最後に強く押したい本として「ソフトウェア技術者のためのバグ検出ドリル」です。練習帳にはないコンポーネントテストや統合テストを強く意識した問題が豊富です。この本は直接的にテスト技法を学ぶためのものではありませんが、仕様とプログラムコードが揃った例題にて、これまでに学んだテスト技法を駆使しながらバグを探すという練習が可能です。仕様とコードが示された状態で、テストの立場からバグを発見するというのは、実際の開発を考えたときに、とても実践的な練習になると思います。テストを学ぶ上で必読書と思います。
※テスト技法をうまく使うためにはテスト分析やテスト設計も大切です。興味ある方はこれらのキーワードも調べてみましょう
■テストツールの基本的な考え方を抑えておこう
テスト技法を学び、まともなテストケースを作れるようになってくると、それだけでもテストは効率化されていきますが、さらなる効率化を考えたときに、テストの自動化は必須の世の中です。ですから、先程「とりあえずテストツールを入れるということはおすすめしない」と述べましたが、きちんとしたテストケースが揃えられる・作り出せる状況になった場合は、それをツールを使ってどんどん自動化していきましょうということになります。ただし、ツールを導入するのはとても大変で、効果を得るためには、テストツール・自動化についての体系的な知識が必要となります。そこで、ツールの導入を考えている人は次の1冊は必読ということになるかと思います。
「システムテスト自動化ガイド」は”システムテスト”とついていますが、基本的な考え方はコンポーネントテストであっても統合テストであっても使えます。テストも体系的な知識が必要ですが、ツールも例外ではありません。大きなプロジェクトだと大規模にツールを導入することになりますが、そのコストなりなんなりもとても大きなものとなります。何も考えないと投資が回収できないということになります。また、OSSだとコストがかからないと主張する人もいますが、イニシャルはなくとも導入するためのコスト(工数面)はかかります。何も考えないまま思いつきで導入した結果、様々なコストだけかかって、肝心のテストに貢献しないということになると不幸しかありませんので、まずは基本的な考え方を学んでおくのは悪くないと思います。
■ソフトウェア品質保証についての知識
ソフトウエアテストのその先には品質保証の世界が広がっています。テスト技術は品質を確保・確認するための直接的かつ有力な技術と位置づけることができますが、品質保証の観点からはテスト技術だけでは足りず、他の技術(や活動)も必要となります。テストケースを作ってそれを実行してデバッグするだけでは品質保証とならないということです。では品質保証はどのような技術や活動が必要なのでしょうか。その疑問には次の2冊をおすすめします。
「ソフトウェア品質知識体系ガイド」はいわゆるBOKというもので、ソフトウェア品質を確保するための知識が体系的に紹介されています。読み物ではなく、技術カタログ・辞書として利用するため、全部を読もうとするとけっこう大変です。品質保証を行う上で知らない技術が出てきたときに都度参照すると良いでしょう。ただ、全体を斜め読みして、キーワードだけは頭に入れておくことをおすすめします。
「ソフトウェア品質保証の考え方と実際」は少々古い本ではあるのですが、これまで日本がどのようにソフトの品質保証に取り組んできたか、各社の取り組みが紹介されています。有益な知見・ノウハウなどが整理されていますし、歴史書としても有益です。特に初級者の方が、テストを学び品質保証に取り組んでいくにあたっての基礎知識として持っておくと良いでしょう。
以上、まずはこれを読破してほしいなと思っている10冊を挙げました。ただし、これはスタート地点で、これを経て、ソフトウェア工学やプログラミングなど様々な本を読む必要があります。スライド共有サービスなどには情報が充実している状況になってきていますが、それぞれは断片的であることが多く、また記述の出典などもあまり検証されていません。広く、体系的な、検証された知識を、短時間で得るためにはこういった書籍を読むことをおすすめします。また、IT業界では「この本読んでないのはモグリ」というようなものもあるので、そういったところは他のBlog記事なども参考に読むと良いでしょう。
※ちなみに、これを踏まえてもう少しおすすめ書籍の情報が欲しい!という方には「[改定新版]マインドマップから始めるソフトウェアテスト」の巻末にある書籍リストが参考になるかもしれません。