システムテスト自動化関連でよく参考にしている資料や書籍一覧

去年の7月頃からシステムテスト自動化の業務（ツール選定、自動テストスクリプト実装やコードレビュー周り）に携わっています。
そんな私がよく参考にしている資料や書籍を共有したいと思います。

:::note warn
【注意事項】
この記事は個人の所感であり、所属企業・部門見解を代表するものではありません。
:::

## 参考にしている資料/書籍一覧

### 資料

- [JSTQB Advanced Level シラバス テスト自動化エンジニア](#jstqb-advanced-level-シラバス-テスト自動化エンジニア)
- [テスト自動化研究会 - テスト自動化の8原則](#テスト自動化研究会---テスト自動化の8原則)

### 書籍

- [システムテスト自動化標準ガイド CodeZine BOOKS](#システムテスト自動化標準ガイド-codezine-books)
- [初めての自動テスト-Webシステムのための自動テスト基礎](#初めての自動テスト---webシステムのための自動テスト基礎)
- [リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](#リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック)
- [Seleniumデザインパターン & ベストプラクティス](#seleniumデザインパターン--ベストプラクティス)

## 参照している資料/書籍詳細

### JSTQB Advanced Level シラバス テスト自動化エンジニア

https://www.jstqb.jp/dl/JSTQB-Syllabus.Advanced_TAE_Version2016.J01.pdf

こちらはJSTQBという日本ソフトウェア技術者資格認定の組織[^1]がリリースしている認定試験のシラバスです。
内容としては、JSTQB Advanced Level シラバス テスト自動化エンジニア（以下、TAEシラバス）の0.2 本書の範囲 - 0.2.1 範囲内に以下の記載があります。

>本書は、テスト自動化ソリューションの設計、開発、保守におけるテスト自動化エンジニア（TAE）のタスクについて説明する。動的な機能テストにおける自動化の概念、手法、ツール、プロセスと、それらのテストとテストマネジメント、構成管理、欠陥マネジメント、ソフトウェア開発プロセス、品質保証の関係に重点を置く。

参照している個人的な理由としては以下の3点です。

1. **テスト自動化全般**の内容が記載されている
1. JSTQBは各国のテスト技術者認定組織が参加しているISTQB（International Software Testing Qualifications Board）の加盟組織でもあるため、**信憑性が高い**
1. **無料で閲覧可能**なため、参考資料として活用しやすい
::: note  warn
【補足/留意事項】

■ TAEシラバスは動的の機能テストの自動化を対象としています。そのため、非機能テストの自動化やテスト全体のマネジメントについては別シラバスの方が詳細に記載されています。（[こちらのページ](https://www.jstqb.jp/syllabus.html)を参照のこと）

■ 抽象的に書かれている部分もあるため、これだけでは理解しずらい部分があります。（私は後述する書籍で補っています。）

:::

[^1]: https://jstqb.jp/

### テスト自動化研究会 - テスト自動化の8原則

https://sites.google.com/site/testautomationresearch/test_automation_principle

こちらはテスト自動化研究会[^2]というコミュニティが出しているものになります。
こちらにはドメイン、プロセス、ツール関係なく言える、テスト自動化に取り組む前に確認しておきたい事柄が8つ記載しています。

参照している個人的な理由は、**ドメイン関係なく共通する事柄**が記載されているため、どのプロジェクトでも参考になるというところです。
とりあえず自動化するとなったら、一旦このページをみて復習しています。（それでも考慮できていない部分はありますが。。）
また、こちらも**無料で閲覧可能**です。

[^2]:https://sites.google.com/site/testautomationresearch/

### システムテスト自動化標準ガイド CodeZine BOOKS

https://www.amazon.co.jp/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%86%E3%82%B9%E3%83%88%E8%87%AA%E5%8B%95%E5%8C%96-%E6%A8%99%E6%BA%96%E3%82%AC%E3%82%A4%E3%83%89-CodeZine-BOOKS-Fewster/dp/4798139211

こちらの本は2014年出版で、システムテストの自動化を範囲とした内容になっております。

>本書は、この「システムテストの自動化」の課題に取り組むための解説書です。この分野の権威である著者が、システムテストの自動化を実現するために考慮すべきこと、発生しうる問題、解決策や方針などを示します。その中には、ツールの選択方法や、開発チームへの普及手段なども含まれます。（Amazonの概要から一部抜粋）

出版年自体は古いものの、システムテスト自動化全般の内容が記載されているため、今でも現場に活かせるところが多いです。
個人的には以下のトピックは参考になりました。

- テスト自動化のコンテキスト
- テストウェアアーキテクチャ
- 保守性の高いテストを構築する
- テスト自動化ツールの選択

::: note  warn
【補足/留意事項】

■ 若干古めなため、すべてを鵜呑みしすぎない方が良いかなと思います。

■ テストツール選定などはある程度規模が大きい企業のプロセスを想定して、記載されているので各現場に合わせてテラーリングする必要があります。

:::

### 初めての自動テスト - Webシステムのための自動テスト基礎

https://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88-%E2%80%95Web%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88%E5%9F%BA%E7%A4%8E-Jonathan-Rasmusson/dp/4873118166

こちらはWebシステムのテスト自動化に関する内容です。

>Webシステムの自動テストを始めたい方を対象に、自動テストの考え方やフレームワークを解説する書籍です。
テストのピラミッドやユーザーインターフェイステストの概念など、基礎的な事柄から、レガシーシステムへのUIテストの追加、RESTfulなWebサービスのテスト、ブラウザ上のJavaScriptの挙動をユニットテストでテストする方法など、実践的な事柄までを豊富なイラストとサンプルを使って分かりやすく解説します。
さらにテストファーストやモックの活用法、テスターに向けた自動テストのためのプログラミング基礎知識なども詳述。
自動テストを書くためのノウハウを網羅した本書は、自動テストをマスターしたいエンジニア必携の一冊です。（Amazonの概要を引用）

こちらは各テストレベルにおけるテスト自動化の特徴が記載されているので、Webのテスト自動化全般をざっくり理解できます。
資料作成や他人に説明する際に確認することが多いです。

### リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

https://www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88-%E2%80%95Web%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88%E5%9F%BA%E7%A4%8E-Jonathan-Rasmusson/dp/4873118166

とくにこの書籍に関しては説明不要かもしれませんが、きれいなコードを書くために何を考えるべきかが記載されています。

>「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」(本書「はじめに」より)。
>
>コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。
名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。
またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。
>
>日本語版ではRubyやgroongaのコミッタとしても著名な須藤功平氏による解説を収録。（Amazonの概要から引用）


自動テストスクリプトの実装やコードレビューの際に確認することが多いです。

::: note info
【補足情報】

上記の書籍に加えて、以下のようなきれいなテストコードについて記載されている資料も見ています。

- [リーダブルテストコード](https://speakerdeck.com/jnchito/number-vstat)
- [コンテキストとセマンティクスを意識してリーダブルなE2Eテストコードを書こう](https://speakerdeck.com/tsuemura/kontekisutotosemanteikusuwoyi-shi-siteridaburunae2etesutokodowoshu-kou)
- [テストコードにはテストの意図を込めよう](https://speakerdeck.com/nihonbuson/tesutokodonihatesutofalseyi-tu-woip-meyou)

:::

### Seleniumデザインパターン & ベストプラクティス

https://www.amazon.co.jp/Selenium%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9-Dima-Kovalenko/dp/4873117429/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=10O68VTXP9KMH&keywords=selenium+%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9&qid=1662104148&s=books&sprefix=selenium+%E3%83%99%E3%82%B9%E3%83%88%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B9%2Cstripbooks%2C205&sr=1-1

この書籍はテスト自動化ツールの1つであるSeleniumb WebDriverを用いてテスト自動化を行うときのデザインパターンやベストプラクティスが記載されています。

>本書はSelenium WebDriverを使ったテストの構築方法やデザインパターン、メンテナンス性に焦点を当てた書籍です。
Seleniumを使った人ならわかるテスト時の取り入れるべき事柄や避けるべき事柄をパターン化してわかりやすく解説しています。
テストをリファクタリングする方法、自動テストプロジェクトにおけるSpaghettiパターン、テストデータについて、テストを安定させるコツ、さらにテストスイートを成長させるヒントなど、テスト自動化設計におけるポイントを幅広く紹介します。
ベストプラクティスだけでなく、アンチパターンも紹介しているため、失敗の原因を知り、適切な設計パターンを適用することができるようになります。

私はコードベースのツールを使用する時には参照するようにしています。
書籍自体はSeleniumに焦点を当てていますが、内容としては**他のツールでも共通**して言えることが多いと感じています。
アンチパターンも書かれているため、確認がてら参照することが多いです。

## （おまけ）積読&気になっている本

上記の本以外に読んでみたい書籍も共有します。

### The BDD Books - Discovery (Japanese Edition)

https://leanpub.com/bddbooks-discovery-jp

BDDツールの使い方というよりかは、どんなテストを作るべきかが記載されている書籍のため、読みたいと思っています。（積読中）

### 実践ソフトウェアエンジニアリング（第9版）

https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0-%E7%AC%AC9%E7%89%88-Roger-S-Pressman/dp/4274227944/ref=sr_1_1?adgrpid=123005535821&hvadid=540350192547&hvdev=c&hvqmt=b&hvtargid=kwd-323229644322&hydadcr=27267_11596244&jp-ad-ap=0&keywords=%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0&qid=1662104640&s=books&sr=1-1

個人的には自動テストシステムも1つのソフトウェアを開発する感覚のため、実際作る際にどんなことを考慮するのかという点では非常に参考になると思います。（読んでいる途中です。）

### 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89-%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80-%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2/dp/4297127830/ref=sr_1_1?adgrpid=135618214539&hvadid=592195189671&hvdev=c&hvqmt=e&hvtargid=kwd-1657035072382&hydadcr=27493_14464601&jp-ad-ap=0&keywords=%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80&qid=1662104758&sr=8-1

まだ、買ってもないですが読んでみたい本です。
自動テストシステムもソフトウェアと同じく成長し続けるモノだと思っているため、参考になるのではないかと思っています。

## 最後に

本記事は自動化業務をしながら参考にしている書籍/資料を共有しました。
何か気になるものがあれば、是非読んでみてください。