63.テストの7原則 その③
原則2:全数テストは不可能
「全数テスト」とは、入力される可能性のある全てのパターンをテストすること。
この話で真っ先に思い浮かぶのは、その昔プチブレイクした以下の動画。
組み合わせ爆発のすごさ…狂気をわかりやすく説明しています(爆
例えば5歳以下は無料、6歳から12歳は小学生料金、それ以上は大人料金になる映画館があったとします。
さて
「不安なので全部見てください!」
と言われたとします。
全数テストならば0歳から入力値マックスまで「0歳の時…1歳の時…2歳の時…」と見ていくことになるでしょう。
ちなみにintの最大値は21億4748万3647です。
このテスト実施の際は、リーダーは夜道でメンバーから刺されないように注意しましょう。
もう少し考えると「公式記録は122歳だし…」と若干減ったりします。
けどそもそも同値分割&境界値分析の考え方ならば、-1歳、0歳、5歳、6歳、12歳、13歳でよくないか、となったりしますね。
単純な例で考えると「何を当たり前な…」と思うのですけど、これに映画のチケットの割引有無がついたり、座席指定がついたり、水曜日はレディースデイだったり、夜はレイトショーで1000円だったり、スタンプが貯まっていたら割引だったり、3D映画鑑賞料金なんてものが組み合わさったりします。
これらを全パターン組み合わせ網羅をするとスンゴイことになります。
不安だから全部テストして
マンガにも描いたが、社内開発などでチョイチョイ遭遇した。
ちなみに、本当に不安だからそう言っている。
起点が「不安」という感情であり「とりあえず全部見てほしい」という気持ちであるため、どれくらいの規模でどれくらいかかるのか、ということは口に出した時点では全然考えていなかったりする。
なのでこちらから、どういうテストをしなければならないのか、そのためにはどれくらいの工数がかかるのか、という説明をしっかり伝える必要がある。
ガチャとガシャ
2つの呼び名があるが、どうやら商標であるとのこと。
「ガチャ」はNHNという会社の商標とのこと。
ゲームアプリのテスト
作者はゲームアプリのテストも第三者検証/自社開発で何回か行ったことがある。
数年前のことだが、困ったことを思い出して書いておこうと思う。
デバッグがない
自社開発のゲームに最初触れたとき、デバッグモードがなかった。
これはゲームのテストをしたことがある人ならヤバさがわかるだろう。
- ガチャの確認が本当にガチャ。でるまで引き続ける。石がなくなったら……!
- ゲームの進行操作ができない。先に進みたいのでガンバル、バグ修正が来たけど戻れないので最初からガンバル……
- クリアできねぇ問題
ステータスチェック
キャラやアイテムのステータスチェックもゲーム上で実際に取得して確認。
確認したいコトがDBへのデータ挿入ミスであるならば、DBを見ていくのが早いだろう。そのあとHPがマックスのキャラでUIが崩れていないか確認する、というのもありだ。(全キャラグラも同時に確認必要、とかなってくるとゲーム上で…にはなるかもだが)
ボス強すぎ
「これ勝てないだろ!?」と思う場合もある。
ステータス設定ミスの可能性も高いので、どうやれば勝てるかひたすら考えないで、問題提起した方がいい。
原作知らない
原作付きゲームの場合、コアなファンがもちろんプレイしている。
そうすると絶対あるのが
「このキャラはこんなこと言わない」
「このキャラの色が違う」
みたいなこと。
この辺は原作を知らないメンバーでテストしても絶対に出てこない。
そいつにしか出せない、なんかすごい難しいバグ
タイミング系バグなど(マリオの壁蹴り2段ジャンプみたいな)だと、その人しか出せない凄腕バグが存在する。
「こうやって、ここで、こう。ほら(ドヤァ」
と教えてくれるが、なるほど、できません!!
開発者ももちろんできません!!
録画準備、ログ取りはしておこう。
2019/01/15追記
イベントが時間前に始まっちゃった / イベントが始まらない
設定ミスでイベント開始時刻に始まらない、なんてこともしばしばあった。
特にランキング制などのとき、時間前に始まってしまうと
「あいつは先に入っていたから得してどうのこうの」
という問題に発展しかねない。
サーバー時間をいじるなどして、イベント開始の境界値は見ておこう!