Random testing
بے ترتیب جانچ ایک بلیک باکس سافٹ ویئر ٹیسٹنگ تکنیک ہے جہاں پروگراموں کی جانچ بے ترتیب، آزاد ان پٹ تیار کرکے کی جاتی ہے۔ آؤٹ پٹ کے نتائج کا موازنہ سافٹ ویئر کی خصوصیات کے ساتھ کیا جاتا ہے تاکہ یہ تصدیق کی جا سکے کہ ٹیسٹ آؤٹ پٹ پاس یا فیل ہے۔ وضاحتیں نہ ہونے کی صورت میں زبان کے مستثنیات استعمال کیے جاتے ہیں جس کا مطلب ہے کہ اگر ٹیسٹ پر عمل درآمد کے دوران کوئی رعایت پیدا ہوتی ہے تو اس کا مطلب ہے کہ پروگرام میں کوئی غلطی ہے، اسے متعصبانہ ٹیسٹنگ سے بچنے کے طریقے کے طور پر بھی استعمال کیا جاتا ہے۔ ہارڈ ویئر کے لیے بے ترتیب جانچ کی تاریخ کا سب سے پہلے 1971 میں میلون بروئر نے جائزہ لیا تھا اور اس کی تاثیر کا اندازہ لگانے کی ابتدائی کوشش 1975 میں پرتیما اور وشوانی اگروال نے کی تھی۔ سافٹ ویئر میں، ڈورن اور نٹافوس نے 1984 میں بے ترتیب جانچ کی جانچ کی تھی۔ بے ترتیب جانچ کے لیے نظریاتی بنیاد کے طور پر مفروضے کی جانچ کے استعمال کو ہاؤڈن نے فنکشنل ٹیسٹنگ اینڈ اینالیسس میں بیان کیا تھا۔ اس کتاب میں ٹیسٹ n کی تعداد کا اندازہ لگانے کے لیے ایک سادہ فارمولہ بھی شامل ہے جو 1/n سے زیادہ کی ناکامی کی شرح میں کم از کم 1-1/n پر اعتماد رکھنے کے لیے ضروری ہے۔ فارمولا لوور باؤنڈ نلوگن ہے، جو اس بات کی نشاندہی کرتا ہے کہ ناکامی سے پاک ٹیسٹوں کی بڑی تعداد کو معمولی ناکامی کی شرح میں معمولی اعتماد حاصل کرنے کی ضرورت ہے۔ جائزہ مندرجہ ذیل C + + فنکشن پر غور کریں: int myAbs (int x) {اگر (x> 0) {واپسی x ؛} بصورت دیگر {واپسی x ؛// بگ: ہونا چاہیے '-x'}} اب اس فنکشن کے لیے بے ترتیب ٹیسٹ {123,36,-35,48,0} ہو سکتے ہیں۔ صرف قدر '-35' بگ کو متحرک کرتی ہے۔ اگر نتیجہ چیک کرنے کے لیے کوئی حوالہ عمل درآمد نہیں ہے، تب بھی بگ پر کسی کا دھیان نہیں جا سکتا۔ تاہم، نتائج کو چیک کرنے کے لیے ایک دعوی شامل کیا جا سکتا ہے، جیسے: ویوڈ ٹیسٹ ایبس (انٹ این) {کے لیے (انٹ آئی = 0 ؛ آئی <این ؛ آئی + +) {انٹ ایکس = گیٹ رینڈم ان پٹ () ؛ انٹ نتیجہ = مائی ایبس (ایکس) ؛ ایسٹرس (نتیجہ> = 0) ؛} حوالہ عمل درآمد بعض اوقات دستیاب ہوتا ہے، مثال کے طور پر۔ جب بہتر کارکردگی کے لیے ایک سادہ الگورتھم کو بہت زیادہ پیچیدہ انداز میں لاگو کیا جائے۔ مثال کے طور پر، Schönhage-Strassen الگورتھم کے نفاذ کی جانچ کرنے کے لیے، انٹیجرز پر معیاری "*" آپریشن استعمال کیا جا سکتا ہے: (int i = 0 ؛ i <n ؛ i + +) کے لیے (int i = 0 ؛ i <n ؛ i + +) {long x = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے ؛ long y = () کے لیے اس طرح کے نقطہ نظر پھر تصادفی طور پر پیدا شدہ اشیاء کے تالاب کو برقرار رکھتے ہیں اور پیدا شدہ شے کو دوبارہ استعمال کرنے یا نیا بنانے کے لیے امکان کا استعمال کرتے ہیں۔ بے ترتیب پر ڈی۔ ہیملٹ کے بے ترتیب جانچ پر بنیادی مقالے کے مطابق "بے ترتیب جانچ" کے تکنیکی، ریاضیاتی معنی سے مراد ٹیسٹ کے اعداد و شمار کے انتخاب میں "سسٹم" کی واضح کمی ہے، تاکہ مختلف ٹیسٹوں کے درمیان کوئی ارتباط نہ ہو۔ طاقت اور کمزوریوں کی بے ترتیب جانچ کو درج ذیل طاقتوں کے لیے سراہا جاتا ہے: اسے استعمال کرنا سستا ہے: اسے زیر جانچ پروگرام کے بارے میں ہوشیار ہونے کی ضرورت نہیں ہے۔ اس میں کوئی تعصب نہیں ہے: دستی جانچ کے برعکس، یہ کیڑوں کو نظر انداز نہیں کرتا ہے کیونکہ کچھ کوڈ میں غلط اعتماد ہے۔ بگ امیدواروں کو تلاش کرنا تیز ہے: ٹیسٹنگ سیشن انجام دینے میں عام طور پر چند منٹ لگتے ہیں۔ اگر سافٹ ویئر کو صحیح طریقے سے متعین کیا گیا ہے: تو یہ حقیقی کیڑے تلاش کرتا ہے۔ مندرجہ ذیل کمزوریوں کو بیان کیا گیا ہے: یہ صرف بنیادی کیڑے تلاش کرتا ہے (جیسے۔ null پوائنٹر ڈی ریفرننگ)۔ یہ صرف اتنا ہی درست ہے جتنا کہ تفصیلات اور وضاحتیں عام طور پر غیر واضح ہوتی ہیں۔ یہ کیڑوں کو تلاش کرنے کے لیے دیگر تکنیکوں کے ساتھ ناقص موازنہ کرتا ہے (جیسے۔ جامد پروگرام تجزیہ)۔ اگر ہر ٹیسٹ رن پر تصادفی طور پر مختلف ان پٹ منتخب کیے جاتے ہیں، تو یہ مسلسل انضمام کے لیے مسائل پیدا کر سکتا ہے کیونکہ وہی ٹیسٹ تصادفی طور پر پاس یا ناکام ہو جائیں گے۔ کچھ لوگوں کا کہنا ہے کہ بے ترتیب پر انحصار کرنے سے بہتر ہوگا کہ تمام متعلقہ معاملات کو دستی طور پر بنائے گئے ٹیسٹوں کے ساتھ وائٹ باکس انداز میں غور سے احاطہ کیا جائے۔ معمولی ناکامی کی شرحوں میں معمولی سطح کے اعتماد کے لیے بہت بڑی تعداد میں ٹیسٹ کی ضرورت پڑ سکتی ہے۔ مثال کے طور پر، اس کے لیے 459 ناکامی سے پاک ٹیسٹوں کی ضرورت ہوگی تاکہ کم از کم 99 فیصد اعتماد ہو کہ ناکامی کا امکان 1/100 سے کم ہے۔ بے ترتیب جانچ کی اقسام ان پٹ بے ترتیب ان پٹ ترتیب کی پیداوار کے حوالے سے (یعنی۔ میتھڈ کالز کا ایک سلسلہ) ڈیٹا ان پٹ کی بے ترتیب ترتیب (جسے بعض اوقات اسٹاکسٹک ٹیسٹنگ کہا جاتا ہے)-مثال کے طور پر طریقہ کار کی ایک بے ترتیب ترتیب موجودہ ڈیٹا بیس سے بے ترتیب ڈیٹا کے انتخاب کو بلاتی ہے گائیڈڈ بمقابلہ غیر ہدایت شدہ بے ترتیب ٹیسٹ جنریشن-اس کی تلاش کی رہنمائی کے لیے کوئی ہیورسٹکس کے بغیر بے ترتیب ٹیسٹ جنریشن کی ہدایت-جیسے۔ "فیڈ بیک ڈائریکٹڈ رینڈم ٹیسٹ جنریشن" اور "انکولی رینڈم ٹیسٹنگ" نفاذ بے ترتیب جانچ کو نافذ کرنے والے کچھ ٹولز: کوئیک چیک-ایک مشہور ٹیسٹ ٹول، جو اصل میں ہاسکل کے لیے تیار کیا گیا تھا لیکن بہت سی دوسری زبانوں میں پورٹ کیا گیا تھا، جو ایک ماڈل کی بنیاد پر اے پی آئی کالز کے بے ترتیب ترتیب پیدا کرتا ہے اور سسٹم کی خصوصیات کی تصدیق کرتا ہے جو ہر رن کے بعد درست ہونا چاہیے۔ رینڈوپ-ٹیسٹ کے تحت کلاسوں کے لیے طریقوں اور کنسٹرکٹر کی دعوتوں کے سلسلے پیدا کرتا ہے اور ان سمیلنٹ سے جے یونٹ ٹیسٹ بناتا ہے-ایک کلوجر ٹول جو مختلف ایجنٹوں کے تخروپن کو چلاتا ہے (جیسے۔ مختلف رویے کے پروفائل والے صارفین) اپنے رویے کے شماریاتی ماڈل کی بنیاد پر، تمام اعمال اور نتائج کو بعد میں ایکسپلوریشن اور تصدیق کے لیے ڈیٹا بیس میں ریکارڈ کرتے ہیں۔ آٹو ٹیسٹ-ایک ٹول جو خود بخود ایفل اسٹوڈیو ٹیسٹنگ کے ساتھ مربوط ہے، اسی نام کے تحقیقی پروٹو ٹائپ پر مبنی معاہدوں کے ساتھ ایفل کوڈ۔ یارک ایکسٹینسیبل ٹیسٹنگ انفراسٹرکچر (وائی ای ٹی آئی)-ایک زبان کا اگنوسٹک ٹول جو مختلف پروگرامنگ زبانوں (جاوا، جے ایم ایل، کوفوجا،. نیٹ، سی، کرمیٹا) کو نشانہ بناتا ہے۔ گرام ٹیسٹ-جاوا میں لکھا گیا ایک گرائمر پر مبنی بے ترتیب ٹیسٹنگ ٹول، یہ ان پٹ گرائمر کی وضاحت کے لیے بی این ایف نوٹیشن کا استعمال کرتا ہے۔ کریٹک رینڈم ٹیسٹنگ میں عملی طور پر صرف ایک خاص جگہ ہوتی ہے، زیادہ تر اس وجہ سے کہ ایک موثر اوریکل شاذ و نادر ہی دستیاب ہوتا ہے، بلکہ آپریشنل پروفائل اور سیوڈورانڈم ان پٹ ویلیوز کی نسل کے ساتھ مشکلات کی وجہ سے بھی۔ ٹیسٹ اوریکل اس بات کی تصدیق کرنے کا ایک آلہ ہے کہ آیا نتائج پروگرام کی تفصیلات سے میل کھاتے ہیں یا نہیں۔ آپریشن پروفائل پروگرام کے استعمال کے نمونوں کے بارے میں علم ہے اور اس طرح کون سے حصے زیادہ اہم ہیں۔ پروگرامنگ زبانوں اور پلیٹ فارمز کے لیے جن کے معاہدے ہیں (مثال کے طور پر۔ ایفل۔ . NET یا جاوا کی مختلف توسیعات جیسے JML، CoFoJa.) معاہدے قدرتی اوریکل کے طور پر کام کرتے ہیں اور اس نقطہ نظر کو کامیابی کے ساتھ لاگو کیا گیا ہے۔ خاص طور پر، بے ترتیب جانچ میں دستی معائنے یا صارف کی رپورٹوں (اگرچہ مختلف) سے زیادہ کیڑے پائے جاتے ہیں۔ فز ٹیسٹنگ بھی دیکھیں-ایک قسم کی بے ترتیب ٹیسٹنگ جو ٹیسٹ شدہ پروگرام سست سسٹمیٹک یونٹ testing#Systematic ٹیسٹنگ کو غلط ان پٹ فراہم کرتی ہے-"آل" میتھڈ کالز کو تلاش کرنے کا ایک منظم طریقہ، جیسا کہ لاگو کیا گیا ہے۔ ناسا کے جاوا پاتھ فائنڈر کے ذریعہ (جو مختلف ذرائع سے ریاستی جگہ کو مناسب سائز تک محدود کرکے ماڈل چیکنگ کے ساتھ جانچ کو ملاتا ہے) سسٹم ویریلگ کارنر کیس ایج کیس کونکولک ٹیسٹنگ حوالہ جات اینڈریا آرکوری کے ذریعہ بے ترتیب جانچ کو بیرونی روابط سے جوڑتا ہے۔ پورٹ لینڈ اسٹیٹ یونیورسٹی کے پروفیسر ایمریٹس رچرڈ ہیملٹ کی طرف سے بے ترتیب جانچ ؛ کاغذ کے آخر میں وسائل کی ایک قیمتی فہرست رینڈم ٹیسٹنگ وکی ایٹ کننگھم اینڈ کننگھم، انکارپوریٹڈ۔ سافٹ ویئر ٹیسٹنگ