JavaRush /جاوا بلاگ /Random-SD /TDD ۽ يونٽ ٽيسٽنگ ڇا آهي [ترجمو]
Dr-John Zoidberg
سطح
Марс

TDD ۽ يونٽ ٽيسٽنگ ڇا آهي [ترجمو]

گروپ ۾ شايع ٿيل
هي مضمون ڪتاب The Complete Software Career Guide جي هڪ باب جي موافقت آهي. ان جو ليکڪ، جان سونميز، ان کي لکي ٿو ۽ ڪجهه باب پوسٽ ڪري ٿو پنهنجي ويب سائيٽ تي.
TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 1

شروعاتي لاءِ هڪ مختصر لغت

يونٽ ٽيسٽنگ يا يونٽ ٽيسٽنگ پروگرامنگ ۾ ھڪڙو عمل آھي جيڪو توھان کي اجازت ڏئي ٿو انفرادي ماڊلز کي چيڪ ڪرڻ لاءِ پروگرام جي سورس ڪوڊ جي درستگي لاءِ. خيال اهو آهي ته هر غير معمولي فنڪشن يا طريقي لاء ٽيسٽ لکڻ. ريگريشن ٽيسٽنگ سڀني قسمن جي سافٽ ويئر ٽيسٽنگ لاءِ هڪ عام نالو آهي جنهن جو مقصد ماخذ ڪوڊ جي اڳ ۾ ئي آزمايل علائقن ۾ غلطيون ڳولڻ آهي. اهڙيون غلطيون - جڏهن، پروگرام ۾ تبديليون ڪرڻ کان پوء، ڪا شيء جيڪا ڪم جاري رکڻ گهرجي، ڪم ڪرڻ بند ڪري ٿي - ريگريشن غلطيون سڏيو ويندو آهي. لال نتيجو، ناڪامي - امتحان جي ناڪامي. متوقع نتيجو ۽ حقيقي جي وچ ۾ فرق. سائو نتيجو، پاس - مثبت امتحان جو نتيجو. حقيقي نتيجو جيڪو حاصل ڪيو ويو ان کان مختلف ناهي. ***
TDD ۽ يونٽ ٽيسٽنگ ڇا آهي [ترجمو] - 2
منهنجو تمام گهڻو مخلوط تعلق آهي ٽيسٽ ڊولپمينٽ ڊولپمينٽ (TDD) ۽ يونٽ ٽيسٽنگ سان، محبت کان نفرت ۽ ٻيهر واپس وڃڻ. مان هڪ شوقين پرستار هو ۽ ساڳئي وقت هن جي استعمال بابت مشڪوڪ شڪي، ۽ ٻيو، "بهترين عمل." منهنجي رويي جو سبب ان حقيقت تي مبني آهي ته سافٽ ويئر ڊولپمينٽ جي عملن ۾ هڪ سنگين مسئلو سامهون آيو آهي: ڊولپرز، ۽ ڪڏهن ڪڏهن مئنيجر، ڪجهه اوزار ۽ طريقا استعمال ڪندا آهن صرف ان ڪري جو انهن جو تعلق ”بهترين عملن“ سان آهي. انهن جي استعمال جو حقيقي سبب واضح ناهي. هڪ ڏينهن مون هڪ خاص پروجيڪٽ تي ڪم ڪرڻ شروع ڪيو، ۽ ان عمل ۾ مون کي خبر پئجي وئي ته اسان وڏي تعداد ۾ يونٽ ٽيسٽن سان ڍڪيل ڪوڊ ۾ ترميم ڪري رهيا آهيون. ڪو به مذاق ناهي، انهن مان اٽڪل 3000 هئا. اهو عام طور تي هڪ سٺي نشاني آهي، هڪ اشارو آهي ته ڊولپرز جديد طريقا استعمال ڪري رهيا آهن. هن طريقي سان ڪوڊ اڪثر ڪري ترتيب ڏنل آهي، ۽ اهو هڪ چڱي طرح سوچڻ واري فن تعمير تي ٻڌل آهي. هڪ لفظ ۾، تجربن جي موجودگي مون کي خوش ڪيو، جيڪڏهن صرف ان جو مطلب اهو آهي ته منهنجي نوڪري کي پروگرامرز جي مرشد جي حيثيت سان آسان بڻائي. جيئن ته اسان وٽ اڳ ۾ ئي يونٽ ٽيسٽ هئا، مون کي اهو ڪرڻو هو ته ڊولپمينٽ ٽيم کي ڳنڍڻ لاء انهن جي مدد ڪرڻ ۽ پنهنجو ڪوڊ لکڻ شروع ڪيو. مون IDE (انٽيگريٽڊ ڊولپمينٽ ماحول) کوليو ۽ پروجيڪٽ لوڊ ڪيو.
TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 3
اهو هڪ وڏو منصوبو هو! مون کي "يونٽ ٽيسٽ" جو ليبل ٿيل فولڊر مليو. ”زبردست،“ مون سوچيو. - اچو ته ان کي لانچ ڪريو ۽ ڏسو ته ڇا ٿئي. اهو صرف چند منٽ ورتو، ۽ منهنجي تعجب ۾، سڀ ٽيسٽ گذري ويا، هر شيء سائي هئي ( "سبز" ٽيسٽ جو هڪ مثبت نتيجو آهي. سگنل اهو آهي ته ڪوڊ ڪم ڪري رهيو آهي جيئن توقع ڪئي وئي آهي. ڳاڙهو اشارو "ناڪام" يا ناڪام، پوء اتي هڪ ڪيس آهي جڏهن ڪوڊ صحيح ڪم نٿو ڪري - مترجم جو نوٽ ). اهي سڀئي امتحان پاس ڪيا. ان مهل، مون ۾ شڪتي جاڳي پيو. ڪيئن آيا، ٽي هزار يونٽ ٽيسٽ، ۽ اهي سڀ هڪ ئي وقت ۾ ورتو - ۽ هڪ مثبت نتيجو ڏنو؟ منهنجي ڊگهي مشق ۾، مون کي هڪ وقت ياد نه ٿي سگهيو جڏهن مون ڪوڊ ۾ هڪ واحد منفي يونٽ ٽيسٽ کان سواء هڪ منصوبي تي ڪم ڪرڻ شروع ڪيو. ڇا ڪجي؟ دستي طور چيڪ ڪريو! ChY هڪ بي ترتيب ٽيسٽ چونڊيو، تمام گهڻو ظاهر نه ڪيو، پر اهو فوري طور تي واضح هو ته هو ڇا چيڪ ڪري رهيو هو. پر ان جي ذريعي ڪم ڪندي، مون کي ڪجهه بيوقوف محسوس ڪيو: امتحان ۾ متوقع نتيجو (دعاون) سان ڪو به مقابلو نه هو! اهو آهي، حقيقت ۾ ڪجهه به نه چيڪ ڪيو ويو ! ٽيسٽ ۾ ڪجهه مرحلا هئا، اهي ڪيا ويا، پر ٽيسٽ جي آخر ۾، جتي هو حقيقي ۽ متوقع نتيجن جو مقابلو ڪرڻ گهرجي، اتي ڪا به چيڪ نه هئي. ”آزمائڻ“ ڪنهن به شيءِ جي جانچ نه ڪئي. مون هڪ ٻيو امتحان کوليو. اڃا به بهتر: مقابلي واري آپريٽر جي نتيجي ۾ تبصرو ڪيو ويو آهي. شاندار طور تي! اهو هڪ بهترين طريقو آهي ٽيسٽ پاس ڪرڻ جو، صرف ان ڪوڊ جو تبصرو ڪيو جيڪو ان جي ناڪام ٿيڻ جو سبب بڻيل آهي. مون هڪ ٻيو امتحان چيڪ ڪيو، پوءِ ٻيو... انهن مان ڪنهن به چيڪ نه ڪيو. ٽي هزار ٽيسٽ، ۽ اهي سڀئي مڪمل طور تي بيڪار آهن. يونٽ ٽيسٽ لکڻ ۽ سمجھڻ واري يونٽ ٽيسٽنگ ۽ ٽيسٽ-ڊرائينڊ ڊولپمينٽ (TDD) جي وچ ۾ وڏو فرق آھي.

يونٽ ٽيسٽ ڇا آهي؟

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 4
يونٽ ٽيسٽنگ جو بنيادي خيال ٽيسٽ لکڻ آهي جيڪي ڪوڊ جي ننڍي ”يونٽ“ کي جانچيندا آهن. يونٽ جا امتحان عام طور تي ساڳي پروگرامنگ ٻولي ۾ لکجن ٿا جيئن ايپليڪيشن جو سورس ڪوڊ. اهي ٺاهيا ويا آهن سڌو سنئون هن ڪوڊ کي جانچڻ لاءِ. اهو آهي، يونٽ ٽيسٽ ڪوڊ آهن جيڪي ٻين ڪوڊ جي درستگي کي جانچيندا آهن. مان لفظ ”ٽيسٽ“ استعمال ڪريان ٿو بلڪل آزاديءَ سان ان حوالي سان، ڇاڪاڻ ته يونٽ جا امتحان ڪجهه معنى ۾ ٽيسٽ نه هوندا آهن. انهن کي ڪجهه به تجربو نه آهي. منهنجو مطلب اهو آهي ته جڏهن توهان هڪ يونٽ ٽيسٽ هلائيندا آهيو توهان عام طور تي نه ڳوليندا آهيو ته ڪجهه ڪوڊ ڪم نٿو ڪري. توھان ھي ڳوليندا آھيو ٽيسٽ لکڻ دوران، ڇو ته توھان ڪوڊ تبديل ڪندا جيستائين ٽيسٽ سائي ٿي وڃي. ها، ڪوڊ بعد ۾ تبديل ٿي سگهي ٿو ۽ پوء توهان جو امتحان ناڪام ٿي سگهي ٿو. تنهن ڪري هن معنى ۾، هڪ يونٽ ٽيسٽ هڪ ريگريشن ٽيسٽ آهي. هڪ يونٽ ٽيسٽ هڪ عام ٽيسٽ وانگر نه آهي جتي توهان وٽ ڪجهه قدم آهن جن جي توهان پيروي ڪرڻ وارا آهيو ۽ توهان ڏسندا آهيو ته سافٽ ويئر صحيح ڪم ڪري ٿو يا نه. هڪ يونٽ ٽيسٽ لکڻ جي عمل دوران، توهان دريافت ڪيو ته ڇا ڪوڊ اهو ڪري ٿو جيڪو اهو ڪرڻ گهرجي يا نه، ۽ توهان ڪوڊ تبديل ڪندا جيستائين ٽيسٽ پاس نه ٿئي.
TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 5
ڇو نه هڪ يونٽ ٽيسٽ لکو ۽ چيڪ ڪريو ته اهو پاس ٿيو؟ جيڪڏهن توهان ان جي باري ۾ هن طريقي سان سوچيو ٿا، ته پوء يونٽ ٽيسٽ تمام گهٽ سطح تي ڪجهه خاص ڪوڊ ماڊلز لاء ڪجهه قسم جي مطلق گهرجن ۾ ڦيرايو. توهان سمجهي سگهو ٿا هڪ يونٽ ٽيسٽ کي هڪ مطلق وضاحت جي طور تي . هڪ يونٽ ٽيسٽ اهو طئي ڪري ٿو ته انهن شرطن جي تحت، ان پٽن جي هن مخصوص سيٽ سان، اتي هڪ پيداوار آهي جيڪا توهان کي ڪوڊ جي هن يونٽ مان حاصل ڪرڻ گهرجي. سچي يونٽ ٽيسٽنگ ڪوڊ جي سڀ کان ننڍي مربوط يونٽ جي سڃاڻپ ڪري ٿي، جيڪا اڪثر پروگرامنگ ٻولين ۾ - گهٽ ۾ گهٽ اعتراض تي مبني - هڪ ڪلاس آهي.

ڇا ڪڏهن ڪڏهن سڏيو ويندو آهي يونٽ ٽيسٽ؟

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 6
يونٽ ٽيسٽ اڪثر ڪري انضمام جي جاچ سان پريشان آهي. ڪجهه ”يونٽ ٽيسٽ“ هڪ کان وڌيڪ ڪلاس جا امتحان ڏين ٿا يا ڪوڊ جا وڏا يونٽ ٽيسٽ ڪن ٿا. گھڻا ڊولپرز دعويٰ ڪن ٿا ته اھي لکن ٿا يونٽ ٽيسٽ جڏھن حقيقت ۾ اھي لکن ٿا گھٽ-سطح وائيٽ باڪس ٽيسٽ. انهن ماڻهن سان بحث نه ڪريو. بس ڄاڻو ته اهي اصل ۾ انٽيگريشن ٽيسٽ لکندا آهن، ۽ سچا يونٽ ٽيسٽ ڪوڊ جي ننڍي يونٽ کي ٻين حصن کان الڳ ڪرڻ ۾ ٽيسٽ ڪندا آهن. ٻي شيء جيڪا اڪثر ڪري يونٽ ٽيسٽ کي سڏيو ويندو آهي يونٽ ٽيسٽ آهي بغير ڪنهن متوقع قيمت جي جانچ ڪرڻ کان سواء. ٻين لفظن ۾، يونٽ ٽيسٽ جيڪي اصل ۾ ڪجھ به جانچ نه ڪندا آھن. ڪو به امتحان، متحد يا نه، لازمي طور تي ڪنهن قسم جي تصديق کي شامل ڪرڻ گهرجي - اسان ان کي چئون ٿا حقيقي نتيجن جي متوقع نتيجن جي خلاف. اھو اھو مصالحت آھي جيڪو طئي ڪري ٿو ته امتحان پاس ٿئي ٿو يا ناڪام. هڪ امتحان جيڪو هميشه گذري ٿو بيڪار آهي. هڪ امتحان جيڪو هميشه ناڪام ٿئي ٿو بيڪار آهي.

يونٽ ٽيسٽنگ جو قدر

مان ڇو آهيان يونٽ ٽيسٽنگ جو شوقين؟ عام ٽيسٽنگ کي سڏڻ نقصانڪار ڇو آهي، جنهن ۾ ٽيسٽنگ شامل آهي نه ته ننڍي بلاڪ کي ٻئي ڪوڊ کان الڳ، پر ڪوڊ جو هڪ وڏو ٽڪرو، ”يونٽ ٽيسٽنگ“؟ ڇا مسئلو آهي جيڪڏهن منهنجا ڪجهه ٽيسٽ مليل ۽ متوقع نتيجن جو مقابلو نٿا ڪن؟ گهٽ ۾ گهٽ اهي ڪوڊ تي عمل ڪن ٿا. مان وضاحت ڪرڻ جي ڪوشش ڪندس.
TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 7
يونٽ جي جاچ ڪرڻ جا ٻه مکيه سبب آهن. پهريون ڪوڊ ڊزائين کي بهتر ڪرڻ آهي. ياد رکو مون ڪيئن چيو ته يونٽ ٽيسٽنگ واقعي جاچ نه آهي؟ جڏهن توهان مناسب يونٽ ٽيسٽ لکندا آهيو، توهان پنهنجو پاڻ کي ڪوڊ جي ننڍڙي يونٽ کي الڳ ڪرڻ لاء مجبور ڪندا آهيو. اهي ڪوششون توهان کي ڪوڊ جي جوڙجڪ ۾ مسئلا ڳولڻ جي اڳواڻي ڪندا. توهان کي امتحان واري طبقي کي الڳ ڪرڻ ۽ ان جي انحصار کي شامل نه ڪرڻ تمام ڏکيو پئجي سگھي ٿو، ۽ اهو توهان کي اهو احساس ڏياري سگھي ٿو ته توهان جو ڪوڊ تمام مضبوط طور تي جڙيل آهي. توهان شايد اهو ڳولي سگهو ٿا ته بنيادي ڪارڪردگي جيڪا توهان آزمائي رهيا آهيو ڪيترن ئي ماڊلز جي وچ ۾ اسپانن کي جانچڻ لاء، توهان کي يقين ڏياريو ته توهان جو ڪوڊ ڪافي مطابقت نه آهي. جڏهن توهان هڪ يونٽ ٽيسٽ لکڻ لاءِ ويٺا آهيو، توهان اوچتو دريافت ڪري سگهو ٿا (۽ مون تي يقين رکو، اهو ٿئي ٿو!) ته توهان کي خبر ناهي ته ڪوڊ ڇا ڪرڻ گهرجي. ان جي مطابق، توهان ان لاءِ يونٽ ٽيسٽ لکڻ جي قابل نه هوندا. ۽ يقيناً، توهان شايد ڪوڊ جي نفاذ ۾ هڪ حقيقي بگ ڳولي سگهو ٿا، ڇو ته يونٽ ٽيسٽ توهان کي باڪس کان ٻاهر سوچڻ تي مجبور ڪري ٿو ۽ ان پٽن جي مختلف سيٽن کي آزمائي ٿو جن تي توهان غور نه ڪيو هوندو.
TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 8
جيڪڏهن توهان قاعدي تي سختي سان عمل ڪريو ٿا ”ٻين کان الڳ ڪرڻ ۾ ڪوڊ جو ننڍڙو يونٽ ٽيسٽ ڪريو“ جڏهن يونٽ ٽيسٽ ٺاهي رهيا آهيو، ته توهان پابند آهيو ته ان ڪوڊ ۽ انهن ماڊلز جي ڊيزائن سان هر قسم جا مسئلا ڳولڻ لاءِ. سافٽ ويئر ڊولپمينٽ جي زندگي جي چڪر ۾، يونٽ جي جاچ جانچ جي سرگرمي کان وڌيڪ تشخيصي سرگرمي کان وڌيڪ آهي. يونٽ جي جاچ جو ٻيو مکيه مقصد ريگريشن ٽيسٽ جو هڪ خودڪار سيٽ ٺاهڻ آهي جيڪو سافٽ ويئر رويي جي گهٽ-سطح جي وضاحت جي طور تي ڪم ڪري سگهي ٿو. هن جو ڇا مطلب آهي؟ جڏهن توهان اٽي کي گونجي، توهان ان کي نه ٽوڙيو. هن نقطي نظر کان، يونٽ ٽيسٽ ٽيسٽ آهن، خاص طور تي ريگريشن ٽيسٽ. جڏهن ته، يونٽ جي جاچ جو مقصد صرف ريگريشن ٽيسٽ ٺاهڻ نه آهي. عملي طور تي، يونٽ جا امتحان گهٽ ۾ گهٽ رجعت کي پڪڙيندا آهن، ڇاڪاڻ ته ڪوڊ جي يونٽ ۾ تبديلي جيڪا توهان جانچ ڪري رهيا آهيو تقريبن هميشه يونٽ ٽيسٽ ۾ تبديلين تي مشتمل آهي. ريگريشن ٽيسٽنگ اعليٰ سطح تي وڌيڪ اثرائتو آهي، جڏهن ڪوڊ کي ”ڪارو باڪس“ طور آزمايو وڃي ٿو، ڇاڪاڻ ته ان سطح تي ڪوڊ جي اندروني ڍانچي کي تبديل ڪري سگهجي ٿو، جڏهن ته خارجي رويو ساڳيو ئي رهڻ جي اميد ڪئي ويندي آهي. يونٽ ٽيسٽ موڙ ۾ اندروني ڍانچي کي چيڪ ڪريو ته جيئن جڏهن اها جوڙجڪ تبديل ٿي وڃي، يونٽ ٽيسٽ ناڪام نه ٿين. اهي ناقابل استعمال ٿي ويا آهن ۽ هاڻي تبديل ڪرڻ جي ضرورت آهي، اڇلائي يا ٻيهر لکڻ جي. توھان ھاڻي وڌيڪ ڄاڻو ٿا يونٽ ٽيسٽ جي حقيقي مقصد بابت ڪيترن ئي تجربيڪار سافٽ ويئر ڊولپرز کان.

ٽيسٽ ڊولپمينٽ ڊولپمينٽ (TDD) ڇا آهي؟

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 9
سافٽ ويئر ڊولپمينٽ جي عمل ۾، هڪ سٺي وضاحت سون ۾ ان جي وزن جي قيمت آهي. TDD جو طريقو اهو آهي ته توهان کان پهريان توهان ڪو به ڪوڊ لکو، توهان پهريون ڀيرو هڪ ٽيسٽ لکو جيڪو هڪ وضاحت جي طور تي ڪم ڪندو، اهو آهي، وضاحت ڪريو ته ڪوڊ ڇا ڪرڻ گهرجي. اهو هڪ انتهائي طاقتور سافٽ ويئر ڊولپمينٽ تصور آهي، پر اهو اڪثر غلط استعمال ڪيو ويندو آهي. عام طور تي، ٽيسٽ تي مبني ترقي جو مطلب آهي يونٽ ٽيسٽ استعمال ڪندي ايپليڪيشن ڪوڊ ٺاهڻ جي رهنمائي ڪرڻ لاءِ. پر حقيقت ۾، هي طريقو ڪنهن به سطح تي لاڳو ڪري سگهجي ٿو. جڏهن ته، هن آرٽيڪل ۾ اسان فرض ڪنداسين ته اسان استعمال ڪري رهيا آهيون اسان جي ايپليڪيشن لاء يونٽ ٽيسٽ. TDD نقطه نظر هر شي کي پنهنجي سر تي ڦيرائي ٿو، ۽ ان جي بدران ڪوڊ لکڻ جي پهرين ۽ پوء ان ڪوڊ کي جانچڻ لاء يونٽ ٽيسٽ لکڻ، توهان پهريان هڪ يونٽ ٽيسٽ لکو ۽ پوء ان ٽيسٽ کي سائي ڪرڻ لاء ڪوڊ لکو. هن طريقي سان، يونٽ ٽيسٽنگ "ڊرائيوز" ڪوڊ ڊولپمينٽ. اهو عمل بار بار بار بار ڪيو ويندو آهي. توهان هڪ ٻيو امتحان لکو جيڪو وڌيڪ ڪارڪردگي جي وضاحت ڪري ٿو ڪوڊ کي ڇا ڪرڻ گهرجي. توهان پوءِ ڪوڊ لکو ۽ تبديل ڪريو انهي کي يقيني بڻائڻ لاءِ ته ٽيسٽ ڪاميابي سان مڪمل ٿي. هڪ دفعو توهان وٽ سائي نتيجو آهي، توهان ڪوڊ کي ريفڪٽر ڪرڻ شروع ڪيو، اهو آهي، ان کي وڌيڪ جامع بڻائڻ لاءِ ان کي ريفڪٽر ڪرڻ يا صاف ڪرڻ. عمل جي هن زنجير کي اڪثر ڪري سڏيو ويندو آهي "ريڊ-گرين-ريفيڪٽرنگ" ڇاڪاڻ ته پهرين يونٽ ٽيسٽ ناڪام ٿئي ٿي (ڳاڙهو)، پوءِ ڪوڊ لکيو ويندو آهي ٽيسٽ کي موافقت ڪرڻ لاءِ، يقيني بڻائڻ ته اهو ڪامياب ٿئي ٿو (سائي)، ۽ آخر ۾ ڪوڊ بهتر ڪيو ويو آهي ( ري فيڪٽرنگ) ..

TDD جو مقصد ڇا آهي؟

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 10
ٽيسٽ-ڊولپمينٽ ڊولپمينٽ (TDD)، جهڙوڪ يونٽ ٽيسٽنگ، غلط استعمال ٿي سگھي ٿي. اهو تمام آسان آهي جيڪو توهان ڪندا آهيو "TDD" سڏڻ ۽ عمل جي پيروي ڪرڻ کان سواءِ اهو سمجھڻ کان سواءِ ته توهان اهو ڇو ڪري رهيا آهيو. TDD جو سڀ کان وڏو قدر اهو آهي ته ٽيسٽ ڪيا ويا آهن معيار جي وضاحتن جي پيداوار لاءِ. TDD بنيادي طور تي صحيح وضاحتن کي لکڻ جو رواج آهي جيڪو ڪوڊنگ لکڻ کان پهريان خودڪار طور تي چيڪ ڪري سگهجي ٿو. ٽيسٽ بهترين وضاحتون آهن ڇو ته اهي ڪوڙ نه ٿا ڪن. اهي توهان کي نه ٻڌائي سگهندا ته عذاب جي ٻن هفتن کان پوءِ ڪوڊ سان ”اهو نه آهي جيڪو منهنجو مطلب هو. ٽيسٽ، جڏهن صحيح لکيو وڃي، يا ته پاس يا ناڪام. ٽيسٽ واضح طور تي ظاهر ڪن ٿا ته ڪجهه حالتن ۾ ڇا ٿيڻ گهرجي. اهڙيء طرح، TDD جو مقصد اسان کي مڪمل سمجھڻ آهي ته اسان ان تي عمل ڪرڻ شروع ڪرڻ کان پهريان اسان کي لاڳو ڪرڻ جي ضرورت آهي. جيڪڏهن توهان TDD سان شروعات ڪري رهيا آهيو ۽ اهو نه ٿا ڄاڻو ته ڪهڙي ٽيسٽ کي ٽيسٽ ڪرڻي آهي، پوءِ توهان کي وڌيڪ سوال پڇڻ گهرجن. TDD جو ٻيو اهم ڪردار ڪوڊ کي بچائڻ ۽ بهتر ڪرڻ آهي. ڪوڊ جي سار سنڀال قيمتي آهي. مان اڪثر مذاق ٿو ڪريان ته بهترين پروگرامر اهو آهي جيڪو سڀ کان وڌيڪ جامع ڪوڊ لکي ٿو جيڪو ڪجهه مسئلا حل ڪري ٿو. يا اهو به جيڪو اهو ثابت ڪري ٿو ته اهو مسئلو حل ڪرڻ جي ضرورت ناهي، ۽ انهي سان مڪمل طور تي ڪوڊ کي هٽائي ٿو، ڇاڪاڻ ته اهو پروگرامر هو جنهن کي غلطي جي تعداد کي گهٽائڻ ۽ ايپليڪيشن کي برقرار رکڻ جي قيمت گھٽائڻ جو صحيح طريقو مليو. TDD استعمال ڪندي، توهان مڪمل طور تي پڪ ڪري سگهو ٿا ته توهان ڪو به غير ضروري ڪوڊ نه لکي رهيا آهيو، ڇو ته توهان صرف ٽيسٽ پاس ڪرڻ لاءِ ڪوڊ لکي رهيا آهيو. هتي هڪ سافٽ ويئر ڊولپمينٽ اصول آهي جنهن کي YAGNI سڏيو ويندو آهي (توهان کي ان جي ضرورت نه هوندي). TDD YAGNI کي روڪي ٿو.

عام ٽيسٽ ڊولپمينٽ ڊولپمينٽ (TDD) ورڪ فلو

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 11
TDD جي معني کي خالص علمي نقطي نظر کان سمجهڻ ڏکيو آهي. تنهن ڪري اچو ته هڪ مثال ڏسو TDD سيشن جو. تصور ڪريو ته پنھنجي ڊيسڪ تي ويھي رھيو ۽ جلدي خاڪو ٺاھيو جيڪو توھان سوچيو آھي اھو ھڪڙي خصوصيت لاءِ اعليٰ سطحي ڊيزائن آھي جيڪا صارف کي اجازت ڏئي ٿي ته ايپليڪيشن لاگ ان ڪري ۽ پنھنجو پاسورڊ تبديل ڪري جيڪڏھن اھو وساري ڇڏين. توهان فيصلو ڪيو ته توهان لاگ ان فنڪشن جي پهرين عمل درآمد سان شروع ڪندا، هڪ ڪلاس ٺاهي جيڪو لاگ ان عمل لاءِ سڀني منطق کي سنڀاليندو. توهان پنهنجو پسنديده ايڊيٽر کوليو ۽ هڪ يونٽ ٽيسٽ ٺاهيو جنهن کي سڏيو ويندو آهي "خالي لاگ ان صارف کي لاگ ان ٿيڻ کان روڪي ٿو." توھان لکو ٿا يونٽ ٽيسٽ ڪوڊ جيڪو پھريون لاگ ان ڪلاس جو ھڪڙو مثال ٺاھي ٿو (جيڪو توھان اڃا تائين نه بڻايو آھي). توھان وري ڪوڊ لکو لاگ ان ڪلاس ۾ ھڪڙي طريقي کي ڪال ڪرڻ لاءِ جيڪو خالي يوزرنيم ۽ پاسورڊ پاس ڪري ٿو. آخرڪار، توهان متوقع نتيجن جي خلاف هڪ چيڪ لکو، چيڪ ڪريو ته صارف هڪ خالي لاگ ان سان اصل ۾ لاگ ان ناهي. توهان هڪ ٽيسٽ هلائڻ جي ڪوشش ڪري رهيا آهيو، پر اهو به گڏ نه ٿو ڪري ڇو ته توهان وٽ لاگ ان ڪلاس نه آهي. توهان هن صورتحال کي درست ڪريو ۽ هڪ لاگ ان ڪلاس ٺاهيو انهي طريقي سان انهي ڪلاس ۾ لاگ ان ٿيڻ لاءِ ۽ ٻيو استعمال ڪندڙ جي اسٽيٽس چيڪ ڪرڻ لاءِ ته اهي لاگ ان ٿيل آهن. اڃا تائين توهان هن طبقي جي ڪارڪردگي ۽ طريقي تي عمل نه ڪيو آهي جيڪو اسان کي گهربل آهي. توهان هن نقطي تي امتحان هلائيندا آهيو. هاڻي اهو گڏ ڪري ٿو، پر فوري طور تي ناڪام ٿئي ٿو.
TDD ۽ يونٽ ٽيسٽنگ ڇا آهي [ترجمو] - 12
ھاڻي توھان واپس وڃو ڪوڊ ڏانھن ۽ امتحان پاس ڪرڻ لاءِ ڪارڪردگي کي لاڳو ڪريو. اسان جي صورت ۾، هن جو مطلب اهو آهي ته اسان کي نتيجو حاصل ڪرڻ گهرجي: "استعمال ڪندڙ لاگ ان ناهي." توهان ٻيهر امتحان هلائيندا آهيو ۽ هاڻي اهو پاس ٿيو. اچو ته ايندڙ امتحان ڏانهن وڃو. هاڻي اچو ته تصور ڪريون ته توهان کي هڪ ٽيسٽ لکڻ جي ضرورت آهي جنهن کي سڏيو ويندو آهي "جيڪڏهن اهي صحيح يوزرنيم ۽ پاس ورڊ داخل ڪيا آهن، صارف لاگ ان ٿيو آهي." توهان هڪ يونٽ ٽيسٽ لکندا آهيو جيڪو لاگ ان ڪلاس کي تيز ڪري ٿو ۽ صارف نالو ۽ پاسورڊ سان لاگ ان ٿيڻ جي ڪوشش ڪري ٿو. هڪ يونٽ ٽيسٽ ۾، توهان هڪ بيان لکندا آهيو ته لاگ ان ڪلاس کي ها جواب ڏيڻ گهرجي ته ڇا صارف لاگ ان ٿيل آهي. توهان هن نئين ٽيسٽ کي هلائيندا آهيو ۽ يقيناً اهو ناڪام ٿيندو آهي ڇو ته توهان جو لاگ ان ڪلاس هميشه واپس ايندو آهي ته صارف لاگ ان نه آهي. توھان واپس وڃو پنھنجي لاگ ان ڪلاس ۾ ۽ ڪجھ ڪوڊ لاڳو ڪريو تصديق ڪرڻ لاءِ ته صارف لاگ ان آھي. انهي حالت ۾، توهان کي اهو معلوم ڪرڻو پوندو ته هن ماڊل کي ڪيئن الڳ ڪرڻ. هن وقت، اهو ڪرڻ جو آسان طريقو اهو آهي ته توهان پنهنجي ٽيسٽ ۾ استعمال ڪيل يوزرنيم ۽ پاسورڊ کي هارڊ ڪوڊ ڪريو، ۽ جيڪڏهن اهي ملن ٿا، ته پوءِ نتيجو واپس ڏيو "يوزر ​​لاگ ان آهي." توهان هن تبديلي کي ٺاهيو، ٻئي ٽيسٽ هلائي، ۽ اهي ٻئي پاس. اچو ته آخري قدم ڏانھن وڃو: توھان ٺاھيل ڪوڊ کي ڏسو، ۽ ان کي منظم ڪرڻ ۽ ان کي آسان ڪرڻ جو طريقو ڳوليو. تنهنڪري TDD الگورتھم آهي:
  1. ٽيسٽ ٺاهي.
  2. اسان هن ٽيسٽ لاءِ ڪوڊ لکيو.
  3. ڪوڊ ريفيڪٽر ڪيو.

نتيجا

TDD ڇا آهي ۽ يونٽ ٽيسٽنگ [ترجمو] - 13
اهو سڀ ڪجهه آهي جيڪو مان توهان کي هن اسٽيج تي يونٽ ٽيسٽنگ ۽ TDD بابت ٻڌائڻ چاهيان ٿو. حقيقت ۾، ڪوڊ ماڊلز کي الڳ ڪرڻ جي ڪوشش سان لاڳاپيل ڪيتريون ئي مشڪلاتون آهن، ڇاڪاڻ ته ڪوڊ تمام پيچيده ۽ مونجهارو ٿي سگهي ٿو. تمام ٿورا طبقا مڪمل اڪيلائي ۾ موجود آهن. ان جي بدران، انهن وٽ انحصار آهي، ۽ انهن انحصارن ۾ انحصار آهي، وغيره. اهڙين حالتن سان معاملو ڪرڻ لاء، TDD ماهر ٺٺوليون استعمال ڪري ٿو، جيڪي انفرادي طبقن کي الڳ ڪرڻ ۾ مدد ڪن ٿيون انحصار ماڊلز ۾ شيون تبديل ڪندي. هي آرٽيڪل صرف هڪ جائزو آهي ۽ يونٽ ٽيسٽنگ ۽ TDD جو ڪجهه آسان تعارف آهي، اسان ڊمي ماڊلز ۽ ٻين TDD ٽيڪنالاجي بابت تفصيل ۾ نه وينداسين. خيال اهو آهي ته توهان کي TDD ۽ يونٽ ٽيسٽ جا بنيادي تصور ۽ اصول ڏيو جيڪي اميد آهي ته توهان وٽ هاڻي آهي. اصل - https://simpleprogrammer.com/2017/01/30/tdd-unit-testing/
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION