記事検索

検索ワードを入力してください。
Sky Tech Blog
単体試験で​バグを​潰すたった​3つの​心得

単体試験で​バグを​潰すたった​3つの​心得

ソフトウェア開発における単体試験(Unit Test)は非常に重要性です。この記事では、単体試験(Unit Test)でバグを見つけ出すために意識すべきポイントを3つ紹介します。

ソフトウェア開発において、単体試験(Unit Test)は非常に有用ですが、作成者のスキルによってその効果には差が出ることがあります。
mock化するために苦労することも多く、単体試験を行うのは大変ですよね。

そこで、プログラミング言語に依らない基本的な考え方として、経験上バグが出やすい単体試験作成の心得(ポイント)を3つに絞ってみました。
これらのポイントを意識するだけで、費用対効果の高い単体試験を実現することができます。

1. length=0と​null値の​両方とも​試験するべし

文字列や配列を取り扱うコードの試験時に有効です。
正常な値はもちろん試験するとして、長さ0とnull値だった場合に意図した動作となることを確認しましょう。

length=0とnull値の両方を試験することで、以下のようなバグを潰せます。

  • 0文字を考慮していない(IndexOutOfRange系エラー)
  • nullを考慮していない(NPE系エラー)

2. 配列は​要素数0と​3を​試験するべし

配列を取り扱うコードの場合、最低限、要素数0個と3個は試験すべきと考えます。
1つ目の心得と同じ観点から0個は必ず試験すべきとして、なぜ1個でも2個でもなく、3個を試験すべきなのか。
それは、要素数0個と3個を試験することで、以下のようなバグを潰せるからです。

  • ループを最後まで回さないといけないところ、1周で抜けてしまっている
  • すべての要素を見ないといけないところ、最初の要素または最後の要素しか見ていない

3. 文字列比較は​前方​一致/後方​一致も​試験するべし

文字列比較を行うコードの場合、対象文字の前方一致および後方一致の観点で試験値を用意するとよいでしょう。
具体的には以下のような感じです。

<例>
/tmpディレクトリ直下に存在する「index.csv」というファイルを読み込んで処理を行う

<試験値>
/tmp/index.csv ← これはOKパターン
/tmp/index.csv.csv ← NGパターン、後ろに余計なものがついている
/tmp/tmp/index.csv ← NGパターン、前に余計なものがついている

比較ロジックには==比較、startsWith、endsWithなどさまざまな方法がありますが、これらが適切に選択されているかを検証することが重要です。

まとめ

同値分割や境界分析などはよく聞きますが、それ以外でもちょっとした工夫でバグを潰せる3つのポイントをピックアップしてみました。 これらを活用して、費用対効果の高い単体試験を目指しましょう!


XFacebookLINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム