The Hardest Karaoke Song in the World
İçindekiler:
Hizmet Odaklı Mimari ilkelerine öncelik veriyoruz Ters. Bu, açıkça tanımlanmış sorumluluklara sahip küçük, bakımı yapılabilir bileşenlere sahip olduğumuz anlamına gelir. Birbirleriyle (çoğunlukla) Temsilci Devlet Aktarımı veya REST API'leri aracılığıyla iletişim kurarlar.
Bu esneklik sağlar ve önemli bir faset hariç bize iyi hizmet etti: Test. Test yaparken, aşağıdakilerden kaçınılması gerekir:
- Aynı makinede çalışan harici servislere bağlı.
- Yavaş testler.
Uygulamalar doğal olarak dış hizmetlere dayandığından, bu bağımlılıklar için bir test stratejisinin uygulanması çok önemlidir.
Geçenlerde Bypass'ı kullanmaya başladık ve oraya nasıl geldiğimizi ve özellikle onu nasıl kullandığımızı açıklayacağım.
Geçmiş
Yöntemleri taklit edin ve bunun gibi bazı örnek verileri döndürün:
Ruby / Rails dünyasında “gitmenin yolu” buydu (ve hala inanıyorum). Ne yazık ki, bu José Valim'in en iyi açıkladığı şekilde kötü davranışları teşvik ediyor.
Daha sonra harika bir kütüphane olan ExVCR kullanmaya başladık, ancak alay / taslaklarla benzer sakıncaları var: Tembellik duygusunu teşvik ediyor ve iyi tanımlanmış API'ler için kritik olan endişelerin ayrılmasını teşvik etmiyor. ExVCR, gerçek veriyi “kaydetmeyi” ve “oynatmayı” sağlar. Entegre edilmesi çok kolaydır (testinizde birkaç satır ve diğer her şeyle ilgilenilir). Fakat ideal olarak, testlerde dış bağımlılıkları düşünmeniz gerekir, onları soyutlamayın. Uç nokta davranışının minimum ek yük ile test edilmesi gereken senaryolar için hala uygun bir seçenek olabilir (Amazon’un S3 gibi AWS Servislerine yapılan aramaları test etmek için kullanıyoruz).
Adaptörleri Girin
Adaptörler çok iyi çalışır ve API sözleşmelerinde ve açıkça tanımlanmış iletişim sınırlarında tartışmayı teşvik eder. Bu yaklaşımı özellikle Adaptör daha karmaşık olduğunda (JSON-RPC soketi gibi) kullanıyoruz.
Bir Adaptör böyle görünebilir:
Ancak, basit HTTP Bitiş Noktaları için, Adaptörler çok iş gibi görünüyor ve önemli bir dezavantajı var: Tükettikleri kütüphaneleri test denkleminin dışında bırakıyorlar. HTTP veya JSON kütüphanelerindeki herhangi bir şey değişirse, testler onu yakalayamaz. Bu yaklaşım tarafından denenmeyen üretim kritik kod miktarı kabul edilemez.
Şimdi ve Gelecek
Bypass, kullandığımız harici servisleri simüle eden testlerde çok basit bir web sunucusu başlatmamızı sağlar.
Artık HTTP kütüphanesi, JSON kodlama / kod çözme kütüphanesi ve kimlik doğrulama mekanizmaları dahil tüm yığını test edebiliriz. Bypass README iyi yazılmış, bu yüzden uygulama detaylarını değiştireceğim. Ancak, testleri özlü ve okunaklı tutmak için nasıl kullandığımızı biraz değiştiriyoruz:
Öncelikle, testler tam bir entegrasyon paketi olarak yapıldığında bazen Facebook'u aramak istiyoruz. Bunu, Facebook API’nin beklentilerimize göre hala çalışır durumda olmasını sağlamak için düzensiz yapıyoruz. Ekleme
- entegrasyon dahil
için
karışım testi
API'yi simüle etmez, ancak bunun yerine harici servise çağırır (satır 5, 7).
Bypass'ı kullanan her testin sahip olması gereken dış hizmetlere yönelik istekleri simüle ettiğimizde açık bir durumdayız.
@tag facebook_bypass
(satır 7).
Sonunda,
handle_fb
işlevi (satır 30–39) çağrılır (verilen
request_path
maçlar). Hangi yoldan tepki gösterdiğimizi açıkça belirttiği ve farklı yollar için farklı işlevler tanımlamamıza izin verdiği için işlev kafasında eşleştirmeyi seviyorum.
Bypass sadece etiketli testlerde çalışır
@tag: bypass
ve bizim entegrasyon takımımızı çalıştırmadığımızda. Baypas'ı ayarlarken yaptığımız bir şey daha, etiketin bir sayfa kimliği geçirmesine izin vermek (satır 8, 20). Öyleyse, Bypass'ı kullanan bir test tüm ihtişamıyla nasıl görünüyor:
Gördüğünüz gibi
facebook_bypass
etiketi API'yi simüle ettiğimizi açıkça belirtir (entegrasyon modunda olmadıkça). Bilgileri benzetilmiş API'ye aktarmamızı sağlar ve aynı Bypass yapılandırmasını farklı testler için yeniden kullanmak çok kolaydır.
Umarım bu harici API’leri test etmenize yardımcı olur. Başka sorularınız varsa beni Twitter'da bulabilirsiniz (aşağıya bakınız).
Anonim #OpBrussels'deki ISIS Bitcoin'leri Gerçekten Çaldı mı? Tamamen Mümkün.
Perşembe günü, Anonim #OpBrussel'lerin başladığını ilan eden YouTube'a yeni bir operasyon duyurusu videosu gönderdi. Hiyerarşik olmayan hacker organizasyonun iddiaları arasında şunlar vardı: "Biz IŞİD'i kara ağa üzerinde ciddi şekilde cezalandırdık, elektronik portföylerini hackettik ve teröristlerden para çaldık." Doğru ...
Endonezya, Sulawesi'deki Bu Topluluk Yıllardır Ölüleri Evinde Tutuyor
Kültürler ve toplumlar tüm dünyada ölülere farklı şekilde saygı duyuyor. Her yıl babamın ailesinin yanında, tüm akrabalarım atalarımın gömüldüğü mezarlıkta toplanıyor ve Qingming veya Mezarın Temizliği adlı Çin ritüelinde yer alıyor. Tam bir tavuk, ördek ve pirinç yemeği hazırladık ...
Bu Uygulama Size En Yakın Otomatik Harici Defibrilatörleri Bulmanızda Yardımcı Olacaktır
Otomatik harici defibrilatörlerin (AED'ler) ani kalp durması yaşayan insanlar için hayat kurtarmaya yardımcı olabileceği bilinmektedir. Ancak, tıbbi ortamın dışında bir AED'yi nerede bulabileceğiniz her zaman bilinmemektedir. Şimdi, AED-SOS adlı yeni bir uygulama bunu değiştirebilir. 9 Kasım 2015’te, American H’daki araştırmacılar ...