JSTQBテスト
①ソフトウェア開発のライフサイクルとテストのライフサイクルの対応付けで正しいものはどれか。
1) 高レベル設計 A) ユニットテスト
2) コード B) 受け入れテスト
3) 低レベル設計 C) システムテスト
4) ビジネス要求 D) 統合テスト
[a] 1-D, 2-A, 3-C, 4-B
[b] 1-C, 2-D, 3-A, 4-B
[c] 1-B, 2-A, 3-D, 4-C
[d] 1-C, 2-A, 3-D, 4-B
正解 [d]
ユニットテスト、コンポーネントテスト、モジュールテストはJSTQBでは同義としています。ソフトウェアの構成要素として最小の単位をコンポーネントと呼ぶか、ユニットと呼ぶか、モジュールと呼ぶかの差異です。
テストレベルとテストベースの関係をV字モデルで捉えると、以下の感じになるでしょう。テストベースを表現する用語は開発手法や組織に依存するので、厳密なものではありません。
ビジネスシナリオ・ビジネス要求・システム要求 --- 受け入れテスト
システム要件/仕様・外部設計・基本設計・高レベル設計 --- システムテスト
内部設計・詳細設計・低レベル設計 ---統合テスト
モジュール設計・コード ---コンポーネントテスト
②構造テストを適用できる範囲として適切なのはどれか。
[a] すべてのテストレベルで利用できる。 [b] システムテストでは利用できない。 [c] ユニットテストのみで利用できる。 [d] ユニットテストと統合テストで利用できる。
正解 [a]
構造テスト(structural test)とは、構造をベースとしたテスト、つまりホワイトボックステストのことです。構造テストは、いわゆる構造をもったテスト対象であれば全て適用できます。ユニットテストではコード、統合テストではコンポーネント、システムテストでは画面やメニューなどを構成要素として構造テストが行えます。
③公式なインスペクションで行うアクティビティの順序として正しいものはどれか。
[a] 計画→キックオフ→個々の準備→レビューミーティング→再作業→フォローアップ
[b] 計画→キックオフ→個々の準備→レビューミーティング→フォローアップ→再作業 [c] キックオフ→計画→個々の準備→レビューミーティング→フォローアップ→再作業 [d] キックオフ→計画→個々の準備→レビューミーティング→再作業→フォローアップ
正解 [a]
公式レビューは6つのアクティビティで構成されます。これらのアクティビティは通常、シーケンシャルに実施されます。「計画」では、レビュー参加者の人選をし、「キックオフ」において参加者にドキュメントの配布してレビューの目的や手順を説明します。また、レビューで指摘された欠陥を修正する作業が「再作業」で、レビュー終了基準を判断するのが「フォローアップ」です
4 インシデントレポートに含めなくていい情報はどれか。
[a] 欠陥の修正方法
[b] 欠陥を再現する方法
[c] 重要度や優先度
[d] 期待結果と実際の結果
正解 [a]
IEEE 829のインシデントレポート標準では、記載すべき項目として期待される結果、実際の結果、再現手順(attempts to repeat)が挙げられています。また影響範囲としてインシデントの範囲、重要度(severity)、優先順位(priority)を記録することを推奨しています。なお、IEEE 829の再現手順(attempts to repeat)には、再現性(reproducibility)も包含しているようです。再現させるための試行回数や毎回起きるか稀に起きるかといった再現頻度に関するノートを記述するように指示されています。欠陥の修正についての情報は、修正後のステータスや履歴、修正による他への影響は記載されますが、具体的な修正方法をインシデントレポートに記述することは必要なさそうです。
5 テストが終了したと判定された時点から「テスト終了作業」のフェーズに進むことになる。テスト終了の判断でないものはどれか。
[a] システムがリリースされた。
[b] プロジェクトが途中で打ち切られた。
[c] マイルストンを達成した。
[d] プロダクトを保守部門に引き渡した。
正解 [d]
プロダクトの保守部門への引き渡しは、テスト終了作業において行う内容です。設問では、テスト終了作業を開始できる条件が問われています。テスト終了の判断は、通常、計画された最後のテストレベルの「テスト終了基準の評価とレポート」で行われます。テスト終了作業は、テストレベルのループの中で行うものではなく、テストの全体計画(マスターテスト計画)に対応して、テストレベルのループの後に行うことが一般的です。ただし、計画によってはテストレベルのループの中に含まれる部分もあります。その場合、テストレベルごとのテスト終了作業と、テスト全体でのテスト終了作業に分離して考える必要があります。Foundationの学習者は、テスト全体のテスト終了作業のみを意識しておけば、それで十分でしょう。
6 ホワイトボックステストに分類されるのはどれか。 [a] 状態遷移テスト
[b] デシジョンテーブルテスト [c] デシジョンテスト
[d] 探索的テスト
正解 [c]
ホワイトボックステストは構造べースのテスト技法であり、JSTQBのシラバスでは、特に「ステートメントテスト」と「デシジョンテスト」が取り上げられています。 デシジョンテストは、if文などによる処理の判定(デシジョン)をベースにしています。JSTQBでは、デシジョンテストはブランチテストとほぼ同義としています。その網羅率を「デシジョンカバレッジ」または「ブランチカバレッジ」と呼びます。
7 JSTQBで定義している「エラー」の説明として適切なのはどれか。
[a] コンポーネントやシステムが期待される結果を提供できない状態 [b] コンポーネントやシステムの中の不備 [c] 期待結果と実際の動作が違った状況 [d] コードやドキュメントに不備を混入させる原因となった人の行為の誤り
正解 [d]
インシデント(incident)は、JSTQBの用語集では「発生する事象中で調査が必要なもの」とされています。[a]は欠陥(fault,defect)、[b]は不正(anomaly)、[c]は誤り(mistake,error)の定義です。
8 非機能テストでないものはどれか。
[a] セキュリティテスト
[b] ユーザビリティテスト
[c] ロードテスト
[d] インストールテスト
正解 [a]
セキュリティテストは、JSTQB/ISTQBでは機能テストとして分類されています。ユーザビリティ/使用性は品質特性です。ロードテストは性能テストの一部です。インストールテストは、微妙なところもありますが、ISO 9126に従う設置性(installability)のテストだとすると、非機能テストとなります。セキュリティは、ISO/IEC 9126では機能性(functionality)のサブカテゴリとされています。functionalityは機能(function)そのものではなく、機能の充足性を表現する非機能特性と捉えるべきです。機能性には他に相互運用性(interoperability)や正確性(accuracy)などがあります。ISTQB/JSTQBでは、これら機能性のテストは機能テストとみなすことにしたようです。厳密には、セキュリティには機能的な側面のテストと、非機能的な側面のテストを包含していると言えますが、Foundationのシラバス上では、機能テストとして語られているという状況です。
10 「テスト分析と設計」の目的は何か。
[a] テスト条件を識別することであり、テストケースを識別することではない。 [b] テスト条件を識別することではなく、テストケースを識別することである。 [c] テスト条件を識別し、テストケースを識別することである。 [d] テストケースの入力データ、テスト手順を具体化することである。
正解 [c]
テスト分析では、テスト条件を識別します。テスト設計は、そのテスト条件を網羅するテストケースを識別します。ですから、それらを包含したテスト分析と設計の活動は、テスト条件を識別し、テストケースを識別する目的で行う、と言えます。
11 あるレビューが計画され、レビューの開始基準と終了基準が定義されている。
特に終了基準についてはフォローアップのプロセスにおいて判定することになった。
このレビューの形式はどれか。
[a] ウォークスルー
[b] インスペクション
[c] テクニカルレビュー
[d] 非公式レビュー
正解 [b]
レビューの開始基準と終了基準が定義されているのは、公式性の高いレビューです。フォローアップのプロセスが明確化されているのは、インスペクションです。 本来、レビューの公式性とレビュータイプは別のものです。しかし、一般にインスペクションは公式性が高いということになっているようです。
12 小学校の学年について、境界値分析を行ってテストデータを決める場合、その組み合わせはどれか。
[a] 1, 6
[b] 1, 2, 3, 4, 5, 6
[c] 0, 1, 6, 7
[d] 0, 3, 6
正解 [c]
境界値分析では領域の上限と下限の近傍についてテストします。FL試験では、領域に含まれる値と含まれない値をテストケースとすることを推奨しています。小学校の学年は上限と下限が整数値で1と6です。ですから、その外側にある整数値0と7を加えてテストケースとします。
13 ホワイトボックスのテスト技法はどれか。
[a] 同値分割
[b] 状態遷移図
[c] ステートメントテスト
[d] デシジョンテーブル
正解 [c]
ホワイトボックステストは構造べースのテスト技法であり、JSTQBのシラバスでは、特に「ステートメントテスト」と「デシジョンテスト」が取り上げられています。ステートメントテストは、コードの実行可能なステートメント(1行ごと)が実際にどれだけ実行されたかをチェックするテストです。コードには、if文やswitch文、for文などのループ処理、例外処理などの分岐が含まれるため、それら分岐を網羅するようなテストケースを用意する必要があります。ステートメント(1行ごと)単位で網羅率をチェックするのがステートメントテストで、if文などの分岐でture/falseの両方を確実にチェックしていくのがデシジョンテスト(ブランチテスト)です。
14 テスト戦略をクラス分けする観点の1つとしてテスト設計を開始するタイミングがある。
欠陥の発生を予防するため、できるだけ早い時期にテスト設計を開始するアプロ-チを何と呼んでいるか
[a] 対処的アプローチ
[b] 分析的アプローチ
[c] 予防的アプローチ
[d] 回帰的アプローチ
正解 [c]
設問の記述は「予防的アプローチ」を説明しています。予防的アプローチに対して、プロダクトができてからテスト設計を開始するアプローチを「対処的アプローチ」と呼んでいます。ただし、シラバス2010以降、予防的アプローチ、対処的アプローチといった分類は除外されました。テストアプローチはテスト戦略にもとづいて具体化されますが、対処的アプローチが戦略的でないことから除外されたと思われます。戦略的に行えば、すべて予防的になるはずです。
15 JSTQBでは、テストツールをいくつかのカテゴリに分類している。動的解析ツールは、どのカテゴリに分類されるか。
[a] テストマネジメントの支援ツール [b] テスト仕様の支援ツール [c] テスト実行とロギングの支援ツール
[d] 性能・モニタリング支援ツール
正解 [d]
動的解析ツールは、性能・モニタリング支援ツールに分類されます。ツールの分類を下表で確認しておいてください。
16 段階的にではなく、ソフトウェアやハードウェアの要素を全て一挙に結合して、コンポーネントやシステム全体をテストする技法を何か。
[a] システムテスト
[b] ビッグバンテスト
[c] 統合テスト
[d] ユニットテスト
正解 [b]
ビッグバン(big-bang)は、コンポーネントを統合するアプローチの1つです。テストの際に統合を段階的に行うものをインクリメンタルテストと呼んでいるの対し、一挙に全てを統合するものをビッグバンテストと呼んでいます。
17 サイクロマティック複雑度が高いプログラムの説明として適切なのはどれか。
[a] 大規模なソフトウェアである。 [b] 高品質なソフトウェアである。 [c] コードを書くのが困難なソフトウェアである。
[d] テストするのが困難なソフトウェアである。
正解 [d]
サイクロマティック複雑度が高いプログラムは、テストするのが困難なソフトウェア、保守性の悪いソフトウェアと言えます。
18 スイッチのONとOFFについて状態遷移図(state transition diagram)を描いてみる。
その場合、状態遷移として表現されるものはどれか。 1) ON
2) ONからOFFへ
3) OFF
4) OFFからONへ
[a] 1, 2, 3
[b] 1, 2, 3, 4
[c] 1, 3
[d] 2, 4
正解 [d]
ON,OFFは状態です。状態遷移といえば、ONからOFFへの遷移とOFFからONへの遷移の2つです。
19 テストの進捗を監視するのに適した指標はどれか。
1) テストケースを実行したパーセンテージ 2) テスト環境の準備具合を示すパーセンテージ 3) 欠陥密度、発見された欠陥数、修正された欠陥数などの情報 4) テストチームの規模やエンジニアのスキル
[a] 1, 2
[b] 1, 2, 3
[c] 1, 4
[d] 4
正解 [b]
選択肢の 1),2),3)は、シラバスに代表的なメトリクスとして挙げられています。
テストチームの規模やエンジニアのスキルは、テスト進捗を監視する目的でメトリクスとして収集することはないでしょう。確かに、テスト進捗はテスト要員の数やスキルにも影響されますが、それはプロジェクト管理の領域です。
20 インシデントを登録した後にとった行動として適切であったのはどれか。 [a] インシデントのステータスを一旦、クローズとした。 [b] 実際と合うように、テストケースの期待結果を訂正しておいた。 [c] 原因がはっきりしなかったので、設計者にエスカレーションした。 [d] たまたま自身が書いたコードに原因があると分かったので、すみやかに修正した。
正解 [c]
新規に登録されたインシデントのステータスは、調査が開始された時点でオープン(Open)となり、原因分析や修正の担当者が割り当てられた時点で対応中(Assigned)などになります。一旦クローズにするということはありえません。テスト結果を評価した結果、テストケースのテストデータ、手順、期待結果の記述が誤っていることが判明する場合もあります。
21 キャプチャ再生機能を持つテストツールを利用すると、もっとも効果的であるのはどれか。
[a] 統合テスト
[b] システムテスト
[c] 回帰テスト
[d] ユーザー受け入れテスト
正解 [c]
キャプチャ/プレイバック機能をもつテストツールは、機能テストや回帰テストの自動化を行ったときに効果を発します。工数をかけずに繰り返してテストできるので、特に回帰テストに効果的です。
22 テストを行う順序として、どれが適切か。 [a] 重要なテストから
[b] 難しいテストから
[c] 簡単なテストから
[d] テストが作成された順で
正解 [a]
余計なことを考えず、素直に「重要なテストから」を選択しましょう。
23 システムテストで行う機能テストの説明として、もっとも適切なものはどれか。
[a] システム機能を他システムと合わせてテストする。 [b] システム機能を構成するコンポーネントを合わせてテストする。 [c] システム全体の機能性を隅から隅までテストする。 [d] システム機能のレスポンスタイムをテストする。
正解 [c]
[a]は一般に、受け入れテストや大規模システムでの統合テストの範囲となります。[b]はコンポーネントの統合テストです。[d]は性能テストであり、非機能テストになります。[c]はシステムテストで行う機能テストと言えそうです。
24 「ベータテスト」の説明としてもっとも適切なものはどれか。
[a] 顧客側の環境で顧客によって実施される。 [b] 開発側の環境で顧客によって実施される。 [c] 独立したテストチームがテストする。
[d] ライフサイクルのできるだけ早い時期に実施される。
正解 [a]
ベータテストは受け入れテストの1形態であり、実際のユーザーや想定されるユーザーが顧客側の環境でテストします。通常、開発側の環境でアルファテストを行った後で、ベータテストに移行します。
25 公式なレビューにおいて、レビューを実施することを決め、実施のスケジュールを立て、レビュー目的が合意できたかを判断するのは誰か。
[a] インスペクションリーダ [b] モデレータ
[c] スクライブ
[d] マネージャ
正解 [d]
設問は、公式レビューにおけるレビューマネージャの役割を説明しています。
一般的なレビューを想定して、JSTQBではレビュー参加者の役割として以下を定義しています。
マネージャ
モデレータ(※インスペクションリーダとも呼ぶ)
作成者
レビューア (=チェッカー、インスペクタ)
書記(=記録係、スクライブ)
読み手(※インスペクションのみ)
26 組織内にテストツールを展開しようとしている。適切でないものはどれか。
[a] ツール未使用の部署にツールを同時に展開する。 [b] ツールを適用しやすいようにプロセスを改善する。 [c] 新規ユーザに対し、教育やトレーニングを行う。 [d] ツールの利用状況や効果をモニタリングする。
正解 [a]
新規にツールを導入する場合には、リスクもあります。ツールがうまく適用できなかったり、思いの外、工数がかかることがあります。その場合でも被害が少なくて済むように、パイロットプロジェクトを選定して、そのプロジェクトでツール導入の効果を評価しておくことが有効です。
27 「テストベース」の説明としてもっとも適切なのはどれか。
[a] テスト対象と同義である。 [b] テストのもととなる開発関連のドキュメント
[c] テスト結果と比較するための期待結果を決定するソース [d] テストを行うために必要となるスタブやドライバからなる環境
正解 [b]
テストベースは、ドキュメントやコードです。要求、アーキテクチャ、設計、インタフェースなどを記述したドキュメントです。各テストレベルには対応するテストベースがあります。
28 人の年齢を扱う変数 x は1から130までの値をとるものとする。境界値分析で入力値を決めるとどの組み合わせが適切か。
[a] 0, 1, 2, 130
[b] 1, 129, 130, 131
[c] 0, 1, 130, 131
[d] -1, 0, 1, 130
正解 [c]
正常な入力値の境界は1と130なので、その外側にある整数の0と131を加えた入力値が正解です。
29 以下の4つの中で仲間はずれのテストはどれか。
[a] ホワイトボックステスト [b] グラスボックステスト [c] 構造テスト
[d] 機能テスト
正解 [d]
機能テストは仕様ベースのテスト技法です。他の3つは構造ベースのテスト技法です。グラスボックステストは、ホワイトボックステストの別称です。
30 保守テストの対象でないものはどれか。
[a] セキュリティホールなどのパッチ適用 [b] 使われていないデータの一括削除 [c] データベースのアップグレード [d] システム入れ替え時のデータの一時的な保管
正解 [b]
使われていないデータの一括削除は、通常運用の範囲です。OS、データベースやその他のミドルウェアの移行、アップグレード、パッチ適用は保守の範囲になります。
31 以下に挙げたテスト技法の中で、経験ベースの技法はいくつあるか。
1) エラー推測
2) モンキーテスト
3) 探索的テスト
4) リスクベーステスト
[a] 2つ
[b] 3つ
[c] 4つ
[d] 上記以外
正解 [a]
シラバスでは、経験ベースの技法として、エラー推測と探索的テストが取り上げられています。リスクベーステストはテストアプローチです。モンキーテストは、ランダムに操作を行うテストであり、経験ベースとは言えません。
32 大規模システムではどのようなテストアプローチが適切か。
[a] 同時に多くのテストをしないようにする。
[b] テストはリスクをベースに行う。 [c] 良質なテストケースのみを実行すればよい。 [d] 優秀なテストエンジニアによって書かれたテストケースを実行すればよい。
正解 [b]
大規模システムでは、緊急度の高い部分を重点的にテストするリスクベースのアプローチが有効です。
他の選択肢は、ほとんど論外でしょう。
33 特定の機能をテストするためにプログラマが作成したものであり、それにテストデータを流して機能をテストするものは何か。 [a] スタブ
[b] ドライバ
[c] プロキシー
[d] エミュレータ
正解 [b]
用語集では、ドライバ(driver)は「コンポーネントやシステムを制御したり呼出す上位コンポーネントの代わりとなるソフトウェアコンポーネントやテストツール」、スタブ(stub)は「特定のコンポーネントをテストするため、そのコンポーネントから呼び出されるコンポーネント。スタブがないと、実物ができるまで、開発やテストを待たなければならない。
34 以下に挙げた作業の中で、テストリーダが行うものはどれか。
1) テストの仕様、前準備、構築、実行をスタートさせ、テスト実施のモニタリングやコントロールをする。
2) テスト戦略を具体化し、プロジェクトマネージャとテスト計画を策定する。
3) テスト計画をレビューしたり、改善案を提案する。 4) テストの順番を決める。 5) テストの自動化を行う。
[a] 1, 2, 3, 4, 5
[b] 1, 2, 3, 5
[c] 1, 2, 4
[d] 3, 4, 5
正解 [c]
テストリーダ(test-leader)の作業とテスト担当者(tester)の作業を正しく認識できているかどうかを問う典型的な問題です。「テスト計画をレビューし、改善案を提案する」のはテスト担当者です。紛らわしい表現ですが、テストリーダが作成したテスト計画をメンバがレビューして、改善点があれば指摘して改良してもらうことです。
35 「故障率」の説明として正しいのはどれか。 [a] インシデントとして登録した故障の中で欠陥として修正した件数を、故障の全数で割った値
[b] 発生した故障の数を、実施したテストケース数で割った値 [c] 発生した故障の数を、テスト時間、トランザクション数、コンピュータの運用回数などで割った値
[d] 発生した故障の数を、規模を示すコード量やクラス数などで割った値
正解 [c]
故障率は、用語集では、「測定単位に発生したあるカテゴリの故障数の率。例えば、単位時間あたりの故障数、トランザクション数あたりの故障数、コンピュータの運用回数あたりの故障数。」と説明されています
36 ある整数値の変数 x は、範囲として 0 ≦ x < 100 が許容される。
この変数 x に対して境界値分析でテストデータを決める場合、どの組み合わせが適切か。
[a] -50, 50, 150
[b] 0, 1, 99, 100
[c] -1, 0, 99, 100
[d] -1, 0, 1, 99, 100
正解 [c]
FL試験では、境界値分析は境界値の範囲に含まれる値と含まれない値をテストケースとすることを推奨しています。FL試験では[c]が正解となります。
37 以下で説明しているテストツールは何か。 プログラムやHTML,XMLなどのコードを分析して、構造の依存関係をレポートしたり、事前に登録されたルールと照合することでエラーを検出できる。
また、これらの分析は構造を理解する上で非常に役立つ。
[a] レビューツール
[b] モデリングツール
[c] 動的解析ツール
[d] 静的解析ツール
正解 [d]
静的解析ツールを説明しています。コードを対象とした静的解析ツールは広く利用されています。コーディング規約を遵守しているかをチェックしたり、モジュール間の依存関係をグラフ化して複雑度を指摘したりします。静的解析ツールで得られるメトリクスの情報は、テスト計画やリスク分析に利用できます。
38 顧客自身が顧客の環境で実施するテストは何か。
[a] アルファテスト
[b] フィールドテスト
[c] 運用プロファイル
[d] システムテスト
正解 [b]
受け入れテストの1形態であるフィールドテストを説明しています。フィールドテスト=ベータテストのことです。アルファテストは、ベータテストの前に行います。アルファテストは開発側の環境で行い、ベータテストは顧客側の環境で実際のユーザーや将来の想定されるユーザーがテストします。
39 静的解析ツールで検出できないものはどれか。 [a] 定義される前の変数の参照 [b] 到達することのない、死んだコード [c] メモリリーク
[d] 配列の境界違反
正解 [c]
メモリリーク以外は、静的解析ツールで検出できます。メモリリークを検出するには動的解析ツールが必要です。