JSTQB テスト自動化エンジニア試験を受けてみた

# はじめに
2024年8月から10月の期間限定で実施されていた **JSTQB Advanced Level Specialist テスト自動化エンジニア** 試験を受けてきたので、試験の概要や感想をまとめています。

シラバスの内容に興味がある人や、次回実施時に受験を検討している人の参考になれば嬉しいです。また、シラバスのポイントも紹介しているので、これからテスト自動化に取り組む人の助けにもなればと思います。

ちなみに、私は今回の試験に合格することができました。以前には、同じAdvanced Levelのテストマネージャとテストアナリスト試験にも合格しています。
普段はQAエンジニアとして業務でテスト自動化に取り組んでいます。そのため、テスト自動化アーキテクチャなどについては具体的にイメージしやすかったです。
具体的な取り組みについては[GREE Tech Conference 2024](https://techcon.gree.jp/2024/session/TrackB-5)で発表しているので、よければご覧ください。

# 試験情報
シラバスにも書いてありますがJSTQBの試験はISTQBに準拠しているので、ISTQBのサイトで公開されている情報が参考になります。

[Certified Tester Test Automation Engineer (CT-TAE) 2016 [Retiring]](https://www.istqb.org/certifications/certified-tester-test-automation-engineer-ct-tae-2016-retiring)
[ISTQB_Exam-Structures-and-Rules_v1.1](https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_Exam-Structures-and-Rules_v1.1_3J4sh33.pdf)
試験の配点などについて記載されています。

* 問題数
    * 40問
* 満点
    * 75点
* 合格点
    * 49点（65%以上）
* 問題の配点
    * Kレベルに応じて1〜3点

[Exam Structures Tables - CT-TAE - Certified Tester Test Automation Engineering v1.0](https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_Exam-Structure-Tables_v1.9.1b.pdf)
各章の出題数や配点について書かれている重要な情報です。
3章の配分が特に大きいです。

[ISTQB_CT-TAE_Sample-Exam-A-Questions_v1.3](https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_CT-TAE_Sample-Exam-A-Questions_v1.3.pdf)
TAやTMのようにシチュエーションの説明があり、そこでテスト自動化エンジニアとして選択すべきソリューションや自動化アーキテクチャを問われる問題が多い印象です。

現在、日本語で公開されているシラバスは Version 2016 ですが、英語版ではすでに v2.0 が公開されています。英語版以外のv1.0シラバスは2025年12月12日で使用されなくなるため、来年中に日本語版v2.0が公開される可能性もあります。



# 勉強法
### シラバスと例題
基本的にはシラバスを読んで例題を解くのが効果的です。まず全体をざっと読み、試験情報から重要な章を把握し、例題でわからなかった部分を重点的に読み込みました。

個人的には、シラバスを紙に印刷して色ペンで重要箇所をチェックしながら読む方法が頭に入りやすく、復習にも便利でした。

### 略語の置き換え
シラバス内には略語が多いため、頭の中で自分なりの言葉に置き換えると理解がスムーズでした。(黙読する時に頭の中で発音するタイプなんです)
例えば：

* SUT (System Under Test) → 「システム」
* TAS → 「ソリューション」
* gTAA → 「汎用アーキテクチャ」
### ChatGPTを活用
ChatGPTに四択問題を作成してもらい、スマホアプリ感覚で一問一答形式の勉強もしました。ただし、解答の正確性には疑問が残るため、解答後は必ずシラバスで確認しました。それでも、手軽に勉強できる上に、正解時に褒められることでモチベーションアップに役立ちました。

例
![会話](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541170/f7e52e81-112a-2428-79ef-418b3d9bdb1f.png)




## シラバスのポイント
特に重要な3章の理解しておくべきポイントを紹介します

■ gTAA（汎用テスト自動化アーキテクチャ）の概要
* レイヤー構造と各レイヤーのコンポーネント、提供する機能

| **レイヤー**              | **提供する主な機能**                                                                                                                                                                    |
|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **テスト生成レイヤー**     | - テストケースの手動または自動での設計をサポート。<br> - テストケースを設計する手段を提供。                                                                                             |
| **テスト定義レイヤー**     | - テストスイートおよびテストケースの定義と実装をサポート。<br> - SUTやテストシステムの技術やツールからテスト定義を分離。<br> - ハイレベルおよびローレベルのテスト定義手段を提供。             |
| **テスト実行レイヤー**     | - テストケースの実行とテスト結果の記録作業をサポート。<br> - 自動テスト実行ツールおよび結果記録・レポート用のコンポーネントを提供。                                                      |
| **テスト適合レイヤー**     | - SUTのコンポーネントやインターフェースを自動テストに適合させるコード。<br> - API、プロトコル、サービスなどを通じてSUTに接続するアダプターを提供。                |



■ TAAの設計
* テストケース自動化へのアプローチ
    * 状況に応じてどのアプローチを選択するべきか
        * 抽象度に比例して再利用性も高くなるが初期コストも上がる
    * 各アプローチの特徴、メリット、デメリット


| **アプローチ**              | **抽象度**          | **実装工数**            | **特徴**                                                                                                                                           |
|-----------------------------|---------------------|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| **キャプチャ/プレイバック** | 低い      | 低い | 簡単に記録可能だが、再利用性が低い。                                                                                                              |
| **線形スクリプティング**     | 低い      | 低い                     | 一連のステップを直列で記述。単純なシナリオ向けだが、変更に弱い。                                                                                  |
| **構造化スクリプティング**   | やや低い            | 中程度                  | モジュール化によって再利用性が向上。スクリプトが長大化すると維持が困難になる場合がある。                                                          |
| **データ駆動テスト**         | 中程度              | 中～高                   | 入力データとスクリプトを分離。異なるデータセットで同一のテストを実行可能だが、データの準備が手間。                                                |
| **キーワード駆動テスト**     | 高い      | 高い                     | テスト操作をキーワード化して汎用的に使用可能。初期の設定が難しいが、メンテナンス性と再利用性が高い。                                              |
| **プロセス駆動スクリプティング** | 高い                | 高い                     | 業務プロセス全体をスクリプト化。業務知識が必要だが、エンドツーエンドのシナリオに有効。                                                           |
| **モデルベースドテスト**     | 非常に高い| 非常に高い               | システムのモデルからテストケースを自動生成。設定やモデリングに高度な知識が必要だが、効率的かつ包括的。                                             |


■ TASの開発
* SUT、自動テスト、手動テストの各SDLCでの対応関係



# 感想
試験時間の半分ほどで解き終わり、9割は迷わずに解答できました。特に、TAとTMの内容を把握している場合や、テスト自動化に業務で関わっている場合、難易度はそれほど高くないと感じました。
全体的にシラバスを理解できていれば、あまり迷わずに解答できる素直な問題が多かった様に思います。

試験を通じて、業務でテスト自動化を進める際の判断基準や言語化のスキルを体系的に学べた点は大変有意義でした。
また、テスト自動化システムのメンテナンス性や引き継ぎドキュメントや、メトリクスの選択などの重要性も強調されていて、実務でテスト自動化に取り組む上でとても役立つと思います。


### 余談
この記事を書いてる中で知ったのですが
> Advanced Levelの3つの資格
> * テストマネージャ（Test Manager）
> * テストアナリスト（Test Analyst）
> * テクニカルテストアナリスト（Technical Test Analyst）
> これらをすべて取得すると
>「Full Advanced Level Professional：テスト技術者資格Advanced Level 完全上級テスト技術者」の認定が受けられます。

「完全上級テスト技術者」の響きがカッコよすぎるので、次はISTQB Technical Test Analystを受けようかと思ってます。