Web アプリケーションの分割テストでは、通常、Google Website Optimizer などのツールを使用して効果を最大化するために、さまざまなオプションが分割テストされます。最も印象的な例の 1 つは、Google であり、スプリットが何十もの青の色合いをテストして正しいものを見つけた方法です。
Android アプリケーションを開発する場合、A/B テストまたは多変量テストに従うべきベスト プラクティスはありますか?
Web アプリケーションの分割テストでは、通常、Google Website Optimizer などのツールを使用して効果を最大化するために、さまざまなオプションが分割テストされます。最も印象的な例の 1 つは、Google であり、スプリットが何十もの青の色合いをテストして正しいものを見つけた方法です。
Android アプリケーションを開発する場合、A/B テストまたは多変量テストに従うべきベスト プラクティスはありますか?
最初にここに来て、結果を続けて、エレガントな答えに出くわしました。(11 年 5 月 12 日のビンセント・ツァオ)
private static final boolean isA = UUID.randomUUID().getLeastSignificantBits() % 2 == 0;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(isA){
setContentView(R.layout.mainA);
MyApp.getInstance().tracker().trackPageView("/AUser");
}else{
setContentView(R.layout.mainB);
MyApp.getInstance().tracker().trackPageView("/BUser");
}
...
}
私の唯一の考えは、選択を保存して、毎回同じレイアウトに戻ることです。
私はちょうどこれを考えていました (したがって、私をここに連れてきた Google 検索です)。私の検索ではフレームワークが得られませんでした。
テストしたいものを起動する前にわかっていれば、それは (理論的には) 非常に簡単です。起動時に家に電話して、アプリが A または B を表示するかどうかを尋ねます (結果を送信するときに、ユーザーがどのコホートに属しているかを送信します)。
多くの場合、アプリは公開されてから 1 週間が経過したため、バリエーションのテストを開始したいと考えています。新しいバージョンをアップロードすることもできますが、それは悪い考えではありません。しかし、自分のアプリを更新する人だけに限定したくない場合は、Web からクラスをダウンロードして動的にロードできるようです。
http://developer.android.com/reference/dalvik/system/DexFile.html http://developer.android.com/reference/dalvik/system/DexClassLoader.html
もちろん、ダウンロードしたクラスをどうするかを知っておく必要があります。あなたのアプリは更新のために家に電話をかけ、dex ファイルと、どのクラスを置き換える必要があるかを示す説明ファイルの両方をダウンロードすると思います。
私はこれを自分で試していません。これで何をするにしても、それは簡単ではないと感じています。
最善の回避策は、モバイル Web ブラウザーからアクセスできるモバイル アプリを構築することです。したがって、optimizely などの a/b リソースを実装できます。ただし、ネイティブ アプリの感覚を得るメリットは失われます。Web で行うように、ネイティブ アプリを A/B テストしようとしている場合。少なくとも私の知る限りでは、運が悪かったことを残念に思います