یونٹ، انٹیگریشن اور فنکشنل ٹیسٹنگ کے درمیان فرق

یونٹ، انٹیگریشن اور فنکشنل ٹیسٹنگ کا تفصیلی موازنہ:

کسی بھی سافٹ ویئر ایپلیکیشن کے لیے، یونٹ ٹیسٹنگ کے ساتھ ساتھ انٹیگریشن ٹیسٹنگ دونوں بہت اہم ہیں کیونکہ ان میں سے ہر ایک کو ملازمت دیتا ہے۔ سافٹ ویئر ایپلیکیشن کو جانچنے کے لیے منفرد عمل۔

لیکن کوئی ایک یا دونوں کسی بھی موقع پر فنکشنل ٹیسٹنگ کی جگہ نہیں لے سکتے۔

یونٹ ٹیسٹنگ بمقابلہ انٹیگریشن ٹیسٹنگ بمقابلہ فنکشنل ٹیسٹنگ

یونٹ ٹیسٹنگ کا مطلب ہے کسی ایپلی کیشن کے انفرادی ماڈیولز کو تنہائی میں جانچنا (انحصار کے ساتھ کسی تعامل کے بغیر) اس بات کی تصدیق کریں کہ کوڈ کام ٹھیک کر رہا ہے۔

انٹیگریشن ٹیسٹنگ کا مطلب یہ چیک کرنا ہے کہ کیا مختلف ماڈیولز ایک گروپ کے طور پر اکٹھے ہونے پر ٹھیک کام کر رہے ہیں۔

فنکشنل ٹیسٹنگ کا مطلب یہ ہے کہ کوڈ صحیح کام کر رہا ہے اس بات کی تصدیق کرنے کے لیے سسٹم میں فعالیت کے ایک ٹکڑے کی جانچ کرنا (انحصارات کے ساتھ تعامل کر سکتا ہے۔

فنکشنل ٹیسٹ انٹیگریشن ٹیسٹ سے متعلق ہیں، تاہم، وہ ان ٹیسٹوں کی نشاندہی کرتے ہیں جو ایک ساتھ چلنے والے تمام کوڈ کے ساتھ پوری ایپلی کیشن کی فعالیت کو چیک کریں، تقریباً ایک سپر انٹیگریشن ٹیسٹ۔

یونٹ ٹیسٹنگ سسٹم کے ایک جزو کو چیک کرنے پر غور کرتی ہے جبکہ فنکشنلٹی ٹیسٹنگ کسی ایپلیکیشن کے کام کو مطلوبہ کے خلاف جانچنے پر غور کرتی ہے۔ نظام کی ضرورت کی تفصیلات میں بیان کردہ فعالیت۔ دوسری طرف، انضمام کی جانچ پڑتال پر غور کرتی ہے۔نظام میں مربوط ماڈیولز۔

اور، سب سے اہم بات، سرمایہ کاری پر واپسی (ROI) کو بہتر بنانے کے لیے، آپ کے کوڈ بیس میں زیادہ سے زیادہ یونٹ ٹیسٹ، کم انٹیگریشن ٹیسٹ اور فنکشنل ٹیسٹ کی کم سے کم تعداد ہونی چاہیے۔

اس کو درج ذیل ٹیسٹ اہرام میں بہترین طور پر دکھایا گیا ہے:

یونٹ ٹیسٹ لکھنے میں آسان اور تیز تر ہوتے ہیں۔ ٹیسٹوں کو لاگو کرنے اور برقرار رکھنے کے لیے وقت اور کوشش یونٹ ٹیسٹنگ سے فنکشنل ٹیسٹنگ تک بڑھ جاتی ہے جیسا کہ اوپر اہرام میں دکھایا گیا ہے۔

مثال:

آئیے ہم ان تین اقسام کی جانچ کو ایک حد سے زیادہ آسان مثال کے ساتھ سمجھتے ہیں۔

جیسے ۔ ایک فعال موبائل فون کے لیے، اہم پرزے "بیٹری" اور "سم کارڈ" ہیں۔

یونٹ ٹیسٹنگ کی مثال - بیٹری کی زندگی، صلاحیت اور دیگر پیرامیٹرز کی جانچ کی جاتی ہے۔ سم کارڈ کو چالو کرنے کے لیے چیک کیا جاتا ہے۔

انٹیگریشن ٹیسٹنگ کی مثال – بیٹری اور سم کارڈ کو مربوط کیا جاتا ہے یعنی موبائل فون کو شروع کرنے کے لیے اسمبل کیا جاتا ہے۔

فنکشنل جانچ کی مثال – موبائل فون کی فعالیت کو اس کی خصوصیات اور بیٹری کے استعمال کے ساتھ ساتھ سم کارڈ کی سہولیات کے لحاظ سے بھی جانچا جاتا ہے۔

ہم نے ایک مثال دیکھی ہے عام آدمی کی شرائط۔

اب، آئیے لاگ ان صفحہ کی ایک تکنیکی مثال لیں:

تقریباً ہر ویب ایپلیکیشن کو اس کی ضرورت ہوتی ہے۔ لاگ ان کرنے کے لیے صارفین/صارفین۔ اس کے لیے، ہر درخواست کو کرنا ہوگا۔ایک "لاگ ان" صفحہ ہے جس میں یہ عناصر ہیں:

  • اکاؤنٹ/صارف کا نام
  • پاس ورڈ
  • لاگ ان/سائن ان بٹن
  • 15>

    1>13 2>

    • صارف درست اقدار درج کرنے اور لاگ ان بٹن کو دبانے کے بعد خوش آمدید کا پیغام دیکھتا ہے۔
    • درست اندراج اور کلک کرنے کے بعد صارف کو ویلکم پیج یا ہوم پیج پر جانا چاہیے۔ لاگ ان بٹن۔

    اب، یونٹ اور انٹیگریشن ٹیسٹنگ مکمل ہونے کے بعد، آئیے اضافی ٹیسٹ کیسز دیکھیں جن کو فنکشنل ٹیسٹنگ کے لیے سمجھا جاتا ہے:

    1. متوقع رویے کی جانچ پڑتال کی گئی ہے، یعنی کیا صارف ایک درست صارف نام اور پاس ورڈ کی اقدار درج کرنے کے بعد لاگ ان بٹن پر کلک کرکے لاگ ان کرنے کے قابل ہے۔
    2. کیا کوئی خوش آئند پیغام ہے جو کامیاب لاگ ان کے بعد ظاہر ہونا ہے؟
    3. 13>13فنکشنل ٹیسٹنگ کرتے وقت فنکشنل ٹیسٹر کا دماغ۔ لیکن ایک ڈویلپر یونٹ اور انٹیگریشن ٹیسٹ کیسز کی تعمیر کے دوران تمام کیسز نہیں لے سکتا۔

      اس طرح، بہت سارے ایسے منظرنامے ہیں جن کا یونٹ اور انٹیگریشن ٹیسٹنگ کے بعد بھی تجربہ ہونا باقی ہے۔

      اب وقت آ گیا ہے کہ یونٹ، انٹیگریشن اور فنکشنل ٹیسٹنگ کو ایک ایک کر کے جانچا جائے۔

      جیسا کہ نام سے پتہ چلتا ہے، اس سطح میں 'یونٹ' کی جانچ شامل ہے۔

      یہاں یونٹ کسی ایپلیکیشن کا سب سے چھوٹا حصہ ہوسکتا ہے جو قابل آزمائش ہے، چاہے وہ سب سے چھوٹا انفرادی فنکشن، طریقہ وغیرہ ہو۔ سافٹ ویئر ڈویلپر وہ ہیں جو یونٹ ٹیسٹ کیس لکھتے ہیں۔ یہاں کا مقصد تقاضوں اور یونٹ کے متوقع رویے سے مماثل ہونا ہے۔

      ذیل میں یونٹ ٹیسٹنگ اور اس کے فوائد کے بارے میں چند اہم نکات ہیں:

      • یونٹ ٹیسٹنگ وائٹ باکس ٹیسٹنگ تکنیک کا استعمال کرتے ہوئے سافٹ ویئر ڈویلپرز کے ذریعے انٹیگریشن ٹیسٹنگ سے پہلے کیا جاتا ہے۔
      • یونٹ ٹیسٹنگ نہ صرف مثبت رویے کی جانچ کرتی ہے یعنی درست ان پٹ کی صورت میں صحیح آؤٹ پٹ، بلکہ غلط ان پٹ کے ساتھ ہونے والی ناکامیوں کو بھی۔
      • ابتدائی مرحلے میں مسائل/بگز تلاش کرنا بہت مفید ہے اور اس سے پروجیکٹ کی مجموعی لاگت کم ہوجاتی ہے۔ چونکہ کوڈ کے انضمام سے پہلے یونٹ ٹیسٹنگ کی جاتی ہے، اس مرحلے پر پائے جانے والے مسائل کو بہت آسانی سے حل کیا جا سکتا ہے اور ان کا اثر بھی بہت کم ہوتا ہے۔
      • ایک یونٹ ٹیسٹ کوڈ کے چھوٹے چھوٹے ٹکڑوں یا فرد کی جانچ کرتا ہے۔کام کرتا ہے تاکہ ان ٹیسٹ کیسز میں پائے جانے والے مسائل/غلطیاں آزاد ہوں اور دوسرے ٹیسٹ کیسز پر اثر انداز نہیں ہوتے۔
      • ایک اور اہم فائدہ یہ ہے کہ یونٹ ٹیسٹ کیسز کوڈ کی جانچ کو آسان اور آسان بناتے ہیں۔ لہذا، بعد کے مرحلے پر بھی مسائل کو حل کرنا آسان ہو جاتا ہے کیونکہ کوڈ میں صرف تازہ ترین تبدیلی کی جانچ کی جانی ہے۔
      • یونٹ ٹیسٹ سے وقت اور لاگت کی بچت ہوتی ہے، اور یہ دوبارہ قابل استعمال اور برقرار رکھنا آسان ہے۔

      JUnit (جاوا فریم ورک)، PHPUnit (PHP فریم ورک)، NUnit (.Net فریم ورک) وغیرہ مقبول یونٹ ٹیسٹنگ ٹولز ہیں جو مختلف زبانوں کے لیے استعمال کیے جاتے ہیں۔

      انٹیگریشن ٹیسٹنگ کیا ہے ?

      انٹیگریشن ٹیسٹنگ سسٹم کے مختلف حصوں کے ایک ساتھ انضمام کی جانچ کر رہی ہے۔ سسٹم کے دو مختلف حصوں یا ماڈیولز کو پہلے مربوط کیا جاتا ہے اور پھر انٹیگریشن ٹیسٹنگ کی جاتی ہے۔

      انضمام کی جانچ کا مقصد نظام کی فعالیت، وشوسنییتا اور کارکردگی کو جانچنا ہے۔ نظام جب مربوط ہوتا ہے۔

      انٹیگریشن ٹیسٹنگ ان ماڈیولز پر کی جاتی ہے جن کا پہلے یونٹ ٹیسٹ کیا جاتا ہے اور پھر انضمام کی جانچ اس بات کی وضاحت کرتی ہے کہ آیا ماڈیولز کا مجموعہ مطلوبہ آؤٹ پٹ دیتا ہے یا نہیں۔

      انٹیگریشن ٹیسٹنگ یا تو آزاد ٹیسٹرز یا ڈویلپرز کے ذریعے بھی کیا جائے۔

      انٹیگریشن ٹیسٹنگ کے 3 مختلف قسم کے طریقے ہیں۔ آئیے ان میں سے ہر ایک پر مختصراً گفتگو کریں:

      a) بگ بینگ انٹیگریشن اپروچ

      اس نقطہ نظر میں، تمام ماڈیولز یا اکائیوں کو ایک وقت میں مکمل طور پر مربوط اور جانچا جاتا ہے۔ یہ عام طور پر اس وقت کیا جاتا ہے جب پورا سسٹم انٹیگریشن ٹیسٹنگ کے لیے ایک ہی وقت میں تیار ہوتا ہے۔

      براہ کرم انضمام کی جانچ کے اس نقطہ نظر کو سسٹم ٹیسٹنگ کے ساتھ الجھائیں، صرف ماڈیولز یا یونٹس کے انضمام کی جانچ کی جاتی ہے اور نہیں پورا سسٹم جیسا کہ یہ سسٹم ٹیسٹنگ میں کیا جاتا ہے۔

      بگ بینگ اپروچ کا بڑا فائدہ یہ ہے کہ مربوط ہر چیز کو ایک وقت میں جانچا جاتا ہے۔

      ایک بڑا نقصان یہ ہے کہ ناکامیوں کی نشاندہی کرنا مشکل ہو جاتا ہے۔

      مثال: ذیل کی شکل میں، یونٹ 1 سے یونٹ 6 کو بگ بینگ اپروچ کا استعمال کرتے ہوئے مربوط اور جانچا جاتا ہے۔

      b) ٹاپ-ڈاؤن اپروچ

      اکائیوں/ماڈیولز کے انضمام کو اوپر سے نیچے کی سطح تک مرحلہ وار جانچا جاتا ہے۔

      پہلی یونٹ کا ٹیسٹ STUBS لکھ کر انفرادی طور پر کیا جاتا ہے۔ اس کے بعد، نچلی سطحوں کو ایک ایک کرکے مربوط کیا جاتا ہے یہاں تک کہ آخری سطح کو ایک ساتھ رکھا جاتا ہے اور اس کا تجربہ نہیں کیا جاتا ہے۔

      اوپر سے نیچے کا نقطہ نظر انضمام کا ایک بہت ہی نامیاتی طریقہ ہے کیونکہ یہ اس سے مطابقت رکھتا ہے کہ چیزیں حقیقی میں کیسے ہوتی ہیں۔ ماحول۔

      صرف تشویش اس نقطہ نظر کے ساتھ یہ ہے کہ بڑی فعالیت کو آخر میں جانچا جاتا ہے۔

      c) نیچے- اپ اپروچ

      یونٹس/ماڈیولز کو نیچے سے اوپر کی سطح تک، مرحلہ وار جانچا جاتا ہے، جب تک کہ یونٹس/ماڈیولز کی تمام سطحیں مربوط نہ ہو جائیں۔اور ایک یونٹ کے طور پر تجربہ کیا. اس نقطہ نظر میں محرک پروگراموں کا استعمال کیا جاتا ہے جنہیں DRIVERS کہا جاتا ہے۔ نچلی سطح پر مسائل یا غلطیوں کا پتہ لگانا آسان ہے۔

      اس نقطہ نظر کا بڑا نقصان یہ ہے کہ اعلیٰ سطح کے مسائل کی شناخت صرف آخر میں کی جاسکتی ہے جب تمام یونٹس انٹیگریٹ کیا گیا ہے۔

      یونٹ ٹیسٹنگ بمقابلہ انٹیگریشن ٹیسٹنگ

      یونٹ ٹیسٹنگ اور انٹیگریشن ٹیسٹنگ کے بارے میں کافی بات چیت کرنے کے بعد، آئیے دونوں کے درمیان فرق کو تیزی سے دیکھیں۔ مندرجہ ذیل جدول میں:

      30>
      یونٹ ٹیسٹنگ انٹیگریشن ٹیسٹنگ
      پورے سسٹم کے واحد جزو کی جانچ کرتا ہے یعنی تنہائی میں ایک یونٹ کی جانچ کرتا ہے۔ ایک ساتھ کام کرنے والے سسٹم کے اجزاء کی جانچ کرتا ہے یعنی ایک سے زیادہ اکائیوں کے تعاون کی جانچ کرتا ہے۔
      عمل میں تیزی سے چل سکتا ہے۔ سست
      کوئی بیرونی انحصار نہیں۔ کسی بھی بیرونی انحصار کا مذاق اڑایا جاتا ہے یا اسے ختم کر دیا جاتا ہے۔ بیرونی انحصار کے ساتھ تعامل کی ضرورت ہوتی ہے (جیسے ڈیٹا بیس، ہارڈ ویئر وغیرہ)
      سادہ پیچیدہ
      ڈیولپر کے ذریعے کیا جاتا ہے ٹیسٹر کے ذریعے کیا جاتا ہے
      یہ وائٹ باکس ٹیسٹنگ کی ایک قسم ہے یہ بلیک باکس ٹیسٹنگ کی ایک قسم ہے
      ٹیسٹنگ کے ابتدائی مرحلے میں کی جاتی ہے اور پھر اسے کسی بھی وقت انجام دیا جاسکتا ہے یونٹ ٹیسٹنگ کے بعد اور سسٹم ٹیسٹنگ سے پہلے کیا جانا چاہیے
      سستادیکھ بھال مہنگی دیکھ بھال
      ماڈیول کی تفصیلات سے شروع ہوتی ہے انٹرفیس کی تفصیلات سے شروع ہوتی ہے
      یونٹ ٹیسٹنگ کا دائرہ تنگ ہے کیونکہ یہ صرف یہ چیک کرتا ہے کہ آیا کوڈ کا ہر چھوٹا ٹکڑا وہی کر رہا ہے جو اس کا کرنا ہے۔ اس کا دائرہ وسیع ہے کیونکہ یہ پوری ایپلیکیشن کا احاطہ کرتا ہے
      یونٹ ٹیسٹنگ کا نتیجہ کوڈ کی تفصیلی مرئیت ہے انضمام کا نتیجہ ٹیسٹنگ انضمام کے ڈھانچے کی تفصیلی مرئیت ہے
      صرف انفرادی ماڈیولز کی فعالیت کے اندر مسائل کو کھولیں۔ انضمام کی خرابیوں یا سسٹم کے وسیع مسائل کو سامنے نہیں لاتا۔ بگس کا پتہ لگانا جب مختلف ماڈیولز ایک دوسرے کے ساتھ بات چیت کرتے ہیں تاکہ مجموعی نظام بنایا جا سکے

      فنکشنل ٹیسٹنگ

      ایک بلیک باکس ٹیسٹنگ تکنیک، جہاں ایک مخصوص ان پٹ فراہم کرنے پر مطلوبہ آؤٹ پٹ پیدا کرنے کے لیے ایپلی کیشن کی فعالیت کی جانچ کی جاتی ہے اسے 'فنکشنل ٹیسٹنگ' کہا جاتا ہے۔

      ہمارے سافٹ ویئر ٹیسٹنگ کے عمل میں، ہم تقاضوں اور منظرناموں کے مطابق ٹیسٹ کیس لکھ کر ایسا کریں۔ کسی بھی فعالیت کے لیے، لکھے گئے ٹیسٹ کیسز کی تعداد ایک سے کئی تک مختلف ہو سکتی ہے۔

      نتیجہ

      یہ تینوں ٹیسٹنگ اقسام باہم مربوط ہیں۔

      مکمل کوریج حاصل کرنے کے لیے، یہ کوڈ کے راستوں/لائنوں کے لیے یونٹ ٹیسٹ، فنکشنل اور انٹیگریشن ٹیسٹ اس یقین دہانی کے لیے ضروری ہے کہ 'یونٹ'ہم آہنگی کے ساتھ مل کر کام کریں۔

      امید ہے کہ اس مضمون سے آپ کو یونٹ، انٹیگریشن اور فنکشنل ٹیسٹنگ کے ساتھ ساتھ ان کے اختلافات کے بارے میں واضح اندازہ ہو گیا ہو گا، حالانکہ جانچ کی ان شکلوں میں اور بھی بہت کچھ ہے!!

      تجویز کردہ پڑھنا

اوپر سکرول کریں