JSTQBテストアナリスト試験の出題ポイントについて考えてみた 

ISTQB公式サイトにはAdvanced level資格試験のサンプル問題が掲載されていますが、2024年8月現在、まだ日本語訳されていません。しかし公式の問題集が他にないことを考えると、Advanced levelの学習教材としては非常に貴重なものとなっています。

私はこの夏、Advanced levelであるところのテストアナリスト試験を受験しようと考えており、ISTQBのサンプル問題を使って絶賛勉強中です。

問題を解いていると、少しずつ「出題のポイント」のようなものがあるのを感じてきます。

自分が受験する上でもそうですが、他の方の参考にもなりそうですので、今回はその出題のポイントについてまとめてみようと思います。

テストアナリスト試験の中でもとりわけ比重が高いテスト設計の問題に関して、サンプル問題から出題のポイント的なものを抽出してみました。

# テスト設計に関する出題ポイント

さて、テスト設計に関しては、大きく分けて3種類の問題が出題されているように見えます。

ひとつは**テスト設計技法の適用の知識を問う問題**、
ひとつは**テスト設計技法のカバレッジの知識を問う問題**、
最後のひとつは**テスト設計の妥当性を分析する問題**です。


### テスト設計技法の適用の知識を問う問題

まずは適用について。こちらは実際的な状況のなかで、どのようなテスト設計レベルや、テスト設計技法を使うのが最適であるのかを問うような問題です。

実際の問題を見てみましょう。[^1]

>自動車ディーラー向けに使用されるシステムを開発しています。このシステムは、車両にオプション（例：エンジンのサイズ、外部トリム、カラー）を設定し、その設定で車両のビジュアルモデルの生成しつつ、車両の小売価格を計算する機能を持っています。
>
>既存のシステムでは、任意の1つの設定でビジュアルモデルを生成することができますが、同じセッションの中で設定を変更することができません。
>
>また、このシステムはプロトタイプとして使用され、ゼロから作業するよりも必要な機能を素早く生成できると期待されており、迅速な納品に向けてスケジュール調整されています。
>
>許された時間の中で受け入れ可能なカバレッジを達成するために、次のテスト技術のうち、どれを組み合わせれば最も良い結果が得られると考えられますか？


「自動車ディーラー向けのシステム」という具体的なシステムに対し、どのテスト技法を適用すべきかが問われています。

今回の記事の目的は出題ポイントをまとめることなので、詳しく解説等は行いませんが、問題文を見る限り、複数のオプションの組み合わせをテストできるとよさそうです。なのでペアワイズテスト、あるいは組み合わせテストをサポートするテスト技法であるクラシフィケーションツリー技法などが選択肢に入っていた場合は、それが答えになるでしょう。

他のシステムの場合も考えてみましょう。会員ステータスなどのいくつもの条件によって料金が変化するようなシステムであればデシジョンテーブル、ワークフローシステムのように状態を持つシステムであれば状態遷移テストが有効そうです。

ただし、状態遷移テストが答えになるような問題では、必ずしも問題文で「状態」という言葉を使ってくれるわけではありません。書かれたある内容から、システムが複数の状態を持つことを読み取る必要があります。システムの状態についてはシラバスに網羅的に書かれているわけではないので、各々の経験をもって臨むほかありません。

ともあれ、適用の問題とはこのように「実際的な開発の状況において、どのテスト技法を用いることが適切か」が問われる問題のことです。

出題の方向性としては他にも、
- 特定のテストレベルにおいて、最適なテスト技法を問う問題
- 特定の状況において、ハイレベル／ローレベルテストケースのどちらが適切かを問う問題
- 特定の欠陥を見つけたい場合に、最適なテスト技法を問う問題

といった感じのものがあります。

「デシジョンテーブルは単体テストでも使われるけど、ユースケーステストは使えないよね」とか「テスト期間が短くて、でも熟練のテスターが担当するなら、ローレベルテストケースよりもハイレベルテストケースのほうが良いよね」とか。そんな感じです。

ハイレベル／ローレベルテストケースは、正確には「テスト技法」ではなく「テスト設計レベル」なので、シラバス第3章「テスト技法」の中には書かれていません。第1章「テストプロセスにおけるテストアナリストのタスク」の1.4.1「ローレベルテストケースとハイレベルテストケース」に記載されています。とはいえ、こちらもやはりK4：分析レベルなので、しっかりと押さえておきたいポイントです。

K4レベルの問題は文章量も多く読むだけでも大変ですが、テストアナリスト試験で扱われるテスト技法は限られているので、シラバスにおける技法それぞれの「適用」や「検出できる欠陥の種類」の項目をしっかりと理解すれば、必要な情報を素早く読み取ることができそうです。

### テスト設計技法のカバレッジの知識を問う問題

次はカバレッジを問う問題について、実際の問題を見てみましょう。[^2]

> 以下の要求を持つ多言語Webアプリケーションがあります。
> - 異なる3つの言語をサポートしている：英語、フランス語、日本語
> - 異なる3つのブラウザで動作する：Br1, Br2 Br3
> - 異なる3つのOSで動作する：OS1, OS2, OS3
>
> あなたは、これらの言語、ブラウザ、OSを様々に組み合わせても正しく動作することのテストを行います。短いテスト期間の都合で、ペアワイズテストを行うことに決定しました。
>
> ペアワイズテスト行うにあたり、オールペアカバレッジを達成する上で最も少ないテストケース数はいくつでしょうか？

ペアワイズテストにおけるカバレッジの算出ができるか、という問題です。「オールペア」と別の言葉が使われていますが要するにペアワイズは同じものなので、単純にペアワイズテストのカバレッジ計算方法が分かっていれば答えることができます。

ペアワイズテストのカバレッジは、1つのテストケースで全てのパラメータを扱える場合、最も多い2つのパラメータの値の数を掛け合わせることで、必要なテストケース数を計算できます。

この問題の場合は、すべてのパラメータが3つの値を持っているので、3×3=9ケースが最小テストケース数となります。

このようなカバレッジを問うような問題としては、
- ○○%のカバレッジを達成するために必要なテストケース数
- ○○個のテストケースで達成できるカバレッジ

などのパターンがあります。どちらにしても、それぞれのテスト技法のカバレッジ算出の仕方を理解しておく必要があります。

カバレッジの問題で押さえておきたいテスト技法は、上記のようなペアワイズテストと、それ以上に重要なのが状態遷移テストです。状態遷移テストのカバレッジの計算方法は「Nスイッチカバレッジ」「ラウンドトリップカバレッジ」の2種類があり、注意が必要です。

加えて、問題文の中に何かしらの制限がかかって、必要なテストケース数が少なくなっている場合があります。それも見落とさないようにしたいところです。



### テスト設計の妥当性を分析する問題

最後はテスト設計技法に関する実践的な問題で、仕様と実際のテスト設計を読み解き、妥当性のあるものになっているかを分析するような問題です。[^3]

>インターネットストアの支払い方法に関して、ビジネスアナリストから次のような仕様の説明がありました。
>
>「ユーザーは登録時、ストアにクレジットカードのデータ（有効期限を含む）を入力します。支払い方法はクレジットカード払い、即時決済、口座自動振替の3つの選ぶことができます。口座自動振替は購入金額が500€までの場合にのみ利用可能です。未登録のユーザーは、即時決済のみ利用可能です」
>
>テストアナリストはこれに基づき、起こり得る組み合わせとして次のような簡単化されたデシジョンテーブルの設計を行いました。
>
>| ID | 条件               | R1 | R2 | R3 | R4 |
>|:---|:-------------------|:-:|:-:|:-:|:-:|
>| C1 | ユーザー登録済み    | T | T | T | F |
>| C2 | カード有効期限切れ  | F | T | - | - |
>| C3 | 購入金額 <= 500€    | T | T | F | - |
>|    | **動作**            |   |   |   |   |
>| A1 | クレジットカード払い | Y | N | Y | N |
>| A2 | 即時決済            | Y | Y | Y | Y |
>| A3 | 口座自動振替        | Y | Y | N | N |
>
>このデシジョンテーブルの完全性、正確性、一貫性をレビューしています。以下のうち、正しいフィードバックはどれですか？

仕様の記述に対して、実際に作られたデシジョンテーブルから漏れを見つけるような問題です。こちらも特に解説はしません。[^4] 

個人的には、こうした問題が最も難易度の高いものと感じます。必要な情報だけかいつまんで読めばよい、というものではなく、書かれてある内容をしっかり精査しないといけないので、テスト技法の知識だけでなく仕様理解能力が求められます。

実力が出るところとも言えるでしょうから、こうした問題を解けないようでは、合格は難しいかもしれません。日ごろの業務からちゃんと頭を使って、考える力を鍛えておきたいところです。

紹介した問題はデシジョンテーブルテストでしたが、状態遷移テストで出題があってもおかしくありませんね。「仕様の記述には状態Aから状態Cに遷移できるとあるが、状態遷移図には遷移パスが書かれていない」というような。実際はそんな簡単な問題ではないと思いますが。

この種の問題は、時間をかけて精読できたほうが良いと思われます。受験テクニック感がありますが、質問内容や選択肢を先に読むなどして、問われているものが技法そのものの知識ではないことを早めに確認できると良さそうです。



# まとめ

今回はテストアナリスト試験におけるテスト設計問題について、「適用」「カバレッジ」「妥当性」の3つの出題ポイントに分類して整理してみました。

とはいえ、実際の問題では、もっと複合的な問題も出てくるかと思いますし、全く違うテーマの問題も出るかもしれません。それでも、主要なポイントが分かってさえいれば、例外も例外として認識できるので、心構えを作ることはできるかと思います。

また、なにより具体性に惑わされないようにするために、出題のポイントを押さえておくことは重要になるのではないかと考えます。

テスト設計の問題の多くはK4：分析レベルで問われるわけですが、K4レベルの問題はサンプル問題で見てきたような、実際的な開発のシチュエーションが提示され、その中で知識を活用できるかを問う問題が出題されます。

関係のない情報に目を向けてしまうと、時間も取られてしまいます。40問120分、1問あたり3分しかないテストアナリスト試験において、必要以上に時間を使わないで済むようにポイントを押さえて理解しておきましょう。

ああだこうだと持論を述べましたが、私はまだALTAを受験したこともない若輩者ですので、実際の問題については全く分かりません。どんなものがくるか分かりませんが、頑張って立ち向かっていけたらと思います。

私の他にも受験を考えている方がいれば、今回紹介したポイントをぜひ参考にしてみてください。そして共に試験勉強を頑張りましょう！


[^1]:問題文はこちらから原文で読むことができます。[Sample Exam Questions v2.6](https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB-CTAL-TA-v3.1_Sample-Exam-A-Answers_v2.6.pdf)
こちらの問題はQuestion #20から引用しています。これ以降の問題も含め、サンプル問題の著作権は原文著者とISTQB®にあります。
また、日本語訳は私の素人訳なので、誤訳があるかもしれないことにはご注意ください。実際、公開直後は誤訳があったのをご指摘いただきました。現在は修正済みですが肝が冷えました。
[^2]:こちらは上記リンク先のQuestion #16から引用しています。
[^3]:こちらは同じく上記リンク先のQuestion #10から引用しています。
[^4]:問題に対する解説の資料はこちら。[Sample Exam Answers v2.6](https://istqb-main-web-prod.s3.amazonaws.com/media/documents/ISTQB-CTAL-TA-v3.1_Sample-Exam-A-Answers_v2.6.pdf)