11-Ma’ruza Mavzu: Dasturiy ta’minotni sinovdan o‘tkazish. Ishlab chiqishni sinovdan o‘tkazish Testlashga asoslangan ishlab chiqish Yakuniy testlash
Foydalanuvchi talablariga ko‘ra testlash
REJA: Ishlab chiqishni sinovdan o‘tkazish
Testlashga asoslangan ishlab chiqish
Yakuniy testlash
Foydalanuvchi talablariga ko‘ra testlash
Ishlab chiqishni sinovdan o‘tkazish Rivojlanish testi tizimni ishlab chiquvchi guruh tomonidan amalga oshiriladigan barcha sinov tadbirlarini o'z ichiga oladi. Dasturiy ta'minotni sinovdan o'tkazuvchisi odatda ushbu dasturiy ta'minotni ishlab chiqqan dasturchi hisoblanadi. Ba'zi ishlab chiqish jarayonlarida dasturchi/sinovchi juftliklari qo'llaniladi (Cusamano va Selby 1998), bunda har bir dasturchi tegishli testerga ega.
Nosozliklarni tuzatish Nosozliklarni tuzatish - bu test orqali aniqlangan xatolar va muammolarni tuzatish jarayoni. Dastur testlaridan olingan ma'lumotlardan foydalanib, tuzatuvchilar dasturlash tilidagi bilimlaridan foydalanadilar va dastur xatosini aniqlash va tuzatish uchun testdan mo'ljallangan natijalardan foydalanadilar. Dasturni nosozliklarni tuzatishda siz odatda dastur bajarilishi haqida qo'shimcha ma'lumot beruvchi interaktiv vositalardan foydalanasiz.
Rivojlanish testining uch bosqichi mavjud:
Birlik testi , bu erda alohida dastur birliklari yoki ob'ekt sinflari sinovdan o'tkaziladi. Birlik testi ob'ektlar yoki usullarning funksionalligini sinab ko'rishga qaratilgan bo'lishi kerak.
yaratish uchun bir nechta alohida birliklar birlashtirilgan komponent sinovi . Komponentlarni sinovdan o'tkazish komponent funktsiyalariga kirishni ta'minlaydigan komponent interfeyslarini sinab ko'rishga qaratilishi kerak .
Tizim testi , bu erda tizimdagi ba'zi yoki barcha komponentlar birlashtirilgan va tizim butun sifatida sinovdan o'tkaziladi. Tizim testi tarkibiy qismlarning o'zaro ta'sirini sinab ko'rishga qaratilishi kerak .
Rivojlanish testi birinchi navbatda nuqsonlarni tekshirish jarayoni bo'lib, unda sinovdan ko'zlangan maqsad dasturiy ta'minotdagi xatolarni aniqlashdir. Shuning uchun u odatda disk raskadrovka bilan aralashtiriladi - kod bilan bog'liq muammolarni aniqlash va ushbu muammolarni hal qilish uchun dasturni o'zgartirish jarayoni.
Birlik testi - bu usullar yoki ob'ekt sinflari kabi dastur komponentlarini sinab ko'rish jarayoni. Individual funktsiyalar yoki usullar komponentlarning eng oddiy turi hisoblanadi. Sizning testlaringiz turli xil kirish parametrlari bilan ushbu tartiblarga qo'ng'iroqlar bo'lishi kerak. Funksiya yoki usul testlarini loyihalash uchun 8.1.2-bo'limda ko'rib chiqilgan test holatlarini loyihalash uchun yondashuvlardan foydalanishingiz mumkin.
Ob'ekt sinflarini sinab ko'rayotganda, testlaringizni ob'ektning barcha xususiyatlarini qamrab olishni ta'minlash uchun loyihalashingiz kerak. Bu ob'ekt bilan bog'liq barcha operatsiyalarni sinab ko'rishingiz kerakligini anglatadi ; ob'ekt bilan bog'langan barcha atributlarning qiymatini o'rnatish va tekshirish; va ob'ektni barcha mumkin bo'lgan holatlarga qo'ying. Bu holat o'zgarishiga olib keladigan barcha hodisalarni simulyatsiya qilishingiz kerakligini anglatadi.
Masalan, men 7-bobda muhokama qilgan misoldagi ob-havo stansiyasi ob'ektini ko'rib chiqaylik. Ushbu ob'ektning atributlari va operatsiyalari 8.4-rasmda ko'rsatilgan.
8.4 Rasm. Meteorologiya stansiyasi ob'ekt interfeysi
Uning identifikatori bo'lgan yagona atributi bor. Bu ob-havo stantsiyasi o'rnatilganda o'rnatiladigan doimiydir. Shuning uchun sizga faqat uning to'g'ri sozlanganligini tekshiradigan test kerak. Siz reportWeather va reportStatus kabi ob'ekt bilan bog'liq bo'lgan barcha usullar uchun sinov holatlarini belgilashingiz kerak . Ideal holda, siz usullarni izolyatsiyada sinab ko'rishingiz kerak, ammo ba'zi hollarda test ketma-ketligi kerak bo'ladi. Masalan, ob-havo stantsiyasining asboblarini o'chirish usulini sinab ko'rish uchun ( o'chirish ), siz qayta ishga tushirish usulini bajargan bo'lishingiz kerak .
Umumlashtirish yoki merosxo'rlik ob'yektlar sinfini tekshirishni murakkablashtiradi. Siz operatsiyani aniqlangan sinfda oddiygina sinab ko'ra olmaysiz va u operatsiyani meros qilib olgan barcha kichik sinflarda kutilganidek ishlaydi deb o'ylay olmaysiz. Meros bo'lgan operatsiya boshqa amallar va atributlar haqida taxminlarni keltirib chiqarishi mumkin. Ushbu taxminlar operatsiyani meros qilib olgan ba'zi kichik sinflarda haqiqiy bo'lmasligi mumkin. Shuning uchun meros bo'lib qolgan operatsiyani u ishlatiladigan hamma joyda sinab ko'rishingiz kerak.
Ob-havo stantsiyasining holatini sinab ko'rish uchun siz 7-bobda muhokama qilingan holat modelidan foydalanishingiz mumkin (7.8-rasm). Ushbu modeldan foydalanib, siz sinovdan o'tkazilishi kerak bo'lgan holat o'tishlari ketma-ketligini aniqlaysiz va ushbu o'tishlarni majburlash uchun hodisalar ketma-ketligini aniqlaysiz. Amalda bu juda qimmat bo'lishi mumkin bo'lsa-da, printsipial jihatdan har qanday mumkin bo'lgan holatga o'tish ketma-ketligini sinab ko'rishingiz kerak. Meteorologiya stantsiyasida sinovdan o'tkazilishi kerak bo'lgan holat ketma-ketligiga misollar :
Iloji bo'lsa, siz birlik sinovini avtomatlashtirishingiz kerak. Avtomatlashtirilgan birlik testida siz dastur testlarini yozish va ishga tushirish uchun JUnit (Tahchiev va boshq. 2010) kabi test avtomatlashtirish tizimidan foydalanasiz. Birlik test tizimlari maxsus test holatlarini yaratish uchun kengaytiriladigan umumiy test sinflarini taqdim etadi. Keyin ular siz amalga oshirgan barcha testlarni bajarishi va ko'pincha grafik birlik interfeysi (GUI) orqali testlarning muvaffaqiyati yoki boshqa yo'l bilan hisobot berishi mumkin. To'liq test to'plami ko'pincha bir necha soniya ichida ishga tushirilishi mumkin, shuning uchun dasturga har safar o'zgartirish kiritganingizda barcha testlarni bajarishingiz mumkin.
Avtomatlashtirilgan test uch qismdan iborat:
O'rnatish qismi , bu erda siz tizimni sinov ishi, ya'ni kirishlar va kutilgan natijalar bilan ishga tushirasiz.
Sinov qilinadigan ob'ekt yoki usulni chaqiradigan qo'ng'iroq qismi .
Qo'ng'iroq natijasini kutilgan natija bilan solishtiradigan tasdiqlash qismi . Agar tasdiq haqiqat deb baholansa, test muvaffaqiyatli o'tgan; agar noto'g'ri bo'lsa, u muvaffaqiyatsiz bo'lgan.
Ba'zida siz sinab ko'rayotgan ob'ekt amalga oshirilmagan yoki ulardan foydalanish sinov jarayonini sekinlashtiradigan boshqa ob'ektlarga bog'liq bo'ladi. Misol uchun, agar ob'ekt ma'lumotlar bazasiga qo'ng'iroq qilsa, uni ishlatishdan oldin bu sekin sozlash jarayonini o'z ichiga olishi mumkin. Bunday hollarda siz soxta ob'ektlardan foydalanishga qaror qilishingiz mumkin.
Soxta ob'ektlar - bu tashqi ob'ektlar bilan bir xil interfeysga ega bo'lgan ob'ektlar bo'lib, uning funksionalligini taqlid qiladi. Masalan, ma'lumotlar bazasini taqlid qiluvchi soxta ob'ekt massivda tashkil etilgan bir nechta ma'lumotlar elementiga ega bo'lishi mumkin. Ularga ma'lumotlar bazasiga qo'ng'iroq qilish va disklarga kirish uchun ortiqcha xarajatlarsiz tezda kirish mumkin . Xuddi shunday, soxta ob'ektlar g'ayritabiiy operatsiyalar yoki noyob hodisalarni taqlid qilish uchun ishlatilishi mumkin. Misol uchun, agar sizning tizimingiz kunning ma'lum vaqtlarida harakat qilish uchun mo'ljallangan bo'lsa, sizning soxta ob'ektingiz haqiqiy soat vaqtidan qat'i nazar, shunchaki o'sha vaqtlarni qaytarishi mumkin.