Cocos2d xゲームでuiテスト自動化

18
Cocos2d-xゲームで UIテスト自動化 cocos2d-x勉強会

Transcript of Cocos2d xゲームでuiテスト自動化

Page 1: Cocos2d xゲームでuiテスト自動化

Cocos2d-xゲームでUIテスト自動化

cocos2d-x勉強会

Page 2: Cocos2d xゲームでuiテスト自動化

自己紹介

● 戸谷直之● フリーエンジニア

@blankblank

Page 3: Cocos2d xゲームでuiテスト自動化

なぜUIテスト自動化?

● あっちの変更でこっちがバグってたりする● でもいちいち確認するのが面倒

Page 4: Cocos2d xゲームでuiテスト自動化

UIテストの問題点

● 外部環境○ 入力、時間、乱数、IO

● エントリポイント● アサーション

などなど

Page 5: Cocos2d xゲームでuiテスト自動化

そこで、Cocos Console

Page 6: Cocos2d xゲームでuiテスト自動化

Cocos Consoleとは

● 実行中のゲームとCLIで対話する仕組み● ゲーム内にTCPサーバを立てる

“reload”

“ok”

Page 7: Cocos2d xゲームでuiテスト自動化

標準で用意されてるコマンド

● タップ、スワイプ○ touch tap 100 100

● シーングラフ描画○ scenegraph

● ゲーム全体の一時停止、再開○ director pause

などなど

Page 8: Cocos2d xゲームでuiテスト自動化

コマンドの拡張も

● 例えば○ スクリーンショットの撮影

auto name = "ss";auto help = "take screen shot";auto callback = [](int fd, const string& args) { utils::captureScreen([fd](bool succeed, const string &outputFile) { send(fd, outputFile.c_str(), outputFile.size(), 0); }, "ss.png");};Director::getInstance()->getConsole()->addCommand({name, help, callback});

Page 9: Cocos2d xゲームでuiテスト自動化

遊んでみる

Page 10: Cocos2d xゲームでuiテスト自動化

実際にUIテストを作ってみる

● v3.4標準付属のゲーム○ 迫ってくるアリをタップして退治するゲーム

Page 11: Cocos2d xゲームでuiテスト自動化

テストケース

1. 普通に起動画面が表示されてる2. 開始してほっとくと結果画面が表示されてる3. ほっとかずにアリをタップすると結果画面が表

示されてない

Page 12: Cocos2d xゲームでuiテスト自動化

テストを書く前に①

● KIFを入れる○ iOS用のテストフレームワーク○ Xcode / XCTestと統合○ Objective-Cで書く

● https://github.com/kif-framework/KIF

Page 13: Cocos2d xゲームでuiテスト自動化

テストを書く前に②

乱数を固定

function MyApp:onCreate() math.randomseed(os.time())end

function TestApp:onCreate() local counter = 0 math.random = function(a, b) counter = counter + 13 return a + counter % (b - a) endend

src/main.lua src/test/noRand.lua

Page 14: Cocos2d xゲームでuiテスト自動化

テストを書く前に③

時間を固定

※アクション系のゲームだと時間固定が重要ですが、サンプルで真面目にやると結構大変そうだったので一部演出を変更して誤魔化してます

Page 15: Cocos2d xゲームでuiテスト自動化

遊んでみるntotani/cocos2dx-uitest-sample

Page 16: Cocos2d xゲームでuiテスト自動化

その他の議論

● 全部テストしようとすると大変○ ちょっとしたテストでも簡単にデータ量が膨れる

● 変更が大変○ 「ちょっとボタンずらしたいんだけど」

● プロダクトごとに適切な方針を○ 最低でも1レベル通しでクリアできるチェック○ チュートリアル等、気付きにくいとこ重点チェック

Page 17: Cocos2d xゲームでuiテスト自動化

「人が足りない」からこそ自動化を!

● 大企業○ 別部署、偉い人など、なんだかんだ見られてる

● インディーゲーム○ マジで誰も見てなかった箇所多々

Page 18: Cocos2d xゲームでuiテスト自動化

おわり