Postman ile Test Otomasyonu [2]-Newman CLI Kullanarak API Testi

Acihadugur
Dgpays Tech
Published in
6 min readMay 5, 2022

Postman, request ve collection’lara dinamik davranışlar eklemenizi sağlayan Node.js tabanlı güçlü bir çalışma ortamı sunmaktadır.

Serinin ikinci yazısında Postman ile backend API otomasyonunda Collection Runner, Postman Monitors, Newman entegrasyonu ve Html Reporter hakkında bilgiler vereceğim.

Postman Collection

İlk olarak Collection’ı tanımlamak gerekirse: bir ya da birden fazla isteği grup halinde klasörlemeye ve elzem durumlarda başkalarıyla paylaşmamızı sağlar.

Collection Runner

Oluşturulmuş test senaryolarının yürütülmesini ve sonuçlarının ayrıntılı bir şekilde gözlemlenebilmesini sağlayan postman uygulamasının bir fonksiyonudur.

Collection Runner

Postman otomasyonunu 2 şekilde yapabiliriz.

1. Postman Monitors

Postman uygulamasında oluşturulan çağrılar postman’in server’larında tutuluyor. Postman Monitors uygulaması ile server’da tutulan çağrıları istenilen aralıklarla koşulabilir. Koşum sonrasında monitors bu çağrıların raporlamasını sunar. Otomatize arayüz sürecini ilgili alanların açıklamalarıyla birlikte ve ekran görüntüleriyle anlatılacaktır.

Postman Monitors Kullanım Akışı
Postman Monitors
  1. Monitor Name: Aralıklı test koşum ismidir.
  2. Collection: Monitör edliecek collection seçimi.
  3. Environment: Test koşumu sırasında kullanılmak istenilen ortam seçimi.
  4. Test Koşum Sıklığı: Monitörün ne kadar sıklıkla koşulması ile ilgili seçim.
  5. Automatically Select Region: Postman, kullanılan bilgisayarın IP adresinden bölge belirlemesi yaparak time zone’u belirler.
  6. E-mail Notification: Alınan hatanın mail olarak gönderilmesi için kullanılır.
  7. Stop Notifications: Alınan hata sayısının örneğin; 3'ten fazla alınması durumunda hatanın mail olarak gönderilmesi engellenmek istenildiğinde seçim yapılır.
  8. Retry: Test başarısız olursa testi tekrardan koşulması istenildiğinde seçim yapılır.
  9. Set Request Timeout: Test koşumu belirlenen süreden daha uzun sürerse Postman test koşumunu durdurması için kullanılır.
  10. Set Delay: Postman, test senaryo koşumlarının arasında beklenilmesi istenilen zamanın belirlenmesi için kullanılır.
  11. Follow Redirect: Bazı çağrılarda Postman GUI farklı bir siteye yönlendirmek isteyebilir.
  12. Enable SSL Validation:Bazı arayüzler kullanıcıdan sertifikasyon isteyebilir. Bu isteği engellemek için kullanılır.

Gerekli alanlar doldurulduktan sonra Create Monitors butonuna basılır ve aşağıdaki ekran açılır.

Postman Monitors Test Results

Oluşturulan test koşulları belirlenmiş olan zaman sıklığında başlatılıp test sonuçları gözlemlenebilir. Test koşullarını manuel olarak başlatabilmek için ekranın sağ üst köşesinde bulunan Run butonuna basılır ve test koşullarının raporları gözlemlenebilir.

Postman monitors her zaman son kayıtlı versiyonunu kullanır. Örneğin; Bir request’te değişiklik yapıldığını varsayalım. Bu değişiklik kaydedilmeden monitors işlemi başlatılırsa Postman Monitors bu değişikliği kullanmaz. Otomatize arayüz süreci bu şekilde oluşturulur.

Postman Monitors’ün bazı kısıtlamaları vardır. Bunlar:

  • Test koşumları postman’in server’larında koşuyor olması. Arayüz test koşumlarını farklı server’larda yapılmak istendiğinde bu gerçekleştirilemez.
  • Global değişkenlerin kullanamıyor olunması.
  • Ayrıca postman’in ücretsiz versiyonunda aylık en fazla 1000 adet çağrı yapılabiliyor. 1000 adet üzerinde çağrı yapılmak istenildiğinde PRO paket gerekli. Enterprise fiyatı aylık Nisan 2022'de 99 dolar.

2. Newman

Newman, Postman collection’larımızı Collection Runner üzerinden değil doğrudan komut satırı üzerinden koşulmasını, raporlanmasını ve test edilmesini sağlayan bir Npm (Node Package Manager) teknolojisidir. Newman sayesinde postman yüklü olmayan herhangi bir cihazda test koşulmasına izin veren bir uygulamadır. CI(Continuous Integration) süreci için mutlaka kullanılması gereken bir uygulamadır.

Newman ile test koşumu 3 şekilde yapılabilir.

  1. Public link(Link paylaşımı): Collection’larda ya da request’lerde herhangi bir değişiklik yapılması durumunda, değişiklik yapılmasının ardından yeni bir link alınması gerekli. Bu işlem manuel bir şekilde yapıldığı için otomasyon sürecinde tercih edilen bir durum değildir.
Public Link Oluşturulması

Public link kopyalandıktan sonra command prompt açılır, aşağıdaki komut yazılır, enter’a basılır ve rapor oluşturulur.

newman run “Public Link”

Public Link ile Terminal Test Kouşumu

2. Dosya dışa aktarımı(Export): Public Link test koşumuna göre daha sık kullanılan bir yöntemdir. Bir collection’ın nasıl export edilebileceği aşağıdaki ekran görüntüsünden görülebilir.

Collection Export

İstenilen collection export edildikten sonra command prompt açılır, dosyanın local’deki konumuna gidilir, dosya ismi uzantısıyla birlikte kopyalanır, aşağıdaki komut yazılır, enter’a basılır ve rapor oluşturulur.

Collection Export Edilmesiyle Terminalde Test Koşum Raporu

3. Postman Api/Arayüzleri: Api otomasyon süreçlerinde en sık kullanılan yöntemdir.

https://github.com/postmanlabs/newman#using-newman-with-the-postman-api adresinde newman’ın postman api’leri ile nasıl kullanılacağı anlatılmıştır.

Postman üzerinde api key oluşturabilmek için postman.com sitesine gidilir ve siteye giriş yapılır. Giriş yapıldıktan sonra sağ üst köşede bulunan manage account’a tıklanır ve account settings’e erişilir. Açılan yeni ekranda api keys tab’ına tıklanır ve api key generate edilir. Bu key ile istenilen çağrılar gerçekleştirilir.

Manage Account
API Keys

Postman uygulamasında yeni bir collection ve bu collection altında yeni bir get çağrısı oluşturulur. Send işlemi sonrasında kullanıcının oluşturmuş olduğu tüm collection’ları api key ile görüntüleyebiliriz. Postman üzerinde çalışılırken tüm collection’ları/ tüm test çağrıları postman ile otomatik olarak senkronize ediliyor.

Postman GUI

Peki koşmak istenilen bir collection varsa bu durumda ne yapılır?

Local ortamda oluşturulan tüm collection’ların bir unique id’si vardır. Bu id’ler kullanılarak istenilen collection altındaki test çağrıları koşulabilir. Collection altındaki testlere body tab’ında ulaşılabilir ve bu testler json formatında listenelir.

Unique id

Collection altındaki testleri yukarıdaki endpoint kullanılarak postman yüklü olmayan fakat node.js, npm ve newman yüklü olan bir server’da çalıştırabiliriz.

Postman API’leri kulanılarak oluşturan linki command prompt’a

newman run “Link”

şeklinde yazılır ve enter’a basılır. Akabinde Newman, verilen link yardımıyla testlere erişebilir, koşabilir ve raporlayabiliriz.

Command Prompt Newman

Bu yöntemin avantajlı tarafı, testlerde yapılan herhangi bir değişiklik otomatik olarak Postman server’larına senkronize edilir ve testler ne zaman koşulursa koşulsun, koşulan testler son güncellenen versiyon üzerinden koşulur.

Dinamik olan bir değer, ortam değişkenleri kullanılarak statik hale getirilsin. Testler çalıştırıldığında ortam değişkenleri Newman’a tanımlanmadığı için hata alınacaktır.

Ortam Yötenimi

Current value, local’de statik değeri kullanabilmek için kullanılan alandır.

Initial value, yazılan değerleri postman server’larında senkronize edebilmek için kullanılan alandır.

Ortam Değişkenleri Newman’a Tanımlanmadan Önce

Alınan hataları engelleyebilmek için Newman’a ortam değişkenlerini tanımlamamız gerekli. Postman api’leri kullanılarak Newman’a bu ortam değişkenlerinin tanımlanması gereklidir.

Environment Endpoint

Arayüz kullanılarak postman collection için oluşturulan tüm environment değişkenlerine erişilebilir. Local ortamda oluşturulan tüm environment’ların bir unique id’si vardır. Bu id’ler kullanılarak istenilen environment altındaki değişkenlere erişilebilir.

Ortam Değişkenleri Newman’a Tanımlanmadan Sonra

Testleri, verilen linkteki ortam değişkenleri ile birlikte koşabilmek için endpoint ve command prompt’a

newman run “koşmak istenilen collection” — — environment “ortam değişkenleri için oluşturulan link”

yazılır. Test koşumu tanımlanan ortam değişkenleri ile birlikte raporlanır.

Newman Kurulumu

Windows

  • Node.js sayfasını açarak, windows için Node.js (Node.js for windows) uygulaması indirilir. Node.js sayfası: https://nodejs.org/en/download/
  • İndirilen uygulamayı çalıştırarak, gerekli yetkiler verilir ve yüklemeyi tamamlanır.
  • Yükleme sonrasında windows komut terminalini açarak : node -v komutu yazılır ve uygulamanın yüklendiğinden emin olunur. (Bu komut sonrası, node.js versiyonu gözükmeli.)
  • Kurulum sonrasında bilgisayar yeniden başlatılır.
  • Sonrasında , komut satırı üzerinden, npm install npm --global komutunu koşarak NPM i güncellenir.

MacOs

  • Homebrew kullanarak Node.Js ve NPM kurulumu:
  • Terminal üzerinde: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" komutunu çalıştırım.
  • Sonrasında: brew -v komutu ile, homebrew in yüklendiğinden emin olun.
  • brew install node komutu ile Node.js ve NPM kurulumunu tamamlayın.
  • Node -v ile node.js in kurulduğundan emin olunur. (versiyon kodu dönmeli)
  • NPM -v ile npm kurulduğundan emin olunur.
  • Homebrew kullanmadan kurulum:
  • https://nodejs.org/en/ sitesinden kurulun dosyası indirilir.
  • .dmg dosyasına tıklayarak kurulumu tamamlaanalır.
  • Terminal üzerinden node -v komutuyla kurulumun tamamlandığına emin olunur.

HTML Reporter

Newman ile komut satırından koşulan testleri HTML formatında rapor haline getirilmesine de olanak sağlamaktadır. HTML reporter özellikle Jenkins veya başka herhangi bir CI server kullanılırken çok elverişlidir. Fail olan testleri debug etmemizde bize yardım eder ve bize genel bir bakışla test sonuçlarını inceleme imkânı sunmaktadır.

npm install -g newman-reporter-htmlextra

Komut satırından yukardaki komutu çalıştırarak HTML reporter kurulumu tamamlanır.

newman run “koşmak istenilen collection” — — environment “ortam değişkenleri için oluşturulan link” -r htmlextra

Daha sonrasında istenilen dizinde html dosyası otomatik olarak oluşturulacaktır.

HTML Report

Serinin üçüncü ve son yazısında sürekli entegrasyonun ne olduğunu, Jenkins uygulamasını kullanarak oluşturulan test senaryolarının koşumunu Newman ile nasıl gerçekleştirebileceğimizden bahsediyor olacağım. 🙋🏽

Keep Testing…👩‍💻️

Contact Information: https://www.linkedin.com/in/acihadugur/

--

--

Acihadugur
Dgpays Tech

Software Development Engineer In Test #TestAutomation #QualityAssuranceAutomation #SeleniumWebDriver #Postman