基本情報技術者の実務クエスト

【基本情報の実務】テスト項目は「思いつく値」を並べても増えない

買い物アプリを作る依頼主から、数量入力欄のテスト項目づくりの相談が届く。

「新しい買い物アプリの数量入力欄です。半角数字で1から99までの整数だけ受け付けて、0以下や100以上、文字や記号や空欄はエラーにする仕様です。このあと動作確認をしたいのですが、どんな値を試せばよいか整理できていません。どんな入力を試して、そのときどう動けば正しいか、書き出してもらえますか?」

基本情報の知識がここで力になるのは、値を「思いつく順」に出すのをやめたときだ。5・10・50・80と並べても、4回とも同じことを確かめている項目の数は増えるが、確かめられる範囲は広がらない。この記事では、その分け方から整理する。

この記事は、学習アプリ「シカクエ」の実務クエスト「数量入力欄のテスト項目をつくる」を読み物として再構成したもの。人物・依頼はすべて架空です。実際のテスト項目の様式や範囲は、案件や職場によって異なります。

まず結論:まとまりに分けて、1つずつ取る

まとまり範囲代表として取る値
小さすぎる0以下0/マイナスの値
正しい1〜991/途中の値/99
大きすぎる100以上100
数でない文字・記号・空欄などそれぞれ1つずつ

同じまとまりの中の値はアプリから見ると、同じ扱いである。5も50も、1〜99の中の値にすぎない。

だからまとまりごとに1つ取れば足りる同じまとまりから3つ取っても、1つ取ったのと変わらない

これが分かると項目の数を減らしながら、抜けを減らせる数を増やす作業ではなくなる

そしてまとまりの「端」だけは、別扱いにする。そこが、いちばん間違いが出るところだからである。

端の両側を、必ず取る

作る側が書くのは「1以上99以下なら通す」といった条件である。

ここで起きる間違いはほとんどが1つずれである。「より大きい」と「以上」を取り違える形になる。

1つずれていると1が通らない100が通ってしまう50を試しても、どちらも見つからない

だから端の値と、その隣を取る。

両側で1組である。片方だけでは、ずれを見つけられない

0だけ試して通らなければ「正しく弾いた」ように見える。ところが1も弾いていたかもしれない。1を試してはじめて分かる

ここがテスト項目づくりでいちばん効く一手である。

仕様に書いていない入力を、どう選ぶか

仕様には「文字や記号や空欄はエラー」とある。ここで困るのは受け付けないものは、数えきれないことである。

仕様は受け付けるものを書くことはできる。受け付けないものを全部書くことはできない

だからテスト項目の側で、代表を選ぶことになる。性質の違うものを1つずつ取る。

後ろの4つが大事である。「数字ではないもの」より、「数字に見えるもの」のほうが通ってしまいやすい

全角の数字は、とくに現場で起きる。入力する人には、見た目の区別がつきにくいためである。

だから仕様に書いていないからといって、試さない理由にはならない書いていないから試す、という順になる。

「どう動けば正しいか」を、先に書く

ここを飛ばすとテストが感想になる

期待する動きを書かずに試すと、「動いた」「なんか変」という記録しか残らない。あとから見て、正しかったのかが分からない

そして「エラーになる」だけでは足りないエラーの出方まで書く

2つ目は、書かれていないことが多い作る側は気にしないが、使う人には大きい

消えると、最初から入れ直すことになる。間違えた人に、もう一度全部やらせる形になる。

仕様に書いていないならテスト項目を作る段階で聞く作ってから直すより、ここで決めるほうが早い

テスト項目づくりは、仕様の抜けが見つかる場でもある

テスト項目の例

数量入力欄 テスト項目(第1版)

仕様:半角数字、1〜99の整数のみ受け付ける。それ以外はエラー。

番号入力する値ねらい正しい動き
1(空欄)未入力エラー。欄の下に理由を表示
20下の端の外エラー
31下の端受け付ける
450正しい範囲の途中受け付ける
599上の端受け付ける
6100上の端の外エラー
7-1マイナスエラー
81.5整数でないエラー
910(全角)数字に見えるが半角でないエラー
10文字エラー
11@記号エラー
12(空白)5先頭に空白要確認(下記)
13012先頭に0要確認(下記)

3・5 と 2・6 は、必ず対で実施してください。片方だけだと、条件が1つずれていても気づけません。

エラーの表示について(全項目共通)

エラーのとき、次の3点をあわせてご確認ください。

  1. どこに、何と表示されるか
  2. 入力した値が、欄に残るか消えるか
  3. 次へ進むボタンが、押せる状態か

ご確認いただきたいこと(仕様に記載がない点)

  1. 先頭や末尾の空白は、取り除いて受け付けますか。エラーにしますか。
  2. 「012」のように先頭に0が付く場合は、12として受け付けますか。
  3. エラーのとき、入力した値は残しますか。
    消える場合、お客様は最初から入れ直すことになります。

3点とも、作ってから変えるより、いま決めておくほうが早く済みます。

「ねらい」の列を付けたなぜその値を試すのかが残ると、項目を減らすときに判断できる

対で実施してください、と本文で書いた表の中だけだと、順番に消化されて対の意味が失われる

エラーの確認3点を全項目共通として外に出した。各行に書くと、表が読めなくなる

最後の3つはテスト項目ではなく、仕様の質問である。作る前に出す

作り方の手順

  1. 思いつく順に値を出すのをやめる
  2. まとまりに分ける。小さすぎる/正しい/大きすぎる/数でない。
  3. まとまりごとに1つ取る。
  4. 端は別扱いにする。
  5. 端の両側を対で取る。片方だけでは、ずれが見つからない。
  6. 仕様に書いていない入力の代表を選ぶ。
  7. 「数字に見えるもの」を入れる。全角・小数・空白付き。
  8. 期待する動きを、先に書く
  9. エラーの出方まで書く。値が残るかどうかを含める。
  10. 仕様の抜けは、その場で質問にする

この場面で効いている基本情報の知識

知識そのものより、項目を増やす作業から、抜けを減らす作業に切り替えられることが、この場面で効いている。

テスト項目で外したくないポイント

  1. 思いつく値を並べても、範囲は広がらない
  2. まとまりごとに1つ。同じ性質の値は、何回試しても同じ。
  3. 端は別扱い。いちばん間違いが出る。
  4. 端の両側を対で取る。片方だけでは、ずれが隠れる。
  5. 0だけ試して通らなくても、1が通るとは限らない
  6. 受け付けないものは数えきれない。代表を選ぶ。
  7. 「数字に見えるもの」を入れる。全角・小数・空白付き。
  8. 期待する動きを先に書く。感想にしない。
  9. 入力した値が残るか消えるかまで決める。
  10. テスト項目づくりは、仕様の抜けが見つかる場
この記事はテスト項目の作り方を整理したものです。実際の項目数や様式、確認の範囲は案件や職場によって異なります。社内の基準に合わせてご検討ください。

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る
架空の実務場面をもとにした学習用の解説記事です。実在の会社・物件・取引ではありません。制度は改正されることがあるため、受験年度の最新情報もあわせてご確認ください。