Your SlideShare is downloading. ×
Cocos2d xゲームでuiテスト自動化
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

62
views

Published on

Cocos2d xゲームでuiテストを自動化する話です

Cocos2d xゲームでuiテストを自動化する話です

Published in: Engineering

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
62
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cocos2d-xゲームで UIテスト自動化 cocos2d-x勉強会
  • 2. 自己紹介 ● 戸谷直之 ● フリーエンジニア @blankblank
  • 3. なぜUIテスト自動化? ● あっちの変更でこっちがバグってたりする ● でもいちいち確認するのが面倒
  • 4. UIテストの問題点 ● 外部環境 ○ 入力、時間、乱数、IO ● エントリポイント ● アサーション などなど
  • 5. そこで、Cocos Console
  • 6. Cocos Consoleとは ● 実行中のゲームとCLIで対話する仕組み ● ゲーム内にTCPサーバを立てる “reload” “ok”
  • 7. 標準で用意されてるコマンド ● タップ、スワイプ ○ touch tap 100 100 ● シーングラフ描画 ○ scenegraph ● ゲーム全体の一時停止、再開 ○ director pause などなど
  • 8. コマンドの拡張も ● 例えば ○ スクリーンショットの撮影 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});
  • 9. 遊んでみる
  • 10. 実際にUIテストを作ってみる ● v3.4標準付属のゲーム ○ 迫ってくるアリをタップして退治するゲーム
  • 11. テストケース 1. 普通に起動画面が表示されてる 2. 開始してほっとくと結果画面が表示されてる 3. ほっとかずにアリをタップすると結果画面が表 示されてない
  • 12. テストを書く前に① ● KIFを入れる ○ iOS用のテストフレームワーク ○ Xcode / XCTestと統合 ○ Objective-Cで書く ● https://github.com/kif-framework/KIF
  • 13. テストを書く前に② 乱数を固定 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) end end src/main.lua src/test/noRand.lua
  • 14. テストを書く前に③ 時間を固定 ※アクション系のゲームだと時間固定が重要です が、サンプルで真面目にやると結構大変そうだっ たので一部演出を変更して誤魔化してます
  • 15. 遊んでみる ntotani/cocos2dx-uitest-sample
  • 16. その他の議論 ● 全部テストしようとすると大変 ○ ちょっとしたテストでも簡単にデータ量が膨れる ● 変更が大変 ○ 「ちょっとボタンずらしたいんだけど」 ● プロダクトごとに適切な方針を ○ 最低でも1レベル通しでクリアできるチェック ○ チュートリアル等、気付きにくいとこ重点チェック
  • 17. 「人が足りない」からこそ自動化を! ● 大企業 ○ 別部署、偉い人など、なんだかんだ見られてる ● インディーゲーム ○ マジで誰も見てなかった箇所多々
  • 18. おわり