---
# System prepended metadata

title: Chapter14-8「テスト」
tags: [基本情報技術]

---

# Chapter14-8「テスト」

## 7/9(土)

###### tags:`基本情報技術`

さつき：

> 作成したプログラムは、テスト工程で各種検証を行い、欠陥の洗い出しと改修を行うことで完成に至ります。

* テストの流れ
    * 単体テスト
    * 統合テスト
    * システムテスト
* ブラックボックステストとホワイトボックステスト
    * ブラックボックステスト
        * モジュールの内部構造は意識せず、入力に対して適切な出力が仕様通りに得られるかを検証します。
            > とりあえず実際に動かしてみます、てことかな？
            >  [ブラックボックステスト～概要、技法、テスト観点について～](https://webrage.jp/techblog/black_box_testing/)
    * ホワイトボックステスト
        * 逆にモジュールの内部構造が正しく作られているかを検証します。
            > デバッグ調査みたいなもの？

* テストデータの決め事
    * 同値分割
        * データ範囲を種類ごとのグループに分け、それぞれから代表的な値を抜き出してテストデータに用います。
    * 限界値分析
        * 境界前後の値をテストデータに用います。
* ホワイトボックステストの網羅基準
    * 命令網羅
        * 全ての命令を最低１回は通すようにするテスト
    * 判定条件網羅
        * 全ての分岐を最低１回は通すようにするテスト
    * 条件網羅
        * 個々の条件が真と偽の値を最低1回は満たすようにするテスト
    * 複数条件網羅
        * 複数の条件がとりうる、真偽値全ての組み合わせを網羅するテスト
* トップダウンテストとボトムアップテスト
    * トップダウンテスト...上位モジュールから先にテストを済ませていく。
        > [トップダウンテストとは](https://medium-company.com/%E3%83%88%E3%83%83%E3%83%97%E3%83%80%E3%82%A6%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88/ )
        > 上位から結合試験を実施するので、下位モジュールはまだ未テストです。
        > そのため、下位モジュールには「スタブ」と呼ばれる、仮のモジュールでインタフェースの確認を行います。
    * ボトムアップテスト...下位モジュールから先にテストをすませていく。
        > 上位モジュールには「ドライバ」とよばれる、仮のモジュールでインターフェースの確認を行います。
    * その他...折衷テスト、ビッグバンテストなど。
* リグレッションテスト
    * プログラムを修正したときに、その修正内容がこれまで正常に動作していた範囲に悪影響を与えていないかを確認するためのテスト。
* バグ管理図と信頼度成長曲線
    > へー。信頼度成長曲線。。
* 過去問
    * 問１：OK
    * 問２：OK
    * 問３：OK！
    * 問４：OK！
    * 問５：OK


にわ：
- 読み込み
    * 単体テストにおける「ブラックボックステスト」、「ホワイトボックステスト」
        * ブラックボックステスト：モジュールの内部構造は見ず、入出力が仕様通りかを検証する
        * ホワイトボックステスト：モジュールの内部構造が正しく作られているかを検証する
    * テストデータ作成基準
        * 同値分割：データ範囲を種類ごとに分け、それぞれから代表的な値を抜き出して利用する。
        * 限界値分析：データ範囲を種類ごとに分け他グループの境界値前後の値を利用する。
    * ホワイトボックステストの網羅基準（どこまで網羅するか）
        * 命令網羅：全ての命令を最低1回は通すようにする
        * 分岐網羅：全ての分岐を最低1回は通すようにする
        * 条件網羅：個々の条件が真・偽の値を最低1回は満たすようにする
        * 複数条件網羅：複数の条件が取りうる真偽値全ての組み合わせを網羅する
    * 結合テストにおける「トップダウンテスト」、「ボトムアップテスト」
        * トップダウンテスト：上位モジュールから先にテストを済ませていく（下位モジュールはスタブにしたりして）
        * ボトムアップテスト：下位モジュールからテストを済ませていく（この場合上位モジュールは「ドライバ」という仮モジュールを使う）
    * 信頼度成長曲線（https://itmanabi.com/reliability-growth-curve/）
        * 縦軸に累積バグ件数、横軸にテスト項目消化件数でS字っぽくなるのが良いらしい。
        * S字＝最初はバグ抽出が遅いが、途中からバグ件数が加速度的に上がって頭打ちになり、収束するので。
- 過去問
    * 問1：OK
    * 問2：OK
    * 問3：OK
    * 問4：OK
    * 問5：OK



ちさと：
* テストの流れ
    * 単体テスト
        * 各モジュールごとにテストする
            * ブラックボックステスト
            * ホワイトボックステスト
    * 結合テスト
        * 複数モジュールを繋げてテストする
    * システムテスト
        * システム全体で機能テスト、負荷テスト、性能テストなどを行う
* ブラックボックステスト
    * 内部構造は意識せず、入力に対してちゃんと出力されるかを検証
* ホワイトボックステスト
    * 中でどんな処理が行われてるか確認しながら検証
* テストデータの決め事
    * ブラックボックス
        * 「何を検証するため」のデータなのかを明確にすることが大切
        * この基準として使われるのが、「同値分割」と「限界値分析」
        * 同値分割
            * グループごとに代表の値を抜き出してテストに使う
        * 限界値分析
            * グループの境界にある値をテストに使う
    * ホワイトボックス
        * 「どこまでのテストパターンを網羅するか」
        * 命令網羅
            * 全ての命令を最低１回は通すようにするテスト
            * yesの分岐を通るテストパターンがあればおk
        * 分岐網羅
            * 全ての分岐を最低１回は通す
            * yesとnoの分岐が必要
        * 条件網羅
            * 個々の条件が真と偽の値を最低１回は通す
            * それぞれ１度ずつは真と偽が必要
        * 複数条件網羅
            * 複数の条件がとる全ての組み合わせ
    * トップダウンテスト
        * 上位モジュール（個々のモジュールを使ってより複雑な機能を実現するモジュール）からテストを行う
        * 下位モジュールが未テストの時は「スタブ」と呼ばれる仮モジュールをつけてインターフェースを確認
    * ボトムアップテスト
        * 下位モジュールからテストを行う
        * 上位モジュールが未テストの時は「ドライバ」と呼ばれる仮モジュールをつける
    * 折衷テスト
    * ビックバンテスト
    * リグレッションテスト
        * 修正後、修正内容が今まで正常に動作してた内容に影響を与えていないか確認するテスト
    * バグ管理図
        * テスト項目消化件数と発見したバグ件数を表した図
* 過去問
    * 問１：おk
    * 問２：おk
    * 問３：おk
    * 問４：おk
    * 問５：？数学にこうゆうやつあったなぁ。。　はっ！わかった！りかい！