概要
アプリの品質向上やリリース時の作業の効率をどう改善し、品質によるユーザー離れやクライアントの利益を計画的に検知できる仕組みや検証端末の選定(サービスによって使われる端末も違うので日々調査することが大事)や検証台数、テスト内容を検討する。
※UXやUIも「アプリ品質の1つ」で使いやすさや見た目がユーザーに受け入れられないと、インストールすらされなくなる。レビュー評価も低い傾向になります。
リテンション率(顧客維持率) も日々見ていくことが大事になります。
ホーム | トップ | 詳細 | 画像 |
---|---|---|---|
テスト計画
スマートフォンの登場で、PCからスマートフォンへシフト。
また多くのアプリの登場により、アプリ商圏は年を追うごとに大きくなっています。
その中で、どれだけ品質のよいものをリリース出来るかが、サービスの中で大事になっています。いくら短期間でリリースしても、不具合だらけのサービスでは使い物にならないばかりか、損失が大きくなり、時には企業を潰すことにもつながります。
ここでは、どのようにアプリのテストを実施し、よりよいものを提供できるか考えていきたいと思います。
対象アプリ
対象端末とOSバージョン
・推奨端末がどれだけあるかにもよります。
・OSのバージョンも。どこまで見るのか。サービスによりけり。
テスト環境
・Develop環境
・Staging環境
・Production環境
テストスケジュール
・開発規模や修正規模による。
・QAの内容やリソースにも考慮。
・何を優先とするのか。最優先でやるべきことを精査。
・リリース予定日をどこにおくか。無理のないリリース日の設定。
注意点
・アプリを使うユーザー層によってもテスト項目は変わってきます。
・企画仕様書が無い場合、テスト設計すらできないので、どこまで担保するかは決める。リリース後に不具合が見つかるとQAの責任となってしまうため。
テスト設計
テストの手順を考えてみます。まだまだありますが、重要な箇所になります。
テスト設計 を作成してみます。まずは、テスト準備チェックシート
単体テストの 「テスト設計」 をしてみます。広告をタップしたときのテストを想定します。
必ず単体テストは実施して下さい。開発活動の一環に単体テストがあるので、きちんと実施する。
1.DBアクセステスト
2.通信できない状態の例外インスタンス
3.広告取得、広告画像失敗テスト
4.nilをセットした場合のテスト
5.対象テーブルに値がセットされているテスト
6.成果をあげるパラメータテスト
7.成果があがらないパラメータテスト
8.cookie計測の場合は削除するテスト
9.例外処理の場合にError.logが出力する
10.config.propertiesのサーバへの接続情報が正しいことを確認
11.インタースティシャル広告でのクリックテスト
12.ローテーション広告でのクリックテスト
13.ネイティブ広告でのクリックテスト
14.AndroidManifest.xmlファイル設定テスト
15.コンバージョン送信のテスト
1.操作テスト(アプリ起動、バックグラウンド復帰、スクロール、スワイプ、タブ切り替え、フリック、ボタンタップ、アプリ再起動、アプリキル)
2.入力テスト(境界値、同値分割)
3.エラーテスト(正常系以外)
4.プッシュ通知確認
5.メール受信、送信、メール受信メールのリンク確認
6.PC版とアプリ版の機能が同じであること(※アプリ版の場合、仕様通り)
7.UIButtonに対してシングルタップ、ダブルタップを割り付け確認
8.権限回り(見えてよいユーザーと見えてはいけないユーザー)
9.ログイン回り
10.簡単なログ確認
認証機能(SSO)
サードパーティでサインインできるか、問題なく利用することができるか。
※サードパーティから情報が流出する恐れもあるので(セキュリティには注意)
1.Googleでログイン
2.FaceBookでログイン
3.Appleでログイン(Sign in with Apple)
多端末やイレギュラー検証テスト設計
簡単に「テスト設計」をしてみます。どんなことが想定されるのか。
1.ある特定の機種、特定のバージョンのOSでのみでの確認。
2.Wifi接続からモバイルネットワーク(LTE/4G/5G)に切り替えた場合の確認
3.モバイルネットワーク(LTE/4G/5G)からwifi接続に切り替えた場合の確認
4.画面が縦向き、または横向きでの利用、または画面回転ロック状態での動作確認
5.キー入力。入力必要なフィールドに実際に必要な文字/数値や、間違った文字/数値を入力
6.バッテリが残り20%未満の確認
7.バッテリが残り10%未満の確認
8.バッテリが残り5%未満の確認
9.ネットワーク接続、遮断した場合の確認
10.他アプリを10個インストールした場合
11.他アプリを20個インストールした場合
12.他アプリを30個インストールした場合
13.1,2,3時間端末を放置した場合
14.端末を再起動した場合のアプリの動作
15.電源を切り、数分置いたあと電源を入れる
16.機内モードに設定したのアプリの動作
17.節電モードに設定した場合のアプリの動作
18.アプリアイコンタップ、アプリキルを2回繰り返し
19.アプリアイコンタップ、アプリキル3回繰り返し
20.アプリアイコンタップ、アプリキル4回繰り返し
21.マナーモード設定した場合のアプリの動作
22.端末の初期化後、アプリインストールした場合
23.アプリアイコンを連続タップした場合
24.アプリアイコンを長押しした場合
1.機能実装後の動作テスト★単体テスト
2.実機にテストアプリ(apkファイルを入れて実際に使ってみる★結合、システムテスト
3.ユーザーに試用してもらうベータテスト★導入テスト(仕様とあっているかも含め)
4.本番リリーステスト(モンキーテストや探索的テスト)
5.リリース後、バグフィックス後の、アップデートリリーステスト
1.機能実装後の動作テスト★単体テスト(アフィリエイト広告の場合)
テスト項目 | 前提条件 | 期待値 |
---|---|---|
広告サイズがディスプレイサイズよりも大きい | ログ出力 | エラーログが出力すること |
不明な広告ビュータイプ | ログ出力 | エラーログが出力すること |
広告取得失敗 | ログ出力 | エラーログが出力すること |
広告画像の取得失敗 | ログ出力 | エラーログが出力すること |
リクエストしたサイズと取得したサイズが異なる | ログ出力 | エラーログが出力すること |
nilをセットしない場合 | ログ出力 | エラーログが出力すること |
2.実機にテストアプリ(apkファイルを入れて実際に使ってみる★結合、システムテスト
テスト項目 | 前提条件 | 期待値 |
---|---|---|
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動の広告確認 | visibleIconAd() | アイコン型広告が表示する |
ボタンをタップする | 画面が表示する | |
画面をスワイプする | ||
画面をピンチまたはストレッチ | ||
画面を回転 | ||
入力項目、表示初期値の確認 | ||
入力欄にスペース | ||
入力欄null | ||
入力欄に最大値 | ||
入力欄に最大値 |
3.ユーザーに試用してもらうベータテスト★導入テスト
テスト項目 | 前提条件 | 期待値 |
---|---|---|
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動の広告確認 | visibleIconAd() | アイコン型広告が表示する |
4.本番リリーステスト(★システムテスト時のテストケースと「モンキーテスト」や「探索的テスト」)
テスト項目 | 前提条件 | 期待値 |
---|---|---|
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動の広告確認 | visibleIconAd() | アイコン型広告が表示する |
5.リリース後、バグフィックス後の、アップデートリリーステスト(※ここは随時)
テスト項目 | 前提条件 | 期待値 |
---|---|---|
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動後の広告確認 | invisibleIconAd() | アイコン型広告が非表示であること |
アプリ起動の広告確認 | visibleIconAd() | アイコン型広告が表示する |
テスト実施
テストする上で必要なツールを用意する。
実機はもちろん、プロキシでの確認やログの確認のため。
XcodeとAndroidStudioを準備する
CharlesとFireBases
Charlesは、AndroidやiOSのスマホアプリテストでJSONファイルを書き換えで、リクエストやレスポンス確認にちょっと使っております。
ライセンスが無い場合は30分しか使えないのが。。。
また、「FireBase」 を使用してログを確認する。イベントログなど。
DebugViewでリアルタイムにログ確認
https://console.firebase.google.com/?hl=ja
テストアプリ申請
・テストの前に、テストアプリ申請のための確認
・承認されなければ、そもそもテストができないですね。
Androidアプリ申請
Androidアプリを公開するには 「Google Play」 デベロッパーへの登録が必要になります。
「初回登録料25ドル」 になります。
https://play.google.com/apps/publish/signup/
1.アプリを登録する
2.apkファイルをアップロード
3.アプリを公開する。ドラフトボタンをクリックし数時間待ちます。
ここでリジェクトされないためのチェックシート(※最低限の項目になります)
1.カテゴリーが正しくないアプリではないこと
2.著作権・商標権侵害していないアプリであること
3.不正広告アプリではないこと(※アダルト系は注意です)
※参照元です。
https://play.google.com/intl/ALL_jp/about/developer-content-policy.html
※Androidの場合は公開後も突然リジェクトされるので要注意です。
iPhoneアプリ申請
「iTune Connect」 でのアカウント登録
・順番に登録します。
https://itunesconnect.apple.com
1.クラッシュするアプリではないこと
2.アプリにバグがないこと
3.インストールや起動の前に、iOSデバイスの再起動を推奨するアプリではないこと
4.個人情報を有するアプリではないこと
5.プッシュ通知を使って、個人情報を送信するアプリではないこと
6.空のiAdを含んだアプリではないこと
7.広告表示のためだけに設計されているアプリではないこと
8.急激にバッテリーを消費したり、過度の熱を発生させるアプリではないこと
9.政治批判やユーモアは誹謗、中傷なコメントではないこと
10.非公開APIを使用するアプリではないこと
11.初回起動時ブラウザ立ち上げがないアプリであること
12.IDFAを使っているかどうか(※最近、申請時に聞かれるのでYES)
※一部分です。けっこうな割合でリジェクトされるので申請時は、注意すること。
※参照元です。
https://developer.apple.com/app-store/review/guidelines/