Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FlexUnitテスト

704 views

Published on

FlexUnitテストの、一番最初のとっかかりになりそうなところを紹介したスライドです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

FlexUnitテスト

  1. 1. FlexUnitで ユニットテスト
  2. 2. あらかじめおことわり • FlashBuilderでの方法だけ書いてます • 知ってる人からみると、必要最低限にも満たない基準のテスト 方法かも
 (とはいえ、そう書くと初学者が不安になるのもまた事実なの で、あくまでとっかかりに必要なフックと考えてもらえれば…) • というかオレオレテストファースト過ぎる考え方 • 手順とかはググればみつかるけど、いざどういったテストコー ドを書いたらいいか検討がつかないといった人向け
  3. 3. 手順 • ファイルのところで右クリック
 →「新規」→「テストケースクラス」
 でテストが作れます • テストケースは「flexUnitTests」パッケージ以下 に放り込んでおくといいと思う(というかデフォル トでそうなってます)
  4. 4. 画面見本
  5. 5. こんなのが出来る [Before] public function setUp():void { } [After] public function tearDown():void { } [BeforeClass] public static function setUpBeforeClass():void { } [AfterClass] public static function tearDownAfterClass():void { }
  6. 6. こんな風に書き足してく [Test] public function test1():void { } [Test] public function test2():void { } [Test] public function test3():void { }
  7. 7. 最終的にテストケースクラス はこうなるpackage flexUnitTests { public class AssetManSampleTest { [Before] public function setUp():void { } [After] public function tearDown():void { } [BeforeClass] public static function setUpBeforeClass():void { } [AfterClass] public static function tearDownAfterClass():void { } [Test] public function test1():void { } [Test] public function test2():void { } [Test] public function test3():void { } } }
  8. 8. タグの意味 • [BeforeClass]
 テストケースクラスが動作する最初に実行される関数。static • [AfterClass]
 テストケースが終了する最後に実行される関数。static • [Before]
 それぞれのTestが実行される前に実行される関数 • [After]
 それぞれのTestが実行された後に実行される関数
  9. 9. 動作のイメージ • [BeforeClass]実行 • [Before]実行 • [Test]test1実行 • [After]実行 • [Before]実行 • [Test]test2実行 • [After]実行 • [Before]実行 • [Test]test2実行 • [After]実行 • [AfterClass]が実行 • ※ただし、BeforeClassとAfterClassはstaticで実行されること、
 それぞれの[Before][Test][After]はインスタンスとして並列処理されること
 に注意しないといけない(つまりこの説明がよくわからなかったらBeforeClassとAfterClassは使わないほうが無難)
  10. 10. 便利ショートカット option + Shift + A、その後 f
 プロジェクト内のFlexUnitを全てテスト option + shift + e、その後 f
 選択したFlexUnitをテスト 普段は二番目の「個別に選択したテスト」のほうが実 行させること多い と思います。
  11. 11. テストから戻れなくなった! • Command+F11でデバッグしても、FlexUnitテス トばかり立ち上がって、普通の開発中のアプリがデ バッグできなくなった! 
 →デバッグの構成を切り替えます。
  12. 12. • メニュー「実行」→「デバッグの構成」→ダイアログ画 面の左側「モバイルアプリケーション」 から実行したい 構成を選択することで切り替わります。
  13. 13. 非同期処理 • あんまり整理できてない • [Before(async)]とか[Test(async)]とか、非同期処理させたい ところはasyncオプション付ける • イベントリスナー系で駆動させたい場合
 Async.proceedOnEvent • コールバック関数系で駆動させたい場合
 Async.asyncHandler • あたりで使い分ける?ごめん、この曖昧さがひよこ的
  14. 14. テストファースト • 順番の話しではない • 考え方の話し • ぼくがかんがえたさいきょうにうつくしいクラスせっけい v.s. テストのためにコードが汚くな る
 なら、テストのためにコードが多少汚くなったほうがまだマシ、という話し • テストしやすいコードを突き詰めていったらコードが綺麗になる場合も多いけど、逆にテスト のためにコードが汚くなる場合もある。多少コードが汚くなっても、必要なテストならするべ しという考え(ちょっと違うか) • テストしやすいコードを心がける
 →まず、テストありきという考え方
 であって、作業手順としての順番がテストが先、という話しではないことに注意 • テストありきという考え方を進めていったら、結果的に手順としてもテストコード書くのが先 になった、という話しであれば問題ないんだけど、初学者はその段階にまだ立ってない
  15. 15. ぶっちゃけFlashでユニット テストしなくていいもの • ボタンが押されたら次のシーンにちゃんと遷移するか
 →充分にテストされたフレームワーク使えばおk • ちゃんとaddChild/removeChildされているか
 気持ちいい動きか
 →表示系は、Flashではテストしなくてもいい。そのかわ り、その表示を何度でも簡単に行える仕組みを作って、そち らで何度でも目視で作り込みをしていく • 表示・UI系は、やはりFlashは何度でもクリエイターが調整 できることが強みなので、そこは工夫してわけておく
  16. 16. テストしたほうがいいもの • 15日の18:00に押せなくなるボタン
 →2014/11/15 18:00ならfalseを返す関数を作る
 →それをテストする
 →テストしやすいように、引数をもらってtrueかfalse か返す関数にする
  テストしやすいように関数を作る、ってのがポイント
 →2014/11/15 17:59:59ならtrueかテスト
 →2014/11/15 18:00ならfalseかテスト
 → 0 , などを引数で渡してテスト
  17. 17. テストしたほうがいいもの • ページャー
 →10件ずつ表示(LIMIT 10)
 →OFFSET 0 ,10, 20, 30, 40…と続く配列を生成する関数を作る
 →このとき、n件ずつ表示できるように引数を指定できるようにする
 →何ページ目かが配列のインデックスと同期するので、指定された配列の要素を返す関数を作る
 →指定ページが配列の先頭か、もしくは最後かを返す関数を作る • →50件あるとき、配列のlengthはちゃんと5あるかテスト
 →53件のとき6かテスト
 →ロジックに不安があれば、59件60件でも6かテスト61件なら7になるかテスト • →50件あるとき、3ページ目ならOFFSET 20が帰るかテスト
 →このとき内容が10件あるかテスト
 →23件あるとき、3ページ目ならOFFSET 20が帰り、内容が3件あるかテスト
 →19件あるとき、3ページ目指定したらエラーになるかテスト • 指定ページが配列の開始と終了をちゃんと返すかテスト

  18. 18. テストしたほうがいいもの • ステージの幅によって、等間隔に10個並ぶオブジェ クト
 →ステージの幅とオブジェクトの幅、並ぶ個数を渡 すと間隔を返す関数を作成 • →ステージ幅500の場合、オブジェクト幅20で10 個並べたら、33.333が帰るかテスト
  19. 19. テストしたほうがいいもの • ゲームのルール部分とか
 →同じ色が3つ並んだらtrue • コンテンツで、想定していない動きや入力があった らどうなるか • 複雑な組み合わせや回数が必要なもの

×