とある新卒氏へのとある10年選手からのコードレビューの解説をやったりしていた。当然知識にひらきのあるコメントがあったりするもので、そういった解説業やコメントへの質問を一緒に返すのを行なったりすることがある。
その際に、いわゆる CSV アップロードによくある CSV からレコードを作成するようなテストケースについての対話で出たはなし。
境界値テスト
CSV アップロードの場合は、青天井の INSERT が起きないようアップロードの上限値を設けることになる。その上限値の境界値テストをやりましょうという話がひとつ目。例えば上限値が 500 件の場合は正常系の 500 件と異常系の 501 件の境界は試験パターンとして考えられる。
スタブ
ふたつ目は、レコードの生成には時間が掛かることから上限値を正直に 500 のままだと自動テストの度に、約 500 レコード以上作ることになるためスローテストに繋がって行く。たとえば RSpec であれば stub_const
を使って条件値の定数を 3 件なり 5 件なりに減らしたテストに変える。500 件以上無駄なレコードの生成を割愛できる。このあたりまでユニットテストの話。
偽物の世界は偽物
みっつ目は、スタブ/モックは偽物の世界の住人なので、正規の上限数でも1回テストはリアルワールドのコードとしてまわしておく。UI を持つ場合はだいたい1回は手動での E2E を行なっていると思うので、たとえばそのタイミングなりになったりする。
最後にテスティングの図書として、以下の書籍を紹介したりしていた。
- 作者: J.マイヤーズ,M.トーマス,T.バジェット,C.サンドラー,Glenford J. Myers,Todd M. Thomas,Tom Badgett,Corey Sandler,長尾真,松尾正信
- 出版社/メーカー: 近代科学社
- 発売日: 2006/08/01
- メディア: 単行本
- 購入: 7人 クリック: 267回
- この商品を含むブログ (47件) を見る
この書籍はタイトルのとおり技法としてまとめられているのが良い点。つまり技法なので身につけることは可能で、まずは知らないことを知っていることに変えてコードを書いて実践するというサイクルをすると良さそうといった話をしていた。ちょうど勤務先にあったのはべんりだった。
一方で正直読みづらさはある書籍だと個人的に感じてはいるので、いま知識レベルで必要だと思う章を伝えたのと、腰を据えて読み切るというよりはまずは書いてあることをざっと読んでみて、興味のあるところを読んでみると良いのではといった感じの話をしていた。