Harici API testi nasıl yapılır (blackbox)


14

Bir satıcıdan API kullandığınızı varsayalım, API'lerinin beklendiği gibi çalıştığından nasıl emin olabilirsiniz?

Benim asıl endişem bazen satıcı değişiklikleri kodlarını itti ve API kırmak olduğunu, biz sürekli onları test etmek için bir tür otomatik yazılım istiyorum. Bununla nasıl başa çıkılır?


Dile bağlı olarak, yardımcı olabilecek araçlar olabilir (C # kütüphaneleri / API'ları için Pex düşünüyorum).
Steven Evers

Yanıtlar:


10

Kısa cevap: üçüncü taraf bir satıcı API'sı için bir test paketine ihtiyacınız var - bu yüzden bir tane geliştirmeniz gerekecek.

Kimsenin bunu sizin için yapmasını beklemeyin ve otomatik olarak doğru testleri oluşturmak için bir "sihirli mermi" beklemeyin.

Ek olarak deneyebileceğiniz bazı şeyler:

  • satıcıya her yeni sürüm için bir "değişiklik değişiklikleri" listesi sağlayıp sağlamadıklarını sorun
  • API uyumluluğunu nasıl önemsediklerini sorun / bunun sizin için önemli bir özellik olduğunu bildirin
  • API'nin kolayca test edilemeyen parçalar için özel test kancaları, loglama çıkışı veya benzeri bir şey sağlayıp sağlamadığını kontrol edin
  • önemli API çağrılarını kendi günlük kodunuzla sarın, giriş ve ilgili çıktısını bir günlük dosyasına yazın, bu beklenmedik bir şey olursa hata ayıklamayı kolaylaştırır
  • ön ve son koşulları kontrol etmek için API çağrılarına iddialar ekleyin; böylece, API'nın yeni bir sürümü uygulamanızda beklenmedik davranış gösterirse, bir hata mesajıyla erken bilgilendirilirsiniz

Bunların işe yarayıp yaramadığı, satıcınızın kim olduğuna ve ne tür bir API'ya sahip olduğunuza bağlıdır. Dosyalar gibi denetlenebilir çıktılar üreten bir API'yi test etmek, API çağrısının başarılı olup olmadığına karar vermek için nesnenin davranışını gözlemlemeniz gereken bazı fiziksel cihazları kontrol eden bir API'den daha kolaydır.


Tamamen katılıyorum, ama öyle görünüyor ki, soru soran kişinin test birimleriyle deneyimi yoktur ve onlarla çalışma şemasını bilmemektedir. Yani: kritik noktaları bulun, test birimleri yazın, tüm testleri çalıştırın, hata ayıklama, hata ayıklama sırasında yeni kritik noktalar bulun, yeni birimler yazın, her API değişikliğinden sonra son 4 adımı tekrarlayın.
Gangnus

@Gangnus: IMHO OP bize birim testlerle ilgili eski deneyimleri hakkında hiçbir şey söylemedi. Bununla ilgili sorunları varsa, eminim daha spesifik bir soru sormayı biliyordur. Ayrıca, buradaki konu "birim testleri" değil, "otomatik entegrasyon testleri" dir. Bunlar tipik olarak, örneğin TDD tarzında birim testinden farklı bir şema gerektirir.
Doc Brown

Evet, söylememişti. Ancak, test birimlerinden bahsetmeden "API'lerinin beklendiği gibi çalıştığından nasıl emin olunacağını" sorarsa, "bana öyle geliyor", onları bilmiyor. Otomatik entegrasyon testlerine gelince, onları daha yüksek olasılıkla bile bilmiyor, sadece "bir tür otomatik yazılımdan" bahsetti. İnsanlardan sizinkilerle aynı bilgileri bekliyorsunuz, ancak bu temalarda (ben dahil) programcıların% 99'u çok daha az şey biliyor. ve% 90'ı çok daha az.
Gangnus

0

Posterin ifadelerine dayanarak, sadece test etmekten daha fazlası, IMO. API için birim testinizi yazdıktan ve her şeyin beklendiği gibi çalıştığından emin olduktan sonra, kullanıcılardan önce sorunları yakalamak için üçüncü taraf API'larını izlemeniz gerekir. Üçüncü taraf API'larla ilgili gerçek risk budur - kodunuz değildir ve API'da ne kadar testin yapıldığı veya ne zaman / değiştiğinde hiçbir kontrolünüz yoktur.

(Feragatname: burada kullanılan ürün adları) API testlerinizi yazmak için soapUI kullanırsanız, API'nın beklendiği gibi çalışmaya devam etmesini sağlamak için bu testler AlertSite'da bir operasyonel monitör olarak kullanılabilir. Testi geçemezse, kullanıcılarınız sizi aramadan ve uygulamanızın çalışmadığından şikayet etmeden önce uyarı alabilirsiniz.


0

İlgi alanınıza uygun öğrenme testleri uygulayın (kullanmayı planladığınız özellikler). Öğrenme testleri, geliştiricinin API'nin kamu sözleşmesine karşı yazdığı entegrasyon testleridir. Testler, API için kaynak kodu mevcut olsa bile dahili uygulama ayrıntılarına göre yazılmamalıdır. Bu tür öğrenme testleri iki amaca hizmet eder -

  1. Üçüncü taraf API konusundaki anlayışınızı önemli ölçüde geliştirir.
  2. Testler, talep edilen yeni sürümün gerçekten geriye dönük uyumlu olup olmadığını doğrulamaya yardımcı olur.

0

Bu konuda 2 yaklaşım var ...

uygulamanız gerçek kullanıcı trafiğiyle canlı olarak yayınlanıyor:

üretimde canlı trafiği olan ve harici bir API'ye bağlı bir uygulamanız varsa, harici API bildirmeden değişiklik yaptığında mümkün olan en kısa sürede yakından izlemek ve bilmek için iyi eşiklere sahip olmaktan başka seçeneğiniz yoktur.

daima şunları dikkate almalısınız:

  • api'nin zaman içindeki değişimi
  • api satıcısının hataları olabilir
  • api satıcıları test kitleri hatalara sahip olabilir veya tüm üretim api işlevlerini tam olarak kapsamaz

uygulamanız bir kurulum ve planlanan sürümü / sürümleri var:

bu durumda başarısız olmak için bir yetkisiz kullanım süreniz vardır ... canlı kullanıcı harici API kırma değişikliklerinden hemen etkilenmez.

bence bu daha kolay bir iş. Uygulamanıza harici API'yi çağıran gerçek işlemler / http / istekleri yapan bir test (tam uçtan uca test) yazın ve hata olup olmadığını kontrol edin. hiçbir test-kitleri hiçbir gerçek işlem alay.

Bu görev tamamlandıktan sonra bunu her 24 saatte bir, 1 dakika vb.

iyi uygulamalar:

  • her şeyi otomatikleştir
  • Harici API'nin satıcısından hızlı bir şekilde iletişime geçebileceğiniz bir kişiye sahip olmak
  • körü körüne güvenme satıcı her şeyi test
  • hızlı başarısız - Eğer hizmet büyük ölçüde dış api bağlıdır hizmet çökmesine izin vermeyin. hızlı başarısız ve uygun hata mesajlarını döndürür

araçlar:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.