画面上に表示された2Dキャラクターが、ゲームパッドのスティックを左右に入れる事により移動して、ボタンを押す事によりジャンプをする。
今回はキャラクタープログラムのテストを考えてみます。
今回のケースでは、全てを同時にテストしようとすると、人がゲームパッドを操作して、正常に動作しているか目で確認するしかありません。
しかもその場合、全ての状況をテストする為には、ユーザーが操作出来る可能性のある、全ての入力をテストしなければなりません。
これを全て人の手でテストするのは非現実的です。
モジュール
先ほどのキャラクタープログラムは、三つのモジュールに分かれています。- ゲームパッドの入力を受け取るモジュール
- 入力に対してキャラクターの座標やアニメーションパターンを更新するモジュール
- 座標とアニメーションに合わせてキャラクターを表示するモジュール
- キャラクター右移動
- キャラクター左移動
- キャラクタージャンプ
表示に必要な情報も二種類だけです
- キャラクターの座標
- キャラクターのアニメーションパターン
人を超越するプログラム
キャラクタープログラムのテストが難しいのは、ユーザーが何時どのようなタイミングで入力をするのかが、限定できないためです。- プレイヤーによっての入力の癖の違い
- 間違って押されたボタン
しかし、ゲームパッドから受け取る情報が三種類なら、プログラムで作る事は出来ないでしょうか?
これはプログラムをそのように作成すれば可能です。
- スティックによるキャラクターの移動とジャンプボタンを同時に押す事
- 左に移動開始した次の瞬間に右に移動開始する事
さて、確認はどのように行えば良いでしょうか
- ユーザーから左移動の入力があった場合、指定された速度で移動したか
- ジャンプ入力があった場合予定している時間の間は空中にいたか
しかし、プログラムで座標を判定するのは比較的容易です。
人には難しい1/60秒のタイミングを見切る事も可能です。
ユーザー体験を判定する事は難しい
プログラムで入力の作成と出力の判定を行う事により、テストが容易になる事がわかりました。しかし、どうしてもプログラムでは処理できない部分があります。
ユーザー体験の判定です。
- ユーザーの入力に対してキャラクターの速度は速すぎないか
- ジャンプの反応は遅くないか
人が実際にプレイして判断する必要があります。
しかし、ユーザー体験をテストする為には、プログラムが想定どおりに動作している事が前提になります。
もしプログラムが正しく動作していない状況でパラメーターを修正してしまった場合、プログラムのバグを修正した際に再度パラメーターの修正が必要になってしまいます。
キャラクタープログラムに限らずゲームプログラムでは、仕組みが正しく動作しているのかを確認するテストと、ユーザーの体験が意図した結果になっているのかを確認するテストは、別々に行う事で効果的なテストが可能になります。
0 件のコメント:
コメントを投稿