新人が任されやすい単体テストとその仕様書の作成について徹底解説!
data analysis
新人が任されやすい単体テストとその仕様書の作成について徹底解説!
アンドエンジニア編集部
2021.08.07
この記事でわかること
単体テストの定義について
単体テスト仕様書の作り方のコツ
単体テスト仕様書を作る上での注意点

そもそも単体テストとは

Python

システム開発において必ず必要となる単体テストは、新人にとってスキルを磨く絶好の機会となります。当記事ではまず最初に、単体テストが含まれるシステム開発工程に関しての情報や、単体テストの概要、結合テストとの違いについてご紹介します。

システム開発工程について

システム開発工程にはいくつかの種類があります。一番有名で多くの企業で採用されているのが「ウォーターフォールモデル」。そのほかに「アジャイル開発」、「スパイラルモデル」、「プロトタイプモデル」といった開発手法も存在します。ここでは、一般的な「ウォーターフォールモデル」を例に、説明します。

「要件定義→外部設計→内部設計→プログラミング→単体テスト→結合テスト→システムテスト→運用テスト→システム移行」

「ウォーターフォールモデル」は、上記のように、上流工程から下流工程に流れていくように実施されます。さらに、開発対象が「インフラ」か「アプリ」であるかによって、多少工程は変わります。今回は「アプリのシステム開発」を基準にした単体テストについて紹介しましょう。

運用テストと受入テストの違いとは? 相違点を理解してシステムの品質を高めよう!

単体テストとは

単体テストでは、プログラミングの対象単位であるモジュールごとに1つずつテストを行っていきます。また、単体テストは、「UT工程」や「Unit Test」とも言い、メソッドなどの1つ1つの小さな単位ごとに行うテストのことを指します。1つの動作が正常にできているかをテストすることが目的となっています。

単体テストと結合テストの違い

「単体テスト」と「結合テスト」の違いについて分からなくなる人もいるでしょう。単体テストについては上述の通りです。結合テストとは、単体テストで正常を確認できたモジュールを複数組み合わせ、正常に稼働できている検証を実施します。

システム開発の工程の「単体テスト」と「結合テスト」の違いを徹底解説!

結合テストは、「CT工程」や「Combined Test」とも言い、複数のモジュールを組み合わせて行うテストです。単体テストで正常が確認できたモジュールも複数結合させた場合に正常に動作するのか、想定外の状況でも要件定義した通りシステム要件が満たされているか、を検証するのが目的となっています。

単体テストは新人にまかされやすい業務

単体テストは新卒入社した社員に最もまかされやすい業務です。理由としては、プロジェクトの理解、仕様書の読みこみ、プログラムの解析などができないと単体テストは実施できないので、システム開発に関する知識を深めるいい機会になるためです。また、他の工程である設計や、結合テストよりも必要なスキルが少なくて済み、大きな問題が発生するリスクが低いことも理由として挙げられます。

単体テスト仕様書の作成

IT specialist

単体テスト仕様書は、単体テストを実施する際に使用するドキュメントです。そのため、開発するシステムの品質を上げるためにも作成担当者には責任が伴う、重要な役割を担っています。システム開発では単体テスト仕様書のほかに、プロジェクト計画書や要件定義書、結合テスト仕様書などさまざまなドキュメントが存在します。

ここからは、単体テスト仕様書の作成に関しての詳細を解説していきましょう。

単体テスト仕様書の作成は「面倒くさい」

単体テスト仕様書の作成において「面倒くさい」という声はよく聞かれます。結論から申し上げると、テストエンジニアという職種もあるように、単体テストが「面倒くさい」と感じるかどうかは人によって分かれるでしょう。

これは、テストが「面倒くさい」と言われる理由が、単純作業の繰り返しであること、無駄な作業が多く効率が悪いことが多いためです。このことを念頭に、単体テスト仕様書を作成する際のポイントを次に紹介しましょう。

単体テスト仕様書を作成する際に大切なポイント3つ

先ほども説明したように、単体テストの実施担当者は、単体テスト仕様書を元にテストを実施します。そのため、単体テストの成否は、単体テスト仕様書の出来にかかっているといっても過言ではありません。ここからは、品質の高い単体テスト仕様書を作るポイントを3つ紹介しましょう。

1.機能を全て洗い出す

単体テスト仕様書に、テストが必要な全ての機能を徹底的に洗い出しましょう。要件定義書や設計書、そしてプログラミング担当者とコミュニケーションを取り、単体テストする機能を洗い出します。それにより、プログラミングすべきものができていなかったなど、機能の漏れが見つかる可能性もあるでしょう。

ただし、システム開発を行う上で、コスト、納期、品質のバランスが重要です。そのため、洗い出したテスト項目を全て実施することができないことも頭に入れておきましょう。

高品質なシステム開発に欠かせない機能要件と非機能要件とは?

2.テスト観点と方法を明確にわかりやすく示す

冒頭でも説明しましたが、単体テストの担当者は新人の場合が多いです。なので新人の場合でも戸惑うことなく単体テストが行える、単体テスト仕様書を作る必要があります。そのために、誰もが実施することができるテストの観点や方法を作成するのが大切です。

単体テスト仕様書を作成する際には、テスト実施者にとって分かりやすい観点を一覧などにしてまとめます。例えば、検索する機能の場合は、「正常にデータを取得することができたか確認すること」がテスト観点になります。網羅性を高め、項目の漏れのない仕様書を作成するためには、全体像を縦横の項目に分けた表であるマトリクスを使用するのも効果的です。

そして、テストケースは、テスト観点を用いて作成されます。テスト実施担当者が、機能の内容を全て理解できていないエンジニアや新人である場合を想定してみましょう。SIer企業などは、テスト担当者をプロジェクトの途中から雇うこともあります。

3.レビューを実施する

単体テスト仕様書は、要件定義書や設計書から作られることが多いです。テスト観点を作成し、まとまった時点で、要件定義を行った人や、設計者にレビューをしてもらいましょう。レビューを実施することで、気付かなかったテスト観点の漏れを防ぐことができます。

また、開発者の立場だけではなく、顧客側の立場で、テスト観点を洗い出すことも有効な方法です。システム開発は、チームで行っていきます。わからないことがあったら、コミュニケーションを積極的に取りましょう。

以上の、単体テスト仕様書を作成する際のポイントは単体テスト工程で大切なポイントです。業務でも役立つことでしょう。

作成する上で注意するべき2点

単体テスト仕様書によっては、システム側には問題がないものの、単体テスト担当者が正しくテストを実施することができず、正常な出力結果が得られていない、といった場合もよくあります。ここからは、単体テストを作成する際に注意するポイントを2つ紹介しましょう。

1.テスト観点が不足している

システム側に不備がないテストで結果が正常ではないというような問題は、単体テスト仕様書にて、テストが必要な機能を十分に洗い出しできていない場合に起こります。また、要件定義書や設計書のインプットが十分にできていないことでも発生するでしょう。テスト観点が不足していると、テストケースが足りない状態となり、機能が正しく動作しているかどうかテストできないまま、次の工程へ進んでしまうことになりかねません。

2.テスト観点の表現がわかりづらい、ズレている

単体テスト仕様書の「テスト観点」がわかりづらく、曖昧なテストケースを作ってしまうことも、問題が発生する要因です。また、テスト観点がシステム要件とズレてしまうと、単体テストをきちんと実施できたとしても、要件通りの正常な動作かどうか、わかりかねる結果となってしまう可能性があります。

以上の、単体テスト仕様書を作成する際の注意点を頭に入れておくことで、実際の業務でも活かすことができるでしょう。

単体テストの効率向上

テスト工程は、効率が重要視されます。なぜなら、テストはあくまで仕様書に基づいた単純作業であり、膨大な量のテスト項目がある場合もあるため、1つ1つの作業に工数を多くかけてしまうと、テスト全体のコストが大きくなってしまうからです。単体テストにかかる工数の例としては単体テスト仕様書作成工数やレビュー工数などが挙げられます。

単体テストの効率を上げるには、単体テスト仕様書のテンプレート化がひとつの方法です。テンプレート化することで、テスト効率が作成者の能力に依存するようなことが減り、品質の偏りも減少します。メンテナンスするためのコストの問題もあるので、案件によって使い分けましょう。

また、エクセル作業の場合、不要な作業が発生することも多いです。そのため、出来る限り、無駄な作業を省くための作成ツールなども開発されています。工数を減らすためには、作成ツールの利用も検討することも大切です。

他にも、開発の前例を参考にしてみるなど、効率を上げる方法はさまざまです。プロジェクトに合った効率化を図りましょう。

仕様書はわかりやすさと効率を意識した作成が肝心!

内容を理解して開発に活用

「単体テスト」はシステム開発の工程の中のひとつで、未然にシステムエラーを防ぐ大切な役割を果たします。知識やスキルを磨くいい機会であるため、新人に任されやすい業務であることも紹介しました。また、単体テスト仕様書を作成する上でのポイントと注意点、効率化の方法についても解説してきました。

単体テストは「面倒くさい」と言われますが、テスト観点・方法を明確に定めたテスト仕様書を作成することで、効率的かつ的確なテストを実施することができます。単体テストを適切に実施することができれば、プログラムの問題を早い段階で見つけることができ、手戻りを減らすことも可能でコスト削減にも繋がります。

最後までお読みいただきありがとうございました!

テストエンジニアの仕事や必要なスキル、テスターとの違いや将来性
Twitterをフォローしよう!
この記事をシェア
Twitter
Facebook
LINE
Hatena
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部オススメコンテンツ

Sponsored
現場社員のリアルな声を「生配信」にてお届けいたします!
Sky株式会社
Sponsored
この記事をシェア
Twitter
Facebook
LINE
Hatena
アンドエンジニアの公式LINEができました! ピッタリの記事や役立つ情報が届きます!

編集部おすすめコンテンツ

Sponsored
現場社員のリアルな声を「生配信」にてお届けいたします!
Sky株式会社
Sponsored