くらしのマーケット開発ブログ

「くらしのマーケット」を運営する、みんなのマーケット株式会社のテックブログ。積極採用中です。

テストレベルとカバレッジとは!?

こんにちは、QAエンジニアのざきです。
冬といえば鍋ですね、好きな鍋は「もつ鍋」です。

f:id:curama-tech:20201119195257j:plain

はてさて
今日のブログは「テストレベル」と「カバレッジ」について解説します。
このブログを書くにあたり、英語を勉強している友人に聞いてみました。

Q1.テストレベルの意味って何だと思う?
A1.「どれだけちゃんとテストできているのかを示すレベル?」

Q2.カバレッジの意味って何だと思う?
A2.「え、知らない。聞いたことない。」

現場からは以上です。早速解説に入ります。

「テストレベル」とは
簡単に言うと、システム・ソフトウェアをテストするタイミングです。
※「テストフェーズ」や「テストステージ」とも呼びます。

開発手法により意味合いや取り扱いの範囲は変わりますが、代表的なテストレベルは以下の4つに分類されます。

f:id:curama-tech:20201119200921p:plain
●テストレベルの種類

単体テスト(UT)
 ユニットテスト[Unit Test]のテスト対象は、「コンポーネント」とも呼ばれるソフトウェア単体になります。
 テストの単位は、関数 / クラス / モジュール / コードなど、開発手法により異なりますが、ひとまとまりで動作する最小単位を指します。
 →くらマでは開発エンジニア自身で単体テストを行います。

結合テスト(IT)
 インテグレーションテスト[Integration Testing]のテスト対象は、2つ以上の「コンポーネント」の組み合わせです。
 また、「コンポーネント」と「サブシステム / データベース / 各種サービス」との組み合わせもテスト対象になります。
 結合テストの対象は、それぞれが単体テストを実施し欠陥が解消されている事が前提となります。
 →くらマでは結合テスト以降がQAチームの担当となります。

・総合テスト(ST)
 システムテスト[System Testing]のテスト対象は、全てのコンポーネントやサブシステムを統合した「システム全体」になります。
 全ての機能を統合した時に欠陥がないことを確認するため、実際の本番環境と同じ条件下、かつ、同様の使われ方を意識したテストを行います。
 もちろん、単体テストおよび結合テストを実施した上で欠陥が解消されている事が前提となります。

・受入/検収テスト(UAT, AT)
 (ユーザー)アクセプタンステスト[(User)Acceptance Test]のテスト対象は、総合テストを実施し検出した欠陥が解消された「システム全体」になります。
 受入/検収という名前の通り、大半は、開発の依頼元が納品前に行うテストとなり、実際に利用するユーザーがテストするケースも多いです。
 対象となるシステム・ソフトウェアが要求水準を満たしているかの検証試験や、利用者の意図通りに操作できるかの妥当性試験・ユーザビリティテストも行われます。

※上記は、あくまでも代表例として取り上げていますので、実際の開発現場や開発手法によって内容や取り扱いが変わる事があります。

テストレベルについての解説は以上です。そこまで難しい話ではないと思いますので覚えておいてもらえると嬉しいです ^^

カバレッジ」とは
テスト対象となるシステム・ソフトウェア全体のうち、どの程度のテストを実施した/実施しようとしているのかを割合(%)で表した「網羅率」を指します。
テストカバレッジ[Test Coverage]と呼ぶ事もありますが、大体は「カバレッジ」だけでも通じると個人的には感じています。

f:id:curama-tech:20201117213220p:plain
カバレッジの例

それぞれのカバレッジについて掘り下げると説明が長くなるので今回は省略しますが、計測する視点により様々なカバレッジが存在します。
テストを実施するにあたり、カバレッジ (網羅率)の測定/分析を行うことは、プロダクトの品質向上にとても大きな意味を持ちます。

以前も書きましたが、「全数テストを行う事は不可能」のテスト原則に基づき、計測視点別のカバレッジでテストを実施した/実施しようとしているのかを把握することで、テストの抜け・漏れの有無をチェックしやすくなります。
もしも過不足に気づいたら、そこから軌道修正する事でテストの妥当性を向上させる事もできます。

まとめ
①テストレベル(テストを行うタイミング)を理解しましょう。
無作為にテストするのではなく、テストレベルを把握して進めることで、後工程の出戻り(欠陥の検出・修正・再テスト、仕様変更等)を減らすことにも繋がります。

カバレッジ(網羅率:%)を意識しましょう。
開発されたシステム・ソフトウェアに係る全てをテストする事は不可能です。おさえるべき要点を掴み、カバレッジを読み取って、時には不要テストを切り捨てる覚悟を持ちましょう。

これからも、テストに関するネタを執筆していきます!
初歩的な内容にもなりますが、時に誰かの復習になったり、また時には誰かのテストに対する興味・関心を持っていただくキッカケになるかもしれません。
今回もお付き合いいただきありがとうございました!