Bosh sahifa Wiki Test automation

Test automation

Test automation — dastur xatti-harakatini kod yoki vosita yordamida takrorlanuvchi tarzda ishga tushirish, natijani tekshirish va hisobot berish jarayoni. U unit, API, integration, browser, performance va security testlarni qamrab olishi mumkin. Automation testerning fikrlashini almashtirmaydi; kutilgan natija, test doirasi va failure diagnostikasi baribir aniq loyihalanadi.

Test qatlamlari

Unit test bitta funksiya yoki classni tez va izolyatsiyada tekshiradi. Integration test database, filesystem yoki boshqa komponent bilan real contractni sinaydi. E2E test to‘liq user journey’ni tekshiradi. Static analysis kodni ishga tushirmasdan qoidalarni tekshiradi, property-based test esa ko‘p generatsiya qilingan kirishda invariant izlaydi.

Har bug uchun browser E2E yozish shart emas. Xato qaysi eng past qatlamda ishonchli qayta ishlab bo‘lsa, regression test o‘sha yerga joylashtiriladi. Bu suite’ni tez saqlab, bir xil xatoni ko‘p qavatda takrorlashni kamaytiradi.

Deterministik test

Test vaqt, random, network va global state’ni nazorat qiladi. Clock injection expiry va timezone holatini real kutmasdan tekshiradi. Random seed failure’da qayta ishlab bo‘ladigan tarzda qayd etiladi. Mock faqat contracti aniq dependencyga qo‘llanadi; haddan tashqari mock testni implementatsiya detallariga bog‘lab, real integration xatosini yashiradi.

Parallel testlar unique temp directory, port va database schema ishlatadi. Test tartibiga bog‘liqlik aniqlanishi uchun run order randomlashtirilishi mumkin. Bitta test global config yoki singletonni o‘zgartirsa finally/fixture teardown bilan qaytaradi.

CI pipeline

Tez lint va unit test avval, qimmat integration hamda E2E keyin ishlaydi. Fail-fast resursni tejaydi, lekin barcha failure’larni bir run’da ko‘rish zarur bo‘lsa mustaqil joblar parallel davom etadi. Cache dependency downloadni tezlashtiradi; test natijasi cache qilinayotganda source, config va tool version keyga kiradi.

Required check branch merge’dan oldin o‘tishi kerak. Test job nomi barqaror bo‘ladi, aks holda branch protection eskirgan checkni kutadi. Flaky retry birinchi failure’ni yashirmasdan report qiladi.

Fixture va test data

Fixture minimal va maqsadga yo‘naltirilgan bo‘ladi. Ulkan umumiy seed qaysi data test uchun zarurligini yashiradi. Factory default valid obyekt yaratib, test faqat muhim farqni belgilaydi. Schema migration o‘zgarsa factory va fixture birga yangilanadi.

Production database nusxasi maxfiylik va determinism muammosini keltiradi. Synthetic data edge case’larni, Unicode, katta qiymat, null va permission kombinatsiyasini aniq qoplaydi. Anonimlashtirish reversible bo‘lmasligi va referential integrityni saqlashi kerak.

Assertion sifati

Test faqat status 200ni emas, kerakli biznes holat va side effectni tekshiradi. Juda ko‘p ichki method chaqiruvini assert qilish refactorda behuda failure yaratadi. Public behavior, contract va invariantlarga urg‘u beriladi.

Snapshot test katta UI yoki JSON farqini ko‘rsatadi, ammo reviewer snapshotni ko‘rmasdan “update” qilsa regressionni tasdiqlab yuboradi. Dinamik timestamp va ID normalizatsiya qilinadi, muhim maydonlar explicit assertion bilan to‘ldiriladi.

Parvarish

Test kodi production kodi kabi review, refactor va ownerga ega. Suite runtime, failure rate, flaky rate va top sekin testlar kuzatiladi. Eskirgan test feature olib tashlanganda tozalanadi; aks holda suite tarixiy talablarga bog‘lanadi.

Automation foydasi faqat test soni bilan emas, regressionni qanchalik erta va aniq topishi bilan o‘lchanadi. Failure xabari expected/actual, kirish va correlationni ko‘rsatadi, lekin secretni loglamaydi.

Bog‘liq tushunchalar

Unit testing, Integration testing, End-to-End testing, CI/CD, Test fixture, Assertion, Flaky test