Bosh sahifa Wiki Software testing

Software testing

Software testing — dasturiy mahsulotning xatti-harakati, sifati va belgilangan talablariga mosligini dalillar orqali tekshirish jarayonidir. Testlash nuqson mavjudligini aniqlashi, riskni baholashi va release haqida qaror qabul qilishga ma’lumot berishi mumkin. U barcha xato yo‘qligini matematik tarzda isbotlamaydi.

Testlash maqsadlari

Test faoliyati loyiha holatiga qarab turli maqsadga ega bo‘ladi. Yangi funksiya acceptance criteria asosida tekshiriladi, regression test avval ishlagan imkoniyat buzilmaganini aniqlaydi, performance testi yuk ostidagi kechikish va barqarorlikni o‘lchaydi. Security testing hujumchi foydalanishi mumkin bo‘lgan zaiflik va noto‘g‘ri nazoratlarni izlaydi.

Verification mahsulot spetsifikatsiyaga muvofiq qurilganini, validation esa foydalanuvchining haqiqiy ehtiyojiga mos natija berishini baholaydi. Spetsifikatsiyaning o‘zi noto‘g‘ri bo‘lsa, barcha yozilgan test o‘tishi mumkin, ammo mahsulot baribir kerakli muammoni hal qilmaydi.

Test darajalari

Unit test kichik funksiya yoki class mantiqini tez va izolyatsiyalangan holda tekshiradi. Integration test komponentlar, database yoki tashqi interfeyslarning birga ishlashini baholaydi. System test to‘liq yig‘ilgan tizimni, acceptance test esa biznesga ko‘rinadigan natijani tekshiradi.

Darajalar qat’iy fizik chegaraga ega emas; tashkilot terminlarni biroz boshqacha ishlatishi mumkin. Muhim jihat test qaysi obyektni, qaysi dependency bilan va qaysi risk uchun tekshirayotganini ochiq yozishdir. Bir xil scenario har darajada aynan takrorlansa, maintenance xarajati oshadi.

Static va dynamic usullar

Static testing kodni ishga tushirmasdan bajariladi. Requirement review, architecture inspection, code review, linter va static analyzer shunga kiradi. Ular noto‘g‘ri control flow, type muammosi, xavfli API yoki noaniq talabni erta aniqlashi mumkin.

Dynamic testing ishlayotgan dasturga kirish beradi va natijani kuzatadi. Black-box test ichki kodni bilmasdan tashqi xatti-harakatni, white-box test esa branch va data flow kabi ichki tuzilmani hisobga oladi. Gray-box yondashuv cheklangan ichki bilimdan foydalanadi.

Test dizayni

Barcha kirish kombinatsiyasini sinash imkonsiz bo‘lgani uchun vakil holatlar tanlanadi. Equivalence partitioning o‘xshash xatti-harakatli qiymatlarni guruhlaydi, boundary value chegaralardagi xatolarni tekshiradi. Decision table bir nechta biznes sharti kombinatsiyasini, state transition esa holatlar o‘rtasidagi o‘tishni ko‘rsatadi.

Risk-based testing ehtimol va ta’siri yuqori joyga chuqurroq qamrov beradi. Test soni sifatning o‘zi emas: aniq oracle, ma’noli kirish va to‘g‘ri muhit bo‘lmasa ko‘p test ham muhim nuqsonni o‘tkazishi mumkin.

Avtomatlashtirish va qo‘lda tekshirish

Takrorlanuvchi, aniq kutilgan natijali regression testlar avtomatlashtirishga mos. Exploratory testing esa testerning o‘rganish, savol berish va yangi yo‘l topish qobiliyatidan foydalanadi. Avtomatlashtirish qo‘lda testlashni to‘liq almashtirmaydi; ikki usul boshqa turdagi ma’lumot beradi.

Test kodi ham production kodi kabi review, versiya nazorati va refactoring talab qiladi. Flaky test bir xil kodda ba’zan o‘tib, ba’zan yiqiladi va signalga ishonchni kamaytiradi. Uning sababi vaqt, parallelizm, tashqi servis yoki noto‘g‘ri izolatsiya bo‘lishi mumkin.

Natijalarni talqin qilish

Test hisobotida build identifikatori, muhit, o‘tgan va yiqilgan test, ochiq defect va qamrab olinmagan risklar ko‘rsatiladi. “Barcha test o‘tdi” faqat bajarilgan testlar doirasidagi dalildir. Release qarori qolgan risk, biznes qiymati va operatsion tayyorgarlik bilan birga qabul qilinadi.

Test artefaktlari requirement va risk bilan bog‘langanda qamrov mazmuni aniq ko‘rinadi. Eskirgan testlar sabab bilan yangilanadi yoki olib tashlanadi.

Bog‘liq tushunchalar

Unit testing, Integration testing, Acceptance testing, Test strategy, Defect, Regression testing, Quality Assurance