TDDからCIまで広い内容の話しを聞けて、非常に為になった。
で、Androidのテストを聞いているときにBDDのフレームワーク云々のツィートを見たのを思い出して調べてみた。
■UnityのBDDフレームワーク「cukunity」
BDDでテストしてくれるフレームワークらしい。 【こちら】
使い方や機能はこれから確認していきたい。
どうやらRubyで動作するらしいので、Rubyを覚えるところから…
RubyのMac版のインストーラーが面倒そうなので、意外と時間かかるかも
たーみなるこわい
内容がわかればそんなに難しくなかった。【インストールしてみた】
デモを発見【こちら】
■BDDとは何ぞや?
BDD(behavior driven development)は、アプリケーションの「振る舞い」を確認するテストを先に作成し、
そのテストを通るように開発する手法。
要するに自動で実行してくれるスクリプトを用意して、それを実行しながら開発する方法。
下のシナリオを書いておくと、テスト時に毎回実行してくれる、みたいな感じ。
サンプルシナリオ
1.アプリを起動する
2.ユーザーIDとパスワードを入力する
3.「ログイン」ボタン押下でログインする
4.「ログアウト」ボタンでログアウトする
5.アプリを終了する
■BDDが必要な理由?
Androidはテストのコストが大きいってのはよく聞く話。
実際、
・機種によって特性があるらしい(GPUとか)
・画面の大きさ及び比率がマチマチ(2画面とかもある)
・Android OSが端末ごとに地味にカスタマイズされてる(AUとか)
・バージョンアップが早く、確認しなければいけない範囲が広がる(古いバージョンも切りにくい)
・エミュレーターの実行内容がイマイチ信用できない
等、色々とあるらしい。
かといって、毎回毎回すべてのAndroid端末で動作確認は大変だし、
リリース直前のみ実機テストというのは、落ちた時のショックがけっこう大きい。
それに複数人数で開発する場合、他の人が作った内容が干渉して変な動きをするかもしれない。
3Dモデルをモックから本番用に差し替えたらメモリ不足で落ちるとかもあるかもしれない。
何より、作り終わった物を直すのは士気的に避けたい。
なので、先に動作確認を自動でおこなってくれるスクリプトを記述しておき、
フレームワークにテストしてもらいながら開発できたらなー…ということ。
ただし「テストを書くコスト」と「実機確認の手間」のトレードオフなので、過度の期待は出来ない。
特に、「予期せぬ動作のテストコード」まで全部書くとコストが跳ね上がるので、基本シナリオの動作だけ確認するべき。
(潤沢に費用を使える場所なら全部のコードを書いても良いんじゃよ)
それにゲームみたいな「予期せぬ動きのオンパレード」の内容で、何処までこのタスクが利用に出来るかも微妙な所。
まあ試してみれば分かると思うんで、色々とやってみようと。