Bog'liq Dasturiy injiniringga kirish Ma\'ruza 2022-03-11
Testlashga asoslangan ishlab chiqish Testga asoslangan rivojlanish (TDD) - bu dasturni ishlab chiqishga yondashuv bo'lib, unda siz test va kod ishlab chiqishni bir-biriga qo'shib qo'yishingiz mumkin (Beck 2002; Jeffries and Melnik 2007). Siz kodni bosqichma-bosqich ishlab chiqasiz va bu o'sish uchun testlar to'plami. Siz ishlab chiqqan kod barcha testlardan o'tmaguningizcha, keyingi bosqichda ishlashni boshlamaysiz. Sinovga asoslangan ishlanma XP agile ishlab chiqish usulining bir qismi sifatida joriy qilingan. Biroq, u hozirda umumiy qabul qilingan va tezkor va rejaga asoslangan jarayonlarda ishlatilishi mumkin.
8.9 Rasm. Sinovga asoslangan ishlab chiqish
Asosiy TDD jarayoni 8.9-rasmda ko'rsatilgan. Jarayonning bosqichlari quyidagicha:
1. Siz talab qilinadigan funksiyalarning o'sishini aniqlashdan boshlaysiz. Bu odatda kichik bo'lishi va bir necha qator kodlarda amalga oshirilishi kerak.
2. Siz ushbu funksiya uchun test yozasiz va uni avtomatlashtirilgan test sifatida amalga oshirasiz. Bu shuni anglatadiki, test bajarilishi mumkin va u o'tgan yoki muvaffaqiyatsiz bo'lganligi haqida xabar beradi.
3. Shundan so'ng siz sinovdan o'tgan barcha boshqa testlar bilan birga o'tkazasiz. Dastlab, siz funksionallikni amalga oshirmadingiz, shuning uchun yangi test muvaffaqiyatsiz bo'ladi. Bu ataylab qilingan, chunki bu test sinov to'plamiga biror narsa qo'shishini ko'rsatadi.
4. Keyin funksionallikni amalga oshirasiz va testni qayta ishga tushirasiz. Bu mavjud kodni yaxshilash va mavjud kodga yangi kod qo'shish uchun refaktoringni o'z ichiga olishi mumkin.
5. Barcha testlar muvaffaqiyatli bajarilgandan so'ng, siz funksionallikning keyingi qismini amalga oshirishga o'tasiz.
Java dasturini sinovdan o'tkazishni qo'llab-quvvatlaydigan JUnit muhiti kabi avtomatlashtirilgan test muhiti (Tahchiev va boshq. 2010) TDD uchun juda zarur. Kod juda kichik bosqichlarda ishlab chiqilganligi sababli, siz har safar funksiya qo'shganingizda yoki dasturni qayta tiklaganingizda har bir testni bajarishingiz kerak bo'ladi. Shuning uchun testlar testlarni bajaradigan va sinovdan o'tkazilayotgan tizimni ishga tushiradigan alohida dasturga kiritilgan. Ushbu yondashuvdan foydalanib, siz bir necha soniya ichida yuzlab alohida testlarni o'tkazishingiz mumkin.
Sinovga asoslangan ishlab chiqish dasturchilarga kod segmenti aslida nima qilishi kerakligi haqidagi g'oyalarini aniqlashtirishga yordam beradi. Test yozish uchun siz nima maqsadda ekanligini tushunishingiz kerak, chunki bu tushunish kerakli kodni yozishni osonlashtiradi. Albatta, agar sizda to'liq bo'lmagan bilim yoki tushuncha bo'lsa, unda TDD yordam bermaydi.
Agar siz testlarni yozish uchun etarli bilimga ega bo'lmasangiz, kerakli kodni ishlab chiqolmaysiz. Misol uchun, agar sizning hisobingiz bo'linishni o'z ichiga olsa, siz raqamlarni nolga bo'lmasligingizni tekshirishingiz kerak. Agar siz buning uchun test yozishni unutib qo'ysangiz, tekshirish kodi hech qachon dasturga kiritilmaydi.
Muammoni yaxshiroq tushunish bilan bir qatorda, sinovga asoslangan rivojlanishning boshqa afzalliklari quyidagilardir:
1. Kod qamrovi Asosan, siz yozgan har bir kod segmentida kamida bitta bog'langan test bo'lishi kerak. Shunday qilib, tizimdagi barcha kodlar haqiqatda bajarilganligiga ishonchingiz komil bo'lishi mumkin. Kod yozilganidek sinovdan o'tkaziladi, shuning uchun nuqsonlar ishlab chiqish jarayonining boshida aniqlanadi.
2. Regressiya testi Dastur ishlab chiqilayotganda test majmuasi bosqichma-bosqich ishlab chiqiladi. Dasturga kiritilgan o'zgartirishlar yangi xatolarni keltirib chiqarmaganligini tekshirish uchun har doim regressiya testlarini o'tkazishingiz mumkin.
3. Soddalashtirilgan disk raskadrovka Sinov muvaffaqiyatsiz tugagach, muammo qayerda ekanligi aniq bo'lishi kerak. Yangi yozilgan kodni tekshirish va o'zgartirish kerak. Muammoni aniqlash uchun nosozliklarni tuzatish vositalaridan foydalanish shart emas. TDD dan foydalanish to'g'risidagi hisobotlar shuni ko'rsatadiki, sinovga asoslangan ishlab chiqishda avtomatlashtirilgan tuzatuvchidan foydalanish deyarli zarur emas (Martin 2007).
4. Tizim hujjatlari Testlarning o'zi kod nima qilishi kerakligini tavsiflovchi hujjat shakli sifatida ishlaydi. Testlarni o'qish kodni tushunishni osonlashtirishi mumkin.
Sinovga asoslangan ishlab chiqish hozirda dasturiy ta'minotni sinovdan o'tkazishda keng qo'llaniladigan va asosiy yondashuv hisoblanadi. Ushbu yondashuvni qo'llagan dasturchilarning ko'pchiligi bundan mamnun.