PHPでのA / Bテストの実装方法

オンラインストアの分割テストを実施するタスクがありました。 このトピックをGoogleで検索しました。 いくつかのサービスを見つけましたが、何らかの理由でそれらは私たちに合わなかった。



たとえば、Googleアナリティクスによるテストの使用は機能しませんでした。なぜなら、 統計にYandexメトリックスを使用しているため、サイトに別の分析システムを組み込みたくありません。 それに、私が理解しているように、動的ページまたはその一部の要素をテストする際にGoogleに問題があります。



abtest.ru(ちなみに、何らかの理由で機能しない)などのその他のサービスも適切ではありません。 そこでは、何かの外観のみを変更できます。 そして、たとえば、データベースからの特定の情報の結論/非撤回についてサイトをテストする必要があります(例として、商品リストに商品の簡単な説明を表示するか、仕様を表示するかなど)。



私は自分でA / Bテストを実装しようと決め、小さなPHPコードをサイト(PHPで書かれたオンラインストア)に追加しました。

サイトの1つまたは別の要素の変更がコンバージョンにどのように影響するかを確認する必要があります。 つまり サイトへのすべての訪問者は、条件付きで「訪問者A」と「訪問者B」に分けられます。 自然に均等に分割します、つまり 最初はすべて「A」、1秒ごとは「B」です。 これが「A」であるか「B」であるかに応じて、サイト要素の対応するバージョンを表示します。 最後に、訪問者が注文したかどうかを修正します



コードについては説明しませんが、何をどのように行ったかを簡単に説明します。



1.サイトの入り口で、セッションの各ユーザー(たとえば、$ _SESSION ['split'])は値「A」または「B」を記録します。 最初のすべてが「A」、2番目のすべてが「B」です。 このため、データベースには、サイトへの最後の訪問者に関するデータを含む特別な「最後の訪問者カウンター」があります。 つまり、訪問者はサイトにアクセスし、$ _SESSION ['split']に値「A」を書き込み、データベース内のカウンターも「A」に変更しました。 次の訪問者がサイトを訪問すると、スクリプトはデータベースからカウンター値を取得し、それが「A」の場合、訪問者はセッションに「B」を書き込みます。 つまり したがって、ユーザーのローテーションが保証されます。 ところで、質問は次のとおりです。データベースにアクセスせずに訪問者の交代を実装する方法、訪問者「A」または「B」に割り当てる値を確認する方法を教えてもらえますか? 結局のところ、このためには、前のものがどれほど重要だったかを知る必要があります。 それとも、スチームバスを浴びて、このランダムで最初または2番目のオプションをランダムに割り当てることはできませんか? この場合、訪問者は均等に分割されますか?



2.ユーザーのセッションで値「A」または「B」が記録された後、この値に応じて、ユーザーにはテスト対象の要素の最初または2番目のバージョンが表示されます。 つまり ユーザーがテスト対象の要素が配置されているページに移動すると、すぐに$ _SESSION ['split']に書き込まれているものがチェックされ、結果に応じて、1番目または2番目のオプションが表示されます。



3.結果を保存します。 このため、データベースには結果をカウントするためのカウンターがあります(注文数「訪問者A」および「訪問者B」をカウントするため)。つまり、2つのオプション「A」または「B」のそれぞれに独自のカウンターがあります。 $ _SESSION ['split']は、値「A」が注文を出した後、カウンター「A」が1増加します。訪問者「B」が注文を出した場合、カウンター「B」は1増加します。



実際、かなり単純なコードであることがわかります。 しかし、これは怖いです。 A / Bテストプロセスの微妙な点やニュアンスを考慮しなかったようで、すべてがはるかに複雑で深いです。 結局のところ、さまざまな物議を醸す状況が可能です。 たとえば、サイトを訪問した訪問者を考慮して、サイトを離れて再び戻ってきた場合、どうすればよいでしょうか? サイトへの2回目の訪問時にそれらを表示するか、最初の訪問時に表示したテスト項目のバージョンを表示するか、この訪問者を再度ローテーションキューに入れるか。 そして、ここでは、セッションメカニズムではなくCookieメカニズムを使用するという疑問がすでに生じています。



私はこの投稿を書いて、最も単純なA / Bテストの実装を共有すると同時に、この主題に関する専門家の意見に耳を傾けました。 たぶん、いくつかのヒント、コメントなどがあるでしょう。



All Articles