DEV Community

Cover image for Insomnia ile API Testi Nasıl Yapılır
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Insomnia ile API Testi Nasıl Yapılır

Insomnia, Kong tarafından geliştirilen hafif bir API istemcisidir. HTTP, REST, GraphQL, gRPC, SOAP ve WebSocket isteklerini tek arayüzden göndermenizi, yanıtları incelemenizi ve test paketleriyle doğrulama yapmanızı sağlar. Bu rehberde Insomnia ile bir API isteği oluşturacak, ortam değişkenleri kullanacak, assertion yazacak ve testleri komut satırından çalıştıracaksınız.

Apidog'u bugün deneyin

Insomnia'yı kurun ve ilk isteği oluşturun

Insomnia'yı resmi Kong sitesinden indirin ve işletim sisteminize kurun. İlk açılışta oturum açmanız istenebilir. Bulut senkronizasyonu kullanmak istemiyorsanız yerel çalışma seçeneğini tercih edebilirsiniz.

Insomnia'da çalışmalar genellikle koleksiyonlar altında düzenlenir.

  1. Ana ekranda Create / Oluştur seçeneğine tıklayın.
  2. Request Collection / İstek Koleksiyonu oluşturun.
  3. Koleksiyona örneğin Kullanıcı API testleri adını verin.
  4. Koleksiyon içinde + düğmesine tıklayın.
  5. HTTP Request / HTTP İsteği seçin.

İlk test için GET metodunu kullanın:

GET https://jsonplaceholder.typicode.com/users/1
Enter fullscreen mode Exit fullscreen mode

Send / Gönder düğmesine tıkladığınızda Insomnia sağ panelde şunları gösterir:

  • Yanıt gövdesi
  • HTTP durum kodu
  • Yanıt süresi
  • Yanıt boyutu
  • JSON biçimlendirilmiş çıktı

JSON yanıt büyükse JSONPath veya XPath filtreleriyle sadece ihtiyacınız olan alanları görüntüleyebilirsiniz.

Metot, parametre, gövde ve kimlik doğrulama ayarlayın

Basit GET isteklerinden sonra genellikle gövde, header, query parametresi veya auth bilgisi eklemeniz gerekir. Insomnia bu ayarları URL alanının altındaki sekmelerde toplar.

JSON gövdeyle POST isteği gönderin

Yeni bir istek oluşturun ve metodu POST yapın. Body / Gövde sekmesinde JSON seçin:

{
  "name": "Daniel Okafor",
  "email": "daniel.okafor@example.com"
}
Enter fullscreen mode Exit fullscreen mode

JSON gövde seçtiğinizde Insomnia genellikle Content-Type: application/json başlığını otomatik ekler.

Query parametreleri ekleyin

URL'yi elle uzatmak yerine Query sekmesini kullanın.

Örneğin şu URL yerine:

GET https://api.example.com/users?page=1&limit=20&active=true
Enter fullscreen mode Exit fullscreen mode

parametreleri tablo halinde ekleyebilirsiniz:

Parametre Değer
page 1
limit 20
active true

Bu yöntem uzun URL'leri okunabilir tutar ve parametreleri tek tek etkinleştirip devre dışı bırakmanızı sağlar.

Header ekleyin

Headers / Başlıklar sekmesinde API'nizin beklediği özel başlıkları tanımlayın:

Accept: application/json
X-Request-Id: test-123
Enter fullscreen mode Exit fullscreen mode

Hangi durum kodlarını beklemeniz gerektiğinden emin değilseniz, REST API'lerinin kullanması gereken HTTP durum kodları referansı yardımcı olabilir.

Bearer Token ile kimlik doğrulama yapın

Auth / Kimlik Doğrulama sekmesinde API'nizin kullandığı yöntemi seçin. Insomnia şu şemaları destekler:

  • Bearer Token
  • Basic Auth
  • API Key
  • OAuth 1.0 / 2.0
  • AWS IAM
  • Diğer yaygın auth türleri

Bearer token kullanan bir API için:

  1. Auth sekmesini açın.
  2. Bearer Token seçin.
  3. Token değerini girin.

Ancak token'ı doğrudan isteğe yazmak yerine ortam değişkeni kullanmak daha güvenlidir.

Ortamları ve değişkenleri kullanın

Ortamlar, aynı koleksiyonu farklı hedeflerde çalıştırmanızı sağlar. Örneğin dev, staging ve production için ayrı base URL veya token değerleri kullanabilirsiniz.

Yan çubuğun üst kısmındaki ortam menüsünden Manage Environments / Ortamları Yönet bölümünü açın.

Temel bir ortam şu şekilde olabilir:

{
  "base_url": "https://jsonplaceholder.typicode.com",
  "auth_token": "your-token-here"
}
Enter fullscreen mode Exit fullscreen mode

İstek URL'sinde değişkeni şu sözdizimiyle kullanın:

GET {{ _.base_url }}/users/1
Enter fullscreen mode Exit fullscreen mode

Authorization header içinde token değişkeni kullanmak için:

Authorization: Bearer {{ _.auth_token }}
Enter fullscreen mode Exit fullscreen mode

Aktif ortamı değiştirdiğinizde bu değişkenleri kullanan tüm istekler otomatik olarak yeni değerlere göre çalışır.

İstekleri şablon etiketleriyle zincirleyin

Insomnia, alanlara dinamik değerler eklemek için template tags / şablon etiketleri destekler. Bunlarla şunları üretebilir veya alabilirsiniz:

  • UUID
  • Timestamp
  • Ortam değişkeni
  • Önceki bir isteğin yanıtından değer

Örneğin login isteğiniz şu yanıtı dönüyorsa:

{
  "token": "abc.def.ghi"
}
Enter fullscreen mode Exit fullscreen mode

korumalı isteklerde bu token'ı elle kopyalamak yerine yanıt şablon etiketiyle $.token JSONPath değerini çekebilirsiniz.

Kullanım mantığı:

  1. Login isteğini oluşturun.
  2. Yanıttaki token alanını JSONPath ile hedefleyin: $.token
  3. Korumalı isteklerde Authorization başlığına bu değeri bağlayın.
  4. Insomnia gerekirse login isteğini çalıştırır, token'ı alır ve sonraki istekte kullanır.

Bu yaklaşım, test zincirini betik yazmadan yönetmenizi sağlar. Test senaryolarını gruplama fikri için API test durumu örneği rehberine de bakabilirsiniz.

Assertion içeren test paketleri yazın

İstek göndermek yanıtı görmenizi sağlar; ancak yanıtın doğru olup olmadığını otomatik kontrol etmek için test paketleri kullanmanız gerekir. Insomnia'da bu bölüm bazı sürümlerde Tests veya Unit Tests olarak görünür.

Bir test paketi oluşturmak için:

  1. Koleksiyonunuzu açın.
  2. Tests / Testler görünümüne geçin.
  3. Yeni bir test paketi oluşturun.
  4. Pakete testler ekleyin.
  5. Her testi koleksiyondaki ilgili isteğe bağlayın.

Insomnia testleri JavaScript ile yazılır ve Chai tarzı expect assertion kullanır.

Basit durum kodu testi:

const response = await insomnia.send();

expect(response.status).to.equal(200);
Enter fullscreen mode Exit fullscreen mode

Yanıt gövdesini kontrol eden daha kapsamlı bir test:

const response = await insomnia.send();
const body = JSON.parse(response.data);

expect(response.status).to.equal(200);
expect(body).to.have.property("id");
expect(body.email).to.equal("daniel.okafor@example.com");
Enter fullscreen mode Exit fullscreen mode

Header kontrolü örneği:

const response = await insomnia.send();

expect(response.headers["content-type"]).to.include("application/json");
Enter fullscreen mode Exit fullscreen mode

Hata senaryosu testi:

const response = await insomnia.send();

expect(response.status).to.equal(404);
Enter fullscreen mode Exit fullscreen mode

Testleri çalıştırmak için Run Tests / Testleri Çalıştır düğmesine basın. Insomnia her testin geçip geçmediğini ve ne kadar sürdüğünü gösterir.

Test paketlerini düzenli tutun

Test sayısı arttıkça paket yapısı önem kazanır. Uygulanabilir bir düzen şu şekildedir:

User API tests
├── Kullanıcı detayını getirir
├── Olmayan kullanıcı için 404 döner
├── Geçersiz email için doğrulama hatası döner

Article API tests
├── Makale listesini getirir
├── Makale oluşturur
├── Yetkisiz istekte 401 döner
Enter fullscreen mode Exit fullscreen mode

Her test tek davranışı doğrulamalıdır. Böylece bir test başarısız olduğunda test adından neyin bozulduğunu anlayabilirsiniz.

İyi assertion yazma konusunda daha fazla örnek için API onaylamaları rehberine, paketleri büyüdükçe yapılandırmak için ise API test otomasyonu için test paketleri makalesine bakabilirsiniz.

Inso ile testleri komut satırından çalıştırın

GUI geliştirme sırasında kullanışlıdır; ancak CI/CD için testleri başsız şekilde çalıştırmanız gerekir. Insomnia bunun için Inso adlı komut satırı aracını sağlar.

Koleksiyonunuzu dışa aktardıktan veya senkronize ettikten sonra test paketini terminalden çalıştırabilirsiniz:

inso run test "User API tests"
Enter fullscreen mode Exit fullscreen mode

Bir test başarısız olursa Inso sıfır olmayan exit code döndürür. Bu davranış CI sistemleri için idealdir çünkü derlemeyi otomatik olarak başarısız işaretleyebilirsiniz.

Basit bir CI akışı şu şekilde olabilir:

npm install -g inso
inso run test "User API tests"
Enter fullscreen mode Exit fullscreen mode

GitHub Actions veya benzer bir çalıştırıcıda bu komutu her push veya pull request için çalıştırabilirsiniz. Böylece bozuk bir endpoint üretime ulaşmadan yakalanır.

Inso ayrıca API spesifikasyonlarını lint etmek ve test raporları üretmek için de kullanılabilir. Genel yaklaşım için CI/CD'de API testlerini otomatikleştirmek yazısındaki kalıp Insomnia testlerine de uygulanabilir.

Insomnia 8'deki bulut değişikliği ve alternatif yaklaşım

Insomnia 8 ile ürün, bulut öncelikli bir modele doğru ilerledi. Varsayılan akış kullanıcıları Kong hesabı oluşturmaya ve projeleri bulutta saklamaya yönlendirdi. Önceki sürümlerin yerel ve çevrimdışı çalışmaya daha yakın olması nedeniyle bu değişiklik topluluğun bir kısmında tepki oluşturdu.

Daha sonraki sürümlerde sadece yerel çalışma veya “Scratch Pad” gibi seçenekler daha belirgin hale getirildi. Yine de bazı ekipler, özellikle API verilerinin şirket dışına çıkmaması gereken ortamlarda alternatif araçları değerlendirmeye başladı.

Bu senaryo sizin için geçerliyse Apidog değerlendirilebilir. Apidog; API tasarımı, hata ayıklama, mock server, test ve dokümantasyonu tek platformda birleştirir. Insomnia dışa aktarımlarını içe aktarabildiği için mevcut koleksiyonları sıfırdan oluşturmanız gerekmez.

Apidog ayrıca JavaScript yazmadan görsel assertion oluşturmayı destekler; ihtiyaç duyduğunuzda komut dosyaları da kullanabilirsiniz. API spesifikasyonu, test verileri ve mock server aynı proje içinde tutulduğunda testlerin gerçek sözleşmeden kopması daha zor olur.

Denemek için Apidog'u indirebilir ve mevcut bir Insomnia koleksiyonunu içe aktararak yan yana karşılaştırabilirsiniz. Daha fazla seçenek için ücretsiz çevrimiçi API test araçları listesine de bakabilirsiniz.

Insomnia hâlâ sade arayüzü, hızlı başlangıcı ve odaklı istemci deneyimiyle tek geliştiriciler ve küçük ekipler için güçlü bir seçenektir. Doğru araç seçimi, ekibinizin API yaşam döngüsünün ne kadarını tek yerde yönetmek istediğine bağlıdır.

Sıkça sorulan sorular

Insomnia ücretsiz mi?

Evet. Insomnia'nın bireysel kullanım için yeterli olan ücretsiz bir katmanı vardır. İstek gönderme ve test paketlerini yerel olarak çalıştırma gibi temel özellikleri kullanabilirsiniz. Ücretli planlar daha çok ekip işbirliği ve bulut senkronizasyon limitleriyle ilgilidir.

Insomnia hangi protokolleri destekler?

Insomnia HTTP, REST, GraphQL, gRPC, SOAP ve WebSocket destekler. İstek yapılandırması protokole göre değişebilir; ancak yanıt inceleme ve HTTP tabanlı test akışları benzer şekilde çalışır.

Insomnia'da assertion nasıl yazılır?

Koleksiyonda Tests görünümünü açın, bir test paketi oluşturun ve JavaScript testleri ekleyin. Test içinde insomnia.send() ile isteği çalıştırın, ardından Chai tarzı expect ifadeleriyle durum kodunu, header'ları veya gövde alanlarını kontrol edin.

const response = await insomnia.send();
const body = JSON.parse(response.data);

expect(response.status).to.equal(200);
expect(body).to.have.property("id");
Enter fullscreen mode Exit fullscreen mode

Insomnia 8'de ne değişti?

Insomnia 8, bulut öncelikli bir varsayılan modele geçti ve kullanıcıları Kong hesabıyla oturum açmaya ve projeleri buluta senkronize etmeye yönlendirdi. Bu değişiklik, tamamen yerel çalışmayı tercih eden bazı kullanıcılar tarafından olumsuz karşılandı. Sonraki güncellemelerde yerel çalışma seçenekleri daha görünür hale getirildi.

Insomnia testlerini CI hattında çalıştırabilir miyim?

Evet. Inso komut satırı aracını kullanabilirsiniz. Koleksiyonunuzu dışa aktarın veya senkronize edin, ardından CI hattınızda şu komutu çalıştırın:

inso run test "<paket adı>"
Enter fullscreen mode Exit fullscreen mode

Testlerden biri başarısız olursa Inso sıfır olmayan exit code döndürür ve CI derlemesi otomatik olarak başarısız olabilir.

Top comments (0)