今夜わかる!テストケース作成手法!
「テストってなんのためにやるのだろう…」そんなことを考えているエンジニアの方、いませんか?テストは単調的で本当はすごく楽しくて生産的な作業なんです。今回は、ソフトウェア開発におけるテストの重要性や、様々なテストケース作成手法をご紹介していきます。
テストはどうして必要なのか?
エンジニアの皆様、コーディングは好きですか?きっと、これを読んでいる方は好きな方が多いのではないでしょうか。それでは…テストは好きですか?コーディングと比較すると好みが分かれるかもしれません。しかし、ソフトウェア開発におけるテストは、コーディングと同じくらいに重要なものとなります。
リリース後に致命的なバグが見つかりサービスが継続不可となったり、ユーザに多額の損失を与えてしまう事例は後を絶ちません。テストでそれらのバグを全て潰すことは出来ません。けれど、適切にテストを実施していれば、そのうちの何割かは防ぐことが出来たのではないでしょうか。テストは、システムに障害が発生するのを防ぐ「防波堤」としての役割を担っています。
テストケース作成手法ってどうして必要なの?
それでは、テストを語る上で外すことの出来ない「テストケース作成手法」はなぜ必要なのでしょうか?
例として、あなたの上司が職場でこのような言葉をかけてきたとします。
「ユーザ登録画面のテストケースを作ったよ。入力値の組み合わせが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フリーランス専門エージェントとして20年以上にわたり、ITフリーランスのご支援を行っています。
フリーランスを初めて検討される方はもちろん、現在フリーランスとしての今後に不安を感じている方、今よりもっと充実したフリーランス生活を楽しみたい方は、ぜひお気軽に相談ください。ITフリーランス専任のキャリアアドバイザーがマンツーマンでサポートいたします。
▽ 無料登録(エントリー)はこちら
https://geechs-job.com/entry
まだフリーランスになることに迷いがある方へは、独立のご相談から承ります。これまでのご経歴やキャリアの目標をお伺いしながら、お一人おひとりに寄り添ったキャリアプランのご提案をいたします。
▽ 独立相談会への無料エントリーはこちら
東京:https://geechs-job.com/event/details/1
大阪:https://geechs-job.com/event/details/2
福岡:https://geechs-job.com/event/details/3
名古屋:https://geechs-job.com/event/details/189
その他のおすすめ記事
フリーランスのクラウドエンジニア需要は堅調。マイグレーションとDX加速で拍車|ITフリーランスをサポートするギークスジョブ
ITフリーランスの方のための『お役立ち情報』をご紹介しています。この情報のテーマはフリーランスのクラウドエンジニア需要は堅調。マイグレーションとDX加速で拍車です。geechs job(ギークスジョブ)では、「フリーに生きる」ためのノウハウをご紹介し、ご希望のキャリアやライフプランを実現できるように、サポート致します!
ITフリーランスの案件探しならgeechs job
IT業界・企業情報の専門知識を持ったコーディネーターが、あなたに合う案件をご紹介。
ITエンジニアとしてのキャリアに弾みを付けませんか?
- ・独立して新しいキャリアを築きたい
- ・スキルを磨いて、更なる高みを目指したい
- ・今よりも高い報酬を
ITフリーランスエージェントのgeechs jobが、あなたの未来に向けて伴走します。