iPhone用に1つのアプリケーションを開発しましたが、今ではApp Storeでそれを求めています。私のiOSオタクの友人の多くは、実際のデバイス、つまりiPhoneでテストするように言った。
だから私は実際のiPhoneデバイスで私のiPhoneアプリをテストする必要があるのだろうか?彼らは(Apple)が私のデバイスとほぼ同じ「シミュレータ」を与えているのですか?
iPhone用に1つのアプリケーションを開発しましたが、今ではApp Storeでそれを求めています。私のiOSオタクの友人の多くは、実際のデバイス、つまりiPhoneでテストするように言った。
だから私は実際のiPhoneデバイスで私のiPhoneアプリをテストする必要があるのだろうか?彼らは(Apple)が私のデバイスとほぼ同じ「シミュレータ」を与えているのですか?
回答:
少なくとも実際のデバイスでアプリケーションをテストして、少なくとも次の動作を確認する必要があります。
iOS開発者は、このリストを続けてください。
エミュレータでテストするときに決してわからないことの1つは、実際のデバイスを手に持って、画面上で指をスライドさせているユーザーにとって実際にどのように感じるかです。その結果、ラップトップのタッチパッドでシミュレートする際にスムーズに見えるユーザーアクションは、実際のデバイスの使用にとっては非常に面倒になる場合があります。アプリケーションが正常であることを確認するには、実際のデバイスでテストします。
実際のデバイスでテストする価値があるもう1つのことは、バッテリーの消費です。シミュレーターの開発者がツールでそれを再現する方法に頼るよりも、実際のデバイスでテストする方が本当に安全です。
シミュレーターで十分に近いものではない他のものがあるかもしれません。たとえば、音量とバランス-ラップトップでの音の聞こえ方は、実際の携帯電話での聞こえ方とは異なる場合があります。振動は、シミュレータではほとんどうまくいかないもう1つの例です。ジャイロセンサーの実際の電話での動作方法。GPS /位置関連のもの。などなど...
シミュレーターと実際のデバイスのテストは非常に重要な問題です。私の過去のプロジェクトの1つで、商業的成功の重要な部分は、これらの種類のテストのバランスを慎重にとることでした。
実際の作業は、理由を尋ねると開始されます。特定のケースや状況で、デバイス上でのテストとシミュレーターのテストを選択する理由を選択します。
デバイスのテストを無視すると、製品がエンドユーザーの手に直接触れる危険性が非常に高くなり、開発に費やしたすべての努力が完全に破壊されます。ただし、シミュレーターのテストははるかに安価で、自動化がはるかに簡単です。盲目的にオンデバイスのみのテストに固執すると、それらのリリースは競合他社のものよりも大幅に遅くなり、より高価になる可能性があります。
経験から、そしてベスト投票の回答から離陸:
Windows Phone 7向けにデシメーションX2を開発したとき、マウスではなく指が最大の違いでした。マイクロソフトから電話でローンチタイトルを入手するよう招待されたため、最後の文が意味をなさない場合、リリース前に無料のWP7を受け取る可能性がありました。ユーザーが自分の指でやりたいことは、実際の電話では非常に困難でしたが、マウスでは簡単でした。そして、それはスクリーンエッジのケースに関係していました。残念ながら、このゲームでは、常に画面の端に指を置く必要がありました。一部の携帯電話は、画面が沈んでいるだけでなく、厚手のケースのために操作が困難でした。これを修正するパッチを実際に公開しました。これは、すべての初めてのユーザーが悪い、潜在的に使用できないと表示されたことを意味します ゲームのバージョン。:(
ハードウェア速度の違いが次に大きな違いでした。Xbox 360バージョンのゲームを不正確な方法で推測し、それに応じてフレームレートの半分(60fpsから30fps)と3分の1 GHz(3.0GHzから1.0GHz)にダウングレードするという文字通り推測する必要がありました。違う。もちろん、プロセッサは異なっていましたが、私たちはこれを知っていました。ハードウェアがなければ、当て推量が足りませんでした。WP7がなかったので、それは私たちの選択ではありませんでしたが、私はあなたと今共有している教訓を学びました。一部の携帯電話では、ゲームの最も集中的な部分でフレームを落としました。:(スローダウンがこのような激しい部分に適切であると仮定したため、誰も気にしなかったようです。それは大したことではありませんでしたが、ポイントは:これが大したことだった場合、「アプリ」は私たちの不完全な当て推量から壊れていただろう。
実際のハードウェアでテストします。また、さまざまな電話ハードウェア用にコーディングする場合、パフォーマンスが問題になる場合は、低価格のものでテストしてください。
ポケットにシミュレーターを置いて歩き回るユーザーがあまり多くないからです。
編集:シミュレーター(またはエミュレーター)でアプリをテストするときは常に、実物を100%正確に表現できない偽のデバイスを使用しています。エミュレータはシミュレータよりも正確かもしれませんが、まだ違いがあります。唯一の100%正確なエミュレーターは、デバイス自体です。
シミュレータでコードを設計、テスト、最適化すると、シミュレータで最適に動作するように微調整されたアプリケーションが作成されます。ただし、ユーザーにはシミュレーターはありません。間違ったデバイスをターゲットにしている。非常によく似たもの。ただし、ユーザーが使用するデバイスとまったく同じではありません。
これはいくつかの種類の問題につながる可能性があります。バグのような重大な問題、クラッシュは間違いなく最優先事項です。しかし、他にもあります。人間工学など。シミュレーターを手に持ってみてください。ちょうど試して。UI要素は異なる画面でレンダリングされ、おそらく異なるレンダリングと異なるサイズで表示されます(美しいRetinaディスプレイによって悪化する問題。たとえば、Retina Macbookを使用しても完全には解決されません)。これらの絶妙なグレーの色合いは、太陽の下でデバイス上で同等に区別できますか?
速度の微妙な違い、およびセンサーエミュレーションの違い(またはその欠如)は、エクスペリエンスを劇的に変えることがあります。
アプリケーションがインターネット接続に依存している場合、LTE、3G、EDGE、GPRSを切り替えたり、異なるシナリオをテストしたり、異なるキャリアをテストしたりする方法はありません。
ジェイルブレイクされたデバイスをサポートしますか?おそらくそうではないかもしれませんが、もしそうなら、おそらくあなたはそれを使ってアプリをテストすることをいとわないでしょう。または、そうでない場合、ジェイルブレイクされた環境を検出していると確信していますか?
シミュレーターで開発しているiPadゲームは、ユーザーが体重を保持し、指を使ってプレイしている場合でも同様に使用できますか?意図しない複数のタッチは、安全なシングルタッチ(または対称ダブルタッチ)シミュレーター環境では予測できなかったアプリを破壊する可能性がありますか?
実際に一度も地上を離れたことがないパイロットが指揮する飛行機に乗り心地はいいですか?
要するに、出荷する前に、ユーザーが使用するのと同じデバイスを使用してください。いずれもシミュレータを使用しません。
実用的な理由:
1)「メール送信」機能がありません。
2)デバイスを上下逆さまにすることはできません。
そしてもちろん、すでに理由を言った:
3)低帯域幅
4)シミュレーターと比較して非常に小さな計算能力
5)Open GL呼び出しは、シミュレーターで少し異なります
6)ディスク容量/ RAM ..
ハードウェアのパフォーマンスは一般に悪いと言われていますが、これはOpenGL ESには当てはまらないことに注意する必要があります。シミュレーターはソフトウェアでそれを実装するため、大きなパフォーマンスに気付くのは珍しいことではありません、デバイス上で実行中にが大幅に向上。
さらに、Open GL ESのソフトウェア実装とハードウェア実装にはいくつかの小さな違いがあります。たとえば、シェーダーの精度のヒントには異なる出力がある場合があります。
実際のデバイスとエミュレーターの間には実際のパフォーマンスの違いがあります。多くの場合、エミュレータを使用したテストのみでアプリが非常に低速になることがわかりましたが、これは予期していませんでした。