Postman, HTTP istekleri göndermek ve bir API'nin nasıl davrandığını kontrol etmek için en yaygın kullanılan araçlardan biridir. Bir tarayıcı uzantısı olarak başladı ve hızlı bir GET isteğinden CI'da çalışan betik test paketlerine kadar her şeyi halleden tam özellikli bir masaüstü uygulamasına dönüştü. API'ler geliştiriyorsanız veya tüketiyorsanız, neredeyse kesinlikle onunla karşılaşacaksınız.
Bu kılavuz, Postman'de bir API'yi günlük olarak test etme sürecini adım adım anlatmaktadır. Bir istek gönderecek, yanıtı inceleyecek, Testler sekmesinde onaylamalar (assertions) yazacak, hazırlık (staging) ve üretim (production) ortamları arasında geçiş yapabilmek için ortamlar kuracak ve tüm bir koleksiyonu Collection Runner ile aynı anda çalıştıracaksınız. Örnekler herkese açık bir API kullanır, böylece öncelikle herhangi bir kurulum yapmadan takip edebilirsiniz.
Postman'i Kurun ve İlk İsteğinizi Gönderin
Postman'i resmi siteden indirin ve masaüstü uygulamasını yükleyin. Yerel çalışmalar için hesap olmadan kullanabilirsiniz, ancak oturum açmak koleksiyonlarınızı cihazlar arasında senkronize eder. Uygulamayı açın ve Yeni düğmesine tıklayın, ardından HTTP İsteği'ni seçin.
Bir istek minimum üç şeye ihtiyaç duyar: bir metod, bir URL ve bazen bir gövde (body). Metod açılır menüsünden GET'i seçin ve gerçek bir uç nokta girin. JSONPlaceholder hizmeti pratik yapmak için kullanışlıdır:
GET https://jsonplaceholder.typicode.com/users/1
Gönder'e tıklayın. Yanıt paneli gövde, durum kodu (200 OK), yanıt süresi ve boyutu ile dolar. JSON'u biçimlendirilmiş olarak veya sunucunun gönderdiği şekilde görmek için gövde görünümünü Pretty, Raw ve Preview arasında değiştirin.
Bir POST için metodu değiştirin, Gövde sekmesini açın, raw'ı seçin ve biçim açılır menüsünden JSON'u seçin. Şuna benzer bir yük yapıştırın:
{
"name": "Maria Chen",
"email": "maria.chen@example.com"
}
JSON gövde tipini seçtiğinizde Content-Type: application/json gibi başlıklar sizin için eklenir. Başlıklar sekmesi, API'nin ihtiyaç duyduğu Authorization başlığı gibi her şeyi eklemenize olanak tanır. Hangi yanıt kodlarını beklemeniz gerektiği konusunda yeniyseniz, REST API'lerinin kullanması gereken HTTP durum kodları hakkındaki kılavuz yararlı bir referanstır.
İstekleri Koleksiyonlar Halinde Düzenleyin
Tek bir istek, hızlı bir kontrol için yeterlidir. Gerçek test, birbirine ait birçok istek anlamına gelir: bir kullanıcı oluşturma, o kullanıcıyı getirme, güncelleme, silme. Postman bunları koleksiyonlar halinde gruplandırır.
Yan çubukta Koleksiyonlar'a tıklayın, ardından bir tane oluşturmak için + simgesine tıklayın. Adını "Kullanıcı API duman testleri" gibi somut bir şey koyun. Her isteği Ctrl/Cmd + S ile koleksiyona kaydedin ve ona net bir ad verin. Örneğin, kimlik doğrulama isteklerini kaynak isteklerinden ayırmak için bir koleksiyonun içine klasörler yerleştirebilirsiniz.
Koleksiyonlar aynı zamanda paylaştığınız birimlerdir. Birini bir JSON dosyası olarak dışa aktarın veya buluta senkronize ediyorsanız bir bağlantı paylaşın. Ekip arkadaşlarınız onu içe aktarır ve sizinle tamamen aynı isteklere sahip olurlar. Bu, diğer her şeyin temelidir, çünkü Collection Runner ve otomatik testler, ayrı ayrı istekler yerine koleksiyonlar üzerinde çalışır.
Bir koleksiyon, paylaşılan davranışları da taşıyabilir. Postman, betikleri sadece tek bir istekte değil, koleksiyon veya klasör düzeyinde eklemenize olanak tanır. Koleksiyondaki bir ön istek betiği, içindeki her istekten önce çalışır; bu, bir jetonu yenilemek veya bir zaman damgası eklemek için kullanışlıdır. Koleksiyon düzeyinde bir test betiği, her istekten sonra çalışır; bu, "yanıt süresi makul" gibi her yerde istediğiniz bir onaylama için pratiktir. Bunları bir kez tanımlamak, bireysel isteklerinizi kendilerine özgü olana odaklı tutar.
Testler Sekmesinde Test Yazın
Bir istek göndermek, size neyin geri döndüğünü söyler. Bir test, geri dönen şeyin doğru olup olmadığını her seferinde otomatik olarak size söyler. Postman, bir yanıt geldikten sonra isteğin Betikler alanında (eski sürümlerde Testler sekmesi olarak adlandırılıyordu) JavaScript çalıştırır.
Postman, onaylamalar yazmak için bir pm nesnesi sunar. Temel kalıp pm.test(name, callback) şeklindedir; burada bir beklenti başarısız olursa geri çağırma işlevi bir hata fırlatır. İşte sürekli kullanacağınız onaylamalar:
// Durum kodunu kontrol edin
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// Yanıt süresini kontrol edin
pm.test("Response is under 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
// JSON gövdesindeki bir alanı kontrol edin
pm.test("User has the expected email", function () {
const body = pm.response.json();
pm.expect(body.email).to.eql("maria.chen@example.com");
});
// Bir başlığı kontrol edin
pm.test("Content-Type is JSON", function () {
pm.expect(pm.response.headers.get("Content-Type"))
.to.include("application/json");
});
Onaylama sözdizimi Chai'dan gelir, bu nedenle pm.expect; .to.eql, .to.include, .to.be.above ve diğerlerini destekler. Gönder'e tıklayın ve sonuçlar Test Sonuçları sekmesinde görünür; her test yeşil veya kırmızı renkte olur.
Birkaç alışkanlık testleri kullanışlı kılar. Her pm.test bloğunu kontrol ettiği davranışa göre adlandırın, uç noktaya göre değil, böylece hata mesajı bir cümle gibi okunur. API'nin bir tüketicisini gerçekten bozacak şeyleri kontrol edin: durum kodu, gövdenin şekli ve bir istemcinin bağımlı olduğu alanlar. Sunucu tarafından oluşturulan bir zaman damgası gibi kontrol edemediğiniz değerler üzerinde onaylama yapmaktan kaçının, çünkü bunlar insanları kırmızıyı göz ardı etmeye alıştıran tutarsız hatalara neden olur. Postman ayrıca düzenleyicinin yanında, tıklayarak ekleyebileceğiniz hazır onaylamalarla dolu bir Kod Parçacıkları paneli sunar; bu, pm API'sini öğrenmenin en hızlı yoludur. Onaylama tasarımına daha derinlemesine bakmak isterseniz, API onaylamalarının nasıl iyi yazılacağına dair ayrıntılı açıklamaya bakın. Kontrolleri adlandırılmış senaryolara yapılandırma konusunda daha geniş bir fikir için, API test senaryosu örneği kılavuzunu bununla birlikte okumaya değerdir.
Ortamları ve Değişkenleri Kullanın
Her isteğe https://api.staging.example.com adresini sabit kodlamak, üretim ortamına işaret etmeniz gerektiğinde acı vericidir. Bunu Ortamlar çözer. Bir ortam, adlandırılmış bir değişken kümesidir.
Yan çubukta ortamlar simgesine tıklayın ve "Hazırlık" adında bir tane oluşturun. https://jsonplaceholder.typicode.com değerine sahip base_url adında bir değişken ekleyin. Farklı bir base_url ile "Üretim" adında ikinci bir ortam oluşturun. Şimdi isteklerinizde çift süslü parantez kullanarak değişkene başvurun:
GET {{base_url}}/users/1
Sağ üstteki açılır menüden etkin ortamı seçin ve {{base_url}} kullanan her istek onunla birlikte değişecektir.
Değişkenler ayrıca istekler arasında veri taşır. Bir oturum açma isteği, yanıtından bir jetonu yakalayabilir ve daha sonraki isteklerin kullanması için saklayabilir:
pm.test("Kimlik doğrulama jetonunu kaydet", function () {
const token = pm.response.json().token;
pm.environment.set("auth_token", token);
});
Daha sonraki herhangi bir istek, Authorization: Bearer {{auth_token}} gönderebilir. Bu zincirleme, bir kaynak oluşturma ve ardından varlığını doğrulama gibi duruma bağımlı akışları nasıl test ettiğinizdir.
Postman'in bilmeye değer iki ilgili değişken kapsamı vardır. Ortam değişkenleri seçili ortama aittir ve ortamları değiştirdiğinizde değişir. Koleksiyon değişkenleri, ortamdan bağımsız olarak bir koleksiyona aittir; bu, o API için sabit olan değerlere uygundur. Ayrıca her yerde geçerli olan küresel değişkenler ve yalnızca tek bir çalıştırma için var olan kısa ömürlü yerel değişkenler de vardır. Doğru kapsamı seçmek, bir değeri ait olduğu yerde tutar ve hedefleri değiştirdiğinizde sürprizleri önler.
Tüm Koleksiyonu Collection Runner ile Çalıştırın
Her istekte Gönder'e tıklamak çabucak eskimeye başlar. Collection Runner, bir koleksiyondaki her isteği sırayla yürütür, tüm testlerini çalıştırır ve size başarılı/başarısız bir özet sunar.
Bir koleksiyonu açın, Çalıştır düğmesine (veya üç noktalı menüye, ardından Koleksiyonu çalıştır'a) tıklayın. Çalıştırıcı, isteklerinizi sırayla gösterir. Ortamı seçin, kaç iterasyon çalıştırılacağını ayarlayın ve isteğe bağlı olarak bir veri dosyası ekleyin. Çalıştır'a tıklayın ve Postman her isteği yukarıdan aşağıya doğru ateşler, her isteğin testlerini yürütür.
Sonuçlar sayfası, her istekteki tüm onaylamaları, başarılı ve başarısız olanların toplamlarıyla birlikte listeler. Bu sizin regresyon kontrolünüzdür. Bir dağıtımdan sonra çalıştırın ve API'nin hala doğru çalışıp çalışmadığını saniyeler içinde anlarsınız. Çalıştırıcı ayrıca geçmiş çalıştırmaların bir geçmişini tutar, böylece bugünkü sonucu dünküyle karşılaştırabilir ve daha önce başarılı olan bir paketin ne zaman başarısız olmaya başladığını tespit edebilirsiniz.
Çalıştırıcıda sıra önemlidir. İstekler yukarıdan aşağıya doğru çalıştığı için, bir oturum açma isteğini önce koyarak bir auth_token doldurmasını sağlayabilir, ardından altındaki her isteğin bu jetonu kullanmasına izin verebilirsiniz. Aynı şey kurulum ve temizlik için de geçerlidir: başlangıçta bir kaynak oluşturun, ortada onu kullanın, sonunda silin. İyi sıralanmış bir koleksiyon, eksiksiz bir kullanıcı yolculuğunu etkili bir şekilde betikler.
Veri odaklı testler için, çalıştırıcıya bir CSV veya JSON dosyası ekleyin. Her satır bir iterasyon haline gelir ve sütunları {{username}} gibi değişkenler olarak referans alırsınız. Bu, bir isteğin onlarca girdi kombinasyonunu, isteği kopyalamadan test etmesini sağlar. Örneğin, bir oturum açma uç noktası, bir satır geçerli kimlik bilgisi ve birkaç satır hatalı kimlik bilgisi ile vurulabilir; her satır beklediği durum kodunu onaylar. CSV ve JSON ile veri odaklı API testi hakkındaki makale, bu kalıbı ayrıntılı olarak ele almaktadır. Aynı koleksiyonu GUI olmadan CI'da çalıştırmak için Postman, Newman ile Postman karşılaştırmasında açıklanan Newman komut satırı aracını sunar.
Postman'in Ağırlaştığı Noktalar ve Dikkate Alınması Gerekenler
Postman, keşifsel testler ve küçükten orta ölçekli test paketleri için mükemmeldir. Projeler büyüdükçe iki sürtünme noktası ortaya çıkar. Birincisi, onaylamalar JavaScript'te bulunur, bu nedenle görsel bir yaklaşımı tercih eden geliştirici olmayanlar ve QA çalışanları için bir öğrenme eğrisi vardır. İkincisi, Postman API tasarımını, testini, sahte işlemlerini (mocking) ve dokümantasyonunu ayrı yerlerde tutar, bu da test verilerinizin ve API sözleşmenizin birbirinden uzaklaşabileceği anlamına gelir.
Apidog, her iki sorunu da çözen hepsi bir arada bir API platformudur. Postman koleksiyonlarını doğrudan içe aktarır, bu nedenle geçiş yeniden yazma gerektirmez. Onaylamalar, kod olmadan görsel olarak oluşturulabilirken, ihtiyaç duyduğunuzda betiklere de izin verir. Tasarım, hata ayıklama, sahte işlemler, test ve dokümantasyon tek bir doğruluk kaynağını paylaştığı için testleriniz gerçek API spesifikasyonuyla uyumlu kalır. Seçenekleri değerlendiriyorsanız, API testi için Postman alternatifleri özeti, avantaj ve dezavantajları ortaya koymaktadır. Apidog'u indirebilir ve doğrudan karşılaştırmak için mevcut bir koleksiyonu içe aktarabilirsiniz.
Bunların hiçbiri Postman'i bırakmanız gerektiği anlamına gelmez. Özellikle hızlı kontroller ve ona zaten yatırım yapmış ekipler için sağlam bir seçim olmaya devam etmektedir. Önemli olan, her aracın nerede uygun olduğunu bilmektir.
Sıkça Sorulan Sorular
Postman'de API'leri test etmek için kod yazmam gerekiyor mu?
İstek göndermek ve yanıtları okumak için hayır. Otomatik onaylamalar için ise evet, en azından biraz. Postman'in Testler sekmesi JavaScript çalıştırır ve pm nesnesini kullanır. Kalıplar basittir ve Postman'in yerleşik kod parçacıkları panelinden kopyalayabilirsiniz, ancak yine de JavaScript'tir. Kodsuz, görsel bir onaylama oluşturucu istiyorsanız, Apidog gibi özel bir platform bunu halleder.
Bir Postman koleksiyonu ile bir ortam arasındaki fark nedir?
Bir koleksiyon, genellikle testleriyle birlikte gruplandırılmış bir istek kümesidir. Bir ortam ise base_url veya auth_token gibi adlandırılmış bir değişken kümesidir. Koleksiyonlar gönderdiğiniz şeyleri tutar. Ortamlar ise hazırlık, üretim ve yerel ortamlar arasında değişen değerleri tutar. Aynı istekleri farklı sunuculara karşı test etmek için tek bir koleksiyonu farklı ortamlara işaret edersiniz.
Postman testlerini CI'da otomatik olarak nasıl çalıştırırım?
Postman'in komut satırı çalıştırıcısı Newman'ı kullanın. Koleksiyonunuzu ve ortamınızı dışa aktarın, ardından newman run collection.json -e environment.json komutunu çalıştırın. Herhangi bir test başarısız olursa Newman sıfır olmayan bir kodla çıkar, ki CI hattınızın kontrol ettiği budur. CI/CD'de API testlerini otomatikleştirme kılavuzu, bunu bir işlem hattına nasıl entegre edeceğinizi adım adım açıklar.
Postman, REST API'lerinden fazlasını test edebilir mi?
Evet. Modern Postman, düz HTTP ve REST'in yanı sıra GraphQL, gRPC, WebSocket ve SOAP isteklerini de destekler. Testler sekmesi ve onaylamalar bunların çoğunda çalışır, ancak tam istek kurulumu protokole göre farklılık gösterir.
Bir istekte kaç onaylama (assertion) olmalı?
Yanıtın doğru olduğunu doğrulamaya yetecek kadar olmalı, ancak tek bir değişikliğin onlarca testi bozacağı kadar çok olmamalıdır. Yaygın bir başlangıç noktası durum kodu, yanıt süresi ve o uç nokta için önemli olan iki veya üç alandır. Her pm.test bloğunu tek bir beklentiye odaklanmış tutun, böylece bir hata size tam olarak neyin bozulduğunu söyler.
