改めて読んだ「はじめて学ぶ ソフトウェアのテスト技法」

今回読んだ本

ソフトウェアテストを主とした業務を置いている身としても「テスト」に関する技術について知っておく必要があります。

ソフトウェア開発の1プロセスの中である「テスト」に関しては、誰でもできる作業であったり、あまりやりたくない仕事なんて ややネガティブな印象を持っている人も中にはいるかと思いますが、こちらの調査によると5.5兆円規模もあるといわれています。

www.valtes.co.jp

そして体感値的にもソフトウェア業界もどんどん右肩上がりなのかなと思います。

あらゆる業界でWEBサービスだったり、ネイティブアプリが生まれてきたり、昨今のバズワードである「DX」という点でも BtoB、BtoCなどどのようなタイプであろうとソフトウェアの領域は広がっていきます。

とすると、ソフトウェアを構築していくプロセスの1つである「テスト」の重要性も加速度的に伸びていくと感じています。

世間のニュースを見ていても、不正アクセスによる個人情報の流出というようなセキュリティ的側面からアプリの不具合でビジネスチャンスを 失うなんていうのはよくあることです。

これらはソフトウェアの「品質」に関することだと思います。

大それたように感じるかもしれませんが、ソフトウェアの「品質」を上げるためにも「技術」としてテストの手法を学んで実践知として ソフトウェア開発チーム全体で「品質」を上げていく必要があると考えています。

今回の本について

長々と前書きを書いていきましたが、ソフトウェアテストの重要性について何となく理解できたのかなと思っています。

今回読んだ本は、数年前にも読みましたが、改めて読みなおしました。

技術本というのはある程度経験値が溜まってから再読すると 学びや気づきがあるので良いと思った本は再読するのが良いのでしょうね。

さて、今回の本ですが、2005年に初版が発売された本です。
ソフトウェアテストの概要について俯瞰的に知識を得られるものだと考えています。

推奨読者

  • エンジニア
  • ディレクターやプロダクトマネージャー
  • テストを生業にしている人

概要

この本では、主に以下が書かれています。

  1. テストのプロセス
  2. ブラックボックステスト技法(同値クラス、境界値、デシジョンテーブル、ペア構成テスト、状態遷移、ドメイン分析、ユースケース
  3. ホワイトボックステスト技法(制御フロー、データフロー)
  4. 探索的テスト
  5. テストの計画
  6. テストの終了判定

ソフトウェアテストでよく耳にする言葉に「ブラックボックス」「ホワイトボックス」というものがあるかと思います。 その定義については、JSTQBシラバスを参照してみましょう。*1

ブラックボックステスト技法(振る舞い技法または振る舞いベースの技法と呼ぶこともある)は、適切 なテストベース(例えば、形式に沿った要件ドキュメント、仕様書、ユースケース、ユーザーストーリ ー、ビジネスプロセス)の分析に基づく。これらの技法は、機能テストと非機能テストの両方に適用で きる。ブラックボックステスト技法は、テスト対象の入力と出力に着目し、その内部構造は参照しな い。

ホワイトボックステスト技法(構造技法または構造ベースの技法と呼ぶこともある)は、アーキテクチ ャー、詳細設計、内部構造、テスト対象のコードの分析に基づく。ホワイトボックステスト技法はブラ ックボックステスト技法と異なり、テスト対象内の構造と処理に重点を置く。

よくテストをする場面で多く目にするのが、ブラックボックステスト技法ではないでしょうか。 同値クラスや境界値はほとんどのエンジニアも知っているかと思います。

またデシジョンテーブルやペア構成テスト(直交表や全ペアアルゴリズム)などはテストを担当される方には 馴染みある概念かと思います。

複数の条件や制御に応じてテストする項目というのは爆発的な増え方をしていきます。 その中で様々な観点や優先度などある基準を用いて限られた時間の中でテストを行っていく必要があります。

その爆発的に増えるケースを如何に効率的にするかというのが、テスト技法だと考えています。

おすすめポイント

  • 入門書であること
  • さくっと読めること
  • 明日から使ってみるかと思えること

かなり平易に書かれています。
もちろん実際の経験がないとうーん。よくわからないなと感じる部分もあるかと思います。

とはいえ、実際の開発現場では、テストコードを書いていたり、手動でテストしているエンジニアも多くいるかと思います。 また、エンジニアやQAなど開発プロセスをマネジメントするプロデューサーやプロダクトマネージャーの方においても 読んでみることでこういうことをしているのだなという理解にもつながることがあるかと思います。

(※体感的にプログラミングを学ぶ非エンジニアはいてもテストについて学んだりする非エンジニア職は少ない)

初めてソフトウェアテストを行う方であったり、体系的な知識を持ったQAが社内にいないとなると場当たり的なテストを行い、 疲弊しながらリリースを迎え、バグでさらに疲弊なんてこともあるかもしれません。
逆に、そういった中でも上手くバグが少なくいっているケースもあるかもしれません。

そうだったとしても「技術」としてテストをよりよくしていくことは必要不可欠だと感じています。 そういった意味で入門書である本書を読んでおくことで初めの一歩を踏み出していけるのではないかと思っています。

最後に

この本を改めて読んで思うことは、体系化された知と実践の往復、すなわち具体と抽象の行き来を行うことが一番大切なのだなと いうことです。

もちろんこれだけでは足りず、JSTQBなどソフトウェアテスト技術資格の勉強であったり、ソフトウェア開発の勉強など ソフトウェア開発に関わるあらゆる知識を吸収していく必要があります。

そのテストの一歩目としてはやはり本書を読んでおくことは良いのではないかなと感じました。

参考・関連書籍

もう少しで著者の新作も出るということで楽しみですが、こちらも平易に書かれていてもしかするとこちらの方が 読みやすいかもしれないと記事を書きつつ思っています。

概要すら触れていませんが、同値クラスをはじめとしたブラックボックステスト技法を実践で使うための 問題集のような書籍です。技法自体の定義はJSTQBシラバスなど別の書籍などをあたる必要がありますが、 入門的な本を読んだ後に「手を動かしながら」理解するには有益だと思います。

こちらは経験値が溜まってきてこういう時どうすればいいのだろうと悩み始めたときに読むのがいいのではないでしょうか。 293の鉄則ということで多いです。初めから通読するというよりは、悩んでいるケースに近しいものや興味関心がある部分をつまみ読みしながら 参照していくスタイルが良いのではないでしょうか。