狠狠撸

狠狠撸Share a Scribd company logo
ゲーム の 自 動 テス ト を
作 って み た
竹 内 ? 佑 介
2 0 1 5 / 0 8 / 2 3
ゲーム 画 面 の テス ト コ ー ド を ?
書くの難しいと思っていませんか?
ち ょ っ と 工 夫 す れ ば ?
案 外 簡 単 に で き る んで す
今 日 はそ の 方 法 を 皆 さ ん と
共 有 し た い と 思 い ま す
ゲーム 画 面 の 自 動 テス ト を
実現するには何が必要でしょうか?
こ ん な ん が 必 要 だ と 思 い ま す
? テスト対象だけ切り出せる
? 自動的に操作ができる
? 自動的に検証ができる(いわゆるアサーション)
? 好きなテストコードをいつでも実行できる
? テストコード一覧を1コマンドで実行できる
テス ト 対 象 だ け 切 り 出 す に は ?
? ゲームライブラリの基本機能を使えばOK
? 最近のは大体スプライト、シーン、グループとかある
のでそれを使えばいいでしょう
? スプライトについて?
https://ja.wikipedia.org/wiki/
%E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E
3%83%88_(%E6%98%A0%E5%83%8F%E6%8A
%80%E8%A1%93)
自 動 的 に 操 作 す る に は ? そ の 1
? タイムラインとイベント発火を組み合わせれば、大体
のことはできるはず
? タイムラインの詳細、要はフレーム補間?
http://wise9.github.io/enchant.js/doc/core/ja/symbols/
enchant.Timeline.html
自 動 的 に 操 作 す る に は ? そ の 2
? enchant.jsでの実装例は以下の通り?
https://github.com/kaidouji85/gbraver/blob/
d276ebce9ac570d9528efc2106a1467d5cdc7f36/
publicForTest/javascripts/testlib/testUtil.js?
? 実際に動いてるイメージはこんな感じです?
http://gbraver-beta.herokuapp.com/testClient?code=/
javascripts/changeSceneTest/
selectArmdozerToTopForPrevButtonTest.js
自 動 的 に 検 証 す る に は ? ? そ の 1
? どこを検証するのか
? 前提としてゲーム画面すべてを自動検証するのは無理
? 演出、操作感とかは人間が直接みた方が早い
? 論理的には画像比較、操作履歴の比較をすれば上記項
目もテストはできるけど、どう考えても労力に見合わ
ない
自 動 的 に 検 証 す る に は ? ? そ の 2
? 人間の目では確認しずらいところを検証する
? 例えば??????、
? 何かした時に、意図したイベントが発火されるか
? サーバへの送信データは正しいか
? ボタン押下->API実行、という流れは正しいのか
自 動 的 に 検 証 す る に は ? ? そ の 3
? これらを検証するにはenchant.jsというかjavaScriptの
場合は、以下を検証することになる
? 意図したコールバック関数が、意図したパラメータと
共に呼ばれるか
? これなら、javaScriptにあるアサーションライブラリで
いくらでも検証できる
自 動 的 に 検 証 す る に は ? ? そ の 4
? 私はアサーションライブラリとしてchaiを使っていま
す?
http://chaijs.com/api/assert/
? アサーションしているコードの例(53行目あたり)?
https://github.com/kaidouji85/gbraver/blob/
d276ebce9ac570d9528efc2106a1467d5cdc7f36/
publicForTest/javascripts/battleEndTest/
battleEndForWinTest.js#L53
テス ト コ ー ド を い つ で も 実 行 す る は ? ? そ の 1
? ここはゲームの作りに依存するので、一概にこれとい
う方法がない
? 自分の場合はテストコードをリクエストパラメータに
渡したら、それを実行してくれるサイトを作った
? 例えばこんな感じ?
http://<ゲームのドメイン>/testClient?code=<テスト
コード名>
? 公開しているテスト環境ではこんな感じで実行できま
す?
http://gbraver-beta.herokuapp.com/testClient?code=/
javascripts/changeSceneTest/battleToNextStoryTest.js
テス ト コ ー ド を い つ で も 実 行 す る は ? ? そ の 2
? テストコード一覧を表示するサイトも作った?
http://gbraver-beta.herokuapp.com/testList
テス ト コ ー ド を い つ で も 実 行 す る は ? ? そ の 3
テス ト 一 覧 を 実 行 す る に は ? ? そ の 1
? これもゲームの作りに依存するので、これを使うとい
う方法はない
? 自分の場合はさっきのテスト一覧表示サイトと
seleniumを組み合わせて、なんとか実現した
自 分 で 作 って み た コ ー ド は
こ こ に あ り ま す
https://github.com/kaidouji85/gbraver
作 って み た コ ー ド に つ いて
? テストコードやプロダクトコードはここにあります?
https://github.com/kaidouji85/gbraver
? テストコード一覧はここで見れます?
http://gbraver-beta.herokuapp.com/testList
? ゲームはここで遊べます?
http://gbraver.herokuapp.com/?
ご 静 聴 あ り が と う ご ざ い ま し た

More Related Content

ケ?ームの自動テストを 作ってみた

  • 1. ゲーム の 自 動 テス ト を 作 って み た 竹 内 ? 佑 介 2 0 1 5 / 0 8 / 2 3
  • 2. ゲーム 画 面 の テス ト コ ー ド を ? 書くの難しいと思っていませんか?
  • 3. ち ょ っ と 工 夫 す れ ば ? 案 外 簡 単 に で き る んで す
  • 4. 今 日 はそ の 方 法 を 皆 さ ん と 共 有 し た い と 思 い ま す
  • 5. ゲーム 画 面 の 自 動 テス ト を 実現するには何が必要でしょうか?
  • 6. こ ん な ん が 必 要 だ と 思 い ま す ? テスト対象だけ切り出せる ? 自動的に操作ができる ? 自動的に検証ができる(いわゆるアサーション) ? 好きなテストコードをいつでも実行できる ? テストコード一覧を1コマンドで実行できる
  • 7. テス ト 対 象 だ け 切 り 出 す に は ? ? ゲームライブラリの基本機能を使えばOK ? 最近のは大体スプライト、シーン、グループとかある のでそれを使えばいいでしょう ? スプライトについて? https://ja.wikipedia.org/wiki/ %E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E 3%83%88_(%E6%98%A0%E5%83%8F%E6%8A %80%E8%A1%93)
  • 8. 自 動 的 に 操 作 す る に は ? そ の 1 ? タイムラインとイベント発火を組み合わせれば、大体 のことはできるはず ? タイムラインの詳細、要はフレーム補間? http://wise9.github.io/enchant.js/doc/core/ja/symbols/ enchant.Timeline.html
  • 9. 自 動 的 に 操 作 す る に は ? そ の 2 ? enchant.jsでの実装例は以下の通り? https://github.com/kaidouji85/gbraver/blob/ d276ebce9ac570d9528efc2106a1467d5cdc7f36/ publicForTest/javascripts/testlib/testUtil.js? ? 実際に動いてるイメージはこんな感じです? http://gbraver-beta.herokuapp.com/testClient?code=/ javascripts/changeSceneTest/ selectArmdozerToTopForPrevButtonTest.js
  • 10. 自 動 的 に 検 証 す る に は ? ? そ の 1 ? どこを検証するのか ? 前提としてゲーム画面すべてを自動検証するのは無理 ? 演出、操作感とかは人間が直接みた方が早い ? 論理的には画像比較、操作履歴の比較をすれば上記項 目もテストはできるけど、どう考えても労力に見合わ ない
  • 11. 自 動 的 に 検 証 す る に は ? ? そ の 2 ? 人間の目では確認しずらいところを検証する ? 例えば??????、 ? 何かした時に、意図したイベントが発火されるか ? サーバへの送信データは正しいか ? ボタン押下->API実行、という流れは正しいのか
  • 12. 自 動 的 に 検 証 す る に は ? ? そ の 3 ? これらを検証するにはenchant.jsというかjavaScriptの 場合は、以下を検証することになる ? 意図したコールバック関数が、意図したパラメータと 共に呼ばれるか ? これなら、javaScriptにあるアサーションライブラリで いくらでも検証できる
  • 13. 自 動 的 に 検 証 す る に は ? ? そ の 4 ? 私はアサーションライブラリとしてchaiを使っていま す? http://chaijs.com/api/assert/ ? アサーションしているコードの例(53行目あたり)? https://github.com/kaidouji85/gbraver/blob/ d276ebce9ac570d9528efc2106a1467d5cdc7f36/ publicForTest/javascripts/battleEndTest/ battleEndForWinTest.js#L53
  • 14. テス ト コ ー ド を い つ で も 実 行 す る は ? ? そ の 1 ? ここはゲームの作りに依存するので、一概にこれとい う方法がない ? 自分の場合はテストコードをリクエストパラメータに 渡したら、それを実行してくれるサイトを作った
  • 17. テス ト 一 覧 を 実 行 す る に は ? ? そ の 1 ? これもゲームの作りに依存するので、これを使うとい う方法はない ? 自分の場合はさっきのテスト一覧表示サイトと seleniumを組み合わせて、なんとか実現した
  • 18. 自 分 で 作 って み た コ ー ド は こ こ に あ り ま す https://github.com/kaidouji85/gbraver
  • 19. 作 って み た コ ー ド に つ いて ? テストコードやプロダクトコードはここにあります? https://github.com/kaidouji85/gbraver ? テストコード一覧はここで見れます? http://gbraver-beta.herokuapp.com/testList ? ゲームはここで遊べます? http://gbraver.herokuapp.com/?
  • 20. ご 静 聴 あ り が と う ご ざ い ま し た