ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

『#テスト自動化実践ガイド』をとっても粗く一読したので感想メモを書いた

2024年8月の『テスト自動化実践ガイド』を、著者の末村拓也さんからご恵投いただきました。ありがとうございます!

隙あれば自分語りおじさんとなり恐縮なのですが、「テスト自動化研究会」のゆかいな仲間たちと、同じ翔泳社さんから『システムテスト自動化 標準ガイド』(通称『ギア本』)と出したのが2014年。
10年経って、同じ翔泳社さんから、E2Eテスト(あるいはシステムテスト)レベルの自動化をスコープにした新しい書籍が出版されたことに、喜びを感じています。

ものすごく雑な粗読みですが、本全体をがーっと読んでみたので、感想を書いてみます。

対象読者とわたしのレベル

テスト自動化についてのわたしの知識・スキルレベルは、(恥ずかしながら)こんな感じです。

  • いわゆる開発者テストについては、書籍やネット記事の知識のみ。
  • いわゆるQAテストについては、キーワード駆動テストのフレームワークをベースにした自動テストの計画・実装・実行を、かなり昔やっていた。
  • その頃に『ギア本』の翻訳をやっていたので、その頃の一般的な知識はあった。
  • 最近の趨勢やツールは全然わからん。

本書の対象読者として、以下のように書かれています。

QAエンジニアやテスターなどのポジションで、主に手動テストの設計や実行に携わっており、これらの業務を自動化して効果的なテストを実現したい方

知識も経験も古すぎてレベルゼロなので、この対象読者にわたしは入っていると言っていいでしょう。

Twitterにいると「アジャイルなんだから自動テスト完備は当たり前でしょ」という強い光に当てられ、「うちは手動がメイン‥」という人もそれを言い出せない雰囲気がありますが、本書はそういう読者が読むのに最適だと思います。

本書のざっくり紹介

本書は3つの部からなっています。

第1部 自動テストに取り組む前に

第1部は、テストと自動テストについての一般論です。
一般論というと退屈な話になりそうなのですが、以下の点が気にいっています。

  1. テストの目的について語ったうえで、自動テストの欠点をしっかり書いている。
    特に、「手動テストをそのまま自動化しただけの自動テスト」が、手動テストと自動テストの悪いところのハイブリッドになってしまう理由がわかりやすかったです。

  2. 自動化以前に、テスト分析やテスト設計というプロセスを通して、適切なテストケースを導く必要があることを書いている。
    テスト自動化についてのネット記事を読むと、「自動化すべき理想的なテストセットは、目の前にそろっている」という暗黙の前提があるように感じることがあります。実際にはそうじゃないはずなので、「まず良いテストをそろえなきゃ」を明示してくれているのがよいです。

  3. 通説から一歩引いて、自身の考えを提示している。
    たとえば第4章のコラムでは、理想に近いとされるテストピラミッド・テストトロフィーに対してアンチパターンとされるアイスクリームコーン型のテストのバランスが、技術の発展によってはむしろグッドプラクティスになるかも、と述べられています。 通説を並べただけの本はつまらないので、著者の思想がしっかり出ている本が好物です。

第2部 アプリケーションにE2Eテストを導入する

第2部は、サンプルアプリを使ったハンズオンです。

ハンズオンは(わたしのような)初学者向けにかなり丁寧に書かれているのですが、単なる手順の羅列に留まらず、「なぜこれが必要なのか」「なぜこの順番なのか」を理解してもらうことを意識していることが伝わってきます。技術的な理由だけでなく、思想的な理由も含めて。これがいいんですよね。

また、「とりあえず最低限動かす」→「ユーザーストーリーのテストを少しずつ追加する」→「可読性を下げる要因に対処して保守性を上げる」と進んでいくのが良いです。
本書に一貫した思想として、「小さくても汚くても、まず動くものを作って、少しずつ改善しよう」というのがあって、とても好きです。

第3部 自動テストを改善するテクニック

第3部は、自動テストの改善です。

第10章・第11章は文字通り技術的なトピックで、発展的な内容を扱っています。
一方、第12章ではふりかえりを扱っています。プロダクトと同様、自動テストも、品質をモニターしながら継続的に改善していく。そのための方法です。具体的なメトリクスなどについても言及があります。

おわりに

こうして本も終わりに近づいていくのですが、「おわりに」にとても大事なことが書かれています。

それは、テスト自動化にはみんなを巻き込もうというお話です。

これは末村さん自身が、自分の使ったテストが退職後にメンテされなくなり、おそらくは捨てられていったことへの反省から来ている教訓なんですね。

今はどうかわかりませんが『ギア本』の頃は、「テスト自動化は開発業務の片手間にはできず、専任のエンジニアが必要」と言われていました。
専任チームはテスト自動化を強力に進めてくれるかもしれませんが、一歩間違えるとサイロ化の要因となり、「あいつらがやってる自動テストの意義がよくわかん‥他の人誰もメンテできんし‥」となりかねません。それを避けるために周りを巻き込み、ご利益を享受してもらい、フィードバックを受け取り、より良いものにしていかないと、単なる独りよがりになってしまうんですよね。

技術書の最後にこの話が来て、何だかグッときてしまいました。
いや、やっぱりモノ作りって「人」なのよね、と・・・。

この本に書かれていたら嬉しかったなと思ったもの

2つあります。

1点目は、作られた自動テスト群をうまく管理するプラクティスです。
プロダクトが成長し、機能が増えていくと、E2Eテストも増えていくため、「何が自動化されて、何がされていないのか」「テスト同士にどういう関係があるのか」がカオスになりそうです。
ただ、本書は「テストの責務を明確にし、E2Eテストをむやみに増やさない」ことを説いているのと、第12章ではユーザーストーリーと自動テストの関連付けなどについても言及しており、そもそも大げさな管理が必要となることを避けようとしていると言えるかもしれません。

2点目は、目の前にある手動テストのうち、どこから自動化していくかの考え方です。
大きな方針として、最低限の動作確認であるスモークテストから始めることにはなるのですが、その後に控えるたくさんのテストたちにどう自動化の優先度をつけるかの手引きがあると嬉しいなーと思いました。
実行頻度、手動での実行時間・手間、テストとしての重要度、技術的難易度、みたいないくつかのパラメータがあるんじゃないかと勝手に考えています。

感想

『ギア本』は2014年出版なので「10年」と書きましたが、実は原著の『Software Test Automation』は1999年出版。つまり25年前の本なんですよね。翻訳の際に、「内容が古すぎる」という理由で、実例の章は大きく割愛しています。

ということもあって、テスト自動化について知っておくべきことが、本当にガラッと変わっているんだなと痛感させられました。
たとえば『ギア本』では、テスト自動化のレベルとして、

  • キャプチャ&リプレイ
  • データ駆動
  • キーワード駆動

が説明されています。この考え方が今無意味になっているということはないと思いますが、キャプチャ&リプレイなんてもう説明する必要もないのだろうし、データ駆動はフレームワークが当たり前に備えているからこれまた取り立てて強調することでもないのか?と思ったりしました。
一方で、アジャイル開発のスタイルにどうアラインしていくかという戦略がより重要になり、意識されている点が興味深いです。

まだ雑にしか読めておらず、ましてやハンズオンは手付かずなので、ゆっくり2周目を読んでいこうと思います。また今回ご恵投いただきましたが、Amazonで事前発注もしており2冊になるので、職場にもっていってみなさんにも紹介したいなと思います。自動化を進めていきたいみなさんにもおすすめしたい一冊です。

というか、え?
「筆者がテスト自動化に始めた取り組んだ2018年頃の段階では」って、テスト自動化に取り組んで6年で、1冊の本を書けてしまうの?
恐ろしい才能‥! おそらくあたしがあの域に到達したのは(ビスケの画像省略)

末村さん本とギア本、嬉しい。