0%
17-dars

Postman va API testing

Middle QA ga o'tishdagi #1 ko'nikma. CRUD, Status Codes, JSON, Tests โ€” barchasi sodda misollar bilan.

90 daqiqa
Middle QA ko'nikmasi
7 ta interaktiv

API nima va nega test qilamiz?

Tasavvur qiling: Uzum saytida "Savatga qo'shish" tugmasini bosdingiz. Sahifa yangilanmadi, lekin savatga mahsulot qo'shildi. Qanday qilib?

Buning ortida โ€” API bor. Tugma bosilganda sayt "Mahsulotni savatga qo'sh!" degan xabarni serverga yuboradi. Server qabul qiladi va "Bo'ldi!" degan javob qaytaradi.

Asosiy atama

API (Application Programming Interface) โ€” ikki dasturning bir-biri bilan gaplashish tili. Frontend va Backend o'rtasidagi "ko'prik".

Oddiy qilib: API โ€” ofitsant. Siz menyudan tanlaysiz (frontend), ofitsant oshpazga aytadi (API), oshpaz tayyorlaydi (backend), ovqatni siz uchun olib keladi.

๐Ÿ’ก Restoran misoli
Frontend, API, Backend, Database
Mijoz menyu so'raydi โ†’ Ofitsant (Frontend) buyurtmani qabul qiladi โ†’ API ma'lumotni yetkazadi โ†’ Oshpaz (Backend) tayyorlaydi โ†’ Ombor (Database)'dan ingredientlar oladi โ†’ Ovqat qaytib keladi. Hammasi sekundda!

Nega QA API'ni test qiladi?

Frontend va Backend qanday ishlaydi?

Sayt yoki ilova 2 qismdan iborat: Frontend (ko'rinadigan) va Backend (yashirin).

Web ilova arxitekturasi

๐Ÿ‘ค

Mijoz

Siz - foydalanuvchi. Brauzer orqali kirasiz.

"Login qilmoqchiman"
โ†’
๐ŸŽจ

Frontend

Sayt ko'rinishi. HTML, CSS, JavaScript. React, Vue.

Forma to'ldirildi
โ†’
โš™๏ธ

Backend

Server. Mantiq va biznes qoidalar. Node.js, Python, Java.

Parolni tekshiradi
โ†’
๐Ÿ’พ

Database

Ma'lumotlar bazasi. Foydalanuvchilar saqlanadi.

"Bunday user bor"

API โ€” Frontend va Backend o'rtasidagi ko'prik.

Real misol: Login qilish

Login bosilganda nima bo'ladi?
  1. Siz email va parolni kiritib "Kirish" bossangiz
  2. Frontend bu ma'lumotlarni API orqali Backend'ga jo'natadi: POST /login
  3. Backend Database'dan foydalanuvchini izlaydi
  4. Database javob beradi: "Ha, bunday user bor"
  5. Backend javob qaytaradi: {"token": "abc123"}
  6. Frontend sizni Dashboard'ga olib boradi

Hammasi 200 millisekundda!

REST API

REST API (Representational State Transfer) โ€” API yozish uslubi. Eng mashhur va sodda.

Asosiy g'oya: Har bir resurs uchun aniq URL va HTTP method ishlatish.

HTTP Methods (CRUD)

REST API'da 4 ta asosiy "harakat" bor. Ularni CRUD deb ataymiz: Create, Read, Update, Delete.

GET ๐Ÿ“– O'qish (Read)
Ma'lumot olish โ€” bazadan o'qib, javob qaytarish. Hech narsa o'zgartirmaydi.
// Barcha mahsulotlarni olish GET https://testshop.uz/api/products // Response (200 OK): [ { "id": 1, "name": "iPhone 15", "price": 12000000 }, { "id": 2, "name": "Samsung S24", "price": 10000000 } ]

Misol: Mahsulot katalogi sahifasini ochganingizda โ€” Frontend GET request yuboradi.

POST โž• Yaratish (Create)
Yangi ma'lumot qo'shish. Ma'lumot Body'da yuboriladi.
// Yangi mahsulot qo'shish POST https://testshop.uz/api/products // Request Body: { "name": "AirPods Pro", "price": 2500000, "category": "Audio" } // Response (201 Created): { "id": 123, "name": "AirPods Pro" }

Misol: "Mahsulot qo'shish" formasini yuborganingizda โ€” POST request.

PUT โœ๏ธ Yangilash (Update)
Mavjud ma'lumotni yangilash. URL'da ID bor.
// Mahsulot yangilash PUT https://testshop.uz/api/products/123 // Request Body: { "name": "AirPods Pro 2", "price": 2800000 } // Response (200 OK): { "id": 123, "name": "AirPods Pro 2" }

Misol: Profil ma'lumotingizni o'zgartirganingizda โ€” PUT request.

DELETE ๐Ÿ—‘๏ธ O'chirish (Delete)
Ma'lumotni o'chirish โ€” bazadan butunlay olib tashlaydi.
// Mahsulotni o'chirish DELETE https://testshop.uz/api/products/123 // Body kerak emas - faqat URL // Response (204 No Content): { "message": "Mahsulot o'chirildi" }

Misol: "Savatdan o'chirish" tugmasi โ€” DELETE request.

๐Ÿ“Š Status Codes โ€” javob raqamlari

Server javob qaytarganda, har doim 3 raqamli kod beradi.

200
OK
Hammasi yaxshi, javob keldi
201
Created
Yangi yozuv yaratildi (POST)
204
No Content
Bajarildi, javob bo'sh (DELETE)
400
Bad Request
Notog'ri so'rov
401
Unauthorized
Login kerak
403
Forbidden
Ruxsat yo'q
404
Not Found
Topilmadi
500
Server Error
Server buzildi
503
Unavailable
Server vaqtincha ishlamayapti
Oddiy yodlash

2xx = Yaxshi (OK). 4xx = Sizning xatongiz. 5xx = Server xatosi.

๐ŸŽฏ Bog'lang

HTTP Method va vazifani bog'lang

Har method qaysi vazifaga to'g'ri keladi?

HTTP Method

๐Ÿ“– GET
โž• POST
โœ๏ธ PUT
๐Ÿ—‘๏ธ DELETE
๐Ÿ”ง PATCH

Vazifa

Qisman yangilash (faqat narx)
Mahsulotlar ro'yxati
Mahsulotni o'chirish
Yangi mahsulot qo'shish
To'liq yangilash
0 / 5 juft
๐ŸŽฏ Status Classifier

Bu qaysi Status Code?

1-qadam: Holatni bosing. 2-qadam: Qaysi guruh ekanini tanlang.

๐Ÿ‘† Endi pastdagi tugmalardan birini tanlang
Mahsulotlar ro'yxatini so'radim - 25 ta keldi
GET muvaffaqiyatli bajarildi.
Login qilmasdan profil sahifasini ochmoqchi bo'ldim
Avtorizatsiya muammosi.
URL'da ID 99999 yozdim, lekin bunday mahsulot yo'q
Resurs topilmadi.
Mahsulot qo'shdim - server "Database error" deb chiqardi
Backend ishlamayapti.
Yangi mahsulot qo'shdim - server ID qaytardi
POST muvaffaqiyatli.
POST request - "name" maydoni majburiy edi, yubormagandim
Request noto'g'ri.
โœ…
2xx Success
โš ๏ธ
4xx Client Error
โŒ
5xx Server Error
0 / 6 to'g'ri

Postman asoslari

Endi nazariyani biladigan bo'ldik. Postman โ€” API testing uchun eng mashhur asbob.

Postman nima?

Postman โ€” API yuborish va javobni ko'rish uchun asbob. Bepul, oddiy va kuchli.

Oddiy qilib: "API uchun brauzer". Brauzer'da URL yozasiz - sayt ochiladi. Postman'da URL yozasiz - JSON keladi.

Postman interfeysi

My Workspace
GET
https://testshop.uz/api/products
Send
200 OK
Time: 245ms ยท Size: 1.2 KB
{ "products": [ { "id": 1, "name": "iPhone 15", "price": 12000000, "in_stock": true }, { "id": 2, "name": "Samsung S24", "price": 10000000 } ] }

Postman tushunchalari

Test yozish (asoslari)

Postman Tests misoli
// Status code tekshirish pm.test("Status is 200", function () { pm.response.to.have.status(200); }); // Response time tekshirish pm.test("Response time < 500ms", function () { pm.expect(pm.response.responseTime).to.be.below(500); }); // JSON tekshirish pm.test("Has products array", function () { const json = pm.response.json(); pm.expect(json.products).to.be.an('array'); });

Bu testlar avtomatik bajariladi.

Junior uchun

JavaScript kod qo'rqitishi mumkin, lekin Postman shablonlar beradi. 3-4 ta test yozsangiz, hammasi tushunarli bo'ladi.

๐Ÿ›  Amaliy mashq

Postman Request yarating

Maydonlarni to'ldiring va Postman ko'rinishida natijani ko'ring:

๐ŸŽฏ Tartibga qo'ying

API Request workflow

1-qadam: Pastdagi qadamni bosing. 2-qadam: To'g'ri tartibni tanlang.

๐Ÿ‘† Endi yuqoridagi raqamlardan birini tanlang
1-qadam
Qadamni qo'ying
2-qadam
Qadamni qo'ying
3-qadam
Qadamni qo'ying
4-qadam
Qadamni qo'ying
5-qadam
Qadamni qo'ying
โš™๏ธ Backend so'rovni bajaradi
๐Ÿ“จ Frontend API request yuboradi
๐ŸŽจ Frontend natijani ko'rsatadi
๐ŸŒ Server request'ni qabul qiladi
๐Ÿ“ค Backend response qaytaradi
0 / 5 to'g'ri
๐ŸŽฌ Haqiqiy stsenariy
Click loyihasida API testing

Dushanba, 9:30. Click jamoasida siz Middle QA. PO sizga keldi: "Yangi API tayyor โ€” P2P pul o'tkazish. Test qiling."

API: POST /api/transfers ยท Body: { "from_id": 1, "to_id": 2, "amount": 100000 }

Sizdagi vaqt: 1 soat. Qaysi testlarni bajarasiz?

Eng professional yondashuv qaysi?
โšก Tezkor tekshiruv
API request yubordim โ€” javob 401 keldi. Bu nima degani?

Postman'da real API test qilish

Postman bepul. Real API'lar bor: JSONPlaceholder, Reqres.in. Quyida 3 ta vazifa.

โฌข

Postman Bepul

Mac, Windows, Linux uchun bepul. Brauzer versiyasi ham mavjud.

๐Ÿš€ Postman'ni yuklab olish

Sizning vazifalaringiz:

1
CRUD operatsiyalarni sinang
Reqres.in bilan: GET /api/users, POST /api/users, PUT /api/users/2, DELETE /api/users/2. 4 ta request screenshot qiling.
2
Collection yarating
"TestShop API" Collection. Unga 5 ta request qo'shing. Har birining tavsifi va parameters'ini to'ldiring.
3
3 ta Tests yozing
Har request uchun: Status code (200), Response time (< 500ms), Body validation. Pass natijasini olishingiz kerak.
๐Ÿ’ก Portfolio uchun OLTIN material

Postman Collection (export qilib JSON) โ€” portfoliongizdagi eng kuchli dalil. Intervyu'da: "Mana mening API testing tajribam" โ€” deb ko'rsatasiz!

API test resurslari (bepul)

Intervyu savollari

API testing โ€” Middle QA intervyusining MUHIM mavzusi. 7 ta professional javob.

๐Ÿ’ก Har savol ustiga bosing โ€” javobni ko'rasiz.

Q1API nima va nega test qilamiz?+

Javob: "API โ€” ikki dasturning bir-biri bilan gaplashish tili. Frontend va Backend o'rtasidagi ko'prik."

Nega test qilamiz?

  • Frontend buzilsa ham API ishlay olishi kerak
  • Mobil ilova ham xuddi shu API'ni ishlatadi
  • Tezroq testing - frontend yuklash kerak emas
  • Avtomatlash oson

Pro javob: "Men har feature uchun API testlarni avval bajaraman, keyin UI testlarni โ€” Shift Left yondashuvi."

Q2HTTP Methods โ€” CRUD operatsiyalari?+

Javob: "REST API'da 4 ta asosiy HTTP method (CRUD):"

  • GET โ€” Read. Ma'lumot olish. GET /products
  • POST โ€” Create. Yangi yaratish. POST /products
  • PUT โ€” Update. To'liq yangilash. PUT /products/1
  • DELETE โ€” Delete. O'chirish. DELETE /products/1

PATCH: Qisman yangilash uchun (faqat 1-2 maydon). PUT to'liq, PATCH qisman.

Q3Status Code'larni tushuntiring+

Javob: "HTTP Status Code'lar 5 guruhga bo'linadi:"

  • 2xx Success โ€” yaxshi (200 OK, 201 Created, 204 No Content)
  • 3xx Redirect โ€” boshqa joyga yo'naltiradi
  • 4xx Client Error โ€” siz xato qildingiz (400, 401, 403, 404)
  • 5xx Server Error โ€” server xatosi (500, 503)

Eng tez-tez: 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Server Error

Q4Postman'ni qanday ishlatasiz?+

Javob: "Postman โ€” API testing uchun eng mashhur asbob. Mening kundalik workflow'im:"

  • 1. Workspace yarataman (loyiha uchun)
  • 2. Collection ichiga API'larni guruhlayman
  • 3. Environment yarataman (Dev, Staging, Prod URL)
  • 4. Har API uchun Request: URL, Method, Headers, Body
  • 5. Tests yozaman (status, response time, body validation)
  • 6. Send tugmasini bosaman, response ko'raman

Pro javob: "Collection'ni Git'ga commit qilaman. Newman bilan CI/CD'da avtomatlashtirib turaman."

Q5API'da nimalarni test qilasiz?+

Javob: "Har API uchun 5 ta narsa tekshiraman:"

  • Status Code โ€” 200, 201 yoki kutilgan kod
  • Response Time โ€” odatda < 500ms
  • Response Body โ€” kerakli field'lar bor, formatlar to'g'ri
  • Headers โ€” Content-Type, Authentication
  • Edge cases โ€” bo'sh body, salbiy son, juda katta string

Test scenariolari: Happy path (200), Validation errors (400), Authorization (401), Not found (404), Boundary values

Q6JSON formatini bilasizmi?+

Javob: "JSON โ€” API'larda eng mashhur ma'lumot formati. Asosiy turlari:"

  • String: "text" (qo'shtirnoqlar ichida)
  • Number: 123 yoki 12.5
  • Boolean: true yoki false
  • Array: [1, 2, 3]
  • Object: {"name": "iPhone"}
  • null โ€” bo'sh qiymat

Misol: {"id": 1, "name": "iPhone", "price": 12000000, "in_stock": true}

Q7Authentication va Authorization farqi?+

Javob:

  • Authentication โ€” "Sen kimsan?" Login qilish, kim ekanligini aniqlash. Email + Parol.
  • Authorization โ€” "Senga ruxsat bormi?" Login qilgansiz, lekin admin sahifaga oddiy user kira olmaydi.

API'da:

  • Token Authentication: Authorization: Bearer abc123
  • API Key: X-API-Key: xyz789
  • Basic Auth: email + parol

Status code'lar: 401 = Authentication yo'q. 403 = Authorization yo'q (lekin login bor).

3 ta asosiy fikr

Bu darsdan eslab qolishingiz kerak bo'lgan eng muhim g'oyalar

01
CRUD - 4 ta method
GET (read), POST (create), PUT (update), DELETE (delete). Har biri o'z vazifasi bilan.
02
Status Code mantiq
2xx yaxshi, 4xx sizning xatongiz, 5xx server xatosi. Bu mantiq yodlanadi.
03
Postman - asbob #1
API testing uchun eng yaxshi asbob. Collection'ni saqlang - portfolio uchun.
๐Ÿ† Darsni muvaffaqiyatli tugatdingiz!