Actions on Google प्लैटफ़ॉर्म पर कार्रवाई के लिए, आम तौर पर कार्रवाई करने की ज़रूरत होती है Dialogflow को लागू करें, ताकि भाषा को आसानी से समझा जा सके (NLU) और Dialogflow फ़ुलफ़िलमेंट, जो आपकी सेट की गई कार्रवाई के लिए लॉजिक मैनेज करते हैं. आपके कोड बेस में टेस्ट होने से यह पक्का करने में मदद मिलती है कि आपका Action उम्मीद के मुताबिक परफ़ॉर्म कर रहा है प्रोडक्शन में है.
अपने Action के लिए यूनिट, इंटिग्रेशन या शुरू से लेकर आखिर तक की जाने वाली जांच लागू करते समय, के लिए आपके Dialogflow एजेंट और फ़ुलफ़िलमेंट को अलग-अलग कॉम्पोनेंट के तौर पर माना जाना चाहिए.
पहला डायग्राम. फ़्लोचार्ट, जिसमें जांच के लिए सिस्टम की जानकारी दी गई है
Dialogflow के एजेंट की जांच करना
Dialogflow एजेंट और फ़ुलफ़िलमेंट की जांच अलग-अलग कॉम्पोनेंट के तौर पर की जाती है. कॉन्टेंट बनाने इन सब-सेक्शन में बताया गया है कि Dialogflow को कैसे समझा और टेस्ट किया जा सकता है आपकी कार्रवाई के लिए एजेंट.
क्वेरी-इन और इंटेंट-आउट सिस्टम के तौर पर डायलॉग फ़्लो
आपका Dialogflow एजेंट, किसी उपयोगकर्ता की क्वेरी को उसका मिलान करने के लिए ज़िम्मेदार है इंटेंट और क्वेरी से पहले से तय की गई किसी इकाई को एक्सट्रैक्ट करने के लिए. आपका एजेंट मेल खाने वाला मैसेज भेजकर आपके फ़ुलफ़िलमेंट के साथ इंटरैक्ट करता है इंटेंट, उसके पैरामीटर, और Actions on Google मेटाडेटा भी देखें.
डेवलपर के तौर पर, आप Dialogflow एजेंट के कॉन्फ़िगरेशन को कंट्रोल करते हैं, जैसे इंटेंट और इकाइयों का स्ट्रक्चर तय किया हो. Actions on Google मेटाडेटा यहां से लिया जाता है Actions on Google, और माना जा सकता है कि इनमें टेस्ट के लिए सही डेटा शामिल हो.
जांच करते समय, अपने एजेंट को इस बात पर ध्यान दें कि वह इंटेंट का सही तरीके से डेटा निकाल सके इंटेंट के लिए पैरामीटर और मैचिंग क्वेरी. इस तरीके से एजेंट की परफ़ॉर्मेंस का आकलन करने के लिए मापी जा सकने वाली मेट्रिक. आप इस मेट्रिक का हिसाब लगाने के लिए, अलग-अलग टेस्ट केस तैयार करके और उनका इस्तेमाल करके या पुष्टि करने के लिए सेट किया गया है.
दूसरा डायग्राम. क्वेरी-इन और इंटेंट-आउट सिस्टम के तौर पर Dialogflow को पेश करना
यूनिट टेस्ट
Dialogflow एजेंट के लिए, ऐसी जांच लिखी जा सकती हैं जिसमें हर मामले में टेक्स्ट होना चाहिए क्वेरी को इनपुट के तौर पर इस्तेमाल करता है और इंटेंट मेटाडेटा को आउटपुट के तौर पर जनरेट करता है. यह मेटाडेटा इसमें (कम से कम) मैच होने वाले इंटेंट का नाम और मैच होने वाले इंटेंट की सूची शामिल होनी चाहिए पैरामीटर का इस्तेमाल करें.
Dialogflow API का detectIntent
एंडपॉइंट
टेक्स्ट क्वेरी को इनपुट के रूप में लेता है और एक स्ट्रक्चर्ड आउटपुट जनरेट करता है, जिसमें यह शामिल होता है
रिज़ॉल्व किए गए इंटेंट और एक्सट्रैक्ट किए गए पैरामीटर का नाम. यह आउटपुट काम का है
की मदद से एजेंट की परफ़ॉर्मेंस का आकलन किया जा सकता है. एक पूरा
काम की अन्य फ़ील्ड का रेफ़रंस है, तो QueryResult
रेफ़रंस देखें.
सैंपल टेस्ट कुछ ऐसा दिखता है:
it('choose_fact', async function() {
// The `dialogflow` variable is an abstraction around the API that creates
// and sends payloads to Dialogflow.
const resJson = await dialogflow.detectIntent(
'Tell me about the history of Google');
expect(resJson.queryResult).to.include.deep.keys('parameters');
// Check that Dialogflow extracted required entities from the query.
expect(resJson.queryResult.parameters).to.deep.equal({
'category': 'history',
// Put any other parameters you wish were extracted
});
expect(resJson.queryResult.intent.displayName).to.equal('choose_fact');
});
इस स्निपेट में Mocha और चाय का इस्तेमाल किया गया है. पूरा देखें Node.js के लिए सबमिट किए गए Dialogflow यूनिट टेस्ट का उदाहरण Google के बारे में जानकारी.
आपकी टेस्ट फ़ाइलें साथ-साथ चलाई जा सकती हैं, क्योंकि Dialogflow एपीआई
sessionId
को तर्क के रूप में. इस वजह से, आपके पास
तो एक ही Dialogflow एपीआई क्लाइंट का इस्तेमाल करते समय बातचीत कर पाएंगे.
आपने Dialogflow एपीआई के लिए अनुरोध किया है, इसलिए आपके लिए शुल्क लिया जा सकता है मुफ़्त कॉल का कोटा पूरा होने पर खर्च होगा. कोटा और सीमाएं देखें हमारा वीडियो देखें.
इंटिग्रेशन की जांच
Dialogflow एपीआई का detectIntent
एंडपॉइंट भी
ट्रिगर करता हो कि तीसरे पक्ष की ओर से कार्रवाई की गई है या नहीं. इसलिए, टेस्ट केस लिखे जा सकते हैं
इसमें Dialogflow के एजेंट और Dialogflow के बीच के इंटिग्रेशन को कवर किया जाता है
कार्रवाई.
Dialogflow के लिए लिखने के इंटिग्रेशन और यूनिट टेस्ट के बीच मुख्य अंतर यह है इसकी मदद से इंटिग्रेशन टेस्ट में, वेबहुक से मिलने वाले जवाबों का दावा किया जा सकता है साथ ही, Dialogflow का इंटेंट और इकाई एक्सट्रैक्शन भी शामिल हैं.
Node.js के साथ इंटिग्रेट किए गए इंटिग्रेशन की जांच का पूरा उदाहरण डेटा स्टोर करने की जगह के बारे में Google के बारे में तथ्य.
Dialogflow के पूरा वेबहुक की जांच करना
Dialogflow एजेंट और Dialogflow के फ़ुलफ़िलमेंट को अलग-अलग टेस्ट के तौर पर किया जाता है कॉम्पोनेंट. इन सब-सेक्शन में बताया गया है कि कार्रवाई को पूरा करने की जांच करें.
JSON-इन और JSON-आउट सिस्टम के तौर पर ऑर्डर पूरा करना
डायलॉग बॉक्स के फ़ुलफ़िलमेंट कोड में, अनुरोध किए जाने के साथ-साथ रिस्पॉन्स भी दिए जाते हैं JSON फ़ॉर्मैट में एक्सपोर्ट करना होगा. इस वजह से, ऑर्डर पूरा करने के कोड की जांच की जा सकती है. इसके लिए, इसे JSON-इन और JSON-आउट सिस्टम के तौर पर सबमिट किया जाता है. अनुरोध में इन दोनों का मेटाडेटा शामिल है Dialogflow और Actions on Google से जुड़े हैं, ताकि इसमें आपके विज्ञापनों को ट्रिगर करने के लिए खास इंटेंट हैंडलर को भी लागू किया जा सकता है.
इंटेंट हैंडलर के ट्रिगर होने की जांच करने के लिए, आपको एक JSON अनुरोध (इनपुट) भेजना होगा आपकी कार्रवाई. यह अनुरोध, ग्राहक को आइटम भेजने के लिए भेजा गया है. आप इसे यहां ऐक्सेस कर सकते हैं सुरक्षित रखने में मदद मिलती है. इसके बाद, फ़ुलफ़िलमेंट एक JSON रिस्पॉन्स (आउटपुट) जनरेट करता है, जो जांच की जा सकती है.
तीसरी इमेज. JSON-इन और JSON-out सिस्टम के तौर पर फ़ुलफ़िलमेंट को दिखाना
यूनिट टेस्ट
ग्राहक को आइटम भेजने के लिए उपलब्ध वेबहुक कोड को एक ऐसे सिस्टम के तौर पर देखें जो JSON इनपुट स्वीकार करता है और इससे JSON आउटपुट मिलता है. इसके बाद, कार्रवाई की जांच करने की प्रक्रिया को आसान बनाकर ग्राहक को आइटम भेजने का अनुरोध करें और उससे मिलने वाले आउटपुट JSON की जांच करें.
इससे आपको फ़ुलफ़िलमेंट को स्थानीय तौर पर होस्ट करने और एचटीटीपी भेजने की आज़ादी मिलती है परीक्षण के लिए स्थानीय रूप से अनुरोध करता है. अगर Actions on Google Node.js का इस्तेमाल किया जा रहा है क्लाइंट लाइब्रेरी के साथ-साथ, JSON के अनुरोध सीधे क्लाइंट लाइब्रेरी को भी भेजे जा सकते हैं मिडलवेयर लेयर.
अगर JSON इनपुट की मदद से वेबहुक कोड की जांच की जाती है और आपको उम्मीद के मुताबिक JSON मिलता है होता है, तो पूरे भरोसे के साथ कहा जा सकता है कि जिन पार्ट का कंट्रोल आपके पास है काम ठीक से होता है. आप मान सकते हैं कि Dialogflow और Actions on Google काम कर रहे हैं क्योंकि वे सही JSON पेलोड जनरेट कर रहे हैं. यह आइसोलेशन यह टूल, टेस्ट लिखने के लिए एक आसान प्रोग्रामिंग मॉडल उपलब्ध कराता है.
यहां पर टेस्टिंग की प्रोसेस के बारे में सामान्य जानकारी दी गई है:
- JSON के अनुरोध पाने के लिए, Actions कंसोल में सिम्युलेटर का इस्तेमाल करें का पालन करते हैं. इन्हें JSON फ़ाइलों के तौर पर सेव करें. इसके अलावा, आपके पास ये विकल्प हैं हम आपको उन अनुरोधों को वेबहुक के बारे में जानकारी देने वाले दस्तावेज़.
- इन पेलोड की मदद से वेबहुक को शुरू करने के लिए, टेस्ट लिखें.
- हर जांच के लिए, पक्का करें कि रिस्पॉन्स JSON में वे आइटम शामिल हों जो आपके काम के हैं.
इसके अलावा, इस मॉडल की मदद से, Dialogflow के पूरा होने की जांच की जा सकती है इंटिग्रेशन की लगातार सेटिंग, क्योंकि फ़ुलफ़िलमेंट एंडपॉइंट स्थानीय तौर पर चल सकता है, और Dialogflow API में सेशन का कॉन्सेप्ट पहले से मौजूद होता है.
उदाहरण के तौर पर दिया गया टेस्ट कुछ ऐसा दिखेगा:
it('yes-history', function() {
expect(jsonRes.payload).to.have.deep.keys('google');
expect(jsonRes.payload.google.expectUserResponse).to.be.true;
expect(jsonRes.payload.google.richResponse.items).to.have.lengthOf(3);
expect(jsonRes.payload.google.richResponse.suggestions).to.have
.deep.members([
{'title': 'Sure'}, {'title': 'No thanks'},
]);
});
ऊपर दिए गए स्निपेट में Mocha और चाय का इस्तेमाल हुआ है. ज़्यादा जानकारी के लिए, Google के बारे में तथ्य में Node.js के इस्तेमाल का पूरा उदाहरण डेटा स्टोर करने की जगह.
यूनिट-टेस्ट किया जा सकने वाला फ़ुलफ़िलमेंट डिज़ाइन करना
वेबहुक कोड में अक्सर कारोबार के लिए कस्टम लॉजिक शामिल होता है जिसे आपका ऐप्लिकेशन निर्भर करता है वह अपनी ज़रूरतें पूरी कर सकता है. इसके अलावा, वेबहुक कोड में इंटेंट भी हो सकता है हैंडलर.
यह बेहतर है कि ऑर्डर को पूरा करने वाले कोड के लिए, यूनिट टेस्ट की जानकारी को बेहतर बनाया जा सके. कोड को इस तरह से व्यवस्थित करने का तरीका बताएंगे कि कारोबार का लॉजिक इन्हें इंटेंट हैंडलिंग रूटीन से अलग किया जाता है. इसका मतलब है कि आपके पास इंटेंट हैंडलर होना और बिज़नेस लॉजिक को अलग-अलग मॉड्यूल में इस्तेमाल किया जा सकता है, ताकि हर मॉड्यूल की जांच की जा सके स्वतंत्र रूप से काम करता है.
उदाहरण के लिए, GitHub पर शिरीटोरी सैंपल ऐक्शन देखें.
उस सैंपल में, functions/index.js
और functions/shiritori/*.js
अलग-अलग
इसमें इंटेंट हैंडलर और बिज़नेस लॉजिक शामिल होते हैं, जिससे यह बेहतर तरीके से टेस्ट करने में मदद मिलती है
सुइट.
इंटिग्रेशन की जांच
ऐसे टेस्ट केस लिखने के लिए जो Dialogflow और आपके ऐप्लिकेशन के बीच के इंटिग्रेशन को कवर करते हों वेबहुक कोड को पूरा करने के लिए, Dialogflow के लिए इंटिग्रेशन टेस्टिंग सेक्शन पढ़ें पढ़ें.
टेस्ट लोड करें
हमारा सुझाव है कि आप Action को प्रोडक्शन में इस्तेमाल करने से पहले, वेबहुक फ़ुलफ़िलमेंट की मदद से परफ़ॉर्मेंस की उन समस्याओं का पता चलेगा जिनकी वजह से परफ़ॉर्मेंस में गिरावट आ सकती है या ग्राहक को आइटम भेजने की आपकी सेवा में रुकावट आ सकती है.
यहां परफ़ॉर्मेंस से जुड़ी समस्याओं के कुछ उदाहरण दिए गए हैं, जो आपको लोड टेस्टिंग के दौरान दिख सकते हैं:
- सीमित कंप्यूट और मेमोरी
- आपको सेवा देने वाली कंपनियों की ओर से मिलने वाले कोटे से जुड़ी पाबंदियां
- पढ़ने और लिखने की धीमी रफ़्तार वाला डेटा
- कोड में एक साथ कई काम करने की समस्याएं
लोड होने की जांच की स्थितियां, इसके इस्तेमाल के अनुमानित या पुराने पैटर्न पर निर्भर करती हैं आपकी सेट की गई कार्रवाई, लेकिन टेस्ट करने के लिए आम स्थितियों की वजह से, लोड (स्पाइक) में अचानक बढ़ोतरी होती है और लंबे समय तक चलने वाला कॉन्टेंट हो.
उन स्थितियों की पहचान करें जहां आपके वेबहुक को कॉल किया जाता है और वह परफ़ॉर्म करता है इन कामों में ज़्यादा संसाधनों की ज़रूरत पड़ती है. सामान्य तौर पर, संसाधनों से ज़्यादा होने वाले ऑपरेशन में ये शामिल हैं डेटाबेस से क्वेरी करना, दूसरे एपीआई को कॉल करना, कंप्यूट टूल की मदद से काम करना, और मेमोरी बहुत ज़्यादा कार्रवाइयां करनी होंगी, जैसे कि साउंड फ़ाइल रेंडर करना.
इन स्थितियों में, Actions on Google के सर्वर से भेजे गए अनुरोध कैप्चर किए जा सकते हैं या स्टैकड्राइवर लॉग से वेबहुक तक पहुंचें. आप यह भी कर सकते हैं कार्रवाइयां कंसोल सिम्युलेटर से अनुरोध कैप्चर करें.
अनुरोध मिलने के बाद, लोड टेस्टिंग टूल का इस्तेमाल करके यह पता लगाया जा सकता है कि वेबहुक, लोड टेस्टिंग के अलग-अलग मामलों में जवाब देता है. नीचे दिए गए सब-सेक्शन में, स्पाइक टेस्टिंग और सोक टेस्टिंग के कुछ उदाहरण दिए गए हैं. ApacheBench.
स्पाइक टेस्टिंग
स्पाइक टेस्टिंग के लिए, आपको वेबहुक को लगातार कई अनुरोध भेजने होंगे उनका लोड बढ़ सकता है. उदाहरण के लिए, एक टेस्ट सेट अप किया जा सकता है जो 60 क्यूपीएस के कुछ बढ़ोतरी के साथ, 10 क्वेरी प्रति सेकंड (क्यूपीएस) लोड करता है.
एक साथ 60 अनुरोध भेजने के लिए, नीचे दिया गया ApacheBench कमांड इस्तेमाल किया जा सकता है जोड़ें:
ab -n 60 -c 60 -p ActionRequest.json -T 'application/json' https://example.com/webhookFunctionName
मान लें कि ActionRequest.json
फ़ाइल में, कैप्चर किया गया अनुरोध वाला पेलोड शामिल है
को भी टैग किया जा सकता है.
सोक टेस्टिंग
सॉक टेस्टिंग के लिए, आपको वेबहुक को लगातार कई अनुरोध भेजने होंगे और जवाब पर नज़र रखें. उदाहरण के लिए, एक ऐसा टेस्ट सेट अप किया जा सकता है जो यह देखने के लिए कि जवाब देने में कितना समय लगता है, कई मिनट तक 10 से 20 क्यूपीएस का लगातार लोड होना बढ़ोतरी.
10 के साथ 1200 अनुरोध भेजने के लिए, नीचे दिया गया ApacheBench कमांड चलाया जा सकता है हर सेकंड एक साथ किए जाने वाले अनुरोध:
ab -t 120 -n 1200 -p ActionRequest.json -T 'application/json' https://example.com/webhookFunctionName
मान लें कि ActionRequest.json
फ़ाइल में, कैप्चर किया गया अनुरोध वाला पेलोड शामिल है
को भी टैग किया जा सकता है.
लोड टेस्टिंग के नतीजों का विश्लेषण किया जा रहा है
लोड की जांच करने के बाद, वेबहुक के जवाब देने में लगने वाले समय के नतीजों का विश्लेषण करें. वेबहुक लागू करने में होने वाली समस्याओं के इंडिकेटर आम तौर पर, जवाब देने में लगने वाला मीडियन समय, जो हर टेस्ट रन के साथ बढ़ता है या खराब स्थिति में होता है जवाब देने में लगने वाला समय डालें, जो आपकी कार्रवाई के लिए सही नहीं है.
शुरू से आखिर तक जांच करना
मंज़ूरी के लिए कार्रवाई सबमिट करने से पहले शुरू से आखिर तक जांच करने के लिए, ऐक्शन कंसोल सिम्युलेटर. आप शुरू से अंत तक के चरणों को पा सकते हैं कार्रवाई सिम्युलेटर में कार्रवाई कंसोल सिम्युलेटर के ज़रिए परीक्षण करना दस्तावेज़. इन टेस्ट को करने से, कारोबार में आने वाली किसी भी चुनौती को दूर करने में मदद मिलती है Actions on Google इंफ़्रास्ट्रक्चर कॉम्पोनेंट से लिया गया है.