ギークスジョブでは、新型コロナウイルス感染症の影響を鑑み、現在実施している【個別説明会】【各種イベント・セミナー】【顧客企業様との商談打ち合わせ】について、一部を除き、オンライン対応を推奨させていただきます。
ユーザーの皆様、顧客企業様、当社社員の安全確保と、安定したサービスを継続的に提供させていただきたく、ご不便をおかけいたしますが、ご容赦くださいますよう、お願い申し上げます。

今夜わかる!テストケース作成手法!

2020/09/24 (木) TECH

今夜わかる!テストケース作成手法!

「テストってなんのためにやるのだろう…」そんなことを考えているエンジニアの方、いませんか?テストは単調的で本当はすごく楽しくて生産的な作業なんです。今回は、ソフトウェア開発におけるテストの重要性や、様々なテストケース作成手法をご紹介していきます。

テストはどうして必要なのか?

エンジニアの皆様、コーディングは好きですか?きっと、これを読んでいる方は好きな方が多いのではないでしょうか。それでは…テストは好きですか?コーディングと比較すると好みが分かれるかもしれません。しかし、ソフトウェア開発におけるテストは、コーディングと同じくらいに重要なものとなります。

リリース後に致命的なバグが見つかりサービスが継続不可となったり、ユーザに多額の損失を与えてしまう事例は後を絶ちません。テストでそれらのバグを全て潰すことは出来ません。けれど、適切にテストを実施していれば、そのうちの何割かは防ぐことが出来たのではないでしょうか。テストは、システムに障害が発生するのを防ぐ「防波堤」としての役割を担っています。

テストケース作成手法ってどうして必要なの?

それでは、テストを語る上で外すことの出来ない「テストケース作成手法」はなぜ必要なのでしょうか?
例として、あなたの上司が職場でこのような言葉をかけてきたとします。


「ユーザ登録画面のテストケースを作ったよ。入力値の組み合わせが11 × 10 × 8パターンあるんだけど、明日の朝10時までにやってもらえるかな?」


全部で何パターンあるかすぐに分かりましたか?正解は880パターンです。きっと真面目なエンジニアは、サボらずに全てのパターンを打鍵することでしょう。仮に1つのテストに5分かかるとして、880パターン × 5分 = 4400分!とても明日の朝10時までに終わりそうにありませんね。


これは極端な例ですが、テストケースを作るのに慣れていないエンジニアは以下のような失敗をしてしまいがちです。

1.不必要なテストパターンが多すぎる

「全ての組み合わせを網羅しなくては」と考えてしまうあまり、意味のないテストケースをたくさん作り込んでしまうタイプです。先ほどの例で示したように、組み合わせが多くなるとあっという間に天文学的なパターン数になってしまいます。

2. 異常系テストが足りていない

「数値の項目にカタカナを入力したら」「データベースに接続出来なくなったら」のような、異常なパターンのテストがそもそも足りていないタイプです。実際のシステム運用では、想定していない事態は頻繁に起こり、異常系テストが足りていないと、そのような時にすぐ壊れる脆弱なアプリケーションになってしまいます。

過不足なく適切なテストケースを作成するには、その手法を体系的に学ぶ必要があります。
次の章からは、具体的にそれらの手法を見ていきましょう!

テストケース作成手法 – 同値分割

同値分割とは、起こりうる全ての事象をいくつかのグループに分け、各グループから代表値を選ぶ手法です。


例として、以下のような仕様を持ったアプリケーションがあるとします。


・ユーザの年齢をテキストボックスに入力する
・年齢は0~200までの数値が入力可能である
・入力後、「チェック」ボタンを押す
・入力された値に応じて、異なるメッセージボックスが画面上に表示される

0~19が入力された場合:「未成年です」というメッセージボックス
20~99が入力された場合:「成人しています」というメッセージボックス
100~200が入力された場合:「とても長生きですね」というメッセージボックス


このアプリケーションにおいて、入力可能な数値の種類はたくさんありますが、
実はそのグループは3つしかないことが分かります。


つまり、以下の図のようなグループです。

テストケース作成手法 – 同値分割の画像

同値分割では、これら各グループの中からそれぞれ10、80、150のように代表値を選び、テストを実施します。

テストケース作成手法 – 境界値分析

境界値分析は、同値分割によって分けられた各グループの境界値付近をテストする手法です。先ほどのアプリケーションですと、19と20、99と100がその境界値にあたります。

テストケース作成手法 – 境界値分析の画像

仕様書の「以下」と「未満」を取り違えたり、プログラムのif文中で不等号「<」と「≦」を誤るなどして混入したバグは、この手法を用いて検出することが出来ます。

テストケース作成手法 – エラー推測

エラー推測は、エラーが発生しそうなデータパターンを推測し、テストケースを作成する手法です。このようなデータパターンというのは、ある程度形式知化されています。


具体的には、以下のようなものがよく用いられます。

1. 最大値・最小値、最大値より大きい値・最小値より小さい値

言語やアプリケーションの仕様によって、入力可能な数値や文字長の最大値・最小値は決まっています。その値を超えた場合に、どのような動作となるかを検証します。
※このパターンは、エラー推測ではなく境界値分析に分類されることもあります。

2. 小数

浮動小数点数のように、桁数が大きなデータを扱うと丸め誤差が生じてしまうものをテストします。

3. 空文字・スペース・ゼロ・NULL

プログラムは「データが存在しない場合」や「NULLを参照した場合」に誤動作が発生しやすくなります。

4. 入力されることを意図していない文字種

数値の項目に「漢字を入力する」「氏名の項目に記号を入力する」など、
本来は入力されるべきでない文字種に対しバリデーションが機能していることを検証します。

5. うるう年、存在しない日付・時刻

日付の項目にうるう年を入力し、正しく扱えることを確認します。
また、「2015/14/12」「26:00:00」のように存在しない日付・時刻を入力してみることもあります。

おわりに

普段、あまりスポットが当たることのない「テスト」という作業。しかしそれは、より品質の高いソフトウェアを作るためになくてはならないものです。記事の中で登場した手法を活用し、効率的かつ効果の高いテストケース作成を実現してみませんか?

シェア

スキルを収入上昇につなげよう

日本最大級のITフリーランス専門エージェント ギークスジョブ

無料登録はこちら
日本最大級のITフリーランス専門エージェント
平均年収

840万円以上

日本最大級のITフリーランス専門エージェント
年間契約数

※2019年4月から
2020年3月の実績

11,606件

いきなりフリーランスとして活動するのは不安...という方へ

業界・専門知識の豊富なコーディネーターが、関東、関西、福岡で無料セミナーを実施しています

こんなお悩みはありませんか?

  • 自分のスキルでフリーランスになれるか不安
  • 安定した収入を得られるのか不安
  • 税金や保険などの手続きがどうなるのか知りたい

まずは、ギークスジョブの無料イベントに参加してみませんか?
まだ本格的に活動する予定がない方も、情報収集の手段として活用されています。
不安や小さな不明点を解消する場として、是非ご利用くださいませ。

イベント一覧を見る
上に戻る
geechs job

このブラウザは未対応です

当サービスは以下のブラウザでご覧いただくことを推奨しております。
また、より安全で快適にご利用いただくために
最新のバージョンでご覧いただくことを推奨いたします。
推奨ブラウザ:Google Chrome、Mozilla Firefox、Microsoft Edge、safari

Google Chrome で閲覧する