زیادہ تر اینڈ ٹو اینڈ ٹیسٹ سویٹس ایک حقیقی براؤزر چلاتے ہیں اور صارف کی طرح ایپ کے ذریعے کلک کرتے ہیں۔ تصدیق کریں کہ صفحہ رینڈر ہوتا ہے اور عناصر ظاہر ہوتے ہیں۔
لیکن وہ چیک نہیں کرتے کہ آیا ان عناصر کی تعداد درست ہے۔ ایک ڈیٹا پائپ لائن بگ جس کی وجہ سے ملائیشیا کی آبادی اصل 34 ملین کے بجائے 3.4 ملین کے طور پر ظاہر کی گئی تھی جس نے سوٹ میں تمام سلیکٹر ٹیسٹ پاس کیے تھے۔
عنصر اب بھی موجود ہے۔ نمبر اب بھی پیش کیے جاتے ہیں۔ صفحہ اب بھی درست معلوم ہوتا ہے۔ لیکن کیڑے بھیجے جاتے ہیں اور وہیں بیٹھے رہتے ہیں جب تک کہ انسان ان پر توجہ نہ دیں۔
میں ایک مکمل اسٹیک انجینئر کے طور پر کام کرتا ہوں۔ پلے رائٹ کا استعمال کرتے ہوئے اینڈ ٹو اینڈ (E2E) ٹیسٹ لکھنا اور Jest کا استعمال کرتے ہوئے یونٹ ٹیسٹ میرے روزمرہ کے کام کا حصہ ہیں۔ ہم پلے رائٹ MCP کا بھی استعمال کرتے ہیں، جو AI معاونین جیسے Claude اور چلانے والے براؤزر کے درمیان ایک پل کا کام کرتا ہے جب ہمیں پہلا ڈرافٹ ٹیسٹ کوڈ تیار کرنے یا کسی بہاؤ کو ڈیبگ کرنے کی ضرورت ہوتی ہے۔
ان میں سے کوئی بھی ٹول سلیکٹر پر مبنی پروڈکٹ لائنوں کے لیے دیکھ بھال کے ٹیکس کو بند نہیں کرتا ہے۔ تمام E2E سویٹس جو آپ کام پر استعمال کرتے رہتے ہیں مجموعی ہیں۔ data-testid سلیکٹر، waitForSelector کالز اور ٹیسٹ جو ٹوٹ جاتے ہیں کیونکہ کسی نے بٹن کا نام تبدیل کر دیا ہے۔
Bug0 کی بریکنگ ایپس ہیکاتھون نے مجھے کچھ مختلف کرنے کا بہانہ دیا۔ ہفتے کے آخر میں، میں نے Passmark کا استعمال کیا، Bug0 کی اوپن سورس AI پر مبنی پلے رائٹ لائبریری، ملائیشیا میں تین پبلک اوپن ڈیٹا پورٹلز: data.gov.my، OpenDOSM، اور KKMNow کے لیے ایک آٹوریگریسو سویٹ بنانے کے لیے۔
ٹیسٹ سادہ انگریزی میں لکھا جاتا ہے۔ دو AI ماڈل ہر دعوے کی تصدیق کرتے ہیں۔ تیسرا اختلاف کی ثالثی کرتا ہے۔
ذیل میں آپ کو مل جائے گا:
-
E2E ٹیسٹ کیسے لکھیں جو نہ صرف یہ چیک کرتے ہیں کہ آیا صفحہ رینڈر ہو رہا ہے، بلکہ یہ بھی کہ آیا ڈیش بورڈ پر نمبر درست ہیں۔
-
کاپی کرنے کے لیے تیار کام کرنے والی مثالیں اور مخصوص دعوے کے نمونے (اسکوپڈ KPIs) جو سلیکٹر ٹیسٹوں سے چھوٹ جانے والے ڈیٹا پائپ لائن بگز کی پوری کلاس کو پکڑتے ہیں۔
-
یہ ایک کراس فیلڈ ریاضی کا دعویٰ ہے جو پاس مارک کے ساتھ ایک بیان، اور پاس مارک کے بغیر کوڈ کی تقریباً 100 لائنیں لیتا ہے۔
-
کس طرح پاس مارک کی ناکامی کی تفصیل میری ڈیبگنگ لوپ بن گئی (اس میں سب سے بڑی تبدیلی کہ میں آگے بڑھ کر E2E ٹیسٹ کیسے لکھوں گا)
-
حقیقی حدود: 14% کیش ہٹ ریٹ، اوپن راؤٹر پر انحصار، دونوں ماڈل پولز میں کچھ نہیں پکڑا گیا
انڈیکس
ہمیں ملائیشیا میں اوپن ڈیٹا پورٹل کی ضرورت کیوں ہے؟
ہیکاتھون نے مجوزہ اہداف جیسے کہ ورسل کامرس، کیل ڈاٹ کام، اور ہاشنوڈ۔ یہ سب ٹھوس انتخاب ہوتے۔
لیکن میں اس کے بجائے مقامی، روزمرہ کے کام کے قریب کچھ جانچنا چاہتا تھا۔ میں ہر روز نمبروں کے ساتھ بھی ڈیل کرتا ہوں، اس لیے میں ایک ایسی ڈیٹا ہیوی سائٹ چاہتا ہوں جہاں اسکرین پر موجود نمبرز درست ہوں۔
ملائیشیا میں تین پبلک اوپن ڈیٹا پورٹل ہیں۔
-
data.gov.my حکومت کی ڈیجیٹل انوویشن ایجنسی MAMPU کے ذریعے چلایا جاتا ہے۔
-
OpenDOSM، شماریات کوریا کے ذریعے چلایا جاتا ہے۔
-
KKMNow، وزارت صحت کے زیر انتظام
یہ ایک دستاویزی API کے ذریعے سامنے آیا ہے اور اس کے لیے کسی تصدیق کی ضرورت نہیں ہے۔ ایسا لگتا تھا کہ یہ خودکار ٹیسٹ سویٹ کے لیے موزوں ہے۔ اس پر ڈیٹا کچھ ایسا ہے جو ملائیشیا ہر روز استعمال کرتے ہیں، لہذا درستگی اختیاری نہیں ہے۔
پاس مارک کیا ہے؟
پاس مارک ایک ڈرامہ نگار لائبریری ہے جس کے ٹیسٹ تصریحات کی طرح پڑھتے ہیں۔ مثالوں میں شامل ہیں:
await runSteps({
page,
userFlow: "population dashboard smoke",
steps: [
{ description: "Navigate to https://data.gov.my/dashboard/kawasanku" },
{
description: "Wait for the country-level Malaysia view to render",
waitUntil: "A headline population number is visible",
},
],
assertions: [
{
assertion:
"The page shows Malaysia's total population as a number greater than 20 million and less than 40 million",
},
],
test,
expect,
});
کوئی سلیکٹر نہیں ہے۔ data-testidاور نہیں page.locator(). یہ دعویٰ اس بات کا اظہار کرتا ہے کہ میں اپنے ساتھیوں کے ساتھ استعمال کیے جانے والے الفاظ کے ذریعے کیا خیال رکھتا ہوں۔
پہلی بار، AI ایجنٹ صفحہ چلاتا ہے اور Redis میں حل شدہ ڈرامہ نگار کے کاموں کو کیش کرتا ہے۔ اس کے بعد کے تمام رنز بغیر کسی ماڈل کال کے پہلے سے طے شدہ ڈرامہ نگار کی رفتار سے چلیں گے۔
اگر UI تبدیل ہوتا ہے اور کیشڈ آپریشن ناکام ہوجاتا ہے، تو AI صرف اس مرحلے میں دوبارہ مشغول ہوتا ہے۔ دو کپتان ماڈل (کلاڈ اور جیمنی) ووٹ دیتے ہیں۔ تیسرا ماڈل اختلاف کی ثالثی کرتا ہے۔
Heroic Spec: Scoped Assertion
اسکوپڈ دعوے ٹیسٹ کی پہلی شکل تھی جو میں نے لکھی تھی اور پورے سویٹ میں سب سے زیادہ استعمال کی گئی تھی۔
خیال سادہ ہے۔ یہ چیک کرنے کے بارے میں نہیں ہے کہ آیا کوئی مخصوص عنصر موجود ہے، یہ اس بات کی جانچ کرنے کے بارے میں ہے کہ آیا صفحہ پر موجود نمبر ایک معقول حد میں آتا ہے۔
نیچے دی گئی تصویر آبادی کی تصریح کی پلے رائٹ کی رپورٹ ہے جس میں چاروں رینج کے پابند دعوے منظور کیے گئے ہیں۔
رینج محدود آبادی کی جانچ وہ ٹیسٹ ہے جو پاس مارک کی حقیقی قدر کو ظاہر کرتا ہے۔
روایتی ڈرامہ نگار DOM ڈھانچے کی وکالت کرتے ہیں۔ تصدیق کرتا ہے کہ یہ کلاس کے ساتھ ایک عنصر ہے۔ kpi-total متن پر مشتمل ہے۔ 34.2 million. یہ آپ کو بتاتا ہے کہ کون سا صفحہ پیش کیا گیا تھا، یہ نہیں کہ آیا نمبر معنی خیز ہیں۔
ایک بگ جو ملائیشیا کی آبادی کو اس طرح دکھاتا ہے: 3.42 million تمام سلیکٹر ٹیسٹ پاس۔ DOM درست ہے۔ نمبر دیے گئے ہیں۔ روایتی معنوں میں کچھ نہیں ٹوٹتا۔
پاس مارک صفحہ کو پڑھتا ہے، دلیل کا جائزہ لیتا ہے، اور ناکام ہوجاتا ہے۔ 3.42 million یہ معمول کی حد سے باہر آتا ہے۔ دو ماڈل ووٹ دیتے ہیں۔ صرف ایک ماڈل سے ہیلوسینیشن غلط پاس کا سبب نہیں بنتی۔
جو دو ماڈل پولز نہیں پکڑتے
ووٹ ایک ایسے ماڈل کا دفاع کرتا ہے جو صفحہ کو غلط پڑھتا ہے۔ کوئی بھی ماڈل صفحہ کو اسی طرح غلط پڑھنے کے خلاف دفاع نہیں کرتا ہے۔ جب کلاڈ اور جیمنی DOM میں اسی غیر معمولی وائٹ اسپیس کی وجہ سے "32.4 ملین” کو "3.24 ملین” کے طور پر پارس کرتے ہیں، تو وہ اتفاق کرتے ہیں، ووٹ پاس کرتے ہیں، اور بگ بھیج دیا جاتا ہے۔
تخفیف دعوی ڈیزائن ہے۔ ایسے دعوے لکھیں جن کو سمجھنا مشکل ہو۔ ایک رینج چیک ("20 اور 40 ملین کے درمیان”) نثر کی جانچ ("تقریبا 34 ملین”) کے مقابلے میں غلط ہونے کا ایک مشکل ماڈل ہے۔ عددی حدود صفت کے مقابلے میں تشریح کے لیے کم کھلی ہیں۔ جتنے زیادہ آپ کے دلائل انگریزی میں لکھے گئے یونٹ ٹیسٹ کی طرح نظر آتے ہیں، ماڈل کے اختلاف کرنے کی گنجائش اتنی ہی کم ہوگی۔
آگے بڑھیں: کراس فیلڈ میتھمیٹکس
دائرہ کار محدود دعوے ایک اچھا پہلا قدم ہیں۔ وہ پکڑتے ہیں، "کیا یہ نمبر بالپارک پر ہے؟” لیکن وہ نہیں جانتے، "کیا یہ نمبر آپس میں ملتے ہیں؟”
اس کے لیے کراس فیلڈ ریاضی کی ضرورت ہے۔ جب آپ کا ڈیش بورڈ مجموعی آبادی اور جنس کے لحاظ سے خرابی دکھاتا ہے، تو ان دونوں کو مماثل ہونا چاہیے۔ مرد اور عورت کا مجموعہ برابر ہونا چاہیے۔ نسل کے لحاظ سے فیصد کا مجموعہ 100 کے برابر ہونا چاہیے۔
test("Cross-field math: sex breakdown sums to total population", async ({ page }) => {
test.setTimeout(180_000);
await runSteps({
page,
userFlow: "population sex breakdown consistency",
steps: [
{ description: "Navigate to https://data.gov.my/dashboard/kawasanku" },
{
description: "Wait for the Malaysia country-level view with breakdown data",
waitUntil:
"A headline total population figure is visible and a breakdown by sex is shown on the page",
},
],
assertions: [
{
assertion:
"The male and female population values shown on the page add up to approximately the headline total population, within a 5% margin",
},
{
assertion:
"Any percentage-based breakdowns visible on the page (by sex, age, or ethnicity) sum to approximately 100% within a 2 percentage-point margin",
},
{
assertion: "No breakdown value is negative or greater than the headline total",
},
],
test,
expect,
});
});
وینیلا پلے رائٹ میں لکھنے کی کوشش کریں۔ ہمیں سرخی نمبر کے لیے ایک سلیکٹر، درجہ بندی کے اجزاء کے لیے ایک سلیکٹر، کوما سے آگاہ ریگولر ایکسپریشنز کا استعمال کرتے ہوئے نمبروں کو پارس کرنے، اور مارجن کا حساب لگانے کی ضرورت ہے۔ یہ 70 سے 100 لائنوں کا کوڈ ہے جس میں تین انویریئنٹس کی توثیق کی جاتی ہے جنہیں ایلیمنٹری اسکول کے طلباء قدر کی نگاہ سے دیکھتے ہیں۔
پاس مارک ورژن ایک تصریح ہے۔ میں نے اسے کاواسنکو کے لائیو کنٹری ویو کے خلاف چلایا۔ تینوں دعوے 1.4 منٹ میں گزر گئے۔ پاس مارک کے تبصرے کا اظہار لفظی طور پر اس طرح کیا گیا ہے:
"عنوان میں کل آبادی کا اعداد و شمار ہے ‘ملائیشیا کی آبادی 32,447,385 ہے۔’ دکھائی دے رہا ہے، اور ‘جنس اور عمر کی تقسیم’ ظاہر ہے، جس کا مطلب ہے کہ جنس (مرد، عورت) کے لحاظ سے درجہ بندی ممکن ہے۔”
دو ماڈل صفحہ کو پڑھتے ہیں، نمبر نکالتے ہیں، ریاضی کرتے ہیں، اور اتفاق کرتے ہیں۔ اگر ڈیش بورڈ لے آؤٹ 3 ماہ کے بعد تبدیل ہوتا ہے، تب بھی وہی دعویٰ کام کرے گا کیونکہ سلیکٹر کا نام متعین نہیں کیا گیا ہے۔
یہ ایک ٹیسٹ کلاس ہے جسے میں ہر اس ڈیش بورڈ پروڈکٹ کے لیے چلانا چاہتا ہوں جس کو میں چھوتا ہوں۔ مالیاتی کل جو اس شے سے مماثل ہے۔ ایک فیصد جو 100 تک کا اضافہ کرتا ہے۔ انوینٹری کی گنتی آپ کے گودام کے مقامات کے مجموعے کے برابر ہے۔ ان دنوں، یہ شاذ و نادر ہی کیا جاتا ہے کیونکہ خود چیک لکھنے کی قدر اسے لکھنے کی سمجھی جانے والی قدر سے زیادہ ہے۔
جو میں نے تین رنز کے بعد دریافت کیا۔
| چلائیں | گزر گیا | کلید تبدیل کریں |
|---|---|---|
| 1 | 13 میں سے 4 (31%) | بیس لائن. میں نے ٹارگٹ پیج کو دیکھے بغیر قیاس لکھا۔ |
| 2 | 13 میں سے 8 (62%) | ہم نے پاس مارک کے اپنے فیڈ بیک کا استعمال کرتے ہوئے پانچ زیادہ مخصوص دعووں کو دوبارہ لکھا۔ |
| 3 | 13 میں سے 12 (92%) | ایک اور برا دعویٰ حذف کریں، ٹائم آؤٹ سے تجاوز کریں، دوبارہ کوشش کریں، WebKit انسٹال کریں۔ |

رن 1 کے بعد میں جو بھی تفصیلات پاس کرتا ہوں اس کے نتیجے میں پاس مارک مجھے سادہ انگریزی میں بتائے گا کہ میرے دعوے صفحہ سے مماثل کیوں نہیں ہیں۔
یہاں رن 1 سے تین مثالیں ہیں:
کے لیے dataset-detail.spec.tsمیں نے دلیل دی کہ "API کے استعمال کے ٹکڑوں (curl یا JS) دکھائے جاتے ہیں۔” میں جانتا تھا کہ صفحہ ازگر کا استعمال کر رہا ہے اور میں جاننا چاہتا تھا کہ نتائج کیا ہوں گے۔ پاس مارک نے جواب دیا:
"صفحہ API کے استعمال کے ٹکڑوں پر مشتمل ہے، لیکن وہ خاص طور پر درخواستوں کی لائبریری کا استعمال کرتے ہوئے Python کے لیے ہیں۔ curl یا JavaScript فارمیٹ میں کوئی ٹکڑا فراہم نہیں کیا گیا ہے۔”
صفحہ پر ایک ٹکڑا تھا۔ آپ نے غلط زبان کی درخواست کی ہے۔ ترمیم کریں: تمام زبانوں کی اجازت دیتا ہے۔
کے لیے dashboard-population.spec.tsمیں نے دلیل دی کہ "چارٹس کو عمر یا نسل کے لحاظ سے آبادی کا تصور کرتے ہوئے پیش کیا جاتا ہے۔” پاس مارک نے جواب دیا:
"صفحہ فی الحال اہم اعدادوشمار کے لیے چارٹ دکھاتا ہے جیسے پیدائش، اموات، اور وقت کے ساتھ قدرتی اضافہ، لیکن کوئی چارٹ خاص طور پر عمر کے گروپ یا نسل کے لحاظ سے آبادی کو دیکھنے والا نہیں ہے۔”
چارٹ موجود ہے۔ یہ وہ ٹکڑا نہیں ہے جس کے بارے میں میں سوچ رہا تھا۔ ترمیم کریں: میں آبادی کے بارے میں تمام چارٹ قبول کرتا ہوں۔
کے لیے kkmnow/hospital-utilisation.spec.tsمیں نے "ہیڈ لائن بستر کے استعمال” کے لیے بحث کی۔ پاس مارک نے جواب دیا:
"اگرچہ بستر کے استعمال کی متعدد شرحیں ٹیبلز اور درجہ بندی میں صفحہ کے نیچے درج ہیں، لیکن وہاں کوئی نمایاں سرفہرست سرخی KPI اعداد و شمار نہیں ہے جو بستر کے مجموعی استعمال کو ظاہر کرتی ہے۔”
نمبر موجود ہیں۔ میں نے ایک لے آؤٹ کی درخواست کی جو ڈیزائنر نے نہیں بنائی تھی۔
یہ قاتل خصوصیت ہے. پاس مارک کا ناکامی کا پیغام اسٹیک ٹریس نہیں ہے۔ یہی وضاحت ہے۔ AI نے صفحہ کو پڑھا، اس کا موازنہ میرے الفاظ سے کیا، اور تصحیح کی۔ سلیکٹر کی بنیاد پر ٹیسٹ پھینکنے جیسی کوئی چیز نہیں ہے۔ TimeoutError: waiting for locator.
ڈیبگنگ لوپ
ایک بار جب میں نے پیٹرن کو دیکھا، لوپس میری اہم تکنیک بن گئے۔ طریقہ کار درج ذیل ہے:
-
ناکامی کا پیغام لفظ بہ لفظ پڑھیں۔ ملائی مت کرو.
-
صفحہ پر کیا ہے اس کی وضاحت کے طور پر اس پر بھروسہ کریں۔ AI نے صفحہ پڑھا۔ یہ آپ کی دلیل نہیں ہے۔
-
صفحہ پر موجود مواد سے مماثل دعویٰ کو دوبارہ لکھیں۔ اسے وسیع کریں، اسے تنگ کریں، یا اسے دوبارہ بیان کریں۔
-
دوبارہ چلائیں۔
نظم و ضبط اوزار کے بارے میں بحث نہیں کر رہا ہے۔ ایک صفحہ صرف اتنا ہے: ایک صفحہ۔ آپ کا استدلال غلط ہے۔ جب بھی میں نے صفحہ کو "ٹھیک” کرنے کی کوشش کی (یقین ہو گیا کہ میں صحیح تھا اور سائٹ ٹوٹ گئی تھی) میں نے وقت ضائع کیا۔ جب بھی میں نے ناکامی کے پیغام کو فیس ویلیو پر لیا اور اسے دوبارہ لکھا، اگلے رن پر ٹیسٹ پاس ہو گیا۔
یہ ان تبدیلیوں میں سے ایک ہے کہ ہم آگے جا کر E2E ٹیسٹ کیسے لکھیں گے۔ فیڈ بیک لوپس ٹولز ہیں۔ ہر ناکام دلیل ایک صحیح دلیل کا مسودہ ہے۔
دو وضاحتیں جو اب بھی ناکام ہیں سب سے زیادہ دلچسپ ہیں۔
1. ثالثی کال ناکام ہوگئی کیونکہ دونوں ماڈلز متفق نہیں تھے۔
کو catalogue-search.spec.tsکلاڈ نے فیل (72% اعتماد) اور جیمنی نے اسی دلیل کے لیے پاس (100% اعتماد) کو ووٹ دیا۔ میں نے اسے پڑھنے کے لیے دو طرح سے دلیل لکھی۔
پاس مارک نے OpenRouter کے ساتھ ثالثی ماڈل تک توسیع کی ہے۔ مجھے Cloudflare سے 504 کال آئی۔ ثالث کبھی نہیں بھاگا۔ یہ خاندان تصریح میں ناکام ہو گیا ہے۔
یہ ایک ایماندارانہ حد ہے، اتفاق نہیں۔ پاس مارک چلانے والے تمام CIs OpenRouter کی دستیابی پر منحصر ہیں۔ مجھے ایک بیرونی گیٹ وے کی خرابی ہو رہی ہے۔ فائنل رن کے لیے طے کرنا OpenRouter کال کے لیے عالمی سطح پر دوبارہ کوشش کرنے والا ریپر تھا اور 504 واقعی کوئی مسئلہ نہیں تھا۔
اگر آپ اسے پروڈکشن CI میں لا رہے ہیں تو دوبارہ کوشش کرنے کا منصوبہ بنائیں اور OpenRouter کی بندش کو اپنی رن بک میں سب سے زیادہ ناکامی کے موڈ کے طور پر سمجھیں۔

اس ناکامی نے مجھے دلیل ڈیزائن کے بارے میں کچھ سکھایا۔ میرا اظہار مبہم تھا۔ کلاڈ کا پڑھنا معقول تھا۔ جیمنی کا پڑھنا معقول تھا۔ انگریزی میں ٹیسٹ لکھتے وقت، آپ کا مطلب بالکل واضح کرنا اچھی ٹیسٹ تحریر کا حصہ ہے۔
2. اسٹینڈ بائی حالات بہت جلد شروع ہو گئے۔
KKMNow تفصیلات میں: waitUntil: "A utilisation metric is visible". نمبروں کی لوڈنگ مکمل ہونے سے پہلے صفحہ پر "ہسپتال بیڈ یوٹیلائزیشن (%)” سیکشن کا لیبل ظاہر کیا گیا تھا۔ انتظار کے مرحلے میں، آپ لیبل کو دیکھتے ہیں، اس بات کا تعین کرتے ہیں کہ شرط پوری ہو گئی ہے، اور آگے بڑھیں۔ جب تک نمبر پیش کیے گئے تھے، ہمارے پاس ٹیسٹنگ کا وقت ختم ہو گیا تھا۔ جب صفحہ مکمل طور پر لوڈ ہو جاتا ہے، تو ایک دائرہ کار کا دعویٰ مواد کو دیا جاتا ہے۔
"صفحہ ایک مخصوص حد (0% سے 120%) کے اندر بستر کے استعمال کی مختلف شرحیں دکھاتا ہے۔ مثال کے طور پر، درجہ بندی کی فہرست میں Perlis کو 93.1% اور میلاکا کو 88.2% پر دکھایا گیا ہے۔”

سبق: آپ کا waitUntil اظہارات کو دعووں کے اظہار کے طور پر ایک ہی احتیاط کی ضرورت ہوتی ہے. دونوں AI کے ذریعہ پڑھے جاتے ہیں۔ مبہم انتظار اتنا ہی برا ہے جتنا کہ مبہم دعووں کا۔
اس کی قیمت کتنی ہے اور کیش ریٹ لاگت کی شرح کیوں ہے؟
13 تصریحات میں سے تین رنز کرنے میں ایک آپریٹر کو تقریباً 20 منٹ لگے۔ رپورٹ کرنے کے لیے کوئی ذاتی رقم نہیں ہے کیونکہ ہیکاتھون کی پولڈ اوپن راؤٹر کیز AI کے اخراجات کو پورا کرتی ہیں۔
زیادہ کارآمد لاگت تلاش کرنے والا وہ ہے جو کیش شدہ ہے۔
$ docker exec passmark-redis redis-cli DBSIZE
5
35 میں سے تقریباً 5 مراحل 3 رنز میں کیش کیے گئے۔ کیش ہٹ ریٹ 14% ہے۔ پاس مارک README اس کی وجہ بتاتا ہے۔
صرف وہ اقدامات جو ایک ٹول کال تیار کرتے ہیں کیش ہوتے ہیں۔ ملٹی سٹیپ سیکونسز کو غیر مقررہ سمجھا جاتا ہے۔
میرے زیادہ تر اقدامات نے ملٹی ٹول کی ترتیب کو بیان کیا۔ "علاقہ چننے والا کھولیں، سیلنگور کو منتخب کریں اور نیویگیشن کا انتظار کریں” پر کلک کریں، انتظار کریں، ٹھیک ہے۔ یہ ڈیزائن کے لحاظ سے محفوظ نہیں ہے۔
یہ آپ کے بجٹ کے لیے اہم ہے۔ 86% کی ناکامی کی شرح کا مطلب ہے کہ 86% اقدامات ہر رن ماڈل کو کال کرتے ہیں۔ قیمت کا ماڈل اوپن راؤٹر کے ذریعے فی ٹول کال ہے۔
اپنے اپنے بل کا تخمینہ لگانے کے لیے، اپنی پروڈکٹ لائن میں غیر جوہری مراحل کا حساب لگائیں اور انہیں اپنے منتخب کردہ ماڈل کی فی کال قیمت سے موجودہ OpenRouter کی شرح پر ضرب دیں تاکہ اس پروڈکٹ کی اعادی لاگت فی رن حاصل کی جا سکے۔ کیشے کی شرح لاگت کی شرح ہے۔
اس کا حل تصنیف کا نظم و ضبط ہے۔ مرکب کی تفصیل کو جوہری مراحل میں توڑ دیں۔ کیشے بھرنے کی شرح کو نظر انداز کرنے کے لیے عمل درآمد کی تفصیل کے بجائے ٹریک کرنے کے لیے میٹرک کے طور پر سمجھیں۔ 80% ایٹم قدموں والے خاندان کی قیمت 14% والے خاندان کے پانچویں حصے کے برابر ہے۔
چوری کے قابل ایک نمونہ
یہاں کا خیال پاس مارک سے بڑا ہے۔
یقینی بنائیں کہ آپ کے ڈیش بورڈ پر موجود نمبرز معنی خیز ہیں۔ زیادہ تر ٹیمیں ایسا نہیں کرتی ہیں۔ ایسا ہی ہونا چاہیے۔
ایک سطری دعویٰ جیسا کہ "ہیڈ لائن نمبر 20 اور 40 ملین کے درمیان ہے” کیڑے کے کئی طبقے پکڑے جاتے ہیں جو باقاعدگی سے جانچنے سے محروم رہتے ہیں۔
یہاں چار عام ہیں:
-
ڈیٹا پائپ لائن کو غلط طریقے سے تقسیم کیا گیا ہے اور اسکرین پر دکھائے جانے والے نمبر 10 گنا بہت چھوٹے ہیں۔
-
ٹائم زون کی خرابی کی وجہ سے، کل کے ٹوٹل کل کی تاریخ سے نیچے دکھا رہے تھے۔
-
ڈیٹا کو ریفریش نہیں کیا گیا ہے، اس لیے صارفین پچھلے ہفتے کے نمبر دیکھ رہے ہیں۔
-
لوکل سوئچ نے کوما اور اعشاریہ کو تبدیل کر دیا، لہذا 1,234,567 کو اب 1.234567 کے طور پر پڑھا جاتا ہے۔
سٹیزن پورٹل میرا مقصد تھا۔ یہ پیٹرن ڈیش بورڈ پر جہاں بھی نمبر ظاہر ہوتا ہے لاگو ہوتا ہے۔ فنٹیک رپورٹس، ساس اینالیٹکس، ہیلتھ کیئر میٹرکس، ای کامرس مینجمنٹ پینلز۔ کوئی بھی اسکرین جہاں نمبروں کا کچھ مطلب ہونا ضروری ہے۔
ان میں سے زیادہ تر نمبر غیر ٹیسٹ شدہ ہیں۔ ہاتھ سے چیک لکھنا مشکل ہے۔ آپ کو نمبر تلاش کرنے کے لیے ایک سلیکٹر، اس کو پارس کرنے کے لیے کوڈ، اکائیوں کو سنبھالنے کے لیے کوڈ، اور مارجن کیلکولیشن کی ضرورت ہوگی۔ اگر آپ ایک بار چیک کریں تو آپ کے پاس 50 لائنیں ہوں گی۔ یہ کسی کو پریشان نہیں کرتا۔
آپ کو اپنا آئیڈیا چرانے کے لیے پاس مارک کی ضرورت نہیں ہے۔ یہی امتحان باقاعدہ ڈرامہ نگاروں کے لیے بھی کام کرتا ہے۔ page.evaluate اور نمبر کرنچنگ. پاس مارک ورژن زیادہ موثر ہے کیونکہ ٹیم کا کوئی بھی فرد، نہ صرف انجینئر، اسے لکھ اور پڑھ سکتا ہے۔
ایماندارانہ فیصلہ
پاس مارک کام کرتا ہے۔ تین رنز سے زیادہ، ہم ٹول کے اپنے فیڈ بیک کی بنیاد پر، سلیکٹر کو چھوئے بغیر 13 میں سے 4 سے 13 میں سے 12 تک چلے گئے۔
لیکن درج ذیل انتباہات حقیقی ہیں۔
-
کولڈ کیش میں، ہر قدم ماڈل کا انتظار کرتا ہے۔ اپنے سلیکٹر فیملی سے زیادہ وال کلاک ٹائم حاصل کریں۔
-
میرے سویٹ میں، صرف 14% اقدامات کیش کیے گئے تھے۔ باقی 86% ہر بار ماڈل کے چلنے پر ادا کرتے ہیں۔ تحریری نظم و ضبط (ایٹمی اقدامات) سینٹ اور ڈالر فی عمل میں فرق ہے۔
-
دو ماڈل ووٹنگ دونوں ماڈلز کو ایک ہی طرح سے غلط پڑھنے سے نہیں روکتی ہے۔ ایسے دعوے لکھیں جن کو سمجھنا مشکل ہو۔
-
تمام دعوے OpenRouter کی دستیابی پر منحصر ہیں۔ بیرونی گیٹ وے کی خرابیوں کے لیے CI پر چلنے سے پہلے دوبارہ کوشش کی حکمت عملی کی ضرورت ہوتی ہے۔
میرے ذہن میں کیا پھنس گیا: پاس مارک نے مجھے پلے رائٹ میں ایک بہتر شخص نہیں بنایا۔ مجھے ایسے ٹیسٹ لکھنے پڑے جو میں دوسری صورت میں چھوڑ دیتا۔
تصور کریں کہ میں کام پر کیا کر رہا ہوں:
-
ہم کوریج اور تازگی کو یقینی بنانے پر توجہ کے ساتھ، اہم ڈیش بورڈز کے خلاف رات کے لیے چھوٹے پاس مارک سویٹس چلاتے ہیں۔
-
روایتی ڈرامہ نگاروں پر قائم رہیں اور کسی بھی ایسی چیز کے لیے جس کے لیے فوری اور فیصلہ کن ہونا ضروری ہے۔
-
تمام پاس مارک کی ناکامی کے پیغامات کو صفحہ کے لیے وضاحتیں سمجھیں، نہ کہ قابل بحث غلطیوں کے طور پر۔
اسے آزمائیں چاہے آپ پاس مارک کو کبھی ہاتھ نہ لگائیں۔ ڈیش بورڈ سے ایک نمبر منتخب کریں جس پر آپ کام کر رہے ہیں۔ ایک ایسا ٹیسٹ لکھیں جو فیل ہو جائے اگر نمبر نارمل رینج سے باہر ہو۔ دیکھیں کیا ٹوٹتا ہے۔ یہ اس مضمون کا مجموعی نمونہ اور مقصد ہے۔