Test Automation Engineering Sample Exam v2.1 日本語ver [非公式]

# Background

2024年夏から、Advanced Level Specialist テスト自動化エンジニアのCBTによる資格認定試験が始まります。（期間限定ですが）


https://prtimes.jp/main/html/rd/p/000000035.000054604.html

自分は受ける予定なので、復習するにあたり、ISTQBの問題を使う。
英語を日本語しておいた方が楽だから翻訳を行った。
他の受講予定の人たちにもお役に立てればと思って、Qiitaに投稿しました。

Sample Exam – Questions Version 2.1

https://www.istqb.org/certifications/test-automation-engineer

尚、ISTQBではシラバスがversion 2.0になっており、問題もv 2.0に合わせたものになっていると思います。（新しいトピックや、構成が若干変わっています）
今回の日本での試験がどちらのバージョンのものになるかは記述がないので、その整合性がない可能性はあります。

あと、翻訳の誤植等はお許しください。
※最適な文言があれば、ご指摘ください！修正します

回答はこちら

https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB_CTAL-TAE_Sample_Exam_Answers_v2.1.pdf


# 1. Introduction and Objectives for Test Automation (K-2)

## Q1. テスト自動化の制限となるものは以下のうちどれか？

a) ユーザビリティテストを効果的に自動化できる
b) テスト自動化はテスト対象(SUT)が実装され、デプロイされた後のみ実施できる
c) テスト自動化は視覚的に確認できる結果のみ検証できる
d) テスト自動化は自動化のコードでチェックできるもののみ検証できる

## Q2. テスト自動化とSDLCに関して正しいのはどれか？

a) アジャイル開発では、テスト自動化はコンポーネントテストより受入テストに重点を置く
b) アジャイル開発では、テスト自動化は受入テストよりコンポーネントテストに重点を置く
c) V-modelでは、テスト自動化は手動テスト後に実行すべきである
d) V-modelでは、テスト自動化の実装はソフトウエア開発サイクル全体を通して行われる

## Q3. 適切なテストツールを選定するとき、考慮する必要のない要素はどれか？

a) テスト対象(SUT)のアーキテクチャ
b) チームの構成や経験
c) テストツールのライセンスやサポート
d) テスト対象の要求の品質

# 2. Preparing for Test Automation (K4)

## Q4. システムのテスタビリティを考えるとき、一つの特徴としてシステムの操作を実行しやすいインターフェースを持つことである。この特徴を何と呼ぶか？

a) 可観測（Observability）
b) 操作性 (Controllability) 
c) 保守性 (Maintainability)
d) 共同利用性 (Interoperability)

## Q5. ステージング環境でどのタイプのテスト自動化を主として実行するか？

a) コンポーネントテスト
b) 効率性テストと受入テスト
c) 静的解析
d) 結合テスト

## Q6. リリース候補のアプリケーションを最初にすべてのテスト自動化を実行する環境はどこか？

a) ステージング環境（Preproduction/Stating）
b) ビルド環境 (Build)
c) 本番環境 (Production)
d) テスト環境 (Integration/Test)

## Q7. Android baseの自動車の組み込みのソフトウェアはいくつかのコンポーネントを含んでいます。テストドリブン開発アプローチをとっています。開発後、他のIT会社に送られて、ハードに組み込み販売する。テスト自動化の要件を吸い上げるとき、どのような点を重視すべきか？２つ選べ

a) テスト自動化アプローチがコンポーネントテストをサポートすることが重要であるか？
b) テスト自動化アプローチがベータテストをサポートすべきか？
c) テスト自動化アプローチが可能な限りのいろんな車種のテストをサポートするのが重要か？
d) テスト自動化アプローチがどのテスターの役割をサポートするか？
e) テスト自動化アプローチがモバイルアプリケーションストア承認をサポートすべきか？

## Q8. テスト自動化を選定評価しています。ツールにはいろいろな機能があることが分かったが、テスト実行が非常に遅いことが分かった。ただし、テスト環境は、ハードウェアの要件を満たしています。次のアクションとして最適なものは？

a) ハードウェアリソースを増強する
b) テストツールが備えているテストロギング機能をオフにする
c) このツールを推奨しない
d) ほかのハードウェア環境にテスト対象を移行する

# 3. Test Automation Architecture (K3)

## Q9. テスト自動化の開発、発展、保守をサポートする原則に含まないものはどれか？

a) テスト自動化のコンポーネントは低レベルの詳細ではなく、抽象化に依存すべきである
b) すべてのテスト自動化コンポーネントは拡張にはオープンであり、改修にはクローズである
c) すべてのテスト自動化コンポーネントは抽象的で、ハイレベルな親コンポーネントを持つ
d) すべてのテスト自動化コンポーネントは単一の責任を持つ


## Q10. 全体的なテスト自動化ソリューションで、技術設計であつかわれていないものはどれか？

a) テスト自動化ツール選択
b) ユーザーストーリーの開発
c) インターフェース要件の特定
d) バージョン管理ツールの利用

## Q11. Android開発チームで、テスト自動化を保守しています。新しいアプリケーション開発チームが結成され、このチームに自動化を構築することを依頼されました。最初に、再利用可能なコンポーネントを特定し、追加ライブラリを実装する。どのレイヤーで構成すべきか？

a) コアライブラリー
b) テストスクリプト
c) フィーチャーファイル
d) ビジネスロジック

## Q12. WEBのGUIテスト自動化を行っています。時間が限られています。自動化できる手動テストケースがあります。目標は、テストケースを直接自動化スクリプトに実装することです。どのアプローチが適切か？

a) キーワードドリブン
b) ふるまい駆動 (BDD)
c) キャプチャー＆プレイバック
d) データドリブン

## Q13. 手動テストが成熟していて、テスト自動化が放置されてる会社にJOINする。ここでは通常、大量のテストデータを生成し、多くのバリエーションテストをしています。テスト自動化フレームワークの修正は可能だが、テストケースは完全に刷新する必要がある。どのアプローチが適切か？

a) データドリブン
b) ふるまい駆動 (BDD)
c) キャプチャー＆プレイバック
d) 受入テスト駆動開発

## Q14. eコマースのGUIテスト自動化を担当しています。利用者が名前、請求書先などを設定できる機能があります。現在ユーザビリティテストで、開発者でGUI変更、テスターがチェックするプロセスを繰り返します。テスト自動化は保守テストをサポートしています。どのデザインパターンが最適に実装されていますか？

a) ページオブジェクトパターンを実装し、GUIに関するユーザーアクションを関連するページモジュールに保存する
b) フローモデルパターンを実装し、WEB要素を関連するページモジュールに保存し、GUIに関するユーザーアクションを関連するフローモデルに保存する
c) ファサードデザインパターンを実装し、内部ロケーターメカニズムを隠ぺいするためにGUI要素のインターフェースを提供する
d) シングルトンデザインパターンを実装し、要素の位置特定を処理する単一のコードを作成する

# 4. Implementing Test Automation (K4)

## Q15. テスト自動化を実装するため、パイロットプロジェクトを始める。パイロットプロジェクトの目的と示しているものとして適切な組み合わせはどれか？

i) 開発でドキュメント化されていない部分をドキュメント化する
ii) 本番環境のテスト対象を監視するためのメトリクス、測定方法を特定する
iii) テスト自動化のテスト中に見つかった不具合を分析する
iv) ライセンスオプションと組織ルールを評価する
v) 最適な商用ツールかオープンソースを選択する

a) i, ii, iii
b) ii, iv
c) i, ii, v
d) iv, v

## Q16. アジャイル開発で金融ソフトウェアを頻繁に更新しています。開発、統合、デプロイメントは自動化されています。機能適合性テストを含むテスト自動化を担当し、日々のビルド後にテスト実行をしています。開発リスクと軽減対策の組み合わせはどれか？

リスク
1. テスト実行がビルドがトリガーで実施されない
2. フルテストスイートのみ実行できる
3. テスト開始時、テストデータが有効でない
4. 失敗したテストのトラブルシューティングが簡単ではない

軽減対策
A. テスト実行中に詳細ログを残す
B. CI/CDにテスト自動化を組み込む
C. テストデータ作成の3rd-partyツールを使う
D. テストハーネスやテストフィクスチャーを使う

a) 1-C, 2-B, 3-D, 4-A
b) 1-A, 2-B, 3-C, 4-D
c) 1-B, 2-D, 3-C, 4-A 
d) 1-D, 2-B, 3-C, 4-A

## Q17. コードの保守性に重要な要素はどれか？

a) すべての必須パラメータをもったジェネリック関数を定義する
b) コード変数に一意の名前を付ける
c) コードクリーンを保つために静的解析を用いる
d) 意味を理解しやすくするため、ハードコーディングする

## Q18. テスト自動化コードの保守時間を減らすアプローチとして適切なものはどれか？

a) 構成管理の外にコードを保存する
b) すべてのデータをハードコードする
c) デザインパターンを活用する
d) 構成管理を利用する

# 5. Implementation and Deployment Strategies for Test Automation (K3)

## Q19. アジャイル開発で金融ソフトウェアを頻繁に更新しています。開発、統合、デプロイメントは自動化されて、CI/CDも構築されています。可能な限り多くのテスト自動化目的を満たすテスト自動化を作ることが任務です。次のうち、有効なテスト自動化目的を２つ選べ

a) 毎晩リグレッションテストを実行する
b) コンポーネントのビルドを実行する
c) 性的コード解析を実施する
d) CI/CDでパフォーマンス効率性のテスト自動化を実施する
e) デプロイメントフェーズの一環として、アプリケーションをパッケージ化してデプロイする


## Q20. CI/CDでテスト自動化利用に関して、正しいのはどれか

a) デプロイメントフェーズの一環として、テストは実行しない
b) 別のパイプラインとして、デプロイメントの成功をトリガーとしてテストは実行されない。
c) 各デプロイメントで異なるテスト自動化を実行した時、テストケースはクオリティーゲートとして使わない
d) プリプロダクション環境のテストはテスト対象の機能を検証するために使われる

## Q21. テスト自動化で構成管理を用いることで正しいことはどれか？

a) テストデータ、テスト環境設定を管理できる
b) テスト対象の設定を保存、削除が簡単にできる
c) ユーザーのテスト自動化のアクセス権限を管理できる
d) テスト自動化の結果を簡単に分析できる

## Q22. テスト環境設定に含まれないものはどれか？

a) URL
b) 資格証明書
c) テストデータ
d) 共通コアライブラリ

## Q23. 契約テストで正しくないものはどれか？

a) APIテストの軽量な形式
b) マイクロサービスのコミュニケーションテストに使われる
c) ２つの分離したシステムの互換性を検証
d) システムが法令要件を満たしているかのテスト

## Q24. モノリシックWEBサービスをマイクロサービスにするプロジェクトに参画しています。どのドキュメントがテスト自動化に有益か？

i. API定義
ii. システムアーキテクチャダイアグラム
iii. テスト戦略
iv. リリースノート

a) i, ii, iv
b) i, ii
c) ii, iii, iv
d) i

# 6. Test Automation Reporting and Metrics (K4)

## Q25. WEB shopのGUIテスト自動化を担当。このサイトは利用者のセットアップのウィザード機能を持っている。テスト自動化では、ウィザードを最初にレコードする。スクリーンショットを保存する。これをテスト実施のベースラインとして使う。ウィザードの開発後、レコードしたテストを実行し、スクリーンショットを比較する（プレイバック）。プレイバックですべてのテストケースが失敗して、詳細を分析します。主要な原因はなにか？２つ選べ。

a) Session IDがレコードされそれがプレイバックで変更された。これは変数に置き換えるべきである
b) スクリーンショットが適切にステップに紐づいていない。そのため間違った順番で比較されている
c) スクリーンショットは信頼できるテスト結果にならないため、他の方法を検討する
d) GUIヘッダのデータがレコード時と異なる。そのため、比較からそのヘッダ部分を取り除く
e) 低解像度でスクリーンショットを撮っているため、信頼できる検証ができない

## Q26. 現在のテスト自動化フレームワークをロギングの拡張しています。テストでいくつかの動的な値がテストデータで使われ、レガシーなテストシステムに接続している。ただ、テストが不安定なので、失敗分析がしやすいようにロギングを追加したい。次の中から、追加すべき情報ではないものはどれか？

a) ログにタイムスタンプを追加し、レガシーシステムに接続して失敗したかを確認する
b) スクリーンショットを追加し、実際のリクエスト、レスポンスを確認する
c) ランダムに生成された値をログに残し、実際の結果を確認する
d) アサーションで、失敗の情報、例えば実際の値と期待値をログに含める

## Q27. 性能が重要なプロダクトの設計フェーズで、負荷テストの自動化を検討する。プロダクトはブラウザベースフロントエンド、マイクロサービス実装などの色々なアーキテクチャコンポーネントを含んでいる。全体のアーキテクチャで個々のトランザクションを測定することが重要である。テスト自動化でこの情報をどのように生成しますか？

a) できない。この情報はトランザクションの最後に手で作られる
b) テスト自動化エンジニアは全てのトランザクション実行中にタイミングの情報をレコードできる
c) トレースIDをソフトウェアコンポーネントを通して埋めて、測定された時間値をそのIDに紐付ける
d) 3rd partyツールを入れて、集めたデータをDBにログとして残す

## Q28. テスト実行セットがいくつかあります。テスト成功率が改善できてるかを確認したい。どうするのが良いか？

a) 期待値とテスト結果を比較する
b) 信号機でテスト実行の進捗を可視化する
c) テスト完了の率を含めた詳細なテストレポート
d) 前のテスト結果を分析して、トレンドをハイライトする

# 7. Verifying the Test Automation Solution (K3)

## Q29. CADソフトウエアのテスト自動化を担当。このソフトウェアはいくつか異なるversionを持っており、異なる言語、異なるプラットフォームで動く。手動テストを自動化する。システムテストが終わるとローカルPCで実施し、GUIのトランザクションを検証している。各手動テスターは、異なる言語、バージョン、プラットフォームを設定している。自動化の最初のステップとして、このすべてのテスター操作をレコードし、キャプチャー・プレイバックに用いる。テスト自動化を設計するに、何を考慮すべきか？

a) 同じバージョンのキャプチャー・プレイバックツールをインストールするためのセントラルレポジトリを作る
b) CADのインストール手順のドキュメントを作る
c) CADがインストールされる中心のテスト環境を構築し、各ローカルコンピュータにコピーするための自動スクリプトを作成する
d) 辞書ファイルの構成管理を用いる

## Q30. 多くの異なるテスト環境でテストが求められる。エラー対応に多くの時間を要していて、それはテスト自動化が新しいテスト環境で使うときに正しい設定がされないからである。またバージョンの違いが見られ、新しい環境で古いテスト自動化がセットアップされている。ソフトウェアの変更についていくのが苦労しテスト自動化の価値を生み出せない。こんな時、どういった対応が良いか？二つ選べ

a) インストールと設定を自動にするスクリプト作成する
b) 最も重要なテスト環境にのみテスト自動化を適用する
c) すべてのテスト環境にアクセスできるレポジトリにテスト自動化を保存する
d) すべてのテスト環境で、テスト自動化が適切に設定されたかを手動テストで検証する
e) 時間の制約のため、テスト自動化のコンポーネントテストの実装をスキップする

## Q31. テスト自動化スイートを検証する。いくつかのテストスクリプトは成功し、ある時失敗する。それゆえ信頼できるテスト結果を提供できていない。テストの有効性を検証するため、何をすべきか？

a) これは並行実行したためである。同期すれば問題は解消する
b) テスト自動化を再実行し、テスト結果を再度分析する
c) テスト自動化スイートから削除する。そして別途分析する
d) いくつかのテストスクリプトで同じテストデータを使っているため発生する。そのため異なるテストデータを使うことで解決する。

## Q32. ログイン機能に関して、25個テスト自動化を含むテストスイートがある。２週間のスプリントサイクルの最後にリグレッションテストとして実行される、２つのテストケースが競合状態もしくはランダムエラーが時々発生する。どのようなアクションを取るべきか？

a) たまに成功もするから、何もしない
b) テストケースを２５から１５に減らす。そして少ないテストで成功するかを確認する
c) ２つのテストをアクティブケースから取り除き、原因分析を行う
d) ２つのテストケースを成功するものに置き換え、２５のケースを維持する

## Q33. リグレッションテストスイートの自動化を行っている。リグレッションテストスイートが手動で実行された時、すべてのテストは成功している。テスト自動化ではいくつかのテストが失敗する。この状態で何をすべきか？

a) ログを分析し、原因分析を行う
b) テスト自動化スイートから削除し、残りのテストで成功させる
c) テスト自動化が失敗していると登録し、問題があることを明示する
d) これは普通で、テスト自動化は手動テストと異なる挙動をするからである

## Q34. セキュリティクリティカルなアプリケーションのテスト自動化スイートの実行準備を行っており、高度なセキュリティ要件を満たす必要がある。テスト自動化コードを検証するため、どのようなアプローチが望ましいか？

a) 機密情報をふくんだテストログを探す
b) 機密データを使っているテストケースを削除する
c) テストスイートをゆっくり入念に実行し、セキュリティ脆弱性がないかを確認する
d) 静的解析ツールを用いてセキュリティ脆弱性を認識する

# 8. Continuous Improvement (K4)

## Q35. WEBオンラインショップのGUIテスト自動化を取り組んでいる。現在ユーザビリティテストで指摘があり、開発側の修正とテスターのチェックを繰り返している。テスト自動化はメンテナンステストに重視している。UIベーステストケースでは、データがUIのロケーターの値を含んでいる。問題点は、改修でUI要素を特定する値が変更されていて、メンテナンステストに労力がかかることです。これを改善するにはどれが望ましいか？

a) スキーマ検証：必須の応答要素がGUIに存在するかをチェックする
b) UI要素の情報を含んだロギングを改善し、壊れたテストケースを簡単に特定する
c) テストヒストグラム：テスト自動化エンジニアが脆いテストを特定し選択できるようにする
d) AIアルゴリズム：機械学習と画像認識で新しいセレクターを特定し、テストケースを修正するセルフヒーリングを用いる

## Q36. リグレッションテストスイートを保守しており、1000のテスト自動化を含んでおり、信頼がある。開発チームで技術の近代化を進め、フロントエンドのリファクタを行っている。API駆動になってきて、UI要素のレンダリングに影響が出ることが推測し、75%のテスト自動化ケースに影響するとみた。どのデータ分析アプローチを用いてテスト自動化の影響を修正する方法を決めますか？

a) CI/CDで何回かテストを実施し、視的結果分析し、テストヒストグラムより結論を出す
b) AIやAPIスキーマ検証ツールを用いる
c) 自動化テストケースを再作成し、正しく動かない部分を新しいアプリケーションで動くようにする
d) Exceptionログ、スクリーンショット、エラーメッセージを分析して、特定のテストケースの自動化を避ける

## Q37. 自動化リグレッションテストスイートは実行に時間がかかり夜間で終わらない。テスト環境は夜のみ利用可能。並行実行はできない。これを改善するための取る手段で最適なものを２つ選べ

a) テストスイートを複数分割し、１週間で分割して実行する
b) テスト実行からテスト結果検証を分離させ、朝の時間に実行させる
c) キーワードドリブンを使ってテストを作り変える
d) いくつかのテストケースを取り除く
e) 重複したテストケースを取り除く

## Q38. テスト自動化エンジニアとして、新しいバージョンのコアライブラリを評価する。どのようなプロセス順番で実施すべきか？

a) 適合計画作成 -> 影響判断 -> 依存関係の更新 -> パイロット実施
b) パイロット実施 -> 影響判断 -> 適合計画作成 -> 依存関係の更新
c) 依存関係の更新 -> 影響判断 -> パイロット実施-> 適合計画作成
d) 影響判断 -> 依存関係の更新 -> 適合計画作成 -> パイロット実施

## Q39. テスト自動化の品質レビューを行い、GUI内制御の相互作用を最適化する。GUIにはdropdown list, checkboxなど様々なものがある。異なるGUI制御で情報を集めるため設定する機能（表示/非表示、有効/無効）がある。テスト自動化の効率を上げるためにとるべきステップはなにか？

a) 制御の種類に基づき、テストを異なるテストスイートに分ける
b) 代わりのテスト自動化ツールを調査する
c) いくつかの種類の制御で動く関数があるかを確認し、テストスクリプトを統合する
d) 新しいOS機能を使用して、テストスクリプトがGUIを制御できるようにする

## Q40. 顧客管理システムのパフォーマンステスト自動化では、いろんなプロファイルの顧客テストデータが必要になる。一番いい方法は何か？

a) テスト自動化ツールでWEBサービス上でこれらユーザーを登録する
b) GUIを通して手動で登録を行う。これによりGUIのテストも実施される
c) プロダクションのデータを用いて、本番同様のボリュームにする
d) テスト自動化スクリプトを実装し、顧客情報を匿名化する