スキップしてメイン コンテンツに移動

[AndroidTest] アプリをテストする(その前に)

アドホックテスト

Android アプリの開発でテストをすると言ったら、開発したアプリを実機にインストールして手で触るということを想像する人が多い。

その場で思い付いた項目を実行するだけで、テスト計画なしに行われるソフトウェアテストのこと。しばしば、“いい加減なテスト”の意味で使われる。
 出典:アドホックテスト



 Google play(Android Market) で公開されているアプリの多くはアドホックテストのみを行なってリリースされている。

この投稿は自分の首を締める・・・わかっちゃいるけど高品質のアプリを公開したい

開発で使う実機端末は電池が減らない

開発で使用される実機端末は日常で使用されている端末のようにインストールされているアプリ数も少ないし、起動されているサービスも少ない。PC と 常時USB接続されていることもあり電池残量なんて気にしない。小見出しに書いたことは正確では無いが常に充電しているという意味で電池が減らない。

他のアプリの影響を受けない

必要な物しかインストールしてないっていうこともあり、他のアプリが何かしたことで自分のアプリが正常に動作しなくなるということに気が付かない。これは仕方がないということかとは思うけれども、テストをするときに日常使用している実機環境を再現してみたい。

通信エラーを考えていない

実機依存の挙動をテストしていない。画面がロックされたら通信を遮断するなんていう端末があった記憶がある。電池消費量を抑えるという目的は達成されているからいいのかもしれない。アプリとしては通信に時間がかかる(リソースダウンロード)処理で通信エラーになってしまう。
 そもそも開発中は Wi-Fi 接続で通信速度を気にしていない開発者が多い。以前の所属していた会社では通信エラーを再現するために鉄のあみを携帯と手に被せてテストをしたことがある。地下室に行ってみたり電車に乗ったりしてテストをした。


 セミナーや懇親会で他社エンジニアに話を聞くと、リリース直前まで開発をして開発中のアドホックテストをもって「テストしました」というのが多いようだ。


強制終了したり、たまに仕様通りに動作しなかったり・・・
バージョンアップしたらデグレしてしまった・・・
自分の環境では不具合は見つからないんだけど・・・

これらもよく聞く話だ


テストしようよ

Android Test Project

タップやドラッグ、画面遷移とかを自動でテストできるんだしね

チュートリアル的な記事は書くつもりはないけれど、ヒントになるような記事は投稿したいとおもいます。

コメント

このブログの人気の投稿

Android ロックアプリを作る -調査編 -

Android 端末のスクリーンがOFFになると端末がロックされて、
スクリーンがONになるとロック画面が表示されます。

ロック画面は指の軌跡かパスワードを入力することで解除できます。

このロック画面をアプリとして作ってみたいと思い調査を始めることにしました。

調査の方針としては


色々なロックアプリをダウンロードしてみる。それぞれのパーミッションを見てみる。

という感じです。


色々なアプリをダウンロードしてみる。

まずはロックアプリ特集とかを探してみます。

Google 先生に聞いてみよう > Android ロックアプリ
結構出てきますね。


WidgetLocker LockscreenLockBot ProFロックスクリーン



それぞれのパーミッションを見てみる。

WidgetLocker Lockscreen



android.permission.VIBRATEandroid.permission.DISABLE_KEYGUARDandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.EXPAND_STATUS_BARandroid.permission.GET_TASKSandroid.permission.REORDER_TASKSandroid.permission.SET_PREFERRED_APPLICATIONSandroid.permission.WRITE_SETTINGSandroid.permission.WAKE_LOCKandroid.permission.CALL_PHONEandroid.permission.READ_SYNC_SETTINGSandroid.permission.GET_ACCOUNTSandroid.permission.READ_LOGSandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATEcom.android.vending.CHECK_LICENSE
LockB…

携帯電話、タブレットの判定にピクセルではなくインチを使う

色々な案件に関わっていると、スマートフォンなのかタブレットなのかの判定をするためにピクセルを使用しているソースを見ることが多くあります。

幅、高さのそれぞれのピクセル数がある値を超えたらタブレットと判定する。


これはだめですよね

HTC j butterfly  はタブレットと判定されることが多くあります。




ディスプレイは約5インチ
w x h : 1080px x 1920px

5インチなので画面サイズが大きいということでタブレットという判定でもいいかもしれない・・・と思ったりしますが7インチ以上をタブレットと判定したい。。。




ピクセル数は画面のサイズ(インチ)とは違います。1080px x 1920px は5インチであるとは限りません。

i9220++ スマートフォン Android 4.0 3G GPS 5.2 インチ800万画素携帯(ブラック)

5.2インチ 画面解像度:960 x 540 pixels QHD screen


HTC j butterfly よりも画面サイズ(インチ)は大きいけれど、ピクセル数は少なくなってます。


ピクセル数で判定するのではなく、インチで判定したほうが正確ですね。



プログラムで画面サイズ(インチ)を計算してみましょう。

ディスプレイ情報を取得する ピクセル数(width, height)を取得するdpi (xdpi, ydpi) を取得する1インチあたりのピクセル数(dot per inch なのでドット数?) インチ(width, height) を計算する画面サイズ(インチ)を計算する
こんな流れになります。他に簡単に取得できる方法があれば教えていただけるとうれしいです。

Activity#onCreateに書きました

// ディスプレイ情報を取得する
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

// ピクセル数(width, height)を取得する
final int widthPx = metrics.widthPixels;
final int heightPx = metrics.heightPixels;

// dpi (xdpi, yd…

Mac の ターミナルから アプリをアンインストールする adb uninstall

ant uninstall でもいいんだけれど、ant プロジェクトじゃないこともあるのでメモ

adb uninstall パッケージ名
cVolume next をターミナルからアンインストールする場合
パッケージ名は jp.caldroid.cvolume40 なので

adb uninstall jp.caldroid.cvolume40
となる