DBが絡む関数のテストとか

今年度後期,一発目の講義はソフトウエア開発演習でした.

昨年度までは Swift を使用したios向けのアプリケーション開発だったらしいですが, 今年度は自由にやっていいとのこと.(CUIツールでもいいらしい)

そして授業の流れとしては最初数回は自由にプログラミングの勉強をしてもらい, 残りでチーム開発を行うらしいです.

第一に思ったことはかなり自由にやれると思いましたが,自由すぎて何したらいいかわからないっていう点もありそうです. 例えば,今日は早速50分程度自由にプログラミングの勉強をしてもらう感じだったのですが, 教授がAOJを進めたこともあり,ほとんどの人がAOJやってるようでした. もちろん全然悪くないのですが,私は競プロより何か作ってる方が好きなので web app 関係のことを調べてました. (本音は仲間が欲しかった...)

それで,直近で考えていたことがDBが絡む場合のテストについてだったのでそれについて調べてました. 例えば,mockを立てるとスピーディーにテストを行うことができますが, SQL文自体のテストはできないので本当にそのSQL文が正しいかどうか判断することはできません. あくまでも,このSQL文が来た時にこれを返すっていう設定を書いて 絶対にこの値が戻ってくると仮定しながら検証していきます.

実際のSQL文で返ってくる値が異なる場合,バグが発生する可能性があります(多分さっきやらかしました) なのでSQL文のテストとmockを使用したテストの2つを書き,SQL文のテストの場合はテスト用のDBを建ててそれを使うのがいい気がします.

ただ,毎回汚れたDBを綺麗にするのも面倒なので,どうにかできないか考えてます. 例えば docker を使えば起動時にスクリプトを実行してデータを流すことができますが,起動に時間がかかるのが懸念事項です.

こういうことは講義時間以外でもやってるので,90分時間が増えたと思って来週も何か面白いこと勉強できるといいなぁと思います. あと書いた後に思いましたが,テストを2つにわけるのは当たり前でしたね. DBじゃない場合のテストを考える場合でも,このような思考になると思います.