JavaRush /جاوا بلاگ /Random-SD /ڪافي بريڪ #87. ڇو يونٽ جي جاچ ڊولپرز لاء اهم آهي؟ جاوا ۾ ...

ڪافي بريڪ #87. ڇو يونٽ جي جاچ ڊولپرز لاء اهم آهي؟ جاوا ۾ آري کي نقل ڪرڻ جا 5 طريقا

گروپ ۾ شايع ٿيل

ڇو يونٽ جي جاچ ڊولپرز لاء اهم آهي؟

ذريعو: SearchSoftwareQuality اچو ته بحث ڪريون ڇو ته يونٽ ٽيسٽنگ اهم ۽ قيمتي آهي، ۽ اهو ڪيئن ڊيبگنگ کي آسان بڻائي ٿو. يونٽ ٽيسٽنگ سافٽ ويئر جي معيار کي بهتر ڪرڻ لاء هڪ طاقتور اوزار آهي. يونٽ ٽيسٽ بنيادي تصديق فراهم ڪن ٿا ته هڪ ايپليڪيشن سافٽ ويئر جي وضاحتن سان مطابقت رکي ٿي ۽ ارادو ڪيو ويو آهي. ڪافي بريڪ #87.  ڇو يونٽ جي جاچ ڊولپرز لاء اهم آهي؟  جاوا ۾ هڪ آري کي نقل ڪرڻ جا 5 طريقا - 1جڏهن چڱي طرح ڪيو، يونٽ ٽيسٽ:
  • خرابين جي تعداد کي گھٽائڻ ۽ ترقي جي زندگيء جي شروعاتي مرحلن تي انھن کي سڃاڻڻ؛
  • بهتر ڪوڊ پڙهڻ جي صلاحيت؛
  • ڪوڊ ٻيهر استعمال ڪرڻ جي اجازت ڏيو؛
  • لڳائڻ جي رفتار کي وڌايو.
اچو ته ڏسون ڇو يونٽ جي جاچ اهم آهي، هن قسم جي جاچ ڪيئن شروع ٿي، ۽ ان تي عمل درآمد ۾ ڪهڙيون رڪاوٽون آهن.

يونٽ ٽيسٽ جي تاريخ

شروعاتي اسٽيج تي معلوم ٿيل غلطي وقت ۽ ڪوشش بچائي ٿي. ڪمپيوٽر جي تاريخ جي پهرين 50 سالن تائين، يونٽ جي جاچ ۽ ڊيبگنگ بنيادي طور تي ساڳي شيءِ هئي. پر 1990 جي ڏهاڪي تائين، ڪوڊ ايترو پيچيده ٿي چڪو هو جو اهو اڪثر ناممڪن هو ته سسٽم کي ننڍن حصن ۾ ورهائڻ لاء انهن کي الڳ ڪرڻ لاء. 1997 ۾، ڪينٽ بيڪ نالي هڪ پروگرامر JUnit ٺاهي، ڪوڊ جي ننڍڙن ٽڪرن کي جانچڻ لاءِ هڪ ترقياتي ماحول پلگ ان. ٽيسٽ ڪوڊ جيڪو سورس ڪوڊ جو جائزو وٺندو آهي ان کي يونٽ ٽيسٽ سڏيو ويندو آهي. هن قسم جي يونٽ جي جاچ ڪيترن ئي سالن تائين هڪ اسٽيل بڻجي وئي آهي. بيڪ JUnit ٺاهڻ کان پوء، مارٽن فولر هڪ ڪتاب لکيو، ريفڪٽرنگ، جنهن ۾ هن ڪوڊ کي تبديل ڪرڻ جا طريقا تجويز ڪيا ته جيئن ان کي وڌيڪ الڳ ۽ آزمائشي بڻائي سگهجي. ڪوڊ ريفيڪٽرنگ ۽ يونٽ ٽيسٽنگ جو ميلاپ ٽيسٽ تي هلندڙ ترقي جو سبب بڻيو آهي، جتي يونٽ ٽيسٽ ٺاهڻ پروگرامنگ جي عمل لاءِ ضروري آهي. ان ۾، ڪوڊ ٺاھڻ کان اڳ به جانچي سگھجي ٿو. اهڙيء طرح، پروگرامنگ جو عمل مڪمل نه ٿيندو جيستائين يونٽ ٽيسٽ هلائي رهيا آهن. پروجيڪٽ وري سسٽم يا انساني سطح تي تحقيق جي اسٽيج تي منتقل ڪري سگهي ٿو.

يونٽ ٽيسٽ جا مثال

هي مثال يونٽ جي جاچ جي اهميت کي ظاهر ڪري ٿو. هتي JUnit هڪ سادي فنڪشن جو جائزو وٺندو آهي جيڪو درجه حرارت فارن هائٽ کان سيلسيس ۾ تبديل ڪري ٿو. تبادلي جو فارمولا: C = (F-32) * 5/9. صرف چند لائينون، جن ۾ فنڪشن جي دستخط ۽ گھمڻ واري ڪنگڻ شامل آهن، ڪوڊ ۾ لائبريري فنڪشن جي طور تي لاڳو ڪري سگھجن ٿيون. بهرحال، اهو فنڪشن مان واضح ناهي ته اهي معيار آهن. انهن اختيارن ۾ شامل ٿي سگھي ٿو گول ڪرڻ مٿي يا ھيٺ، حقيقي انگ، يا مٿيون ۽ ھيٺيون حدون. اچو ته مثال يونٽ ٽيسٽ ٺاھيون ھن گرمي پد جي تبديليءَ جي فنڪشن لاءِ پرل ۾ Test::More module استعمال ڪندي. پهرين لائن هڪ تبصرو آهي جيڪو پروگرامر کي ٻڌائي ٿو ته باقي ڪوڊ مان ڇا توقع ڪجي.
# is (input, expected result, comment)
is( FtoC(32),0,'Freezing point is F32, C 0');
is( FtoC(212),100,'Boiling point is F212, C 100');
is( FtoC(59038),32767, 'Upper limit of C is 32767');
is( FtoC(59039),undefined, 'One past upper limit is error');
JUnit فريم ورڪ اعتراض تي مبني سسٽم ۽ ٽيسٽ شين تي ڀاڙي ٿو، پر تصور ساڳيو آهي.

الڳ ٿيل يونٽ ٽيسٽ

يونٽ ٽيسٽ جي فائدن مان هڪ اهو آهي ته اهي هڪ فنڪشن، ڪلاس، يا طريقو کي الڳ ڪن ٿا ۽ صرف ڪوڊ جو اهو ٽڪرو ٽيسٽ ڪن ٿا. بهتر انفرادي اجزاء مجموعي نظام جي لچڪ فراهم ڪن ٿا. اهو طريقو توهان کي قابل اعتماد ڪوڊ حاصل ڪري ٿو. يونٽ ٽيسٽ پڻ ڊيبگنگ جي عمل جي فطرت کي تبديل ڪري ٿو. هڪ بگ کي درست ڪرڻ جي ڪوشش ڪرڻ لاء، پروگرامر صرف هڪ ناڪامي ٽيسٽ لکندا آهن ۽ پوء ان کي ورجائيندا آهن ته جيئن اهو اڳئين اميدن جي ڀڃڪڙي کان سواء گذري ٿو. اهو عمل روايتي ڊيبگنگ جي دستي چڪر کي ختم ڪري ٿو سيٽ اپ، ٻيهر ٺاهڻ، روڪڻ، ۽ ٽيسٽ ذريعي. ڪوڊ کي تبديل ڪرڻ لاءِ ان کي يونٽ جي جاچ لاءِ موزون بڻائڻ لاءِ، پروگرامرن کي لازمي طور تي ڪم ڪرڻ جو طريقو بدلائڻو پوندو. يونٽ ٽيسٽ کان سواءِ لکيل ڪوڊ جا ڪي به ٽڪرا ممڪن طور تي غير جانچيل سمجهيا ويندا، گهٽ ۾ گهٽ انفرادي ماڊل جي طور تي.

ايڊاپٽنگ يونٽ ٽيسٽ

ليگيسي سافٽ ويئر اهو سافٽ ويئر آهي جيڪو هڪ ڊگهي وقت تائين هلي رهيو آهي ۽ گهڻو ڪري ممڪن طور تي يونٽ ٽيسٽ کان سواءِ لکيو ويو هو. وراثت ڪوڊ ڪمپني لاء قدر آهي. اهو ڪيترن ئي سالن تائين مستحڪم ڪم ڪري ٿو. ڪجھ پروگرام بغير يونٽ ٽيسٽ کان سواءِ ٺاهيل آھن في ڏينھن ملين ڊالر ٽرانزيڪشن تي عمل ڪن ٿا. پر ڪوڊ جنهن ۾ يونٽ ٽيسٽ نه هوندا آهن وقت سان گڏ گندگي جي وڏي بال ۾ بدلجي ويندا آهن ڇاڪاڻ ته اهو ڪيترن ئي سالن کان ڪوڊ جي سار سنڀال پروگرامرز طرفان ڇڪيو ويو آهي. ريفيڪٽرنگ پروگرامرز کي اجازت ڏئي ٿي ته تدريجي طور تي سسٽم ۾ تبديليون آڻين ته جيئن ان کي جانچڻ جي قابل بڻائي سگهجي. بهرحال، اهي تبديليون وقت وٺن ٿيون. ڪيترائي سال اڳ، مون پنهنجي ساٿي باب ريزيلمن سان بحث ڪيو وراثت واري ايپليڪيشنن لاءِ يونٽ ٽيسٽ استعمال ڪرڻ جي مسئلي تي. Reselman دليل ڏنو ته بغير ٺهيل ايپليڪيشنن ۾ يونٽ جي جاچ کي لاڳو ڪرڻ تمام مهانگو ۽ بيوقوف آهي. ان جي بدران، هن سفارش ڪئي ته تنظيم يونٽ ٽيسٽ سان نئين ترقي شروع ڪري ۽ صرف ورثي ايپليڪيشنن کي ڇڏي ڏيو. اهو صحيح ٿي سگهي ٿو COBOL، رپورٽ جنريٽر، ۽ ٻين ايپليڪيشنن لاءِ، پر مان بحث ڪندس ته جديد ٻولين ۾ لکيل ايپليڪيشنن ۾- C++، C#، Java، ۽ Ruby- اهو بلڪل آسان آهي ته اڳڀرائي سان يونٽ ٽيسٽ شامل ڪرڻ. ان جي بدران انهن کي پوري ايپليڪيشن لاءِ لکڻ جي، صرف يونٽ ٽيسٽ شامل ڪريو موجوده تبديلي ۽ ريفيڪٽر ۾ جيئن توهان وڃو.

وڌايل رفتار، معيار ۽ قابليت

پروجيڪٽ مئنيجرن جو چوڻ آهي ته منصوبابندي ۾ معيار، ڪم جي مقدار، وسيلن ۽ وقت جي وچ ۾ واپار شامل آهي. ھڪڙي علائقي ۾ ڪجھھ شامل ڪرڻ لاء، توھان کي ھڪڙي شيء کي ٻئي کان پري وٺڻ گھرجي. مؤثر يونٽ ٽيسٽ هن قاعدي کي ٽوڙيو. اهو ئي سبب آهي ته يونٽ جي جاچ تنظيمن لاءِ اهم ۽ قيمتي آهي. سٺو يونٽ ٽيسٽ ٽيسٽ قابل ڪوڊ پيدا ڪري ٿو جيڪو معيار کي بهتر بڻائي ٿو. ھن ڪوڊ ۾ گھٽ نقص آھن، جنھن جو مطلب آھي پروجيڪٽ کي تيزيءَ سان مڪمل ڪرڻ لاءِ گھٽ بگ فيڪس. جڏهن سافٽ ويئر جي مسئلن کي منهن ڏئي ٿو، يونٽ ٽيسٽ تيز رفتار ڊيبگنگ، فڪسنگ، ۽ ڪوڊ لکڻ. ۽ اهو اهڙي طرح ٿئي ٿو ته هڪ خرابي جي ٻيهر ٿيڻ جو امڪان تمام گهڻو گهٽجي ويو آهي جڏهن ته ڪوڊ جي معيار ۽ رفتار کي بهتر بڻائي. جڏهن ته سافٽ ويئر ڊولپمينٽ ۾ ڪو به جادو بلٽ نه آهي، موثر يونٽ ٽيسٽ ترقي کي تيز ڪري سگهي ٿو، ٽيسٽ، ۽ حتي ڪجهه فنڪشنل گهرجن انجنيئرنگ.

جاوا ۾ آري کي نقل ڪرڻ جا 5 طريقا

Source: Dev.to تنهن ڪري توهان وٽ ٻه صفون A ۽ B آهن ۽ توهان کي عناصرن کي A کان B تائين نقل ڪرڻ جي ضرورت آهي. خير، جاوا ۾ ائين ڪرڻ جا مختلف طريقا آهن ۽ مان توهان کي هاڻي ڏيکاريندس.

طريقو هڪ: ForLoop

هي اهو آهي جتي لوپ لاء سٺو پراڻو اسان جي مدد لاء اچي ٿو :
int[] A = {1,2,4,4};
int[] B = new int[];

 for (int i = 0; i < A.length; i++){
      B[i] = A[i];
}

طريقو ٻيو: .clone()

صف ڪلوننگ جو طريقو پڻ گهربل نتيجو حاصل ڪرڻ ۾ مدد ڪري سگھي ٿو:
int[] A = {1,2,4,4};
int[] B = A.clone();//the clone method copies the content of A into B;

طريقو ٽي: System.arraycopy()

اڳيون طريقو استعمال ڪرڻ آهي System.arraycopy() طريقو ، جيڪو java.lang پيڪيج ۾ آهي . ان کان اڳ جو اسان ان جي استعمال تي وڃو، اچو ته ان جي دستخط تي بحث ڪريون:
public static void arraycopy(
    Object src, //:source array, in this case A
    int srcPos, //:the start index for copy, typically 0
    Object dest, //:destination object in this case B.
    int destPos, //:the index to place the copied elements
    int length //:the length of the contents to be copied
);
درخواست:
int[] A = {1,2,4,4};
int[] B = new int[];

System.arraycopy(A, 0, B, 0, A.length);

طريقو چار: Arrays.copyOf()

ايندڙ ڪاپي آپشن جنهن تي اسين بحث ڪنداسين اهو آهي Arrays class from java.utils package . هن جي دستخط تي ڌيان ڏيو:
public static int[] copyOf(
    int[] original, // :source array in this case A
    int newLength // :the length of the contents to be copied
);
درخواست:
int[] A = {1,2,4,4};
int[] B = Arrays.copyOf(A, 3);

طريقو پنج: Arrays.copyOfRange()

تنهن ڪري، اهو آخري اختيار هوندو جنهن کي اسين هن پوسٽ ۾ ڏسندا سين. اهو پڻ آهي Arrays ڪلاس مان موجود آهي java.utils پيڪيج ۾ . اچو ته سندس دستخط ٻيهر ڏسو:
public static int[] copyOfRange​(
    int[] original, // :source array in this case A
    int from,  //:the start index for copy, typically 0
    int to // the end index exclusive
);
درخواست:
int[] A = {1,2,3,4,5,6,7};
int[] B = Arrays.copyOfRange(A, 0, A.length);
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION