🐥

初めてなのに単体試験を作れと言われたとき

2020/10/22に公開

前置き

文面がかなりフランク

新人ぷろぐらんまが真っ先に受ける仕事といえば、大体は単体試験だと思う。
その中でいきなり単体試験作れと言われてアッハイしてしまった人に
サクッと解説したかったのがこの記事の趣旨。

今回は常識の範囲内での試験観点で単体試験作成とは、の内容になるので
今抱えているものとは明らかに雰囲気が違いそうと思ったら、試験を指示した人に確認してほしい。

手遅れになる前に。

単体試験という概念

なんだかんだわかりやすい、何気によくお世話になるサイト。

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word1557.html

そもそもなんで単体試験を作らないといけないの

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典でも説明している通り
部品が正しく仕様通りに動かないと、結合試験初っ端からコケたり
下手すると重大なバグの原因になったりする。

単体試験を怠ったがために、お客さんから品質悪すぎるとクレームが入り
スケジュールが遅れたり、助っ人メンバーは激務になった有識者から
ロクな説明もないまま投入され泣きながら長時間作業するハメになり、
結果全員不幸になる。実体験したから間違いない。

もう一つ重要な役割として、仕様書や設計書と突き合わせて
単体試験を作成、実施していく内に

なんかこれおかしくね?
を検知できる。

仕様と目的が噛み合っていないとか、一定条件が揃うとおかしくなるなど
仕様漏れ・設計ミス・不備を炙り出すことができる。

  1. 単体試験仕様書をしっかり作って
  2. 単体試験を実施してバグや不備を炙り出し
  3. プログラムをきちんと直して
  4. 単体試験がちゃんと完了すれば

最低限の品質保証と、結合試験でバグが発覚したとき
原因特定やプログラム修正が多少楽になるなど
手間がかかる分良いことがある。

具体的に単体試験は何を試験するのか

  • ユーザーが正しく理想的に操作をして、プログラムが問題なく動作する正常パターン
  • ユーザーが誤った方法で操作して、エラーが発生する異常パターン

この2つで単体試験を作成、実施していく。
何が正常/異常になるかは仕様書や設計書を読み解いていく必要がある。

下記画面を例とする

元ネタ:https://www.php-factory.net/demo/mail/MailForm01/contact.html

この画面には

  • ご用件:コンボボックス(またはリストボックス、HTML上ではセレクトボックス)
  • お名前:テキストボックス
  • 電話番号:テキストボックス
  • Mail:テキストボックス
  • 性別:ラジオボタン
  • サイトを知ったきっかけ:チェックボックス
  • お問い合わせ内容:改行可能なテキストボックス(HTML上ではテキストエリア)
  • 確認/リセット:ボタン

上記9つの部品を元に単体試験作成の観点を説明する。

コンボボックス(リストボックス・セレクトボックス)

コンボボックス(リストボックス・セレクトボックス)ってなんぞや
参照:https://wa3.i-3-i.info/diff5list.html

よくある試験観点

  • 初期表示(画面を表示した直後、何もしていない状態)
  • 選択肢
    • 誤字脱字がないか
    • 順番が合っているか
    • 文字が左右どっちに寄っているか
  • 選択肢の内部で持っている値が、仕様と合っているか
  • 直接編集が可能か否か(コンボボックスの場合)
  • 編集可能な場合は下記
    • 文字数はいくつまで
    • 何の文字なら許容されるか
    • 編集完了後、どこに追加されるか

コンボボックスを一回クリックして選択肢を表示するだけなので、試験作成も楽な部類に入る

後のラジオボタンやチェックボックスでも出てくる

選択肢の内部で持っている値が、仕様と合っているか

この観点が一番重要だったりする。

プログラムでは下記のように
0:選択してください
1:ご質問・お問い合わせ
2:リンクについて
画面では日本語だけを表示しているけれど、プログラム内や通信でやりとりする場合
この内部で持っている値を使って処理を行っていくことが多い。

仕様書やDB設計書で、この文言にはこの値と対応表が載っていることが多いので
可能であれば試験項目にあげておいた方が良い。

テキストボックス

テキストボックスってなんぞや
参照:https://wa3.i-3-i.info/word11629.html

よくある試験観点

  • 初期表示(画面を表示した直後、何もしていない状態)
  • 文字数はいくつまで入るか
    • 何文字以上(最低文字数)
    • 何文字以下(最大文字数)
    • 何文字未満(最低文字数に満たない)
    • 何文字超過(最大文字数を超えてる)
  • 何の文字なら入るか(仕様によっては更に追加もあり得る)
    • 半角英字のみ
    • 半角数字のみ
    • 半角英数字のみ
    • 半角英字/記号のみ
    • 半角数字/記号のみ
    • 特定の記号のみ
    • 日本語のみ
    • 半角英数字/記号/日本語なんでもOK
  • 必須文字(電話番号やメールアドレスなど)
    • ハイフンやアットマークが入っているか

一番パターンが多くて大変なのがテキストボックスの単体試験になる。
パターン数は単純計算で
[以上、以下、未満、超過] × [何の文字が入るか]
となるため、試験項目数がみるみる増えていく。

頭の中だけでパターン網羅しようとすると、ほぼ確実に漏らして品質悪化を招くため
マトリクス表を使ってパターン整理する必要がある。

マトリクス表を使うことで、絶対あり得ない条件の組み合わせが出てくる可能性もある。
試験の保証だけではなく、自分が楽をするという意味でも作った方が良い。

※マトリクス表の作り方はこちらを参照
http://www.j-school.ac/seminar/study/vol9/[vol9][K_Mori]TestMatrix.pdf

ラジオボタン

ラジオボタンってなんぞや
参照:https://www.724685.com/word/wd120829.htm

よくある試験観点

  • 初期表示(画面を表示した直後、何もしていない状態)
  • 選択肢
    • 誤字脱字がないか
    • 順番が合っているか
  • 選択肢の内部で持っている値が、仕様と合っているか

試験観点はコンボボックスとあまり変わらない。

チェックボックス

チェックボックスってなんぞや(ラジオボタンと同じ)
参照:https://www.724685.com/word/wd120829.htm

よくある試験観点

  • 初期表示(画面を表示した直後、何もしていない状態)
  • 選択肢
    • 誤字脱字がないか
    • 順番が合っているか
  • 複数選択しても問題ないか
  • 選択肢の内部で持っている値が、仕様と合っているか

チェックボックスは複数選択できるため、複数選択しても問題ないことと
内容によっては組み合わせを考慮する必要もある。

改行可能なテキストボックス(HTML上ではテキストエリア)

説明省略

よくある試験観点

  • 文字数はいくつまで入るか
    • 何文字以上(最低文字数)
    • 何文字以下(最大文字数)
    • 何文字未満(最低文字数にも満たない)
    • 何文字超過(最大文字数を超えてる)
  • 何の文字なら入るか(仕様によっては更に追加もあり得る)
    • 半角英字のみ
    • 半角数字のみ
    • 半角英数字のみ
    • 半角英字/記号のみ
    • 半角数字/記号のみ
    • 特定の記号のみ
    • 日本語のみ
    • 半角英数字/記号/日本語なんでもOK
  • 何行まで入るか

試験観点はテキストボックスとあまり変わらないが、改行が何回までできるかの
制限がついている場合もある。

ボタン

説明省略

よくある試験観点

  • ボタンをクリック(試験上では押下すると書く)する
    • 条件を満たしている場合、正常に処理が行われるか
    • 条件を満たしていない場合、処理が行われないか
    • 無条件の場合、正常に処理が行われるか
  • メッセージを表示
    • 正常に処理が行われた場合のメッセージ
    • エラーが発生した場合のメッセージ
  • リセットボタンの場合は、コンボボックス~テキストボックスの内容が初期化されるか

ボタンの試験は総合的なものになる場合が多い。

上記にあげたコンボボックス~テキストボックスが正常/異常かを判定して
処理を行う行わない、特定のメッセージを表示するなど
マトリクス表までは行かなくても、ボタン押下時の条件パターンを考慮する必要がある。

他にも色々あるけれど

以上の基本的な考え方があれば、単体試験作成に大きく困ることはないはず。

ここではあげなかったもので、表形式で一覧表示や、マップとか3Dを使う系も
何が正常で何が異常かをはっきりさせておけば大きく外すことはない。

単体試験のサンプル

実際に作ったもの見せてくれないと納得できない
(この記事の価値が超薄い)と思うので、エクセルで作ったかんたんなものをあげてみる。
(エクセルファイル自体はアップできないのでスクショ)

よくある単体試験項目書に近いアレ

マトリクス表を使用したパターン試験

書式は各企業やプロジェクトによって異なるので参考程度に。

次回マトリクス表の記事をば。

Discussion