Middle
Чӣ гуна метавонед санҷиши API-ро автоматӣ кунед?
sobes.tech AI
Ҷавоб аз AI
Автоматизатсияи санҷиши API метавонад бо роҳҳои зерин иҷро карда шавад:
-
Истифодаи рамзҳо/китобхонаҳо:
- Rest-Assured (Java): Китобхонаи маъруфи барои санҷиши REST API.
- Requests (Python): Китобхонаи содда ва қавӣ барои иҷрои дархостҳои HTTP.
- SuperTest (Node.js): Китобхона барои санҷиши серверҳои HTTP ва API.
- Postman/Newman: Барномаҳо бо GUI ва CLI барои эҷод ва иҷрои тестҳои API.
-
Эҷоди сценарии тест:
- Барои ҳар як эндпоинт ҳолатҳои мусбат ва манфӣ муайян карда мешаванд.
- Сценарияҳо дар бар мегиранд ирсол кардани дархостҳо бо параметрҳои гуногун, санҷиши кодҳои статус, мундариҷаи ҷисми ҷавоб (JSON, XML ва ғайра) ва сарлавҳаҳо.
-
Тафтишоти маълумот:
- Валидацияи схемаи JSON барои санҷиши сохтор ва намудҳои маълумот дар ҷавоб.
- Муҳосибаи арзишҳои воқеӣ дар ҷавоб бо арзишҳои интизор.
-
Идоракунии маълумот:
- Истифодаи маълумоти тестӣ, ки дар файлҳо (JSON, CSV) ё базаҳои додаҳо нигоҳ дошта мешаванд.
- Омодасозии маълумот пеш аз иҷрои тест ва тоза кардани он пас аз он (агар лозим бошад).
-
Интегратсия бо системаи CI/CD:
- Танзимоти оғоз кардани тестҳои автоматии API дар ҳар тағирот дар код ё мунтазам (масалан, ҳар шаб).
- Истифодаи Jenkins, GitLab CI, GitHub Actions ва ғайра.
-
Ҳисоботдиҳӣ:
- Таҳия кардани ҳисоботҳои муфассал дар бораи натиҷаҳои тест (масалан, Allure Framework).
Маслиҳат барои истифодаи Rest-Assured:
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
public class ApiTests {
@Test
public void testGetUserById() {
// URL асосии API
RestAssured.baseURI = "https://reqres.in/api";
// Истифодаи GET-заявка
given()
.when()
.get("/users/2")
.then()
.statusCode(200) // Санҷиши коди статуса
.body("data.id", equalTo(2)) // Санҷиши арзиши дар ҷисми ҷавоб
.body("data.first_name", equalTo("Janet"));
}
}
Маслиҳат барои истифодаи Requests (Python):
import requests
def test_get_user_by_id():
url = "https://reqres.in/api/users/2"
response = requests.get(url)
assert response.status_code == 200 # Санҷиши коди статуса
data = response.json()
assert data['data']['id'] == 2 # Санҷиши арзиши дар ҷисми ҷавоб
assert data['data']['first_name'] == 'Janet'