बाहरी API के लिए क्वेरी सिंटैक्स में एकमात्र वास्तविक तर्क है। मैं परीक्षण नहीं करना चाहता कि क्या यह एपीआई पर सवाल उठाता है, मैं परीक्षण करना चाहता हूं कि यह इस तरह से पूछताछ करता है कि सही डेटा वापस आ जाएगा। उदाहरण के लिए, कुछ छद्म कोड:
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;
}
एक बनाया एपीआई के साथ एक और अधिक ठोस उदाहरण:
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;
}
क्वेरी API के लिए एक सिंटैक्स कस्टम में है और जटिल है और समान या समान परिणाम प्राप्त करने के कई तरीके हैं। फ़ंक्शन का उद्देश्य पहचान किए गए डेटा को प्राप्त करना नहीं है, id
बल्कि इसके द्वारा पहचाने गए डेटा के फ़ज़ी रिश्ते के आधार पर अन्य डेटा का सबसेट ढूंढना id
भी कुछ अन्य आवश्यकताओं को पूरा करता है। अन्य आवश्यकताएं हमेशा एक समान होती हैं, id
लेकिन समय के साथ बदल सकती हैं क्योंकि सिस्टम को संशोधित किया गया है। उदाहरण के लिए, यदि उदाहरण एपी ने गुरुत्वाकर्षण जानकारी के लिए समर्थन जोड़ा, तो हम परिणामों को परिष्कृत करने के लिए गुरुत्वाकर्षण का उपयोग करने के लिए क्वेरी को बदलना चाह सकते हैं। या हो सकता है कि हम अस्थायी सीमा की जांच करने के लिए एक अधिक कुशल तरीके के साथ आए, लेकिन यह परिणाम नहीं बदलता है।
मैं जो परीक्षण करना चाहता हूं वह यह है कि दिए गए इनपुट के id
लिए डेटा का सही सेट लौटाया जाए। मैं इसका परीक्षण करना चाहता हूं ताकि यदि कोई क्वेरी को गड़बड़ कर दे जैसे कि यह अब id
उस पर आधारित सही डेटा नहीं लौटा रहा है, तो यह विफल हो जाएगा, लेकिन मैं यह भी चाहता हूं कि लोग क्वेरी को संशोधित करने में सक्षम होने के लिए इसे संशोधित किए बिना भी संशोधित कर सकें। कसौटी।
मैंने जिन विकल्पों पर विचार किया है:
मैं एपि को स्टब कर सकता हूं, लेकिन यह या तो बहुत सरल होगा (जांचें कि
id
क्वेरी में मौजूद है और फिर डेटा का अपेक्षित सेट लौटाएं यदि यह है या अप्रत्याशित सेट नहीं है तो), बहुत भंगुर (चेक करें कि क्वेरी स्ट्रिंग है) वास्तव में फ़ंक्शन में क्या है), या बहुत जटिल है (जांचें कि उपयोग की जाने वाली क्वेरी वाक्यविन्यास रूप से सही है और परिणामस्वरूप सही डेटा वापस आ जाएगा)।मैं वास्तविक एपीआई के लिए क्वेरी जमा कर सकता था, लेकिन अपेक्षित परिणाम समय के साथ बदल सकते थे क्योंकि बाहरी प्रणाली में डेटा बदल जाता था, परीक्षण प्रणाली के नियंत्रण के बाहर।
मैं डेटा को नियंत्रित करने के लिए वास्तविक एपीआई की एक परीक्षण स्थापना स्थापित करने के लिए देख सकता हूं, लेकिन यह बहुत प्रयास है।
मैं # 2 की ओर झुक रहा हूं और इसे अधिक एकीकरण परीक्षण बना रहा हूं जो अक्सर नहीं चलता है और यह देखते हुए कि बाहरी सिस्टम के डेटा में कितनी बार परिवर्तन होता है, जिससे परीक्षण टूट जाता है। मुझे लगता है कि यह अब के लिए सबसे सरल होगा, लेकिन मैं सोच रहा हूं कि क्या ऐसे विकल्प हैं जो मैं इस मुद्दे से निपटने के लिए या बेहतर तरीकों के बारे में नहीं सोच रहा हूं। किसी भी सलाह की सराहना की जाएगी।