
オライリーの高さんから頂いた『初めての自動テスト』が、なんだか今の仕事ですっごく役に立つ内容でした。バリバリ自動テストを書くための本というより、本質でもある「テストとは何か?」をゆっくり学べる本です。手法やテクニックがたくさん見つかる今時だと物足りないかもしれません。でも、僕にはちょうどよかった。
初めての自動テスト
本書は『The Way of the Web Tester – A Beginner’s Guide to Automating Tests』の日本語訳です。どちらかというと「テスター」という言葉のない日本語訳のタイトルより、英語のタイトルのほうが本書の内容がよくわかります。
”The Way of the Web Tester” は、名著『アジャイルサムライ』を彷彿させる「Webテスターの道」という、なんだか哲学的な言葉が使われています。そして、副題を見ると ”A Beginner’s Guide to Automating Tests” とあり、つまり、本書は、「Webシステムを担当するテスターのための自動テスト初心者ガイド」というわけです。
よって、読者として想定しているのは「自動テストに興味を持っているテスター」です。そのため、ジョナサンらしく、とてもわかり易い言葉で書かれています。
1章では「誰が自動テストを書くのか」という本質に迫ります。しかしながら、「テストを書けない(書いていない)誰か」を責めるような内容ではなく、あくまでロジカルに。読み終わると、テスト自動化の核心に触れられるはずです。
2章からは、テスト自動化ではなく、自動テストの話です。実際に「どのように」「どのような」自動テストを書くべきなのかの説明です。ユニット < 結合 < UI というテストのピラミッドを元に、それぞれに必要なテストコードのプログラミングを交えながら学べます。7章までたどれば、ある程度の基礎力がついているはずです。
8章はあらためて、テスト自動化の話です。これまでに学んだ自動テストの知識や技術が、何度も登場するテストのピラミッドによって、その関連性が明確に見えてくるはずです。はじめにジョナサンが「チームメンバー全員が読むべき章は1章と8章」という意味がよくわかります。とても書き方が上手い!
2部からはプログラミングの基礎からモックの使い方、テストファーストのテクニックを学びます。Webテスターには少し難しい内容かもしれませんが、ここを乗り切れば自動テストプログラマとしてのスキルがより深まるはずです。
一方で、自動テストのテクニカルな内容を求めたい読者にとって、本書は物足りないかもしれません。なぜならビギナーズガイドだから。
本書には美しいコードの書き方にもふれられていますが、それを学ぶなら『リーダブルコード』や『CODE COMPLETE』のほうが適切です。TDDを知りたいなら『実践テスト駆動開発』を選ぶべきでしょう。自動テストの書き方をもっと知りたいなら『実践 Selenium WebDriver』『Selenium実践入門』があります。モバイルアプリのテストはまだ情報が少ないですが『実践 Appium』が出ています。
でも、アジャイル開発をはじめるたい人におすすめする最初の本が『アジャイルサムライ』であるように、「自動テストをはじめたい人におすすめする本は?」と聞かれたら、きっとこの『初めての自動テスト』がぴったりです。
テスターにとってはバイブルになるかもしれない本書ですが、新米プログラマの教科書としても良いだろうし、中堅プログラマにも学びが見つかるでしょう。テストをするのはテスターだけの仕事ではないからです。開発に関わるプロデューサやマネージャに渡してもいいと思う。
『初めての自動テストは』そういう本だと思います。
おわりに
著者は『アジャイルサムライ』。ジョナサンとは昔にちょっとだけ一緒にいろいろやったり、海外のイベントでちょくちょくあったりしましたが、最近はご無沙汰だったので、久しぶりにメールで本書について質問してみました(回答は意訳)。
Q. なんでWebテスターの本を書いたの?
A. テストの自動化で直面することについて、ベストプラクティスやトレードオフをまとめてみたかったのだそう。そしてなによりもわかりやすくするために、WebやRails、JSを選んだんですって。
Q. USやカナダのQAエンジニアの役割ってどんな感じ? 自動化なんて当たり前なのかな?
A. QAエンジニアの役割は時代とともに変わってきて、以前はマニュアルテストだけでよかったかもしれない。でも今は、たくさんの企業がテスト自動化やそれ以外の価値をQAエンジニアにもとめているのだと思う。マニュアルテストだけにQAエンジニアをアサインするのは、お金のある企業とかになってしまっているのかも。だから、将来的な価値を模索する必要性がでてきているのではないか?
どんどん違う価値が求められるのは、QAエンジニアに限った話ではないのだろうけど、どこも似たようなものなのかもしれないですね。
そんな彼が書いた『初めての自動テスト』は、Software Engineer in Test(SET)とQAエンジニアで構成されるチームのマネージャを生業としている僕には「まさに今!」な本でした。
おそらく、前もブログに書いたのですが、将来的にQAエンジニアにもプログラミングスキルが求められます。
https://daipresents.wordpress.com/2016/qa-testing/
でもそれは、プログラマもプログラミングスキルではなく、自分たちの生産性を高めるためのスキルです。逆にいうとこれはチャンスでもあります。これまで年収的にもプログラマより低かったテスターが、キャリアを築ける時代になったわけです。
僕はプログラミングできるQAエンジニアをたくさん増やして、どうしても最終工程でボトルネックになりがちな「テスト」をもっとアジャイルにしたいと考えています。それができないと、きっと「真のアジャイル」にならない気がしたからです。
そして、メルカリQA-SETチームが考えているQAやテストの未来のはなしにも書いたように、SETをバックアップにスピードも品質も両方を実現する、決して妥協しなくていい開発組織を作りたい。
そのために、この『初めての自動テスト』は、とても役に立つ気がしています。