1000 غلطیاں، ایک گوگل شیٹ، اور پانچ گھنٹے جو مجھے کبھی واپس نہیں ملیں گے
ہر بگ کی ایک کہانی ہوتی ہے۔ اس کی شروعات ایک جھوٹ سے ہوئی: "یہ میرے کمپیوٹر پر تو ٹھیک چل رہا ہے۔"
ہم نے ایک لیڈ جنریشن کمپنی کے لیے ڈیٹا امپورٹ فیچر کی جانچ کی۔ یہ سادہ سا معلوم ہوتا تھا۔ آپ ایک بٹن پر کلک کرتے ہیں، ایک فائل اپ لوڈ کرتے ہیں، اور ڈیٹا لوڈ ہو جاتا ہے۔
زیادہ تر لوگ یہ فرض کر لیتے ہیں کہ یہ فیچرز کام کرتے ہیں۔ ٹیسٹرز کا مقصد اس مفروضے کو غلط ثابت کرنا ہوتا ہے۔
"ہیپی پاتھ" (happy path) ایک جال ہے۔
اگر آپ ایک صاف ستھری ایکسل فائل اپ لوڈ کرتے ہیں، تو سسٹم پاس ہو جاتا ہے۔ آپ لنچ کے لیے چلے جاتے ہیں۔ آپ سمجھتے ہیں کہ کام مکمل ہو گیا۔ اگر آپ وہیں رک گئے، تو آپ ایک خراب کوڈ ریلیز کر دیں گے۔ کوئی گاہک پیر کی صبح پروڈکشن میں اس غلطی کو ڈھونڈ نکالے گا۔
مسئلہ ایک گوگل شیٹ کا تھا۔
اصل صارفین صاف ستھری ایکسل فائلیں استعمال نہیں کرتے۔ وہ بکھری ہوئی گوگل شیٹس استعمال کرتے ہیں۔ وہ اسپریڈ شیٹس میں افراتفری پیدا کرتے ہیں اور توقع کرتے ہیں کہ سسٹم اسے سنبھال لے گا۔
جب ہم نے ایک گوگل شیٹ اپ لوڈ کی، تو سسٹم فیل ہو گیا۔ اس نے 1,000 سے زیادہ غلطیاں پیدا کیں۔ وہی ڈیٹا اور وہی بٹن مکمل تباہی کا باعث بنا کیونکہ فارمیٹ بدل گیا تھا۔
پھر ہم نے ڈیٹا کے معیار کی جانچ کی۔
- چند غلط قطاریں (rows)؟ سسٹم نے انہیں چھوڑ دیا اور آگے بڑھ گیا۔
- سینکڑوں بکھری ہوئی قطاریں؟ سسٹم ٹوٹ گیا۔
ویلیڈیشن لاجک (validation logic) چھوٹی غلطیوں کے لیے کام کر رہی تھی۔ لیکن جب اس کا سامنا کچرے بھرے ڈیٹا کے پہاڑ سے ہوا، تو یہ ناکام ہو گئی۔
ہم نے اسے ڈی بگ کرنے میں پانچ گھنٹے صرف کیے۔ ہم نے فائل، براؤزر اور ڈیٹا کو قصوروار ٹھہرایا۔ یہاں تک کہ ہم نے کافی کو بھی قصوروار ٹھہرایا۔
وہ پانچ گھنٹے تو سستے تھے۔ اس کا متبادل بہت مہنگا تھا۔ اگر کوئی گاہک یہ بگ ڈھونڈ لیتا ہے، تو وہ آپ کی پروڈکٹ پر سے بھروسہ کھو دیتا ہے۔ آپ ٹیسٹنگ میں بگ کی قیمت وقت سے ادا کرتے ہیں۔ آپ پروڈکشن میں بگ کی قیمت گاہکوں سے ادا کرتے ہیں۔
میں وقت کے ذریعے ادائیگی کرنے کو ترجیح دیتا ہوں۔
اصل بگ ڈھونڈنے کے لیے، آپ کو اپنی سوچ بدلنی ہوگی۔ یہ نہ پوچھیں کہ کیا سافٹ ویئر کام کرتا ہے۔ یہ پوچھیں کہ اسے کیسے توڑا جا سکتا ہے۔
ڈویلپر کی طرح سوچنا بند کریں۔ ان لوگوں کی طرح سوچنا شروع کریں:
- وہ سست صارف جو غلط فائل فارمیٹ اپ لوڈ کرتا ہے۔
- وہ افراتفری پسند صارف جس کی شیٹ میں مرج شدہ سیلز (merged cells) اور خالی قطاریں (empty rows) ہوں۔
- وہ بلک صارف جس کے پاس 10 صاف ستھرے ریکارڈز کے بجائے 4,000 گندے ریکارڈز ہوں۔
- وہ شرارتی صارف جو بالکل وہی کرتا ہے جو اسے نہیں کرنا چاہیے۔
سافٹ ویئر ان ان پٹس (inputs) پر ٹوٹتا ہے جن کی آپ کو توقع نہیں ہوتی۔
"سادہ" فیچرز سب سے زیادہ خطرناک ہوتے ہیں۔ امپورٹ بٹن اور سرچ باکس بے ضرر نظر آتے ہیں۔ لیکن وہ نہیں ہیں۔
اگلی بار جب کوئی فیچر "ہیپی پاتھ" سے گزر جائے، تو وہ انسان بنیں جو یہ پوچھے: "کیا ہوگا اگر میں تصور کے قابل بدترین فائل اپ لوڈ کر دوں؟"
پھر جا کر ایسا ہی کریں۔
