İçeriğe geç

Postman ile API Testlerinde Bilmeniz Gereken İpuçları

Geçenlerde bir arkadaşımla oturmuş sohbet ediyorduk, adamcağız API testleri konusunda bayağı bir zorlanıyordu. Anlattıkça fark ettim ki, aslında hepimizin zamanında geçtiği o temel hataları yapıyor. Hani böyle ilk defa bir şeye başlarsın ya, her şey birbirine girer, neyi nereye bağlayacağını bilemezsin… İşte onun durumu tam olarak öyleydi. Ben de dedim ki, kendi gençlik hatalarımdan ve tecrübelerimden yola çıkarak, bu Postman denen olayın API testlerinde nasıl daha verimli kullanılacağına dair birkaç şey karalayayım da, belki benim gibi zorlananlara bir nebze olsun ışık tutarız.

Şimdi öncelikle, Postman dediğimiz şey ne peki? En basit haliyle, bir API’ye istek göndermenizi ve gelen cevabı analiz etmenizi sağlayan bir araç. Yani bir nevi API’lerinizle konuşma dili gibi düşünebilirsiniz. Hani eskiden biz devre tasarlarken osiloskop falan kullanırdık ya, sinyaller doğru gidiyor mu diye bakmak için, işte Postman da API dünyasındaki o osiloskop gibi bir şey. Sadece daha kullanıcı dostu ve çok daha eğlenceli diyebiliriz 🙂 Tabi, eğer doğru kullanırsanız.

Neyse efendim, gelelim şu işin inceliklerine. Postman’ı sadece istek gönderip cevap almak için kullanmak, arabanın sadece gaz pedalını kullanmak gibi bir şey. Oysa gaz pedalı, fren, direksiyon, vites… Hepsi bir bütün ve ancak bir arada doğru kullanılırsa o araba istediğin yere gider. Postman’da da test scriptleri, environment’lar, collection’lar var ya, işte onlar o bütünün parçaları.

Mesela environment’lar. Bunlar benim en çok sevdiğim özelliklerinden biri sanırım. Düşünsene, bir test yapıyorsun, o testte kullandığın bazı değerler var. Diyelim ki bir kullanıcı adı, şifre ya da bir API anahtarı. Bunları her seferinde tek tek yazmak hem vakit kaybı hem de hata yapma olasılığını artırıyor. İşte environment’lar bu noktada devreye giriyor. Bir environment oluşturup, bu değişkenleri oraya tanımlıyorsun. Sonra testinde bu değişkenleri kullanıyorsun. Hem temiz kod yazıyorsun hem de farklı ortamlar için (development, staging, production gibi) kolayca geçiş yapabiliyorsun. Ne güzel değil mi? Hani bir projede çalışırken farklı veritabanlarına bağlanman gerekiyorsa, her seferinde connection string’i değiştirmek yerine, environment’ı değiştirirsin, hepsi bu kadar.

Bir de tabii test scriptleri var ki, onlar olayın olmazsa olmazı. Hani sadece bir istek gönderip cevabı görmek yetmez ya. Gelen cevabın doğru olup olmadığını da kontrol etmen lazım. İşte tam da bu noktada JavaScript tabanlı test scriptleri devreye giriyor. Gelen response’un status code’unu kontrol edebilirsin, gelen body’deki belirli bir alanın beklediğin değeri içerip içermediğini doğrulayabilirsin, hatta daha karmaşık kontroller bile yapabilirsin. İnanın ki, bu scriptleri doğru kullanmaya başladığınızda API testleriniz bambaşka bir boyuta taşınıyor.

Benim kendi programım sınıfta kaldı derken tam da bu scriptleri doğru kurgulayamamaktan kaynaklanıyordu sanırım. Hani böyle basit bir proxy programı yazmıştım ya, o programın API’sine istek atarken, gelen veriyi kontrol etmek istiyordum. Ama script kısmını pek kurcalamamıştım. Sonuç? Gelen verinin formatı değiştiğinde programım hata veriyordu ve ben bunu fark edemiyordum bile. Sonra bir baktım, API’den gelen cevap aslında doğru ama benim programım o cevabı yanlış yorumluyor. İşte o an anladım ki, sadece istek atıp almak yetmiyor, o isteğin sonucunu da doğrulamak lazım.

Şimdi mesela bir tane basit örnek yapalım. Bir kullanıcı oluşturan bir API’miz olsun. Bizim istediğimiz şey, kullanıcıyı başarıyla oluşturmak ve geri dönen cevabın içinde oluşturulan kullanıcının ID’sinin olması. Bunu Postman’da nasıl yaparız, bir bakalım.

Öncelikle environment’ımızı hazırlayalım. Diyelim ki API’mizin base URL’i `https://api.benimsite.com/v1` olsun. Bir de `apiKey` diye bir değişken tanımlayalım, değeri de `benimbilmemneanahtarim123` olsun. Bu değişkenleri environment’a ekledikten sonra, bir POST isteği oluşturalım. Body kısmına da yeni oluşturacağımız kullanıcının bilgilerini JSON formatında girelim.

Şimdi işin can alıcı noktasına geldik: Test scriptleri. Gelen cevabın doğru olup olmadığını kontrol edeceğiz. Öncelikle status kodunun 201 (Created) olup olmadığını kontrol edelim. Sonra da gelen response body’sinden user ID’yi çekip, bunun boş olmadığını doğrulayalım. Hani şöyle bir şey:

 // Yanlış Kullanım - Sadece Cevap Kontrolü pm.test("Status code is 201", function () {     pm.response.to.have.status(201); });

// Doğru Kullanım - ID Kontrolü ile Birlikte pm.test("User created successfully and has an ID", function () { pm.response.to.have.status(201); // Status code'un 201 olduğundan emin ol var jsonData = pm.response.json(); // Gelen cevabı JSON'a çevir pm.expect(jsonData.userId).to.not.be.null; // userId'nin null olmadığını kontrol et pm.expect(jsonData.userId).to.be.a('string'); // userId'nin string tipinde olduğunu kontrol et (veya number, neyse) });

Gördünüz mü? İlk örnek sadece status kodunu kontrol ediyor. Ama ikinci örnek, gelen JSON verisinin içindeki userId’nin hem boş olmadığını hem de doğru tipte olduğunu da kontrol ediyor. İşte bu kadar basit bir ekleme bile testlerinizin güvenirliğini inanılmaz artırıyor. Bu arada, bu scriptleri çalıştırmak için Postman’ın sağ tarafındaki Tests sekmesini kullanıyorsunuz, onu da belirtmeden geçmeyeyim.

Neticede, Postman sadece bir istek gönderme aracı değil. O, API’lerinizle sağlam bir iletişim kurmanızı sağlayan, hataları erken yakalamanıza yardımcı olan ve genel olarak geliştirme süreçlerinizi hızlandıran güçlü bir arkadaş. Bu environment’ları, test scriptlerini kullanmaya başladığınızda göreceksiniz ki, API testleri yapmak artık bir angarya olmaktan çıkıp, gerçekten keyifli bir hale geliyor. Tabii, ara sıra kendi yazdığınız kodun sınıfta kalmasına gülümseyerek bakmayı da öğrenirseniz 🙂

Benim zamanımda bu kadar kolay değildi aslında. Şimdiki araçlar çok daha gelişmiş. Ama ne yapalım işte, tecrübe dediğin böyle bir şey. Hata yapa yapa öğreniyorsun. Siz de mutlaka bu scriptleri deneyin. Zaten bir kere mantığını kavradığınızda, gerisi çorap söküğü gibi geliyor. Hani şöyle bir Google’da biraz aratsanız, bolca örnek bulabilirsiniz. Bu arada,}YouTube’da da çok güzel eğitim videoları var sanırım, bir göz atabilirsiniz.

Sonuç olarak, bu araçları etkin kullanmak, hem sizin işinizi kolaylaştırır hem de geliştirdiğiniz API’lerin kalitesini artırır. Yani hem size hem de kullanıcılara faydası olur. Hadi bakalım, kolay gelsin!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.