Sobes.tech
Middle

Чӣ гуна метавонед санҷиши API-ро автоматӣ кунед?

sobes.tech AI

Ҷавоб аз AI

Автоматизатсияи санҷиши API метавонад бо роҳҳои зерин иҷро карда шавад:

  1. Истифодаи рамзҳо/китобхонаҳо:

    • Rest-Assured (Java): Китобхонаи маъруфи барои санҷиши REST API.
    • Requests (Python): Китобхонаи содда ва қавӣ барои иҷрои дархостҳои HTTP.
    • SuperTest (Node.js): Китобхона барои санҷиши серверҳои HTTP ва API.
    • Postman/Newman: Барномаҳо бо GUI ва CLI барои эҷод ва иҷрои тестҳои API.
  2. Эҷоди сценарии тест:

    • Барои ҳар як эндпоинт ҳолатҳои мусбат ва манфӣ муайян карда мешаванд.
    • Сценарияҳо дар бар мегиранд ирсол кардани дархостҳо бо параметрҳои гуногун, санҷиши кодҳои статус, мундариҷаи ҷисми ҷавоб (JSON, XML ва ғайра) ва сарлавҳаҳо.
  3. Тафтишоти маълумот:

    • Валидацияи схемаи JSON барои санҷиши сохтор ва намудҳои маълумот дар ҷавоб.
    • Муҳосибаи арзишҳои воқеӣ дар ҷавоб бо арзишҳои интизор.
  4. Идоракунии маълумот:

    • Истифодаи маълумоти тестӣ, ки дар файлҳо (JSON, CSV) ё базаҳои додаҳо нигоҳ дошта мешаванд.
    • Омодасозии маълумот пеш аз иҷрои тест ва тоза кардани он пас аз он (агар лозим бошад).
  5. Интегратсия бо системаи CI/CD:

    • Танзимоти оғоз кардани тестҳои автоматии API дар ҳар тағирот дар код ё мунтазам (масалан, ҳар шаб).
    • Истифодаи Jenkins, GitLab CI, GitHub Actions ва ғайра.
  6. Ҳисоботдиҳӣ:

    • Таҳия кардани ҳисоботҳои муфассал дар бораи натиҷаҳои тест (масалан, 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'