תארו לעצמכם שביליתם שבוע על עיצוב כפתור חדש, הרצתם מבחן A/B על 50 מבקרים — ההמרה עלתה ב-40%. הוצאתם אותו לאוויר בשמחה, אבל חודש לאחר מכן הכל חזר לרמת הבסיס. הטעות: מדגם קטן נתן תוצאה חיובית שגויה. נתקלנו בזה עשרות פעמים. מבחן A/B הוא ניסוי מבוקר לשיפור המרת האתר ואופטימיזציה של המרות. הוא מספק תשובות אובייקטיביות רק כאשר מתקיימים הדרישות הסטטיסטיות. אנו משתמשים בפיצול בצד השרת, מחשבים מראש את גודל המדגם, ומנתחים תוצאות לפי פלחים. זה מבטיח שכל מבחן יניב מסקנות אמינות, לא תנודות אקראיות.
בעיות שאנו פותרים
- אפקט ההבהוב — כאשר משתמשים רואים את הגרסה המקורית ולאחר מכן את הגרסה החלופית. פיצול בצד השרת מבטל זאת לחלוטין: הגרסה מוקצית לפני עיבוד ה-HTML, ללא ציורים מחדש.
- תנועה לא מספקת — רבים בודקים על מדגם קטן ומקבלים נתונים לא אמינים. אנו מחשבים מראש את הנפח הנדרש באמצעות מחשבון: עבור המרה של 3% ו-MDE של 15%, יש צורך ב-3842 מבקרים לכל גרסה.
- התעלמות מפלחים — ההמרה הכוללת עשויה שלא להשתנות, אך במכשירים ניידים השיפור יכול להיות 25%. אנו מפרקים את הניתוח לפי מכשיר, דפדפן, מקור, ומספקים תובנות CRO בהתאם.
איך אנחנו עושים את זה
אנו משתמשים בפיצול בצד השרת על PHP (Laravel) או Node.js. זה נותן הקצאת גרסה דטרמיניסטית ללא הבהוב. לפני כל מבחן, אנו מבססים השערה באמצעות עקרונות בדיקת השערות. דוגמה ל-middleware עבור Laravel:
// Laravel Middleware: назначить вариант до рендеринга
class AbTestMiddleware
{
public function handle(Request $request, Closure $next)
{
$testName = 'checkout_form_v2';
$userId = auth()->id() ?? $request->session()->getId();
// Детерминированное назначение по user ID
$variant = (crc32($userId . $testName) % 2 === 0) ? 'control' : 'variant';
$request->merge(['ab_variants' => [$testName => $variant]]);
View::share('ab_variants', [$testName => $variant]);
$response = $next($request);
$response->headers->set('X-AB-Variant', $variant);
return $response;
}
} {{-- В шаблоне --}}
@if($ab_variants['checkout_form_v2'] === 'variant')
@include('checkout.form-v2')
@else
@include('checkout.form-v1')
@endif למה פיצול בצד השרת עדיף על פני פיצול בצד הלקוח
פיצול בצד השרת נטען פי 3 מהר יותר עבור המשתמש (ללא ציור מחדש), עוקב אחר המרות בצורה מדויקת יותר (100% מהאירועים נרשמים), ומבטל הבהוב. פתרונות בצד הלקוח (Google Optimize, VWO) יכולים לעוות נתונים עקב טעינה אסינכרונית והבהוב. אנו ממליצים על גישה בצד השרת לפרויקטים עם דרישות דיוק גבוהות.
| מאפיין | פיצול בצד השרת | פיצול בצד הלקוח |
|---|---|---|
| הבהוב | אין | אפשרי |
| מהירות טעינה | מיידי (HTML מוכן) | עיכוב עקב טעינת JS |
| דיוק נתונים | 100% | תלוי בסקריפטים אסינכרוניים |
| עומס על השרת | מינימלי | אין |
איך לחשב גודל מדגם
באמצעות הנוסחה לפרופורציות: n = (Z_alpha/2 + Z_beta)^2 * (p1*(1-p1) + p2*(1-p2)) / (p2-p1)^2. Z_alpha/2 = 1.96 לרמת ביטחון של 95%, עוצמה של 80% נותנת Z_beta = 0.84. לדוגמה, עם המרה נוכחית של 5% ו-MDE של 10%, יש צורך ב-7089 מבקרים לכל גרסה.
| המרה נוכחית | MDE | גודל מדגם לכל גרסה |
|---|---|---|
| 2% | 20% | 3785 |
| 5% | 10% | 7089 |
| 10% | 10% | 11468 |
חישוב שלב אחר שלב
- קבעו את ההמרה הנוכחית (p1) ואת האפקט המינימלי שניתן לזיהוי (MDE).
- הגדירו רמת ביטחון (בדרך כלל 95%) ועוצמה סטטיסטית (80%).
- השתמשו בנוסחה או במחשבון מקוון (לדוגמה, ויקיפדיה).
- אספו את מספר המבקרים הנדרש לכל גרסה.
- אל תפסיקו את המבחן עד שתגיעו לנפח המחושב.
מבחן A/B הוא ניסוי מבוקר עם שתי גרסאות. — ויקיפדיה
טעויות נפוצות
- הפסקת המבחן מוקדם מדי — ערך ה-p משתנה; חכו לנפח המחושב.
- בדיקת מספר שינויים בבת אחת — זהו מבחן רב-משתני; קשה לפרש את התוצאות.
- התעלמות מפלחים — המבחן עשוי להיות ניטרלי בסך הכול, אך בנייד יכול להיות שיפור של 25% בחוויית המשתמש.
- אי התחשבות בעונתיות — הרצו את המבחן בתקופה מייצגת (לא ב-Black Friday).
דוגמה מהשטח: 30% תוצאות חיוביות שגויות
בפרויקט אחד, לקוח הרץ 10 מבחנים — 3 הראו מובהקות. לאחר היישום, רק 1 אישר את האפקט. הסיבה: גודל מדגם קטן והשוואות מרובות. הרצנו מחדש את כל המבחנים עם חישוב נכון: מתוך 10, רק 2 היו מובהקים באמת. החיסכון הסתכם במאות שעות פיתוח.
כדי להימנע מטעויות אלו, חשוב לעקוב אחר המתודולוגיה ולא למהר למסקנות. לדוגמה, אנו תמיד בודקים פלחים ומשתמשים ברווחי סמך כדי להעריך שונות. מבחני A/B מדויקים עוזרים להימנע מבזבוז משאבים על שינויים לא יעילים.
מה כלול
- התקנת פיצול A/B בצד השרת על המחסנית שלכם (Laravel, Node.js, Python).
- אינטגרציה עם כלי ניתוח web כמו Google Analytics 4 או Yandex.Metrica למעקב אחר אירועים.
- סקריפט ניתוח עם מבחן Z ורווחי סמך.
- תיעוד של המבחנים שבוצעו ופרשנותם.
- תמיכה למשך שבועיים לאחר ההשקה (התאמות במידת הצורך).
ציר זמן ועלות
הקמת מבחן A/B בודד אורכת בין 2 ל-4 ימי עבודה. העלות מחושבת באופן אישי בהתאם למורכבות האינטגרציה ומספר המבחנים. אנו מבטיחים תהליך שקוף ודוח סופי ברור. עלויות הקמה טיפוסיות נעות בין 800 ל-2500 דולר למבחן, עם חיסכון חודשי פוטנציאלי מהגדלת המרה העולה על 10,000 דולר לאתרי מסחר אלקטרוני. לדוגמה, מבחן בודד בעלות 1500 דולר יכול להוביל ל-12,000 דולר בהכנסות נוספות בחודש. עם ניסיון של 7+ שנים ויותר מ-50 מבחני A/B שהושלמו בתעשיות שונות, אנו עוזרים לכם להימנע ממלכודות נפוצות ולהשיג תוצאות אמינות.
רוצים להגדיל המרות בצורה צפויה? צרו קשר — נדון בפרויקט שלכם ונבחר תוכנית בדיקה אופטימלית. קבלו ייעוץ ממהנדס בכיר כבר עכשיו. אנו גם ממליצים לחקור גישות בייסיאניות ותיקוני השוואות מרובות (לדוגמה, Bonferroni) כאשר מריצים מספר גרסאות במקביל.
תובנות טכניות נוספות
לניתוח מתקדם יותר, שקלו להשתמש במבחני chi-square לנתונים קטגוריאליים או ברגרסיה לוגיסטית לשליטה במשתנים נלווים. דגימה מרובדת יכולה להפחית שונות, ושיטות בדיקה רציפות כמו SPRT מאפשרות עצירה מוקדמת ללא הגדלת תוצאות חיוביות שגויות. הצוות שלנו מיישם טכניקות אלו לפי הצורך.
אישורי חברה
לחברה שלנו 5 שנות ניסיון בשוק, עם רקורד של שיפורי המרה מדידים. עבדנו עם לקוחות SaaS, מסחר אלקטרוני ו-B2B, ושיפרנו בעקביות את ה-ROI שלהם באמצעות ניסויים קפדניים.







