いまさら聞けない、テスト対象機種の選定方法（2018版）

テスト・QA関連の仕事をしている、山本くにお と申します。
いままでやってきたことについて、記事として投稿したいと思います。
みなさんの活動の一助になれば、幸いです。

ところで・・・
みなさんは、テスト対象端末(スマホ・タブレット・ガラケー・etc)を選定する際に、どのように選定していますか？
選定方法によっては、不具合を発見するには、あまり効果的ではない下記のようなアプローチ(アンチパターン)も多々あります。

◇アンチパターン

- 何が何でも、全機種（最大800機種！？）
- 何といっても、最新機種だけ
- 分からないから、特定OSだけ
- とりあえず、手元にある機種だけ
- etc

今回は、自分なりに効果的と考える、プロジェクト・テスト・品質保証のスコープに合わせた、テスト対象機種選定方法について、2018年版としてお話いたします。


## より効果的なテストを行うために
総務省でまとめられた「平成３０年版情報通信白書」によると、2017年にはスマートフォンが固定電話の世帯保有数で
逆転したとのことで、スマホ・タブレット等のモバイル端末は我々の生活に切っても切れない必需品となっています。
http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h30/pdf/index.html

いまでは多種多様なスマートフォンが発売されていますが、特に Android は日本で発売された機種だけでも 600機種以上存在し、iOS 端末、キャリア違い、メーカー直販 SIM フリー端末等を含めると、その数は 800機種以上存在しており、すべての機種でテストを実施するのは現実的ではありません。

しかし機種を選定するにしても、考慮すべき要素として OS Ver・メーカー・解像度・メモリー・CPU・GPU・GPS・TV機能・ハイレゾ対応・各種センサーの有無など、組合せが膨大にあります。
プロダクトリスクから、より効率的に動作保証しつつ不具合を検出するために、効果的なテスト対象機種の選定方法を定義しておく必要があります。

## 機種選定のポイント
機種選定のポイントは、前述の通り多くの要素があります。
その中でも、アプリとウェブサイト（ブラウザアプリ）のテストを実施する際のポイントは、下記の項目を軸に考えるのが個人的にはオススメです。

- 要素選定
- 優先順位付け
- インパクトとスコープ
- 機種選定  

## 要素選定
### OS バージョン
なぜ OS バージョンでの選定・網羅が必要なのか？
OS のメジャーバージョン・APIレベルに応じてOSの機能が大きくことなり、表示・動作が異なる場合ために、プロダクトリスクに応じて、対象OSバージョンの選定が必要になってきます。
具体的な例として、メジャーバージョンアップしたとたんに、アプリが起動しなくなったり、特定の機能が使えなくなったりする場合があります。
その他にも、ウェブサイトの表示において特定のメンテナンスバージョンでのみ、JavaScript やウェブアプリが動作しない・表示しないという現象が発生します。

そのOSバージョンですが、iOS・Android の両OSにおいて、下記のように3段階のレベルで表記されています。

【OS バージョン のレベル】

XX.YY.ZZ
・ XX ： メジャーバージョン
・ YY ： マイナーバージョン
・ ZZ ： メンテナンスバージョン(リリース、マイクロ 等と呼ばれる場合もある)

基本的に、発売時のバージョン、その後アップデート可能な各バージョン、最新バージョンが各々存在します。
Android は、完全初期化を行うことで OS が出荷時のバージョンになる場合もあります。
iOS は、基本的にアップデートした場合、ダウングレード出来ません。
(ベータ版配信期間は、バックアップから復元することも可能な場合があります)

Android について、多くの日本メーカーのキャリアから発売されている機種の場合は、キャリアから配信されるバージョンのみに限定されていますが、海外向け・SIMフリー端末の場合はキャリアに依存せずにバージョンアップできる機種があります。
最新のメジャーバージョン・APIを試すためには、海外向け・SIMフリー端末を使うことが多いです。
最近ではSIM フリー・格安スマホの台頭により、日本メーカーでも AndroidOne のような適時バージョンアップできる機種が徐々に増えています。
また iOS の場合は、アップデート可能な機種の場合は Apple から配信されるタイミングで更新可能になりますので、非常に多くのバージョンが存在します。
ただし、基本的には各機種でアップデート可能な最新のバージョンにアップデート可能なために、OSのシェアとしては Android ほどシェアが分散することはありません。
特に メジャーバージョンアップが行われた際には、アップデート可能なユーザーが1ヶ月程度で50%程度がアップデートし、12/03時点での調査で70%程度のユーザーがアップデートているようです。
数年前の調査では、2週間以内に70%程度アップデートされていたことを考えると、メジャーバージョンアップに対して多くのユーザーが慎重に対応していることが伺いしれます。
https://developer.apple.com/support/app-store/

###メーカー
なぜ メーカーでの選定・網羅が必要なのか？
Android 端末は、メーカー毎にさまざまな違いがあり、主に HW とSW(アプリ・OS・ファームウェア)の２つの側面があります。
HW については、アプリの機能によっては大きく影響を受けますが、詳細は後述させていただきます。
SW の中でも個人的に Web系のサービスにとって特に影響が大きいのは、Android 4.3(4.1-4.3:Jelly Bean)以前の、AOSP Stock Browser
(通称 Android標準ブラウザ)をベースの「ブラウザ」アプリの存在です。
「ブラウザ」アプリは、各メーカーで独自実装(魔改造？)をしているために、動作が異なる場合があります。スマートフォン向けのサービスを開発・提供している方々なら、特定の機種・メーカーのデバイスだけ下記のような話を聞いたことがあると思います。
Android 4.4(KitKat)から、代わりに Chrome WebView が提供されるようになり独自性は少なくなったようです。
2018年現在、Android OS も Ver 9.x(Pie)となり、標準ブラウザーについては、プロダクトによってはあまり考慮しなくても良いかもしれません。

ただし、メーカーによって重視しているユーザー体験に対応した描画処理・AI機能等の常駐アプリが、特定機能のボトルネックになる場合がありますので、ご注意ください。

【標準ブラウザ起因の不具合】

- JavaScript の特定の機能が動かない
- WebView で画像が表示されない(白画面)
- 画面遷移が行われない
- etc

【主要メーカー】

- Apple
- ソニー
- シャープ
- サムスン
- LG
- ファーウェイ
- 富士通
- 京セラ  

### 画面解像度
なぜ 画面解像度での選定・網羅が必要なのか？
Android・iOS の両方で起きる問題として、小さい画面において文字・ボタン・バナー等のアイテムが見切れてしまったり、レイアウト全体が崩れてしまったりする場合があります。　大きい画面においてはスマートフォンでPC版のページを見たときのように、文字やボタンが小さすぎて見づらい操作しづらい等の問題が発生します。
ここ数年 Full HD(1920×1080)が最も主流になっているために、iPhoneSE(1136×640)や Android4.0系(800×480)でチャット等のコミュニケーション機能を使おうとすると、キーボードが表示されるとメッセージ・画面が見えなくなってしまうなども発生します。

【主要画面解像度】(採用機種数順)

- 1920 × 1080
- 1280 × 720
- 1280 × ８００
- 1920 × 1200
- 2560 × 1440
- 800 × 480
- 960 × 540
- 1136 × 640


### 内部メモリ容量
なぜ内部メモリ容量での選定が必要なのか？
内部メモリ容量のサイズによっては、特定の機種ではアプリ自体が起動出来ない・使用しているとメモリが枯渇して落ちる場合があるからです。
最近は、スマートフォンの性能が向上していますので、あまり気にならなくなってきていますが、Android 2.3 系の端末はほとんどが 512MB という容量だったために、OS と標準アプリが動作すると 100MB 程度しか空きがなくなってしまいました。
メモリ容量が少なければ、初期動作をしても使い続けるうちに動きが遅くなり、時には強制的に終了したりする場合もあります。
そんなこともあってか、Android には多くのタスク管理アプリがあり使っていない、アプリ・メモリ領域を止めたり開放したりする必要がありました。

【Android OS毎の主流メモリ容量】

- Android 2.x　：　0.5 ～ 1.0 GB  
- Android 4.x　：　1.0 ～ 3.0 GB 
- Android 5.x　：　1.0 ～ 3.0 GB  
- Android 6.x　：　1.0 ～ 3.0 GB  
- Android 7.x　：　2.0 ～ 4.0 GB  
- Android 8.x　：　2.0 ～ 6.0 GB  
- Android 9.x　：　3.0 ～ 6.0 GB  


### CPU
なぜ CPU での選定が必要なのか？
アプリなどは CPU の性能により動作・ユーザー体験が大きく変わります。 
端末によっては性能が低すぎてサービス・UXとして成り立たない場合があります。
また最近はほとんど影響がなくなってきていますが、CPUのブランドによる動作の違いもあります。　
特に Android 2.x～4.0.x が主流だった時期にスマホのサービスに関わっていた方らならば、特定のCPU・チップセットで問題が発生する
という現象を経験をした人は少なからず、いらっしゃるのではないでしょうか？
現状 Qualcomm・Snapdragon・Mediatek の ARM系アーキテクチャのブランドが非常に強いですが、ASUS・Lenovo等の PC系のメーカーは Intel Atom プロセッサーを採用しているようです。
最近は、AI用のチップが搭載されたものもあり、端末全体の動作としてどのような影響が出るか、今後注目しています。

【CPU性能が低い場合の例】
・ビリヤードなどのゲームで、物理演算と描画が間に合わなくて、コマ落ちしてしまい球の軌道がまるでわからないために、ゲームとして成り立たない


### キャリア回線
なぜキャリア回線での選定が必要なのか？ とくにキャリア回線のうち、5G・4G(LTE)・3.9G(WiMAX等)と3Gでは、下記のような違いが有り、速度・つながりやすさ等要因で様々な不具合が発生します。
また、メーカーやキャリア回線だけではなく Wi-Fi を併用した場合の弊害もあります。
さらに、各キャリア毎に使用量の上限になった場合の制限速度も異なります( 64K ～ 256Kbps )ので、スコープによっては検討する必要があります。

【5G・4G(LTE) と 3G の違い】

- [5G]　　速度： 100Mbps 〜 10Gｂｐｓ程度  、通話・通信可能エリア これから・・・
- [4G] 速度： 75Mｂｐｓ ～100Mbps程度　　　　　　、通話・通信可能エリア 人口カバー率が、ほぼ100%
- [3G] 速度： 数～14Mbps程度     　　　　　　　　　、通話・通信可能エリア 人口カバー率が、ほぼ100%


### 特殊なデバイス条件
#### 特殊画面(ノッチあり)
iPhone X を代表とする、画面全体を表示領域にするために、ノッチありの端末が徐々に増えています。
ノッチ領域(ほとんどのが画面上部)を表示領域としてどのように取り扱うかがアプリの実装次第になっています。
もちろん、画面の回転を考慮した、機能・デザインになっていないと、UXを損なう場合があるので、注意が必要です。

#### カメラなし端末

最近はほとんどないと思いますが、Android タブレットの中には、カメラデバイスが存在しない端末もあります。
SNS・ECアプリ等でカメラを起動して画像をアップする機能を有するものもありますが、カメラを認識しないとエラーとなりローカルストレージの画像も取り込めなくなってしまうアプリも幾つか存在しているようです。

#### SDカードがないと、画像を取れない

Android 4.0.x 以前の機種に存在しますが、アプリ内でカメラを使用した場合に画像を保存できずにエラーになる場合があります。

#### キーボード付き

こちらも最近ほとんど見なくなりましたが、スマートフォンはスライドしてキーボードが出てくるタイプには、テンキーとフルキーボード等があります。
キー入力等をする際に、画面内にキーボードが表示されないことなど、確認できると良いですね。

#### 2画面・折りたたみ

ごく一部のスマートフォン・タブレット端末で2画面を採用して、「折りたためる」ことをコンセプトにしている機種があります。
特別な問題は、ほとんど発生しませんが画像・文字が見切れる、見づらい等の課題があるようです。
また近年、コンセプトモデルとして「液晶自体を折りたためる」端末が発表されていますので、数年後には「液晶自体を折りたためる」端末で2画面対応や「折りたたんだ」際の動作確認等が気になるところです。

#### ハイレゾ対応

ハイレゾとは「ハイレゾリューション・オーディオ」（高解像度音源）の略ですが、音楽再生アプリにおいてハイレゾ音源データを再生できるか非常に重要だと思います。
もちろんハイレゾ非対応のスマホでも通常音源データを再生できることも必須だと思います。

#### フルセグ対応

ここ数年、ワンセグだけでなくフルセグ対応の機種も増えています、ワンセグとフルセグの違いは簡単に言うとワンセグのほうが受信しやすく録画サイズが小さい、フルセグのほうが画像がきれいというところですが、アプリによっては、ワンセグ・フルセグの自動切り替え等の様々な機能を有しています。　
ほとんどの端末がTV録画アプリがプリインストールされていますので、端末選定の要素になることは少ないと思います。

その他にも、下記のような多くの要素(デバイス・性能)が存在しますが、プロダクト・サービスのテスト目的に応じて必要な要素を選定してください。

例：GPS・モーションセンサー・ジャイロセンサー・カメラ機能(解像度・感度・シャッター速度・望遠・オートフォーカス)・顔認証・指紋認証・NFC・防水・etc


## 優先順位(リスク)付け
###テクニカル・プロダクトリスクの観点
プロダクト・サービスを実現・継続するために、重要な機能から外せない要素(SW・HW)を選定する必要があります。
JavaScriptをバリバリ使って実装している場合、ブラウザ・OS Version 等は、考慮が必須になります。
また、リッチなネイティブアプリの場合は、CPU(・GPU)や内部メモリの考慮が必須になると考えます。

###ビジネスリスクの観点
ビジネスリスクとして、利用者の環境・ユースケースを考慮する必要があります。
企業向けのサービスで、社内 Wi-Fi 経由のみでの利用が想定している場合は、キャリア回線が対象外になるでしょう。
またサービス対象のキャリアが限定される場合は、対象のキャリア回線で実施しなけば必須となります。
後述します、ビジネスインパクトとして各種シェアも観点抽出には重要なファクターになります。

## インパクトとスコープ
### インパクト
前述の優先順位付けで抽出した要素から、下記のような各種シェア＆KPIをベースに各要素から対象を選定します。
近年ではユーザー行動などを解析してデータマイニングなどして、より効果的な要素を選定している組織も多いのではないでしょうか。

- 各種シェア
- 端末シェア(製造台数・販売台数・etc)
- UU(ユニークユーザー数)
- PP(ページビュー数)
- DAU(デイリーアクティブユーザー：1日の利用者数)
- MAU(マンスリーアクティブユーザー：1ヶ月の利用者数)
- ARPU(ユーザー1人あたりの平均売上金額)
- CVR(コンバージョンレート：広告参照後に購入・資料請求に至る割合等)
- その他 KPI

### スコープ
インパクトと一緒に考えることが多いともいますが、技術＆ビジネスリスクからインパクトを算出・想定して、どの程度の範囲・粒度を品質保証範囲としたいのかに応じて、スコープは変わります。
例えば、過去の事例や技術的な要素から、デバイスの考慮が不要でOS Version もメジャーなものをカバーすれば良いとなるとかなり機種数が絞られると思います。
別の考え方として、毎月の売上が数十億円以上のサービスの場合は、技術リスクが低くてもビジネスインパクト的にスコープを広げる必要が出てくると思います。

## 機種選定
上記の優先順位付けで選定した要素(SW・HW)とスコープの組合せで、具体的な機種を選定します。
我々の組織では、下記のような機種数で実施しています。
プロジェクト・プロダクトの状況に応じて、下記のように1つのプロジェクトの中で、複数のスコープを組み合わせる場合があります。

- 機種選定とテスト目的の組合せの例  
- 全機種　　 ： 起動終了＆メイン機能1回実施
- メインパス ： OS マイナーバージョン & メーカー & 主要ブラウザ
- 既存機能　 ： OS メジャーバージョン

下記のようにレベル分けしプロジェクトに合わせて機種選定しています。



例えば、下記のような組合せで機種選定を検討します。

- 新規アプリの場合
 - 起動終了＆主要機能 ：全機種(レベルA：800端末)
 - 各機能確認       ：OS×メーカー×キャリア (レベルE：24端末)

- 既存アプリでWebView関連改修の場合
 - 各面・機能確認    ：OS×メーカー（×２）(レベルD：32端末) (各開発コードで、標準ブラウザを網羅する)

- 新規Webサイト(ブラウザゲーム等も含む)
 - 各面・機能確認    ：OS × ブラウザ(レベルJ：20端末)

## まとめ
テスト目的に合わせて、機種選定をしないと抜け漏れが発生するだけではなく、無駄な工数が発生してしまいます。
みなさんも、もう一度機種選定方法を見直しては如何でしょうか？
もしかするとテスト工数が効果的に削減できるかもしれません！

より良いプロジェクト運営の一助になれば幸いです!!