まずは自己紹介をさせてください。gugusukeと申します。
この単体テストはどこの現場でも必要なことです。
単体テストのポイント
単体テストで意識するポイントはこちらになります。
これだけになるのですが、網羅することを確認するには色々なパターンを想定する必要があります。
前提として、前回の記事でプログラミングと単体テストはセットだよと紹介させていただいたので、こちらも御覧ください。
単体テストの3ステップ
プログラムを実装したら単体テストをやらないといけませんが、単体テストには3つのステップがあります。
それは、ケース作成、テスト実施、エビデンス作成になります。
なかでもテストケース作成が1番難しいところであり、1番重要なものになっています。
単体テストのためのテストケース
テストケースはテストをするための説明書といったところで、以下の観点でパターンを考えていきます。
- 設定されるべき値が項目に設定されていること
- 判定文のパターンが網羅されていること
- 繰返し文のインデックスで最小値と最大値が確認できること
- 項目の比較は境界値の確認ができること
- 必須、文字属性、桁数を意識すること
簡単に説明すると作ったプログラムが何をした時にどういった結果になるのかを定義していく資料になります。
例えば、aという箱に果物が入っています。
その果物がりんごだったら”りんご”を表示し、それ以外の果物だったら”その他”を表示するといったプログラムを作ったとします。
この場合のテストケースはりんごが入っている場合とそれ以外が入っている場合の2ケースになります。
つまり、箱の中身を「りんご」と「ばなな」の2パターン用意することで結果として表示されるどちらのパターンも確認することができます。
こういったケースを全パターン網羅できるように考えるのがテストケースになります。
単体テスト実行
次に実際にプログラムを動かしてみて想定通りの結果になるかを確認していきます。
プログラミングの言語や現場の環境によってテスト手法は変わってくるので、そこは現場にいる先輩社員に教えてもらいましょう。
単体テストのエビデンス作成
最後にテストした結果をエビデンスとして資料にまとめていきます。
これはどういった動作をしたからこの結果になったよという証拠を残す作業になります。
先程の例を出すと、aの箱にりんごを入れるところがインプットになり、その結果”りんご”が表示されるのがアウトプットになります。
このインプットとアウトプットの組み合わせを残していく作業になります。
ケースを作成してテストをしてエビデンスにまとめるこの3ステップを単体テストと総称しています。
苦戦したテストケースの実例
ありがたいことに配属されてすぐに新規のプログラムを作成する機会をいただきました。
新規でプログラムを作成することはあまりなく、修正することの方が多いです。
プログラムを作成するための上位工程である詳細設計書を先輩社員から説明してもらい、いざプログラムの実装を行いました。
詳細設計書については別記事で紹介しています。
そんなに難しいプログラムではなく、判定文が正しかったら、さらに判定文があるという入れ子になっているプログラムの実装でした。
これは研修でもやっていたのでそこまで時間がかからずにプログラムの実装はできました。
問題はテストケース作成でした。
この時はテストケースの存在を初めて教えていただいたところだったので、何から手をつけたら良いかがわからず、ただただ時間が過ぎていきました。
ほんとに全くわからず、頭を抱えているだけでした。
行き詰まってアドバイスをもらいにいったところ、実装したソースコードの網羅率100%になるようにパターンを考えると良いと教えてもらいました。
つまり、1つの判定分のパターンは2パターンで、そのうちのもう片方に判定分2パターンがあるので、これらが網羅できれば100%になるという考え方でした。
なるほどなと思いましたが、初心者だった当時はその考えは思いつきもしませんでした。
さらにより複雑なパターンになったらマトリクス表を作ることもおすすめだよと教えてもらいました。
マトリクス表は全パターンを網羅するのに便利なもので、まさに今現在もテストケース作成時に用いている手法になっています。
単体テストのまとめ
単体テストは3ステップに分けることができます。
今回はこの中でも1番重要だと考えているテストケースの作成ポイントについて説明してきました。
わたし自身が初めてプログラミングをして、躓いたところだったので同じように躓いている人は少なからずいるのではないでしょうか。
この業界に限る話ではないかと思いますが、躓いたら先輩社員にアドバイスを求めるのが、自分自身が成長するための1番の近道だといえます。
先輩社員は経験を積んでいますし、解決するための最善の方法をすでに知っています。
わたしはテストケースを作成する工程で、ネットを調べたり、自分なりにテストケースを作成しましたが、どれも検討違いなものになってしまい、時間を消費してしまいました。
悩む時間を限定してもっと早くに先輩社員からアドバイスをもらった方が良かったと思います。
もし、同じように躓いている方がいましたら、この記事を参考にしていただき、そのうえでぜひ先輩社員からアドバイスを受けることをおすすめします。
コメント