応用情報22年秋 午前 問44

【中分類】
システム開発技術−5. ソフトウェアコード作成及びテスト−(7)ソフトウェアユニットのテスト

【問題を解く前に】
 テストの話ってことは、わかると思います。

 システム開発は、

 要求分析→外部設計→内部設計(詳細設計)→プログラミング→テスト→運用

と進んでいくという考え方があります。

 ただ、これは、1つの方法で、概要設計と基本設計というのが出てくるモノもありますし、
 デザイナーとかWeb系の人は、いやいや、戦略→構造→骨格→表層でしょ!と
 言うかもしれないし、
 いまどきの人は、「イテレーションは?」、「スプリントは?」と言い出すかもしれない。

 しか〜し!!

 情報処理試験は、そのいずれでもな〜い!

 シラバスに、その開発の順番が記述されている。
 (開発の順番という言葉は使ってないけど)

  1. システム要件定義
  2. システム方式設計
  3. ソフトウェア要件定義
  4. ソフトウェア方式設計・ソフトウェア詳細設計
  5. ソフトウェアコード作成及びテスト
  6. ソフトウェア結合・ソフトウェア適格性確認テスト
  7. システム結合・システム適格性確認テスト
  8. ソフトウェア導入
  9. ソフトウェア受入れ
  10. ソフトウェア保守

 この用語は、共通フレーム(SLCP-JCF)のいいまわし。

 これ、そのものは出ないと思うけど、自分たちのいつも使っている用語と違うという認識は持ったほうがいいです。
 つまりですね、自分たちの仕事と、情報処理試験での開発の考え(それがシラバスに出ている)をチェックして、自分の知らない開発手法とがか書かれていないかどうかの確認は、いるかも?

 今回の問題は、「5. ソフトウェアコード作成及びテスト」に相当すると思われている。
 つまり、単体レベルにおいては、プログラムを書く人=ユニットテストをする人という想定なわけね。
 それで、このプロセスは、一体になっているので、

    プログラムを作ってからテストしても
    テストデータを作ってからプログラム書いても
        (TDD、テストファースト

 でも、どっちでもいいわけです。

 ま、それはさておき、「5. ソフトウェアコード作成及びテスト」について。
 一般に言われる単体テストが、シラバスの「(7)ソフトウェアユニットのテスト」にあたり、その中の、「テストの手順」に、ユニットテストってある。今回の出題は、そこから。
 

【解き方】
 具体的には、ユニットテストとは、JUnitなんかでやる、あのテスト。JUnitとかを使っている人は、assertTrueやassertFalseを入れて、論理式が成立するかなどをチェックするので、これが、「アサーションチェック」だということは、わかると思います。

 スナップショットダンプというのは、あるところで切って、値を全部出す感じなので、違います。

 コード追跡は、コードを追跡すること(ってまんまやん ^^;)
 テストカバレッジは網羅率の話なんで、
 これは、違いそうですよね。

【答え】
(ア)

【解き終わって】
 とはいえ、単体テストには、他にもやり方はいっぱいある。
 なので、職場では、こんな単体テストのやり方をしないかもしれない。
 でも、試験には、こんな問題が出る。

 ということは、そーいう手法は(会社ではやらなくても)お勉強しておく必要があるということなのです。