Tek gerçek mantık harici API'nin sorgu sözdizimindedir. API'yi sorgulayıp sorgulamadığını test etmek istemiyorum, doğru veri döndürülecek şekilde sorguladığını test etmek istiyorum. Örneğin, bazı sözde kodlar:
function retrieve_related_data(id)
{
query = "[potentially long, syntactically complex query that
uses param id to get some data]";
results = api_wrapper.query(query);
return results;
}
Hazırlanmış bir API ile daha somut bir örnek:
function retrieveLifeSupportingObjectsWithinRegion(id)
{
query = "
within region(" + id + ") as r
find objects matching hydration>0 and temp_range has 75
send name, id, relative(position, r)
";
results = astronomicalObjectApiWrapper.query(query);
return results;
}
Sorgu, API'ye özel bir sözdizimindedir ve karmaşıktır ve aynı veya benzer sonuçları elde etmenin birden fazla yolu vardır. İşlevin amacı, tarafından tanımlanan verileri elde etmek değil , aynı zamanda id
tanımlanan verilerle bulanık bir ilişkiye dayanan diğer verilerin bir alt kümesini bulmaktır id
. Diğer gereksinimler ne olursa olsun her zaman aynıdır, id
ancak sistem değiştirildikçe zaman içinde değişebilir. Örneğin, api örneği yerçekimi bilgisi için destek eklediyse, sorguyu, sonuçları daraltmak için yerçekimini de kullanacak şekilde değiştirmek isteyebiliriz. Ya da belki sıcaklık aralığını kontrol etmek için daha verimli bir yol buluyoruz, ancak sonuçları değiştirmiyor.
Test etmek istediğim, belirli bir giriş id
için doğru veri kümesinin döndürülmesidir. Birisi artık id
başarısız olacak dayalı doğru veri döndürmüyor sorguyu berbat eğer, bunu test etmek istiyorum , ama aynı zamanda insanların da değiştirmeye gerek kalmadan daraltmak için sorguyu değiştirmek mümkün istiyorum test.
Düşündüğüm seçenekler:
Api saplama olabilir, ama bu çok basit olurdu (
id
sorguda var olup olmadığını kontrol edin ve sonra ya da değilse beklenmeyen bir küme veri beklenen bir dizi döndürür), çok kırılgan (sorgu dizesi olup olmadığını kontrol edin) işlevde tam olarak ne varsa) veya çok karmaşık (kullanılan sorgunun sözdizimsel olarak doğru olup olmadığını ve doğru verilerin döndürülmesini sağladığını kontrol edin).Sorguyu gerçek API'ye gönderebilirim, ancak test sisteminin kontrolü dışında harici sistemdeki veriler değiştikçe beklenen sonuçlar zaman içinde değişebilir.
Sahip olduğu verileri kontrol etmek için gerçek API'nin test kurulumunu ayarlayabilirim, ancak bu çok çaba.
# 2'ye doğru eğildim ve bunu daha sık çalışmayan bir entegrasyon testinden daha fazla hale getiriyorum ve dış sistemin verilerindeki değişikliklerin ne kadar sıklıkla testin bozulmasına neden olduğunu görüyorum. Şimdilik en basit olacağını düşünüyorum, ancak düşünmediğim alternatifler veya bu sorunu çözmek için daha iyi yollar olup olmadığını merak ediyorum. Herhangi bir tavsiye mutluluk duyacağız.