AI For Test Generation: کہاں یہ مددگار ہے اور کہاں یہ دھوکہ دیتا ہے

AI تیزی سے ٹیسٹ لکھتا ہے۔ یہ ایسے ٹیسٹ بھی لکھتا ہے جو دیکھنے میں تو اصلی لگتے ہیں لیکن غلط چیزوں کی تصدیق کرتے ہیں۔

آپ ایک فنکشن AI میں پیسٹ کرتے ہیں۔ تیس سیکنڈ بعد، آپ کے پاس بارہ پاس ہونے والے ٹیسٹ ہوتے ہیں۔ آپ کا کوریج اسکور بڑھ جاتا ہے۔ آپ خود کو پیداواری (productive) محسوس کرتے ہیں۔

پھر پروڈکشن میں ایک بگ (bug) آ جاتا ہے۔ آپ ان بارہ ٹیسٹوں کو دیکھتے ہیں اور محسوس کرتے ہیں کہ ان میں سے کوئی بھی اسے پکڑ نہیں سکتا تھا۔

AI نے اس چیز کا ٹیسٹ کیا جو آپ کا کوڈ کر رہا ہے، نہ کہ اس چیز کا جو آپ کے کوڈ کو کرنا چاہیے۔

AI مفید ہے، لیکن آپ کو معلوم ہونا چاہیے کہ اسے کیسے استعمال کرنا ہے۔

جہاں AI کامیاب ہے:

  • سیٹ اپ (setup) اور ٹیئر ڈاؤن (teardown) بلاکس جیسے بوائلر پلیٹ (boilerplate) کوڈ تیار کرنا۔
  • بار بار استعمال ہونے والے فیکٹری ہیلپرز (factory helpers) اور ڈیٹا آبجیکٹس لکھنا۔
  • ایک اچھے ٹیسٹ پیٹرن کے بہت سے مختلف ورژن بنانا۔
  • واضح ایج کیسز (edge cases) جیسے null، خالی اسٹرنگز، یا صفر کو سنبھالنا۔

جہاں AI ناکام ہوتا ہے:

  • امپلیمنٹیشن پر مبنی ٹیسٹ: یہ بزنس لاجک کے بجائے کوڈ کے ڈھانچے (structure) کے مطابق ٹیسٹ لکھتا ہے۔ اگر آپ کوڈ کو ریفیکٹر (refactor) کرتے ہیں، تو ٹیسٹ ٹوٹ جاتے ہیں، چاہے نتیجہ اب بھی درست ہی کیوں نہ ہو۔
  • سطحی ایج کیسز: یہ واضح غلطیاں تو ڈھونڈ لیتا ہے لیکن ڈومین سے متعلقہ بگ (domain-specific bugs) سے محروم رہتا ہے۔ یہ آپ کے ٹائم زون کی پیچیدگیوں، ڈیٹا بیس کی پابندیوں (constraints)، یا آپ کے مخصوص کاروباری اصولوں سے واقف نہیں ہوتا۔
  • کمزور موکس (Brittle mocks): یہ ان اندرونی سروسز کو موک (mock) کر دیتا ہے جنہیں اصلی رہنا چاہیے۔ اس سے ٹیسٹوں کو برقرار رکھنا مشکل ہو جاتا ہے اور ریفیکٹرنگ کے دوران ان کے ٹوٹنے کا خطرہ بڑھ جاتا ہے۔

"ٹیسٹ تھیٹر" (test theater) بنائے بغیر AI کو کیسے استعمال کریں:

  1. پہلے معاہدہ (contract) طے کریں۔ سادہ انگریزی میں ایک جملہ لکھیں کہ ٹیسٹ کو کیا ثابت کرنا چاہیے۔ مثال کے طور پر: "An expired code must return the original amount."
  2. وہ جملہ AI کو دیں۔ AI کو کوڈ لکھنے دیں، لیکن مقصد (intent) آپ کا ہونا چاہیے۔
  3. صرف سرحد (boundary) پر موک (mock) کریں۔ اپنے اندرونی ماڈیولز کے لیے اصلی انسٹنس (instances) استعمال کریں۔ صرف بیرونی APIs یا ڈیٹا بیس کو موک کریں۔
  4. ایک ڈومین ایج کیس ہاتھ سے لکھیں۔ AI "واضح" ایج کیسز کو سنبھال لیتا ہے۔ آپ کو وہ "رات کے 3 بجے والے" (3 AM) ایج کیسز سنبھالنے ہوں گے جو اصل میں پروڈکشن میں حادثات کا باعث بنتے ہیں۔

AI کو یہ فیصلہ نہ کرنے دیں کہ ٹیسٹ کس چیز کی تصدیق کرتا ہے۔ اسے کوڈ ٹائپ کرنے کے لیے استعمال کریں، لیکن منطق (logic) آپ فراہم کریں۔

ماخذ: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm