ایجنٹ کے لکھے ہوئے کوڈ کے لیے میوٹیشن ٹیسٹنگ (Mutation Testing)
LLM کے ذریعے تیار کردہ ٹیسٹ سویٹس (test suites) لائن اور برانچ کوریج میں 100% تک پہنچ سکتے ہیں، لیکن ایک حالیہ مطالعہ ظاہر کرتا ہے کہ میوٹیشن ٹیسٹنگ میں ان کا اسکور محض 4% ہے، جو کہ بھروسہ مندی کے اس فرق کو ظاہر کرتا ہے جسے ڈویلپرز اسپرنٹ ریویوز (sprint reviews) میں نظر انداز کر سکتے ہیں۔
محققین نے HumanEval-Java بینچ مارک پر لارج لینگویج ماڈل (LLM) کوڈنگ ایجنٹس کے ذریعے تیار کردہ ٹیسٹ سویٹس کا جائزہ لیا۔ ایک سویٹ نے کوڈ کی ہر لائن کو کور کیا اور ہر کنڈیشنل برانچ (conditional branch) کا تجربہ کیا۔ جب اسی سویٹ کو میوٹیشن ٹیسٹنگ کا سامنا کرنا پڑا—جو کہ ایک ایسی تکنیک ہے جس میں یہ دیکھنے کے لیے کہ آیا ٹیسٹ انہیں پکڑ پاتے ہیں یا نہیں، چھوٹی غلطیاں (faults) شامل کی جاتی ہیں—تو اس نے شامل کیے گئے بگز کا صرف ایک بہت چھوٹا حصہ ہی پکڑا۔
کوریج اچھی لگتی ہے، لیکن اس کا اصل مطلب کیا ہے؟
روایتی کوریج میٹرکس اس بات کی گنتی کرتے ہیں کہ ایک ٹیسٹ کتنے سٹیٹمنٹس یا برانچز کو چلاتا ہے۔ ٹیمیں اسپرنٹ ڈیمو (sprint demos) میں نمایاں اعداد و شمار کو پسند کرتی ہیں۔ تاہم، یہ میٹرک اس بارے میں کچھ نہیں بتاتا کہ اگر کوڈ غلط ہو تو کیا ٹیسٹ فیل ہوں گے یا نہیں۔ میوٹیشن ٹیسٹنگ اس خلا کو اس طرح پر کرتی ہے کہ جان بوجھ کر غلطیاں (mutants) متعارف کرائی جاتی ہیں اور ان میوٹنٹس کے فیصد کی پیمائش کی جاتی ہے جو ٹیسٹ کی विफलता (failure) کا باعث بنتے ہیں—جسے "میوٹیشن اسکور" (mutation score) کہا جاتا ہے۔
مطالعے میں، 100% کوریج والے سویٹ نے تقریباً ہر میوٹنٹ کو نظر انداز کر دیا، بشمول سادہ منطقی غلطیوں کے، جیسے کہ لیپ ایئر (leap-year) کی تاریخوں کو غلط طریقے سے سنبھالنا۔ 4% میوٹیشن اسکور کا مطلب ہے کہ یہ سویٹ صرف چند حقیقی بگز کو ہی نشان زد کر سکے گا۔
یہ AI کی مدد سے ہونے والی ڈویلپمنٹ کے لیے کیوں اہم ہے
- جھوٹی خود اعتمادی: ڈویلپرز ایک ایسے ٹیسٹ سویٹ پر بھروسہ کر سکتے ہیں جو کاغذ پر مکمل نظر آتا ہو۔
- پوشیدہ نقائص: بہت سے بگز نظر انداز ہو کر نکل جاتے ہیں۔
- اصلاحی لاگت: بگز کو بعد میں ٹھیک کرنے کی لاگت انہیں شروع میں پکڑنے کے مقابلے میں کہیں زیادہ ہوتی ہے۔
دوسرا پہلو: کوریج بیکار نہیں ہے
کوریج اب بھی آپ کو بتاتی ہے کہ کوڈ کے راستے (code paths) چل رہے ہیں یا نہیں، لیکن یہ غلطی کی نشاندہی (fault detection) کی ضمانت نہیں دیتی۔
آگے کیا دیکھنا ہے
- ٹولنگ انٹیگریشن: میوٹیشن ٹیسٹنگ کو CI پائپ لائنز میں شامل کریں۔
- LLM میں بہتری: ایجنٹس کو ایسے ٹیسٹ تیار کرنے کے لیے تربیت دیں جو میوٹنٹس کو ختم (kill) کر سکیں۔
- صنعتی رہنما خطوط: ایسے معیارات اپنائیں جو کوریج کو میوٹیشن اسکورز کے ساتھ جوڑتے ہوں۔
حاصلِ کلام: AI سے تیار کردہ ٹیسٹ کے اعلیٰ کوریج نمبر اب معیار کا کافی ثبوت نہیں رہے؛ کم میوٹیشن اسکور اس بات کا اشارہ ہے کہ ٹیسٹ شاید حقیقی بگز کو نہ پکڑ سکیں، جو ڈویلپرز کو ایک حفاظتی جال (safety net) کے طور پر میوٹیشن ٹیسٹنگ اپنانے کی ترغیب دیتا ہے۔
