Postman ile API Testi: Gerçek Dünya Uygulamaları ve Kod Örnekleri
Modern yazılım geliştirme süreçlerinde API’lar, uygulamalar arasındaki iletişimin temelini oluşturur. Peki, bu kritik bağlantı noktalarının beklendiği gibi çalıştığından nasıl emin olabiliriz? API testleri, yazılım kalitesini garanti altına almak ve olası hataları üretim ortamına ulaşmadan tespit etmek için vazgeçilmezdir. Bu makalede, sektör standardı haline gelmiş Postman aracını kullanarak API test framework’lerini nasıl uygulayacağınızı, gerçek dünya kod örnekleriyle adım adım öğreneceksiniz.
Günümüzün birbirine bağlı dijital dünyasında, API’lar (Uygulama Programlama Arayüzleri) yazılım sistemlerinin bel kemiğidir. Mobil uygulamalardan web platformlarına, mikro hizmet mimarilerinden üçüncü taraf entegrasyonlarına kadar her yerde karşımıza çıkarlar. API’lar aracılığıyla farklı sistemler veri alışverişinde bulunur, iş mantığını paylaşır ve birlikte çalışır. Bu nedenle, bir API’ın düzgün çalışmaması, bağlı tüm sistemlerde domino etkisi yaratabilecek ciddi sorunlara yol açabilir. Örneğin, bir e-ticaret uygulamasında ödeme API’sının arızalanması, müşteri memnuniyetsizliğinden gelir kaybına kadar geniş çaplı olumsuz sonuçlar doğurabilir.
API testleri, bu kritik arayüzlerin işlevselliğini, güvenilirliğini, performansını ve güvenliğini doğrulamak için yapılan bir dizi test faaliyetidir. Geleneksel UI (Kullanıcı Arayüzü) testlerinin aksine, API testleri, uygulamanın arka uç bileşenleriyle doğrudan etkileşime girerek daha erken bir aşamada hataları tespit etmeye olanak tanır. Bu “shift-left” yaklaşımı, geliştirme döngüsünün başlarında sorunları yakalamak anlamına gelir; bu da düzeltme maliyetini önemli ölçüde düşürür. Bir hata ne kadar erken bulunursa, onu düzeltmek o kadar kolay ve ucuz olur. Ayrıca, API testleri, kullanıcı arayüzü henüz geliştirilmemiş olsa bile backend mantığının ve veri akışının doğrulanmasına izin verir, böylece paralel geliştirme imkanı sunar.
Postman gibi güçlü bir araç, bu test süreçlerini basitleştirir ve otomatize eder. Geliştiricilerin ve QA mühendislerinin karmaşık API isteklerini kolayca oluşturmasına, göndermesine ve yanıtları analiz etmesine olanak tanır. Sadece manuel testlerle sınırlı kalmayıp, güçlü test betikleri yazarak otomatize edilmiş test senaryoları oluşturabilir, sürekli entegrasyon (CI) ve sürekli teslimat (CD) boru hatlarına entegre edebilirsiniz. Bu da, ürünün daha hızlı, daha güvenilir ve daha kaliteli bir şekilde piyasaya sürülmesini sağlar. Kısacası, API testleri, modern yazılım geliştirmede sadece bir seçenek değil, bir zorunluluktur ve Postman bu zorunluluğu keyifli ve verimli bir sürece dönüştürmenin anahtarıdır.
API Testlerinin Temelleri: Postman Neden Bir Standart?
API (Application Programming Interface), adından da anlaşılacağı gibi, farklı yazılım bileşenlerinin birbiriyle iletişim kurmasını sağlayan bir dizi kural ve tanım kümesidir. Bir restorandaki garsonu düşünebilirsiniz: siz (istemci) mutfağa (sunucu) bir sipariş (istek) verirsiniz ve garson bu siparişi mutfağa iletir, ardından yemeği (yanıt) size geri getirir. API’lar da benzer şekilde çalışır; istemci uygulamalarının sunuculardan veri istemesini, veri göndermesini veya belirli eylemleri gerçekleştirmesini sağlar. Bu etkileşimler genellikle HTTP protokolü üzerinden GET, POST, PUT, DELETE gibi standart metotlarla gerçekleşir ve veriler JSON veya XML formatında taşınır.
Peki, bu kadar kritik bir bileşenin neden test edilmesi gerekiyor? Bir API’ın doğru veriyi döndürdüğünden, beklenmeyen durumlarda doğru hata mesajlarını verdiğinden, performans sorunları yaşamadığından ve güvenlik açıklarına sahip olmadığından emin olmak için testler şarttır. API testleri, uygulamanın iş mantığını, veri işleme yeteneklerini ve sunucu taraflı davranışlarını en alt seviyeden doğrular. Kullanıcı arayüzüne bağımlı olmadığı için daha hızlı çalışır ve daha kararlıdır, zira UI değişiklikleri API testlerini etkilemez. Ayrıca, geliştirmenin erken aşamalarında regresyonları tespit etmek için mükemmel bir araçtır.
İşte tam da bu noktada Postman devreye giriyor ve API testleri için sektörde fiili bir standart haline geliyor. Postman, API geliştiricileri ve test uzmanları için kapsamlı bir platform sunar. Temelde bir HTTP istemcisi olarak başlamış olsa da, zamanla API yaşam döngüsünün her aşamasını destekleyen güçlü bir ekosisteme dönüşmüştür. İşte Postman’ın sunduğu başlıca avantajlar:
- Kullanım Kolaylığı: Sezgisel arayüzü sayesinde, API isteklerini oluşturmak, parametre eklemek, başlıkları ayarlamak ve gövdeleri yapılandırmak son derece basittir. Yeni başlayanlar bile kısa sürede adapte olabilir.
- İstek Yönetimi: İstekleri koleksiyonlar halinde düzenleyebilir, ortam değişkenleriyle farklı sunucular ve kimlik bilgileri arasında kolayca geçiş yapabilirsiniz. Bu, farklı geliştirme, test ve üretim ortamları için aynı istekleri yeniden kullanmanızı sağlar.
- Otomasyon Yetenekleri: JavaScript tabanlı test betikleri sayesinde, yanıtları otomatik olarak doğrulayabilir, bir isteğin sonucunu sonraki bir isteğe aktarabilir ve karmaşık test senaryoları oluşturabilirsiniz.
- Ortak Çalışma: Koleksiyonları ve ortamları ekip üyeleriyle kolayca paylaşabilir, böylece tüm ekibin tutarlı bir test ortamında çalışmasını sağlayabilirsiniz.
- Entegrasyonlar: Newman CLI aracı sayesinde, Postman koleksiyonlarını CI/CD boru hatlarınıza entegre ederek otomatik testleri derleme ve dağıtım süreçlerinizin bir parçası haline getirebilirsiniz.
- Mock Sunucular: Backend geliştirme henüz tamamlanmamışsa veya üçüncü taraf API’larına erişim kısıtlıysa, kendi mock sunucularınızı oluşturarak front-end geliştirmeyi ve testleri bağımsız olarak sürdürebilirsiniz.
Kısacası, Postman API testlerini daha erişilebilir, daha hızlı ve daha verimli hale getirerek geliştirme süreçlerine paha biçilmez bir değer katar. Bu araç, API’larla çalışan herkesin araç kutusunda mutlaka bulunması gereken bir parçadır.
Postman ile İlk API Testinizi Nasıl Oluşturursunuz?
Postman’ın temel yeteneklerini ve API testlerinin neden bu kadar önemli olduğunu anladığımıza göre, şimdi sıra Postman’ı kullanarak gerçek bir API testi oluşturmaya geldi. Bu bölümde, basit bir GET ve POST isteği oluşturacak, yanıtı inceleyecek ve ilk test betiklerinizi yazarak yanıtın doğruluğunu otomatik olarak kontrol etmeyi öğreneceksiniz.
Öncelikle, Postman uygulamasını indirip kurduğunuzdan emin olun. Uygulamayı açtığınızda, sol üst köşede bulunan “+” düğmesine tıklayarak yeni bir istek (request) oluşturabilirsiniz.
Basit Bir GET İsteği Oluşturma
Bir API’dan veri almak için genellikle GET metodunu kullanırız. Örnek olarak, herkesin erişebileceği bir “placeholder” API’ı olan JSONPlaceholder’ı kullanacağız. Bu API, sahte (mock) veri sağlar ve testler için mükemmeldir.
- Yeni bir istek açın ve metod olarak
GETseçeneğini belirleyin. - URL alanına aşağıdaki adresi yapıştırın:
https://jsonplaceholder.typicode.com/posts/1 - “Send” (Gönder) butonuna tıklayın.
Yanıt bölümünde (response pane), API’dan gelen JSON verisini göreceksiniz. Bu, genellikle bir id, userId, title ve body alanlarını içeren bir blog gönderisi objesi olacaktır. Yanıtın alt kısmında “Status” (Durum) olarak “200 OK” görmelisiniz, bu da isteğinizin başarıyla işlendiği anlamına gelir.
Yanıtı İnceleme ve İlk Test Betiklerini Yazma
Yanıtı manuel olarak incelemek yerine, Postman’ın güçlü test yeteneklerini kullanarak bunu otomatik hale getirebiliriz. İsteğinizin sekme bölümünde “Tests” (Testler) sekmesine tıklayın. Buraya JavaScript kodları yazarak gelen yanıtı programatik olarak doğrulayabiliriz.
İşte ilk testleriniz için kullanabileceğiniz bazı örnekler:
// 1. HTTP Durum Kodunu Kontrol Etme
pm.test("Status kodu 200 olmalı", function () {
pm.response.to.have.status(200);
});
// 2. Yanıtın JSON Formatında Olduğunu Kontrol Etme
pm.test("Yanıt JSON formatında olmalı", function () {
pm.response.to.be.json;
});
// 3. Yanıt Gövdesindeki Bir Alanın Mevcut Olup Olmadığını Kontrol Etme
pm.test("Yanıt gövdesinde 'id' alanı mevcut olmalı", function () {
const responseJson = pm.response.json();
pm.expect(responseJson).to.have.property('id');
});
// 4. Yanıt Gövdesindeki Bir Alanın Değerini Kontrol Etme
pm.test("'id' değeri 1 olmalı", function () {
const responseJson = pm.response.json();
pm.expect(responseJson.id).to.eql(1);
});
// 5. Birleştirilmiş Kontrol: 'title' alanının belirli bir dize içerdiğini kontrol etme
pm.test("'title' alanı belirli bir metin içermeli", function () {
const responseJson = pm.response.json();
pm.expect(responseJson.title).to.include("sunt aut facere");
});
Bu kod bloklarını "Tests" sekmesine yapıştırdıktan sonra isteği tekrar "Send" butonuna tıklayarak gönderin. Yanıt bölümünün hemen altında "Test Results" (Test Sonuçları) sekmesi görünecektir. Buraya tıkladığınızda, yazdığınız her testin başarılı olup olmadığını (PASS/FAIL) göreceksiniz. Bu, API'ınızın beklendiği gibi çalıştığını otomatik olarak doğrulamanın ilk adımıdır.
Basit Bir POST İsteği Oluşturma
GET ile veri alırken, POST ile sunucuya veri gönderir ve genellikle yeni bir kaynak oluştururuz. Yine JSONPlaceholder'ı kullanarak yeni bir gönderi oluşturmaya çalışalım.
- Yeni bir istek açın ve metod olarak
POSTseçeneğini belirleyin. - URL alanına aşağıdaki adresi yapıştırın:
https://jsonplaceholder.typicode.com/posts - "Headers" (Başlıklar) sekmesine gidin ve "Content-Type" anahtarına "application/json" değerini ekleyin. Bu, sunucuya gönderdiğiniz verinin JSON formatında olduğunu bildirir.
- "Body" (Gövde) sekmesine tıklayın, "raw" seçeneğini ve açılır menüden "JSON" formatını seçin.
- Aşağıdaki JSON verisini gövde alanına yapıştırın:
{ "title": "foo", "body": "bar", "userId": 1 } - "Send" butonuna tıklayın.
Yanıt olarak, yeni oluşturulan gönderinin id ile birlikte bir JSON objesi görmelisiniz. Genellikle POST isteklerinde başarılı yanıt kodu "201 Created" olur. Bu yanıt, sunucunun isteğinizi başarıyla işlediğini ve yeni bir kaynak oluşturduğunu gösterir.
Test sekmesine aşağıdaki kodları ekleyerek bu POST isteğini de doğrulayabilirsiniz:
pm.test("Status kodu 201 olmalı (Created)", function () {
pm.response.to.have.status(201);
});
pm.test("Yanıt gövdesinde 'id' alanı olmalı", function () {
const responseJson = pm.response.json();
pm.expect(responseJson).to.have.property('id');
pm.expect(responseJson.id).to.be.a('number'); // id'nin sayı olduğundan emin olun
});
pm.test("Gönderilen 'title' doğru olmalı", function () {
const responseJson = pm.response.json();
pm.expect(responseJson.title).to.eql("foo");
});
Bu adımlarla Postman'da ilk API isteklerinizi göndermeyi ve temel test betiklerini yazmayı öğrenmiş oldunuz. Bu temel bilgiler, daha karmaşık test senaryolarına geçiş için sağlam bir zemin oluşturacaktır.
Gerçek Dünya Senaryoları: Değişkenler, Ortamlar ve İstek Zincirleme
Gerçek dünya API test senaryoları genellikle basit tekil isteklerin ötesine geçer. Çoğu zaman, farklı test ortamlarında çalışmamız, hassas bilgileri güvenli bir şekilde yönetmemiz ve birden fazla API çağrısını mantıksal bir sıra içinde zincirlememiz gerekir. Postman, bu karmaşıklığı yönetmek için güçlü değişkenler, ortamlar ve istek zincirleme yetenekleri sunar.
Değişkenler ve Ortamlar ile Yönetilebilirlik
Bir API'ın birden fazla ortamda (geliştirme, test, üretim) farklı URL'ler, API anahtarları veya kullanıcı kimlik bilgileri olabilir. Bu bilgileri her test isteğinde manuel olarak değiştirmek hem zaman alıcı hem de hataya açıktır. Postman değişkenleri ve ortamları bu sorunu ortadan kaldırır.
Değişkenler Nedir? Değişkenler, değerleri depolayan anahtar-değer çiftleridir. Bir değeri bir değişkende saklayabilir ve daha sonra isteklerinizde, test betiklerinizde veya ön-istek betiklerinizde bu değişkeni kullanabilirsiniz. Postman'da beş farklı kapsamda değişken bulunur:
- Global: Tüm koleksiyonlar ve ortamlar için erişilebilir.
- Collection: Yalnızca belirli bir koleksiyon içindeki istekler için erişilebilir.
- Environment: Belirli bir ortam (örneğin "Geliştirme" veya "Test") için tanımlanır ve yalnızca o ortam aktifken erişilebilir.
- Data: Veri odaklı testler için harici CSV/JSON dosyalarından yüklenen değişkenler.
- Local: Yalnızca belirli bir isteğin ön-istek veya test betiğinde tanımlanan geçici değişkenler.
Ortamlar Nasıl Kullanılır? Ortamlar, bir grup değişkeni bir araya getirerek belirli bir test ortamını temsil etmenizi sağlar. Örneğin, "Geliştirme Ortamı" adında bir ortam oluşturup içine baseUrl, apiKey gibi değişkenler tanımlayabilirsiniz. Ardından, "Test Ortamı" adında başka bir ortam oluşturup aynı değişken adları için farklı değerler atayabilirsiniz.
Uygulama Örneği:
- Postman'ın sağ üst köşesindeki dişli simgesine tıklayarak "Manage Environments" (Ortamları Yönet) penceresini açın.
- "Add" (Ekle) butonuna tıklayın, ortama bir isim verin (örn: "Geliştirme Ortamı").
- Aşağıdaki değişkenleri ekleyin:
baseUrl:https://jsonplaceholder.typicode.comapiPrefix:/posts
- "Add" diyerek ortamı kaydedin.
Şimdi bir GET isteği oluşturun ve URL alanına {{baseUrl}}{{apiPrefix}}/1 yazın. URL'deki {{değişkenAdı}} sözdizimi, Postman'a o değişkenin değerini kullanmasını söyler. Sağ üst köşedeki ortam seçicisinden "Geliştirme Ortamı"nı seçtiğinizde, Postman otomatik olarak değişkenlerin değerlerini çekecek ve isteği doğru URL'e gönderecektir.
Bu yaklaşım, aynı koleksiyonu farklı ortamlar arasında kolayca geçiş yaparak kullanmanıza olanak tanır, bu da API testlerinizin sürdürülebilirliğini ve esnekliğini artırır.
İstek Zincirleme (Chaining Requests)
Gerçek dünya API'ları nadiren bağımsız çalışır. Genellikle, bir API isteğinin yanıtından alınan veriye başka bir API isteğinde ihtiyaç duyulur. Örneğin, bir kullanıcı oluşturduktan sonra (POST isteği), o kullanıcının ID'sini alıp başka bir API'da (GET veya PUT isteği) kullanıcının profiline erişmek veya güncellemek isteyebilirsiniz. Bu sürece istek zincirleme denir.
Uygulama Örneği:
Yeni bir post oluşturup, sonra o postu almaya çalışalım.
- Adım 1: POST İsteği - Yeni Bir Post Oluşturma
- Yeni bir POST isteği oluşturun: URL
{{baseUrl}}{{apiPrefix}} - Headers:
Content-Type: application/json - Body (raw, JSON):
{ "title": "Postman ile Zincirleme", "body": "Bu postman testleri için oluşturuldu.", "userId": 1 } - Bu isteğin "Tests" sekmesine aşağıdaki kodu ekleyin. Bu kod, başarılı bir yanıt alındığında yeni oluşturulan postun ID'sini bir ortam değişkenine (
newPostId) kaydeder.pm.test("Yeni post başarıyla oluşturuldu", function () { pm.response.to.have.status(201); }); const responseJson = pm.response.json(); pm.expect(responseJson).to.have.property('id'); // Oluşturulan postun ID'sini bir ortam değişkenine kaydet pm.environment.set("newPostId", responseJson.id); console.log("Oluşturulan Post ID:", pm.environment.get("newPostId")); - İsteği gönderin ve "Test Results" bölümünde testin geçtiğini doğrulayın. Ayrıca "Console" sekmesinde
newPostIddeğerini görmelisiniz.
- Yeni bir POST isteği oluşturun: URL
- Adım 2: GET İsteği - Oluşturulan Postu Alma
- Yeni bir GET isteği oluşturun: URL
{{baseUrl}}{{apiPrefix}}/{{newPostId}} - Bu isteğin "Tests" sekmesine aşağıdaki kodu ekleyin. Bu kod, önceki isteğin oluşturduğu ID ile doğru postun alındığını doğrular.
pm.test("Oluşturulan post başarıyla alındı", function () { pm.response.to.have.status(200); }); const responseJson = pm.response.json(); const expectedId = pm.environment.get("newPostId"); pm.expect(responseJson.id).to.eql(expectedId); pm.expect(responseJson.title).to.eql("Postman ile Zincirleme"); - İsteği gönderin. Artık, önceki POST isteğinden alınan
newPostIddeğişkeni kullanılarak doğru postun çağrıldığını ve testin başarılı olduğunu göreceksiniz.
- Yeni bir GET isteği oluşturun: URL
Uzman İpucu: Hassas verileri (API anahtarları, şifreler) ortam değişkenlerinde saklarken, "SECRET" türünü kullanmayı unutmayın. Bu, değişkenin değerini Postman Cloud'a senkronize edilmeden önce karartır ve güvenliği artırır.
Bu teknik, kullanıcı oturumu oluşturma, JWT (JSON Web Token) alma ve sonraki tüm isteklere bu tokenı ekleme gibi yaygın kimlik doğrulama senaryolarında da yaygın olarak kullanılır. Pre-request betikleri (bir istek gönderilmeden hemen önce çalışan betikler) bu tür senaryolarda tokenları dinamik olarak ayarlamak için idealdir.
Değişkenler, ortamlar ve istek zincirleme, Postman ile API testlerinizi daha dinamik, yönetilebilir ve gerçekçi hale getiren temel araçlardır. Bu özellikler, karmaşık API iş akışlarını otomatikleştirmenizi ve testlerinizin güvenilirliğini artırmanızı sağlar.
Veri Odaklı Test (Data-Driven Testing) ve Koleksiyon Çalıştırıcısı (Collection Runner)
Bir API'ın farklı giriş değerleriyle nasıl davrandığını test etmek, geliştirme sürecinin kritik bir parçasıdır. Örneğin, bir kullanıcı kayıt API'sını geçerli e-postalar, geçersiz e-postalar, mevcut kullanıcı adları ve boş alanlarla test etmek isteyebilirsiniz. Her senaryo için ayrı bir istek oluşturmak yerine, Postman'ın veri odaklı test (Data-Driven Testing) özelliği ve Koleksiyon Çalıştırıcısı (Collection Runner) ile bu süreci kolayca otomatize edebilirsiniz.
Veri Odaklı Test (Data-Driven Testing) Nedir?
Veri odaklı test, aynı test senaryosunu farklı veri setleriyle birden çok kez çalıştırma yeteneğidir. Bu, test kapsamını artırır ve farklı girdi kombinasyonlarının API üzerindeki etkisini değerlendirmenize yardımcı olur. Postman, harici CSV (Comma Separated Values) veya JSON dosyalarından veri yükleyerek bu tür testleri destekler.
Uygulama Örneği: Çoklu Kullanıcı Oluşturma Testi
Bir API'ya birden fazla kullanıcı gönderme senaryosu üzerinden veri odaklı testi uygulayalım. JSONPlaceholder'da yeni kullanıcı oluşturmak için bir endpoint olmasa da, varsayımsal olarak bir /users endpoint'ine POST isteği gönderdiğimizi düşünebiliriz.
1. Veri Dosyası Hazırlama (CSV veya JSON)
Öncelikle test verilerimizi içeren bir dosya oluşturalım. "users.csv" adında bir dosya oluşturun ve içine aşağıdaki içeriği ekleyin:
username,email,password
testuser1,test1@example.com,pass123
testuser2,test2@example.com,pass456
invalidemail,invalid-email,invalidpass
emptyuser,,
Veya "users.json" adında bir JSON dosyası oluşturabilirsiniz:
[
{
"username": "testuser1",
"email": "test1@example.com",
"password": "pass123"
},
{
"username": "testuser2",
"email": "test2@example.com",
"password": "pass456"
},
{
"username": "invalidemail",
"email": "invalid-email",
"password": "invalidpass"
},
{
"username": "emptyuser",
"email": "",
"password": ""
}
]
2. POST İsteğini Oluşturma
- Yeni bir POST isteği oluşturun.
- URL:
{{baseUrl}}/users(bu bizim varsayımsal kullanıcı oluşturma API'mız). - Headers:
Content-Type: application/json - Body (raw, JSON): Veri dosyasındaki sütun adlarını/anahtarlarını kullanarak değişkenleri tanımlayın.
{ "username": "{{username}}", "email": "{{email}}", "password": "{{password}}" }Postman, her iterasyonda veri dosyasındaki ilgili satırdan
username,emailvepassworddeğerlerini alacaktır. - Tests sekmesine aşağıdaki test betiklerini ekleyin:
// Her başarılı kullanıcı oluşturma için durum kodu 201 olmalı pm.test("Kullanıcı oluşturma başarılı olmalı", function () { // Sadece geçerli kullanıcılar için 201 bekliyoruz if (pm.iterationData.get("email").includes("@")) { // Veri dosyasındaki "email" alanını kontrol ediyoruz pm.response.to.have.status(201); } else { // Geçersiz e-postalar için 400 Bad Request veya başka bir hata kodu bekleyebiliriz // Bu kısım API'ınızın davranışına göre değişir pm.expect(pm.response.status).to.be.oneOf([400, 422, 500]); // Örnek olarak } }); pm.test("Dönen yanıtta kullanıcı adı doğru olmalı", function () { if (pm.response.code === 201) { const responseJson = pm.response.json(); pm.expect(responseJson.username).to.eql(pm.iterationData.get("username")); } }); pm.test("Email formatı geçerliyse, yanıtta email doğru olmalı", function () { if (pm.response.code === 201) { const responseJson = pm.response.json(); pm.expect(responseJson.email).to.eql(pm.iterationData.get("email")); } });Yukarıdaki test betiği,
pm.iterationData.get("key")metodunu kullanarak veri dosyasındaki değerlere erişir ve her iterasyon için özel doğrulamalar yapar. Bu, testleri veriye duyarlı hale getirir. - Bu isteği bir koleksiyona kaydedin (örn: "Kullanıcı Yönetimi").
Koleksiyon Çalıştırıcısı (Collection Runner) ile Çalıştırma
Şimdi bu isteği farklı veri setleriyle çalıştırmak için Collection Runner'ı kullanalım:
- Postman'ın sol kenar çubuğunda koleksiyonunuza sağ tıklayın ve "Run Collection" (Koleksiyonu Çalıştır) seçeneğini seçin. Alternatif olarak, alt kısımdaki "Runner" sekmesine tıklayabilirsiniz.
- Koleksiyon Çalıştırıcısı penceresi açıldığında, koleksiyonunuzu ve içinde bulunan isteği göreceksiniz.
- "Functional" sekmesini seçin.
- Sağ alt kısımda "Run Configuration" altında "Data" (Veri) düğmesine tıklayın.
- Hazırladığınız "users.csv" veya "users.json" dosyasını seçin. Postman, dosyadaki iterasyon sayısını (satır sayısı) otomatik olarak algılayacaktır.
- "Run 'Kullanıcı Yönetimi'" (veya koleksiyonunuzun adı) butonuna tıklayın.
Collection Runner, isteğinizi veri dosyasındaki her satır için bir kez çalıştıracak ve her iterasyonun test sonuçlarını gösterecektir. Bu sayede, farklı kullanıcı senaryolarının (başarılı oluşturma, geçersiz e-posta vb.) API'ınızı nasıl etkilediğini tek bir çalıştırma ile görebilirsiniz. Test sonuçları her bir çalıştırma için özetlenir ve hangi iterasyonun başarılı olup olmadığını kolayca takip edebilirsiniz.
Uzman İpucu: Büyük veri setleriyle çalışırken, veri dosyanızın boyutunu optimize edin ve sadece test için gerekli olan alanları ekleyin. Ayrıca, performans sorunları yaşamamak için çok fazla iterasyon çalıştırmaktan kaçının ve gerekiyorsa veriyi daha küçük dosyalara bölün.
Veri odaklı test, API'larınızın farklı senaryolar altında sağlamlığını ve doğruluğunu sağlamak için paha biçilmez bir tekniktir. Postman'ın Koleksiyon Çalıştırıcısı ile bu süreci kolayca otomatize edebilir ve geliştirme döngünüzü hızlandırabilirsiniz.
Otomasyon ve Sürekli Entegrasyon (CI/CD) için Newman Kullanımı
Postman'ın gücü sadece görsel arayüzde (GUI) manuel testler yapmakla sınırlı değildir. Gerçek bir API test framework'ü, testlerin otomatikleştirilmesini ve yazılım geliştirme yaşam döngüsüne (SDLC) sorunsuz bir şekilde entegre edilmesini sağlamalıdır. İşte burada Newman devreye girer. Newman, Postman koleksiyonlarını komut satırından çalıştırmanıza olanak tanıyan bir CLI (Command Line Interface) koleksiyon çalıştırıcısıdır.
Newman Nedir ve Neden Kullanılır?
Newman, Node.js tabanlı, açık kaynaklı bir araçtır. Postman koleksiyonlarınızı ve ortamlarınızı CLI üzerinden çalıştırmak için tasarlanmıştır. Bu, aşağıdaki nedenlerle son derece önemlidir:
- Otomasyon: Testleri manuel olarak çalıştırma ihtiyacını ortadan kaldırır.
- CI/CD Entegrasyonu: Jenkins, GitLab CI, GitHub Actions, Azure DevOps gibi sürekli entegrasyon/sürekli dağıtım (CI/CD) sistemlerine kolayca entegre edilebilir. Bu sayede her kod değişikliğinde API testleri otomatik olarak çalıştırılabilir.
- Programatik Çalıştırma: Zamanlanmış görevler veya diğer betikler aracılığıyla testleri belirli aralıklarla çalıştırma esnekliği sağlar.
- Raporlama: Farklı formatlarda (HTML, JSON, JUnit XML vb.) test raporları oluşturabilir, bu da test sonuçlarını analiz etmeyi ve paylaşmayı kolaylaştırır.
Newman Kurulumu ve Kullanımı
Newman'ı kullanabilmek için öncelikle Node.js'in sisteminizde kurulu olması gerekir. Kurulumdan sonra terminal veya komut istemcisini açarak Newman'ı global olarak kurabilirsiniz:
npm install -g newman
Kurulumdan sonra, Postman koleksiyonunuzu dışa aktarmanız gerekir. Postman uygulamasında, çalıştırmak istediğiniz koleksiyona sağ tıklayın ve "Export" (Dışa Aktar) seçeneğini seçin. Koleksiyonu bir JSON dosyası olarak kaydedin (örn: my_api_tests.json).
Eğer ortam değişkenleri kullanıyorsanız, aktif ortamınızı da JSON dosyası olarak dışa aktarmanız gerekecektir (Ortamlar listesinde dişli simgesine tıklayın, ortamınızı seçin, "Export" butonuna tıklayın, örn: dev_environment.json).
Şimdi koleksiyonu Newman ile çalıştırmak için terminalde aşağıdaki komutu kullanabilirsiniz:
newman run my_api_tests.json -e dev_environment.json
newman run: Newman'ı çalıştırmak için komut.my_api_tests.json: Dışa aktardığınız koleksiyon dosyası.-e dev_environment.json: (İsteğe bağlı) Dışa aktardığınız ortam değişkenleri dosyası.
Newman, testleri çalıştıracak ve terminale özet bir rapor yazdıracaktır. Testlerin kaçının geçtiğini, kaçının başarısız olduğunu ve genel çalıştırma süresini gösteren bir çıktı alacaksınız.
CI/CD Entegrasyonu için Raporlama
CI/CD sistemleri genellikle test sonuçlarını belirli bir formatta (örneğin JUnit XML) bekler. Newman, bu tür raporları kolayca oluşturabilir:
newman run my_api_tests.json -e dev_environment.json --reporters cli,junit --reporter-junit-export test_results.xml
--reporters cli,junit: Hem CLI çıktısını hem de JUnit formatında raporu oluşturmasını sağlar.--reporter-junit-export test_results.xml: JUnit raporunutest_results.xmldosyasına kaydeder.
Bu test_results.xml dosyasını daha sonra Jenkins gibi bir CI aracı tarafından okunabilir ve test sonuçları CI/CD panelinde görüntülenebilir hale gelir. Bu, her bir build veya dağıtım aşamasında API'larınızın kalitesini otomatik olarak doğrulamanın temel yoludur.
Uzman İpucu: Newman'ın HTML raporlama özelliği, test sonuçlarını görsel olarak daha çekici bir şekilde sunar. Örneğin, --reporters cli,htmlextra --reporter-htmlextra-export report.html komutuyla etkileşimli bir HTML raporu oluşturabilirsiniz. Bu, özellikle test sonuçlarını ekip içinde paylaşmak için kullanışlıdır.
Responsive Örnek
Responsive Başlık
Bu metin, ekran boyutuna göre kendini ayarlayacaktır.
Yukarıdaki örnekte gösterildiği gibi, @media kuralları ve viewport meta etiketi, web sayfalarının farklı cihazlarda düzgün görüntülenmesini sağlar. Newman ile oluşturulan test raporları genellikle statik HTML dosyaları olduğu için, bu raporları görüntüleyen sistemin mobil uyumluluğu için bu tür CSS teknikleri uygulanabilir. Bu, test sonuçlarının her cihazdan rahatlıkla incelenebilmesini garanti eder.
Newman, Postman'ın yeteneklerini bir adım öteye taşıyarak, API testlerinizi geliştirme ve dağıtım süreçlerinizin ayrılmaz bir parçası haline getirmenizi sağlar. Bu otomasyon, daha hızlı geri bildirim döngüleri, daha yüksek kalite güvencesi ve sonuç olarak daha sağlam yazılım ürünleri anlamına gelir.
İleri Düzey Postman Test Teknikleri ve En İyi Uygulamalar
Postman'ın temel ve orta seviye özelliklerini anladıktan sonra, API testlerinizi bir sonraki seviyeye taşıyacak ileri düzey tekniklere ve en iyi uygulamalara odaklanabiliriz. Bu bölümde, mock sunucular, performans ipuçları, test suite organizasyonu ve hata yönetimi gibi konuları ele alacağız.
Mock Sunucular ile Bağımsız Geliştirme ve Test
Bazen bir API'ı test etmek veya entegre etmek istersiniz, ancak arka uç henüz tamamlanmamıştır ya da üçüncü taraf bir API'a erişim kısıtlıdır. Postman'ın Mock Sunucu özelliği, bu sorunu çözmek için harika bir yoldur. Bir mock sunucu, gerçek API'ın davranışını taklit ederek tanımlı istekler için önceden belirlenmiş yanıtlar döndürür. Bu, frontend geliştiricilerinin backend tamamlanmadan işlerine devam etmelerini, test uzmanlarının ise gerçek API'a bağımlı kalmadan test senaryolarını yazıp çalıştırmalarını sağlar.
Mock Sunucu Nasıl Oluşturulur?
- Postman'da sol kenar çubuğundan "Mocks" sekmesine gidin ve "Create New Mock" (Yeni Mock Oluştur) seçeneğine tıklayın.
- Mevcut bir koleksiyonu seçin veya yeni bir tane oluşturun. Mocklamak istediğiniz istekleri bu koleksiyona eklemeniz gerekir.
- Her bir istek için, istediğiniz HTTP metodunu (GET, POST vb.), yolu (path) ve yanıt gövdesini (JSON, XML vb.) tanımlayın. Ayrıca, yanıt durum kodunu (örn: 200 OK, 404 Not Found) ve gecikme süresini (response delay) de ayarlayabilirsiniz.
- Mock sunucunuz oluşturulduktan sonra size bir URL sağlayacaktır (örn:
https://your-mock-id.mock.pstmn.io). - Artık uygulamalarınızı veya testlerinizi bu mock URL'e yönlendirerek, gerçek API yerine sahte yanıtları alabilirsiniz.
Mock sunucular, özellikle bağımlılıkları yönetmek, paralel geliştirmeyi hızlandırmak ve dış API'ların kesintiye uğraması durumunda testlerinizi çalışır durumda tutmak için kritik öneme sahiptir.
Performans Test İpuçları ve En İyi Uygulamalar
Postman, doğrudan tam kapsamlı bir performans testi aracı olmasa da, basit yük testleri ve performans izleme için bazı ipuçları sunar:
- Manuel Yük Testi: Koleksiyon Çalıştırıcısı'nda iterasyon sayısını artırarak ve her bir iterasyon arasındaki gecikmeyi (delay) ayarlayarak basit bir yük testi simüle edebilirsiniz. Ancak bu, büyük ölçekli yük testleri için uygun değildir.
- Newman ile Daha İyi Kontrol: Newman, CLI olduğu için, döngüler ve gecikmeler ekleyerek daha kontrollü performans testleri yazılabilir. Örneğin, bir betik içinde Newman'ı art arda belirli aralıklarla çalıştırarak API'a yük bindirebilirsiniz.
- Yanıt Süresi İzleme: Her isteğin yanıt süresini Postman UI'da görebilirsiniz. Test betiklerinizde
pm.response.responseTimeözelliğini kullanarak yanıt süresini doğrulayabilir ve belirli bir eşiğin altında kalıp kalmadığını kontrol edebilirsiniz.pm.test("Yanıt süresi 200ms'den az olmalı", function () { pm.expect(pm.response.responseTime).to.be.below(200); }); - Uzman Performans Araçları: Daha kapsamlı performans testleri için JMeter, K6 veya Gatling gibi özel araçları kullanmanız önerilir. Postman testleriniz, bu araçlara entegre edilecek temel işlevsellik testleri olarak hizmet edebilir.
Test Suite Organizasyonu ve Sürdürülebilirlik
Büyüyen bir API test koleksiyonunu yönetmek, titiz bir organizasyon gerektirir:
- Koleksiyonlar ve Klasörler: API'larınızı ve ilgili isteklerinizi mantıksal olarak koleksiyonlar ve içindeki klasörlerle düzenleyin (örn: "Kullanıcı Yönetimi", "Ürünler", "Ödeme API'ı").
- Anlamlı İsimlendirme: İsteklerinize ve testlerinize açıklayıcı isimler verin (örn: "GET Tüm Kullanıcılar", "POST Yeni Kullanıcı Oluşturma - Başarılı Senaryo").
- Açıklamalar: Her istek, klasör ve koleksiyon için Postman'ın "Description" (Açıklama) alanını kullanarak amaçlarını, beklenen davranışları ve önemli notları belgeleyin. Bu, özellikle yeni ekip üyelerinin projeye adapte olmasını kolaylaştırır.
- Kod Yeniden Kullanımı: Pre-request script'lerde veya test betiklerinde sık kullanılan fonksiyonları global veya koleksiyon seviyesinde tanımlayın. Bu, DRY (Don't Repeat Yourself) prensibine uymanızı sağlar ve bakım kolaylığı sunar.
Hata Yakalama ve Loglama
Testleriniz başarısız olduğunda, hatanın nedenini hızlıca bulabilmek için etkili hata yakalama ve loglama stratejileri geliştirmek önemlidir:
- Konsol Logları: Postman Console'u (alt menüde "Console" düğmesi) etkin bir şekilde kullanın.
console.log(),console.warn(),console.error()metodlarıyla betiklerinizi çalıştırırken değişken değerlerini, yanıt gövdelerini ve diğer önemli bilgileri loglayabilirsiniz. Bu, özellikle karmaşık senaryolarda hata ayıklamak için paha biçilmezdir. - Duyarlı Hata Mesajları: Test betiklerinizdeki
pm.expect()çağrılarında, başarısız olduğunda anlamlı hata mesajları döndüren ikinci bir parametre kullanın:pm.expect(responseJson.id, "ID alanı yanıtta mevcut değil").to.have.property('id'); - Ön-istek Betiklerinde Hata Yakalama: Eğer bir ön-istek betiği başarısız olursa (örn: token alma), isteğin gönderilmesini durdurabilir ve konsola bir hata mesajı loglayabilirsiniz.
Bu ileri düzey teknikler ve en iyi uygulamalar, Postman ile API testlerinizin sadece çalışmasını değil, aynı zamanda güvenilir, sürdürülebilir ve yönetilebilir olmasını sağlar. Profesyonel API test stratejileri oluştururken bu prensipleri benimsemek, yazılım kalitenizi önemli ölçüde artıracaktır.
Sonuç: Postman ile API Testlerinde Ustalaşmak
Bu makale boyunca, API testlerinin modern yazılım geliştirmedeki kritik rolünü ve Postman'ın bu süreçteki vazgeçilmezliğini derinlemesine inceledik. Basit bir GET/POST isteği oluşturmaktan, veri odaklı testler yapmaya ve Newman ile CI/CD boru hatlarına entegrasyona kadar birçok konuyu ele aldık. Postman'ın sunduğu değişkenler, ortamlar, istek zincirleme ve mock sunucular gibi özellikler, karmaşık API senaryolarını kolayca yönetmenizi ve otomatize etmenizi sağlar.
API testleri, yazılımın kalitesini artırmak, hataları erken aşamada tespit etmek ve geliştirme süreçlerini hızlandırmak için hayati öneme sahiptir. Postman, sezgisel arayüzü, güçlü test betiği yetenekleri ve otomasyon araçlarıyla geliştiricilere ve test mühendislerine bu görevi yerine getirme konusunda eşsiz bir esneklik ve güç sunar. İster yeni başlayan biri olun ister deneyimli bir profesyonel, Postman'ın sunduğu imkanlarla API test süreçlerinizi optimize edebilir, daha güvenilir yazılımlar geliştirebilir ve iş akışlarınızı çok daha verimli hale getirebilirsiniz.
API testlerinde ustalaşmak, sadece teknik bilgi birikimi değil, aynı zamanda dikkatli planlama, detaylara özen gösterme ve sürekli öğrenme gerektirir. Postman'ı etkin bir şekilde kullanarak, API'larınızın her zaman beklenen şekilde çalıştığından emin olabilir ve yazılım ürünlerinizin kalitesini bir sonraki seviyeye taşıyabilirsiniz. Unutmayın, iyi test edilmiş bir API, stabil ve güvenilir bir uygulamanın temelidir.
Sıkça Sorulan Sorular (SSS)
-
Postman sadece REST API'ları için mi kullanılır?
Hayır, Postman öncelikle RESTful API'lar için popüler olsa da, SOAP, GraphQL gibi diğer API türlerini ve hatta WebSocket gibi protokolleri de destekler. Genişletilebilir yapısı sayesinde farklı API etkileşimlerini yönetmek mümkündür.
-
Postman ile performans testi yapabilir miyim?
Postman, basit yük ve stres testleri için kullanılabilir (örn: Collection Runner'da iterasyon ve gecikme ayarları ile). Ancak, büyük ölçekli ve detaylı performans analizleri için JMeter, k6 gibi özel performans test araçları daha uygundur. Postman daha çok fonksiyonel ve regresyon testleri için tasarlanmıştır.
-
API anahtarlarını veya şifreleri Postman'da güvenli bir şekilde nasıl saklayabilirim?
Hassas bilgileri ortam değişkenlerinde "SECRET" türünde saklayarak güvenliği artırabilirsiniz. Bu, değişken değerini Postman Cloud'a senkronize edilmeden önce karartır. Ayrıca, bu tür bilgileri doğrudan betiklerde tutmaktan kaçınmalı ve erişim izinlerini dikkatlice yönetmelisiniz.
-
Postman testlerimi CI/CD hattıma nasıl entegre edebilirim?
Postman testlerinizi CI/CD (Continuous Integration/Continuous Delivery) hattınıza Newman CLI aracını kullanarak entegre edebilirsiniz. Newman, Postman koleksiyonlarınızı komut satırından çalıştırır ve JUnit XML gibi popüler raporlama formatları oluşturabilir. Bu raporlar, Jenkins, GitLab CI, GitHub Actions gibi CI/CD araçları tarafından okunarak otomatik test sonuçları elde edilir.
-
Postman testleri için hangi programlama dilini bilmem gerekiyor?
Postman test betikleri, JavaScript tabanlıdır. Temel JavaScript bilgisi, değişkenleri kullanmak, yanıtları ayrıştırmak ve koşullu mantık oluşturmak için yeterlidir. Postman'ın sağladığı snippet'ler ve kapsamlı dökümantasyon, JavaScript bilginiz olmasa bile başlamanıza yardımcı olur.