📝

業務で行っている自動テストの思想を確かめながら、ISTQB Test Automation Engineerを受験しました

に公開

ISTQB Test Automation Engineerとは

Certified Tester Advanced Level Test Automation Engineer(CTAL-TAE)は、テスト自動化エンジニアのための国際的な認定資格です。

詳しい内容はこちらのシラバスに記載されていますが、この資格ではテスト自動化に必要な知識や考え方を体系的に学ぶことができます。例えば以下のような内容が含まれています。

  • 自動化フレームワークの設計思想
    • 自分たちのプロジェクトに適した自動テストのフレームワークを作る時に、どのようなレイヤーにどのようなコードを配置するべきか
  • テストのレベルや、テストのタイプに応じた自動化のアプローチ
    • 本物の依存を含むような統合テストはどの環境で実行するべきか
  • コードをメンテナンス容易に保つために知っておくべき知識
    • 開発者のみなさんお馴染みのSOLID原則などの言葉がでてきます

今回、2025/7/19にこの試験を受験し合格することができました!英語で受験するなど、なかなか日本では受験される方が少ないと思いますので、私の学習方法や試験の感想を共有したいと思います。

なぜ受験したのか

私はSDET(Software Development Engineer in Test)というポジションで働いており、名前からもわかる通りテスト自動化に関わる仕事をしています。

しかし、ただ既存の開発スキルやAWSの知識を活用して自動化という範囲にだけフォーカスするのではなく、QAエンジニアとしての幅広なテストの知識を活用して効率的に自動化を推進できるようになりたいと考えています。

要するに自動化にしかタッチしないのではなく、「何をテストするべきか」考えて、「具体的にどうやってテストするか」を考えた上で、「じゃあどうやって自動化するか」を考えることができるようになりたいのです。

開発者であった時からそのように考えていたのですが、その際はテストの知見が全く足りていませんでした。そこで以下のISTQB/JSTQB試験を順次受験することで、体系的にテストの知識を学んできました:

これらの学習により、QAエンジニアの方と同じ言葉で話せるようになりました。今風に例えると、AIに「シングルトンパターンで実装して」という一言で背景やコンテキストを含めた設計パターンを共有できるような感覚です。

また、特定の資格試験に向けて学習・合格することで「私はこの道で頑張りたいです。そのために手間がかかる資格試験も受けます。本気です」という姿勢を示すことができ、チームや上司に対しての一つの意思表示をおこなうことができると考えています。

こういった理由から受験を決意しました。

試験を受ける前の注意点

ISTQBの日本における試験の実施団体として JSTQB がありますが、 Test Automation Engineer の試験に関しては通年で実施されていないようです。私が知る限り2024年には試験が実施されていたようです。

私の場合、個人的に英語を学習しているためASTQBと呼ばれるアメリカにおけるISTQB試験の実施団体が提供している英語の試験を受験しました。英語ネイティブではない人向けに試験時間の延長が認められており、一応申し込んでいたのですが結果としては時間がかなり余ったので不要でした。

その際、ASTQBのサイトから受験ページまで進む必要があり、AT*SQAというサービスからオンライン受験の申し込みが可能です。ただし、以下の点について注意が必要です。

  • System Rediness Check という試験を受験した後でないとオンライ試験を選択することができません。

System Rediness Check

  • 5月29日以降、セキュリティ強化のため従来のPCカメラに加えてスマートフォンのカメラを利用して試験中に自分の手元やPCが見えるようにカメラを起動しておく必要があります

こちらは System Rediness Check の時に確認できることではありますが、私はいい感じに後ろから机が見えるような角度でカメラを置く台を用意していなかったので、急遽近くにあった段ボールを重ねてことなきを得ました。以前ASTQBで受験をしたことがあるので油断しており、結構焦りました。

Instructions for Taking ISTQB Exams and AT*SQA Exams Online に注意点がちゃんと書いてありますので、事前に確認しておくことをおすすめします。

試験の勉強方法

以下の手順で試験学習を進めました。

シラバスの学習(全体の把握)

まず私はPDFをiPadのノートアプリに取り込んで、Apple Pencilで書き込みながらざっと読みました。この時のコツはあまり熱心に読んで時間をかけすぎないことです。シラバスは基本的に特定のフレームワークやツールによらない抽象化された内容が多いので、この時点で抽象から具体をイメージしにくい項目が私には結構ありました。抽象から具体へのイメージができなくても、後でサンプルの問題を解く中で「抽象→具体」の一例を示してくれることがあるので、まずは全体を把握することを優先しました。

後で思ったのですがNotebookLMに今回の試験のシラバスや前提となる試験のシラバスを読み込ませておいて、内容の要約やシラバスの内容について具体的に教えてもらい議論するようにしてもよかったかもしれません。試験終了後のこの記事執筆時点で思いつきました。

問題演習とAIとの議論(抽象と具体の往復)

次に以下のサイトにあるサンプル問題について、わからない問題には「意味がわからなかった。悲しい。」「抽象から具体がイメージできなくてワロタ。お散歩行きたい」などというメモを残しながら解いてきました。

余談ですが、私は会社の研修なども少しでも楽しみながら受けるためにその時の感情をメモして記憶に残りやすくすることが多いです。文字をみた時に「あぁぁ〜お腹空いてる時にみてたから全然覚えられなかった言葉だ!」などと感情とリンクさせるようにしています。(半分はシンプルにそういうのが好きだからです)

  • ISTQBのサイト
  • ASTQBのサイト
    • ASTQBとはアメリカにおけるISTQB試験の実施団体です。ISTQBのサンプル問題とは別にASTQB側でもサンプル問題を提供してくださっています

問題を解き終わった後は、完全に理解できた問題と、答えをみて完全に理解できた問題は分けておき、答えをみても完全に理解できなかった問題は、AIと議論することにしました。

例えばこのテストでは「(一般的な)特定のシステムに対するテスト自動化フレームワークを定義する時のレイヤーはどんなものか?」という知識を問う問題がありました。私は開発者の出身なので、抽象的なレイヤーの概念は理解できるものの、具体的な例を出しながら「じゃあ実際にどんなコードを書くの?AWSを利用している金融システムを例にしよう」といった議論をAIと行いました。

# 私の質問
例えばじゃあ3つのレイヤーにはこんな感じのものを置くのかな?
- Core libraries
  - 例えば S3とかAPI経由の操作を抽象化
- Business logic layer
  - SUTと接続するためのライブラリー?とか?もっと抽象化してる?
- Test Scripts
  - Business Logic layer を利用してテストのスクリプトを書くのよね?
  - 例えば、ボタンを押したらS3にファイルがアップされてそのあと、システムのサーバー側にAPI経由でファイルのアップロード完了を知らせるみたいな
  - それらの結果を expect(uploadStatus).toBe("success") みたいな感じで検証するとか

AIが解説していることが必ずしも正しいとは限りませんので、疑う視線でガンガンツッコミを入れながら再度問題やシラバスを見ることで具体化と抽象化を往復し、齟齬がないことを確認してきました。

そのように試験問題への自信を深めるとともに、普段業務で行っている自動化フレームワークの思想が誤っていないことを確認することができました。

まとめと感想

  • ISTQB Test Automation Engineerの試験に合格しました!テスト自動化に関する知識を体系的に学べました
  • 試験の学習には公式から提供されているシラバスとサンプル問題を利用しました
    • シラバスは最初からじっくり読み込むのはつらかったので、ざっと全体を把握することを優先しました
    • サンプル問題を解いた後にAIと議論することで、抽象的な内容を具体化しながら学習を進めました
    • また、具体化した内容をシラバスに照らし合わせて再度抽象化することで理解に齟齬がないかを確認しました
  • 個人的に英語の学習を頑張っているため、英語で試験を受けることができたのもよかったです。時間はかなりあまりました。

以上、ISTQB Test Automation Engineerの試験に合格したことと、学習方法についてのまとめでした。これからもテスト自動化の知識を深めていきたいと思います。

最後まで読んでいただき、ありがとうございました。

GitHubで編集を提案
Money Forward Developers

Discussion