フィールドテストやってみませんか？

#はじめに

フィールドテスト、という言葉を聞いたことはあるでしょうか。
[本来はシステム開発などの検収前に運用を想定して行うテスト](http://www.happyengineering.org/HappyEngineering/Chapter12/section12.2.html)ですが、
スマートフォンアプリの場合でも用いられる場合があります。

機能確認のテストのように絶対にやらなくてはいけないかというとそうではない
ですが、やったほうが品質は上がり、安心感も得られる。そんなテストです。

今回はフィールドテストはどんな時にやるべきか
どんな方法があるか、について記載していきたいと思います。


#1.フィールドテストの目的
フィールドテスト、つまり実地試験のことですが、
要はテスト用の環境ではなく、ユーザーが実際に使う環境でのテストを指します。
アプリの場合、テスト環境と実地で大きく異なるものは、通信環境です。

ユーザーのプレイ環境としては以下のようなものがありえます。

| 報告内容    　| 詳細                     | 
|:----------|:--------------------------------|
| **自宅あるいは会社のWiFi** | **通信が安定しておりテスト環境とほぼ相違ない**| 
| **公共交通機関** | **地下鉄等で通信が不安定になる場合がある、またフリーWiFiによる通信の切り替えも発生する**| 
| **低速回線SIM** | **通信速度が制限されていて、WiFiや大手のキャリア回線に比べて速度が遅い場合がある**| 
| **公共施設のWiFi** | **接続人数やアクセスポイントの場所により通信が不安定なケースがありうる**| 
| **海外** | **端末スペックや通信環境が日本国内と比べて悪い可能性がある**| 



上記の環境下でもきちんとアプリが動作するのかを確認、担保することで、快適なプレイ環境を作り、**ストアレビューの低評価や問い合わせを減らす**ことが目的です。

#2.フィールドテストをしたほうが良いアプリ
もちろん可能であればどんな種類のアプリにおいてもフィールドテストはすべきですが、予算や期間の関係上難しいこともあります。
そこで、フィールドテストの優先度が高いケースを以下に紹介します。

| 対象    　| 理由                        | 
|:----------|:--------------------------------|:----------------|
| **マルチプレイ対応のアプリ**   | **複数人が参加するため、誰か一人の通信速度の遅延により、待ち時間やタイムアウト等でプレイできないリスクがある**| 
| **アクションなど操作性が高いアプリ** | **操作のリアルタイム性が高く、通信遅延などで自キャラや敵が固まってしまうなど通信環境がプレイの快適性に大きく影響を与える**|
| **海外リリースを想定しているアプリ** | **サーバーの設置場所と配信国の距離が離れており通信遅延の可能性がある。また、国によって端末や通信網の品質が悪い可能性がある**| 

#3.仮想的なフィールドテスト
フィールドテストのやり方は色々ありますが、実際に通勤中や野外でプレイしてみるのが最も簡単です。
とはいえ、人員の調整も必要になり、**エラーが連発してしまうようでは時間もコストも無駄**になります。

そこで、実際にフィールドテストを行う前に、
**仮想的に通信の遅い環境などを作って**テストをしておき、問題点があれば修正しておくと効率が良いです。
具体的には以下のような手段があります。

| 手段　| 詳細                        |参考URL| 
|:----------|:--------------------------------|:----------------|
| **PCのアクセスポイント化**   |**PCを用いて意図的に低速/低品質な回線状況を作り出しアクセスポイントとして接続することで、疑似的に通信状況の悪い環境を再現する** | http://fushiroyama.hatenablog.com/entry/2018/02/21/120937|
| **低速度回線SIM**   |**低速度回線のSIMを使用してテストを行うことで、通信遅延時と類似の挙動を再現する <br>また、低速度回線SIMユーザのプレイ状況を再現する**| https://www.soldi.jp/articles/sim_speed_switching/|
#4.実際のフィールドテストのやり方
既にある程度触れていますが、実際のフィールドテストのやり方を説明します。
基本的には環境を準備してフリープレイを行い、**正常に動作をするか、しない場合にどんなエラーが出るか**をメモや動画等に記録し、別途レポートなどにまとめる形になります。

| テスト環境　| 観点| 手順                      |
|:------------|:-----------------------------|:----------------|
| **公共交通機関**   |**通信が不安定な際に問題なくプレイが可能か <br>問題がある場合どのようなエラーが出るか <br>エラー時にプレイ回数を無駄に喪失したりしないか**|**通信が不安定になる個所や、WiFiと4Gの通信が切り替わる個所などをピックアップしておき、その場所でマルチプレイなどのフリーテストを実施する** |
| **公共施設のWiFi**   |**通信が不安定な際に問題なくプレイが可能か <br>問題がある場合どのようなエラーが出るか <br>エラー時にプレイ回数を無駄に喪失したりしないか**|**WiFiの電波が悪い場所や、WiFiと4Gの通信が切り替わる個所でマルチプレイなどのフリーテストを実施する** <br>**プレイ中に意図的な接続、切断を行って挙動を確認する**|
| **海外**   |**海外の現地SIMなどでも問題なくプレイが可能か <br>サーバーと配信国の距離が離れていても問題はないか**| **海外のスタジオを持つ会社に依頼しSIMを準備してもらい、マルチプレイなどを実施する**|
| **VPN**   |**コストなどの問題で海外スタジオの利用が難しい際に代替手段として用いる**| **[ExpressVPN](https://www.expressvpn.com/jp)などのツールを用いて海外環境に接続し、マルチプレイなどを実施する**|

#5.まとめ
フィールドテストは、最初に述べたように**必ずしもすべて実施しなくてはならないテストではありません**。
やってみたけど何も問題はない、あるいは許容範囲なので対応は行わない、ということも多々あります。
一方で、**このテストを行うことによりより品質の高いアプリのリリースを行うことができ**、リリース直後に発生しがちな問題や、低評価レビューなども最小限に抑えることができる可能性もあります。

このテストをやるか否かはQAだけで決めることではなく、プロダクト担当者として、会社として、**どれだけの品質を担保したアプリをリリースしたいか**、というところがポイントになると思います。

まずは**開発者やQA担当者で通勤中にプレイをしてみて**、通信不良時にフリーズやクラッシュなどプレイ続行ができなくなってしまう、リトライに異様に時間がかかる、回線切断時にユーザ不利益になる挙動が見られる、等の問題があったら改善のために詳細なテストを行う、でもよいと思います。
（また、外でのテストプレイの際には画面フィルターをする、端末の紛失や破損を気を付ける、ある程度ゆとりのある車内でのプレイを心がける、等注意をお願いします）

大事なのは、きちんと**開発担当者と目指す品質を相談し**、そのために何をするかを決め、意識を合わせてリリースに向かうことです。

こういうテストをやってみませんか、と開発担当に一声かけることで、アプリがより良い方向に向かうかもしれません。
ぜひ、**そのアプリが目指すべき品質**について、一度話し合ってみると良いと思います。