【システム開発】テストの種類には何がある?

こんにちは!CODE CLUB965のKです!

今回は、システム開発におけるテストについて書こうと思います。
簡単にテストと言っても、実は非常に奥が深いのです。

テストは大まかに3種類ある

テストは大きく3種類に分かれます。
以下の3種類です。

1. 単体テスト
2. 機能テスト
3. シナリオテスト

単体テストとシナリオテストは、聴き慣れない方も多いかもしれません。

順番に解説をしていきます。

1. 単体テスト

メソッド単位のテストです。

単体テストは、プログラムを書いてテストできるようにするのが一般的です。

少しイメージが沸きづらいと思うので、具体的な例で見ていきます。

足算をしてくれるメソッドを実装したとします。
2つの数字を引数を受けて、2つの数字を足した数を返してくれます。

function plus (a, b){
    return a + b;
}

この関数をテストできるコードを書くのが単体テストです。

例えば、2と3を渡して5が返るかどうかをコードとして書いてあげます。

これにより、メソッド単位のテストができるようになります。
システム開発の最小単位のテストになります。

2. 機能テスト

機能テストとは、名前のままですが機能のテストです。
例えば、「ログイン機能」「ログアウト機能」といった形で、機能単位でテストを実施していきます。

恐らく、テストと言うと機能テストをイメージする方が多いのではないでしょうか。

1つの機能は、複数のメソッドが組み合わさって実装されていることが多いはずです。
従って、機能テストは、単体テストよりも範囲が広がったテストになります。

3. シナリオテスト

機能テストよりもさらに範囲を広げたテストが、シナリオテストです。

名前の通り、特定のシナリオが正しく動作するかをテストします。

例えば、ECサイトでは「商品を検索して、1番安いお茶を購入する」というテストです。

以下で1つのテストケースになります。

1. ログインをする
2. 商品一覧にアクセスをする
3. 「お茶」で検索をする
4. 安い順に商品を並び替える
5. 1番安い商品を選択する
6. 購入手続きをする

システムを、機能単位ではなく、特定のシナリオがちゃんと成立するかの観点でテストします。

より実践的なテストですね。

1番の理想は全てのテストを実施すること

当たり前ですが、全てのテストを実施するのが理想です。

単体テストで、メソッド単位の品質を担保する。
機能テストで、機能単位の品質を担保する。
シナリオテストで、シナリオレベルの品質を担保する。

このような形で、低いレイヤーから高いレイヤーに向けて、順番に品質を積み上げていけたら、非常に高い品質のシステムが開発できます。

現実的には、どこまでテストするかはテストに割けるリソース(時間、要員)によりますね。

機能テストをやらないことはあり得ないと思いますが、単体テストとシナリオテストは、リソースによっての判断になります。

単体テストかシナリオテストのどちらかしかできないとすると、私はシナリオテストを実施した方が良いと考えます。

機能の単位でシステムを見ると、やはりミクロな視点になってしまうので、ユーザー視点でのテストになるシナリオテストはやるべきです。

最後に

今回は、テストの導入的な話について書きました。
テストの知識・技術はシステム開発において非常に重要なので、これからエンジニアを目指す方は最低限の知識は持っておきましょう!

それでは、また!

Follow me!