msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「はじめて学ぶソフトウェアのテスト技法」感想

概要

「はじめて学ぶソフトウェアのテスト技法」を読みました。 感想を書きます。

前提

目的

事前知識

JSTQB Foundation Level を 2023 年 4 月に取得しました。そのため、ソフトウェアテストの基本的な知識について一通り学んだ状態です。

ソフトウェアテスト関連では、以下の書籍を呼んでいました。

ユニットテスト関連の本は以下の本を読んでいました。

読了時間

1 時間~2 時間程度時間をとって 10 日間ほどで読んだので、15 時間もかからないぐらいだと考えています。 ただし、JSTQB やほかの書籍と似た分野が多かったのである程度理解している部分は読み飛ばして、未知の分野に時間をかけるように読み進めました。

感想

それぞれの技法に対して的確な表現で言い表した、まさにソフトウェアのテスト技法の入門書でした。テスト技法について、ある程度知見があっても、新しい発見がありました。 紹介しているテストは、応用的なものは少なく、ブラックボックステスト技法は同値クラステスト、境界値テスト、状態遷移テストから、ホワイトボックステスト技法は制御フローといった基本的なものばかりです。 それでもあらためて読んでみてよかったと思えたのは、以下の理由です。

  • それぞれのテスト技法について端的かつ的確な表現をする
  • 他の入門書ではあまり触れられない技法も紹介する
  • 開発者の設計観点からのテストの考え方

1 つめの「それぞれのテスト技法について端的かつ的確な表現をする」について、たとえば、デシジョンテーブルについて下記の書き出しから始まります。個人的には、開発者が持つべきデシジョンテーブルについての考え方を的確に表していると思いました。

デシジョンテーブルは、システムが実装しなければならない複雑なビジネスルールを記録するために用いられます。それに加えて、テストケースを作成する際の指針としても役立ちます。 デシジョンテーブルは、テスト担当者の個人的な道具箱には欠かせない、重要なツールです。残念なことですが、アナリスト、設計者、プログラマ、そしてテスト担当者の多くは、この技法にあまり詳しくありません。

他には状態遷移テストの説明で下記があります。これもまた的確に言い表していると思いました。このような文章がそれぞれのテスト技法で登場します、少し古めかしい言い回しでもありますが、個人的には気に入っています。

デシジョンテーブルとの違いは、処理のルールに関してはほとんど記述しないことです。以前に何が起きたのかとか、処理の有効・無効な順番がいつどこで存在したかなどを、システムがお記憶しておかなければならない場合、状態遷移図はそうした情報を記録する優れたツールになります。

2 つめの「ほかの入門書ではあまり触れられない技法も紹介する」は、以下が挙げられます。 ある程度、テスト技法については知っているつもりでしたが、ほかの考え方も得られて知識の幅を広げられました。

3 つめの「開発者の設計観点からのテストの考え方」については、契約による設計と防御的設計の 2 つからテストについて考えることから来ています。 契約による設計から作られるテストが契約によるテストで、防御的設計から作られるテストが防御的テストです。前者は「事前条件が満足された状況でのテストケースしか作成しない」で後者が「正常な事前条件と異常な事前条件の両方の場合についてテストする」です。 これらの 2 つの設計の考え方から、テスト設計について考えられることは目から鱗でした。特に下記の文章は胆に命じておきます。

(「契約による設計」と「防御的設計」の 2 つについて)設計者についてどちらのアプローチを使っているか尋ねてみてください。帰ってくる答えが「契約」または「防御的」のどちらかなら、それでテストに使うアプローチがわかります。もし答えが「何それ?」なら、設計者はモジュールインタフェースについて何も考えていないことを意味します。事前条件と事後条件の契約についても何も考えていません。統合テストで非常にたくさんの欠陥が湧いて出てきて、テストは複雑になり、予想より時間を食うと覚悟しておいたほうがよいでしょう。

以上の点から、入門的な本でありつつ、新しく学べることがありました。

注意点を挙げるとしたら、出版されたのが 2005 年ということもあり、文章を古く感じてしまうことがあります。 そのため、本当の初心者からすると「【この 1 冊でよくわかる】 ソフトウェアテストの教科書[増補改訂第2版]」を読んでから本書を読むことをお勧めします。

次に関連で勉強すること

テスト関連では下記の書籍を読みます。また、実務でもテストドキュメントの改善や自動化を行っていきます。

まとめ

テスト技法の基本知識を持っていても、新たな知見が得られる入門書でした。 特に以下の観点で得られる部分が多かったです。

  • それぞれのテスト技法について端的かつ的確な表現をする
  • 他の入門書ではあまり触れられない技法も紹介する
  • 開発者の設計観点からのテストの考え方