プログラムの状態遷移を用いたモデル検査。(平成20年春ソフトウェア開発技術者午後1問2)

解答です。

設問1
(1)6
(2)[a]:ホワイト [b]:ブラック
(3)パスや条件分岐を全て検証すると時間がかかる場合

設問2
(1)[c]:PE [d]:識別子 [e]:エラーコード
(2)[f]:P4→P3→P4

設問3
[g]:ウ [h]:オ

解説してみた。

設問1
(1)(1)は、一番大きなブロック長を越えるいずれかのメモリ長を1つ指定してエラーが出ればOKなので、1ケース。(2)は、未使用メモリプールが4つあり、指定したメモリ長に対応するメモリプールが選択されることを確認するため、4ケース必要。(3)は、最小のブロック長のメモリプールだけが割り当て済になっている状態で、最小のブロック長以下のいずれかのメモリ長を指定して、空いているメモリプールが割り当てられればOKなので、1ケース。よって、(1)~(3)の合計の6ケース。

(2)プログラムの内部構造を解析するテストは、ホワイトボックステスト。プログラムの内部構造を解析せず、入出力が適切かどうかで判定するテストは、ブラックボックステスト。よって、[a]には「ホワイト」、[b]には「ブラック」が入ります。

(3)プログラムが複雑でパスや条件分岐の組合せが多い場合、これらのパスや条件分岐を網羅するように一通り検証するとなると、膨大な時間がかかり、とてもじゃないが納期に間に合わなくなります。よって、「パスや条件分岐を全て検証すると時間がかかる場合」と解答しました。なお、IPA公式解答では「複雑な条件を満足するデータの準備が困難な場合」となってます。「パスや条件分岐を全て検証すると時間がかかる場合」は、まずいのか許容範囲なのか?

設問2
(1)初期状態(P0)では、戻り値が未設定になってます。不具合がなく処理が行われた場合、プールの割り当てが行われるとP5で識別子が戻り値に設定され、割り当てが行われなかった場合は、P6でエラーコードが設定されます。P5またはP6で戻り値が設定された後、ゴールであるPEに遷移します。
 よって、[c]には「PE」、[d]には「識別子」、[e]には「エラーコード」が入ります。

(2) 不具合のあるケースは、メモリプールの割り当てが行われないまま4回目のP4が実行されると、戻り値が未設定の状態で、ゴールのPEに遷移するパターンです。よって、[f]に入るのは「P4→P3→P4」になります。

設問3
 モデル検査の特徴は、従来のようなテストデータを必要としない、発生頻度の低い不具合や複雑な条件が重なって発生する不具合を洗い出せます。発生頻度の高い不具合や、他スレッドとの干渉が無い単純なスレッドの不具合であれば、通常の方法でテストすれば事足りるはず。
 よって、[g]には「ウ」(テストデータ)、[h]には「オ」(発生頻度の低い不具合)が入ります。

IPAの公式解答はこちら。
平成20年春ソフトウェア開発技術者午後1問2 IPA公式解答(PDFファイル)

 今回は、フローチャートや状態遷移図が登場したことで、システム開発に慣れていない方には多少きついかもしれないです。解答形式についても、指定文字数以内の字句や短文で解答する設問が登場しているなど、なかなか解答しづらかった。

にほんブログ村 ゲームブログへ

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする