share facebook facebook twitter menu hatena pocket slack

2018.06.19 TUE

ソフトウェアをテストする際に気を付ける点

宇敷 久里也

WRITTEN BY 宇敷 久里也

ただ闇雲にテストしていてもバグを見つけることは難しいです。
そこでどこを重点的にテストするれば良いか説明します。

テストの前提

まずテストはまったくバグの無いソフトウェアを作ることはできません。
なので全てをテストしようとするのではなく、十分なテストをすることが大切です。

まずはいくつかテスト手法を紹介します。

ホワイトボックステスト

ホワイトボックステストとはプログラムの理論構造が正しいかを分析するテストです。
ホワイトボックステストですべての処理をテストすることでカバレッジ100%となります。
しかしカバレッジ100%になるまでテストするには、多くの予算と時間がかかる上、カバレッジ100%にしてもバグの無いプログラムとはならないので、一般的なソフトウェアなら60~90%で十分という説が多いです。
カバレッジを何%にするかはROIを考慮して決めるといいと思います。

ROIとは、Return On Investmentの略語で、投資したコストに対する効果を見る指標です。計算式としては下記になります。
ROI=利益÷投資コスト×100

TDD再考 (2) – 何故、ほとんどのユニットテストは無駄なのか?

ステートメントカバレッジ

if文など含む処理はフローチャートで表すことができます。
そのフローチャートにある命令文(ステートメント)を少なくとも1回は実行するようにテストケースを書きます。
しかしif文の処理が間違えている場合などにはバグを見つけることはできないので、このテスト手法は弱いテスト手法です。

ブランチカバレッジ

ブランチカバレッジは、分岐コードに対してそれぞれの判定条件がTRUE,FALSEの結果を少なくとも一回ずつも打つようにテストケースを書きます。
そうすることによりステートメントカバレッジでテストしきれなかった部分をテストすることができますが、テストケースの数がかなり増えてしまうというデメリットがあります。

カバレッジでテストできないバグ

  • プログラムのループに関するバグ
  • 要求仕様自体が間違っていたり、機能が備わっていないバグ
  • データに関するバグ
  • タイミングに関するバグ

ブラックボックステスト

ブラックボックステストとはプログラムの仕様が正しいかをテストすることです。
ブラックボックステストは、ソースコードを利用したり見ることなく、様々な入力を行うことで、テストを行います。
ブラックボックステストでよく使われる手法として同値分割法と境界値分析法があります。
詳しくは同値分割・境界値分析の解説に書いてあります。

テストする際に気を付ける点

  • 自分が行ったテストで、どこまでテストが出来ていてどこがテスト出来ていないかを把握する。
  • テストケースを書くときはいつ、誰がやっても同じうような結果が得られるように書くように心がける。
  • 境界値にバグが潜んでいることが多いので、境界値周辺を念入りにテストする。
  • 複雑な処理をしている箇所にバグがあることが多いので、複雑な処理をしている箇所を念入りにテストする。
  • 適切なテスト手法を使うようにする。

まとめ

テストとして十分なパターンを出してテストする。
ただしパターンをすべて出していては量が多すぎて時間が足りなくなるので、バグが出そうな箇所や、絶対にバグを出してはいけない箇所を、選別して、テストする必要があります。

元記事はこちら

ソフトウェアをテストする際に気を付ける点

宇敷 久里也

宇敷 久里也

WEBプログラマです。WEBに関することは、なんでも興味あります。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。