API testlerini nasıl otomatikleştirebilirsiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
API testlerini otomatikleştirmek için aşağıdakileri kullanıyorum:
-
Araç Seçimi:
- Postman: Manuel ve yarı otomatik testler için mükemmel, istek koleksiyonları oluşturma, doğrulamalar (assertions) için JavaScript betikleri yazma ve ortamlar oluşturma.
- Rest-Assured (Java için) / Requests (Python için): Kod içinde otomatik testler yazmak için kütüphaneler. Esnek istekler oluşturma, yanıtları işleme ve karmaşık doğrulamalar yapma imkanı sağlar.
- Swagger/OpenAPI: API spesifikasyonuna dayalı müşteri kodu veya testler oluşturmak için.
-
Test Senaryolarının Tanımlanması: API spesifikasyonunun analizi, uç noktaların (endpoints), metodların (GET, POST, PUT, DELETE vb.), parametrelerin, başlıkların, istek gövdelerinin, beklenen durum kodlarının ve yanıt formatlarının (JSON, XML) belirlenmesi. Pozitif ve negatif test senaryolarının geliştirilmesi.
-
Testlerin Uygulanması:
-
Postman ile:
- Testleri gruplayacak koleksiyonlar oluşturma.
- Veri hazırlamak için Pre-request scriptleri yazma (örneğin, token alma).
- Yanıtın durumunu, başlıklarını ve gövdesini kontrol etmek için Tests (post-request scriptleri) yazma (
pm.response.json(),pm.expect(),chai.expect()). - Ortam değişkenlerini, ortamlar arasında değişen parametreler (URL, kimlik bilgileri) için kullanma.
- Koleksiyonları Collection Runner veya Newman ile çalıştırma (CI/CD için).
// Postman Testi pm.test("Durum kodu 200 olmalı", function () { pm.response.to.have.status(200); }); pm.test("Yanıt gövdesinde belirli alan var", function () { const responseJson = pm.response.json(); pm.expect(responseJson.data).to.have.property('id'); }); -
Rest-Assured (Java ile):
- Java kodu yazarak test frameworkleri (JUnit, TestNG) kullanma.
- İstekleri oluşturma, parametreleri, başlıkları ve gövdeyi belirtme.
- İsteği gönderme (
when().get(),post(), vb.). - Yanıtı doğrulama (
then().statusCode(int),body(String path, Matcher<?> matcher)).
// Rest-Assured (Java) örneği JUnit ile import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; public class ApiTest { @Test public void testGetUser() { RestAssured.baseURI = "https://api.example.com"; // Temel URL ayarla given() .when() .get("/users/1") // /users/1 isteği gönder .then() .statusCode(200) // Durum kodunun 200 olduğunu doğrula .body("data.id", equalTo(1)); // Yanıt gövdesinde alanı doğrula } }
-
-
Test Verilerinin Yönetimi: Farklı giriş verileri kombinasyonlarını kontrol etmek için parametrizasyon kullanma. Veri kaynakları CSV, JSON dosyaları veya veritabanları olabilir.
-
CI/CD Boru Hattında Testlerin Çalıştırılması: Otomatik API testlerini Jenkins, GitLab CI, GitHub Actions gibi araçlar kullanarak sürekli entegrasyon/sürekli teslimat sürecine entegre etme. Bu, her commit'te testlerin otomatik çalışmasını ve API'nin kararlılığı hakkında hızlı geri bildirim alınmasını sağlar. Postman için Newman, kod çözümleri için ise test framework'ü kullanılır.
-
Sonuçların Analizi ve Raporlama: Test raporları oluşturma (örneğin, Allure, TestNG/JUnit HTML raporları kullanarak). Sonuçların takibi ve hata nedenlerinin analizi.
Bu yaklaşım, API'nin farklı geliştirme aşamalarında düzenli ve güvenilir bir şekilde fonksiyonelliğini ve kararlılığını kontrol etmeyi sağlar.