日々学習〜人の役に立てるITエンジニアを目指して〜

ITエンジニアが日々学んだ事を書き記します

【システムアーキテクト午前Ⅱ】人工知能に関するテスト手法

f:id:taniyutt:20220405215010p:plain



















ある通信販売事業者は、人工知能技術を利用して人間のように受け答えする、Webのチャットをインタフェースとしたユーザサポートシステムを開発している。テスト工程では、次の方法でテストする手法を採用した。このような、人工知能に関するテスト手法を何というか。
[テストの方法]
・判定者は、このシステムと人間の二者を相手に自然言語によるチャットを行う。このとき、判定者はどちらがこのシステムで、どちらが人間なのかは知らされていない。
・判定者が一連のチャットを行った後に、チャットの相手のどちらがこのシステムで、どちらが人間かを判別できるかどうかを確認する。

ア 実験計画法
イ チューリングテスト
ウ ファジング
エ ロードテスト







答:イ
チューリングテストとは判定者が人間及びシステムを相手にやり取りを行って、システムの方を人間であると判定したら、システムが人間並みの振る舞いができたと判断する。提唱者である英国の数学者アラン・チューリングにちなむ。

【システムアーキテクト午前Ⅱ】探索的テスト技法

f:id:taniyutt:20220331224115p:plain




















探索的テスト技法の説明はどれか。

ア 起こり得る全ての条件と、それに対して実行すべき動作とを組み合わせた表に基づいてテストする技法。
イ 経験に基づいて、起こりがちなエラーを推測してテストケースを決定する技法。
ウ 経験や推測から重要と思われる領域に焦点を当ててテストし、その結果を基にした新たなテストケースを作成して、テストを繰り返す技法。
エ システムの取り得る状態と、状態を遷移させる事象又は条件を示した図に基づいてテストする技法。







答:ウ
探索的テスト技法は、経験ベーステスト技法の一種で、テスト実施時にテスト内容を決めながらテストを進める。エラーの可能性が低い箇所は簡単にテストを済ませ、不具合のありそうな箇所を重点的にテストするなど、メリハリを付けた対応ができる。そのためには、テスト担当者に十分な経験や知識が必要となる。

【システムアーキテクト午前Ⅱ】リグレッションテストの役割

f:id:taniyutt:20220330232829p:plain




















組込みシステムのソフトウェア開発におけるリグレッションテストの役割として、適切なものはどれか。

ア 実行タイミングや処理性能に対する要件が満たされていることを検証する。
イ ソフトウェアのユニットに不具合がないことを確認する。
ウ ハードウェアの入手が困難な場合に、シミュレータを用いて検証する。
エ プログラムの変更によって、想定外の影響が出ていないかどうかを確認する。







答:エ
リグレッションテスト:プログラムの変更に伴い、システムに予想外の影響が現れていないかどうかを確認するテスト」 のこと。リグレッションには「回帰」「退行」という意味があるため、「回帰テスト」「退行テスト」とも呼ばれる。

【システムアーキテクト午前Ⅱ】ブラックボックステストのテストケース設計




















ブラックボックステストにおけるテストケースの設計に関する記述として、適切なものはどれか。

ア 実データからテストデータを無作為に抽出して、テストケースを設計する。
イ 実データのうち使用頻度が高いものを重点的に抽出して、テストケースを設計する。
ウ プログラムがどのような機能を果たすのかを仕様書で調べて、テストケースを設計する。
エ プログラムの全ての命令が少なくとも1回は実行されるように、テストケースを設計する。







答:ウ
ブラックボックステストは、プログラムの内部構造を意識せず、外部仕様に基づいて機能を満たすかどうかテストする手法。テストケースは、外部仕様書に基づいて、様々なケースについて漏れがないように網羅して設計する必要がある。

【システムアーキテクト午前Ⅱ】プログラムの正当性を検証する手法



















プログラム実行中の特定の時点で成立すべき変数間の関係や条件を記述した論理式を埋め込んで、そのプログラムの正当性を検証する手法はどれか。

ア アサーションチェック
イ コード追跡
ウ スナップショットダンプ
エ テストカバレッジ分析







答:ア
例えばJavaにはアサーション機能があり、プログラムソース中に"assert 条件式;"の形で、その時点で成立すべき条件式を書くことができる。プログラムを実行して、その条件式が真と評価されれば何も起こらないが、偽と評価されればアサーションエラーを発生する。

【システムアーキテクト午前Ⅱ】ペアプログラミングによる開発の進め方

f:id:taniyutt:20220324232014p:plain



















ハードウェアの経験が豊富なプログラマAと、経験の少ないプログラマBがペアプログラミングの手法を利用して組込みシステムの開発を進める。ペアプログラミングによる開発の進め方として、適切なものはどれか。

ア Aがデバイスドライバの開発を担当し、Bがアプリケーションの開発を担当する。
イ Aがプロジェクトマネージャとして、プロジェクトの調整役になる。
ウ AとBがエディタ画面を共有し、Bが記述したコードに対してAが助言する。
エ ハードウェアとソフトウェアの切分けをシミュレーションで検証してから、AとBで分担して開発する。







答:ウ
ペアプログラミングは、二人一組になって1台のコンピュータの前でプログラムを作成する手法。適当なタイミングで交代しながら、一人がコードを作成し、もう一人は隣でそれを見ながら助言やチェックを行う。したがって、初級プログラマBだけでなく、適宜交代して上級プログラマAもコード作成を行う。

【システムアーキテクト午前Ⅱ】2段階で実行するプログラミングモデル

f:id:taniyutt:20220323225644p:plain




















大量のデータを並列に処理するために、入力データから中間キーと値の組みを生成する処理と、同じ中間キーを持つ値を加工する処理との2段階で実行するプログラミングモデルはどれか。

ア 2相コミット
イ KVS
ウ MapReduce
エ マルチスレッド







答:ウ
MapReduce:入力データから中間キーと値の組みを生成するMap処理と、同じ中間キーをもつ値を加工するReduce処理の2段階で処理を行う特徴があり、大量データの並列分散処理に適している。