"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > उपभोक्ता-संचालित अनुबंध परीक्षण के लिए एक मार्गदर्शिका

उपभोक्ता-संचालित अनुबंध परीक्षण के लिए एक मार्गदर्शिका

2024-10-31 को प्रकाशित
ब्राउज़ करें:558

A Guide to Consumer-Driven Contract Testing
आधुनिक माइक्रोसर्विसेज आर्किटेक्चर में, एप्लिकेशन अक्सर एपीआई के माध्यम से अंतर-सेवा संचार पर बहुत अधिक निर्भर होते हैं। यह सुनिश्चित करना महत्वपूर्ण है कि ये एपीआई विकास के दौरान और परिवर्तनों के बाद भी अपेक्षा के अनुरूप काम करते रहें। इसे हासिल करने का एक प्रभावी तरीका उपभोक्ता संचालित अनुबंध परीक्षण (सीडीसीटी) है। सीडीसीटी एक ऐसी विधि है जो यह सुनिश्चित करती है कि सेवाएं (निर्माता) उन सेवाओं द्वारा निर्धारित अपेक्षाओं का पालन करें जो उनके एपीआई (उपभोक्ताओं) का उपभोग करती हैं।

इस गाइड में, हम जानेंगे कि सीडीसीटी क्या है, यह कैसे काम करती है, विश्वसनीय माइक्रोसर्विसेज इंटरैक्शन सुनिश्चित करने में इसका महत्व है, और आप पैक्ट जैसे टूल का उपयोग करके इसे कैसे कार्यान्वित कर सकते हैं।

उपभोक्ता-संचालित अनुबंध परीक्षण क्या है?
उपभोक्ता-संचालित अनुबंध परीक्षण एक परीक्षण रणनीति है जो वितरित वास्तुकला में सेवाओं के बीच संचार को सहमत अनुबंधों का पालन करना सुनिश्चित करती है। यह केवल एपीआई के सही ढंग से काम करने को सुनिश्चित करने के बजाय उपभोक्ता की जरूरतों पर ध्यान केंद्रित करके पारंपरिक एपीआई परीक्षण से भिन्न है। एपीआई उपभोक्ता और प्रदाता के बीच अनुबंध उपभोक्ता की अपेक्षाओं से परिभाषित होता है, और यह अनुबंध प्रदाता के कार्यान्वयन के विरुद्ध सत्यापित होता है।

महत्वपूर्ण पदों:
• उपभोक्ता: वह सेवा जो एपीआई का उपभोग करती है।
• प्रदाता (निर्माता): वह सेवा जो एपीआई प्रदान करती है।
• अनुबंध: उपभोक्ता और प्रदाता के बीच एक औपचारिक समझौता जो अपेक्षित एपीआई व्यवहार को निर्दिष्ट करता है।

यह कैसे काम करता है?

  1. उपभोक्ता अनुबंध को परिभाषित करता है: उपभोक्ता अपनी अपेक्षाओं को परिभाषित करता है कि प्रदाता के एपीआई को कैसे व्यवहार करना चाहिए (उदाहरण के लिए, वह कौन से समापन बिंदु, डेटा प्रारूप और प्रतिक्रिया स्थिति कोड की अपेक्षा करता है)।
  2. अनुबंध साझा किया जाता है: उपभोक्ता इस अनुबंध को प्रदाता के साथ साझा करता है। यह अनुबंध एक विनिर्देश के रूप में कार्य करता है कि प्रदाता को क्या पूरा करना चाहिए।
  3. प्रदाता अनुबंध का सत्यापन करता है: प्रदाता उपभोक्ता के अनुबंध के विरुद्ध स्वयं का परीक्षण करता है, यह सुनिश्चित करता है कि वह उपभोक्ता की अपेक्षाओं को पूरा करता है।
  4. निरंतर फीडबैक लूप: प्रदाता के एपीआई में कोई भी परिवर्तन जल्दी पकड़ लिया जाएगा क्योंकि प्रदाता को सभी उपभोक्ताओं के अनुबंधों के विरुद्ध मान्य करना होगा। यह यह सुनिश्चित करने के लिए एक सुरक्षा जाल बनाता है कि प्रदाता में परिवर्तन उपभोक्ताओं पर नकारात्मक प्रभाव न डालें।

उपभोक्ता-संचालित अनुबंध परीक्षण का महत्व
वितरित आर्किटेक्चर में, विशेष रूप से माइक्रोसर्विसेज के साथ, सेवाओं के बीच निर्भरता का प्रबंधन अधिक जटिल हो जाता है। सीडीसीटी इस जटिलता को कई तरीकों से कम करने में मदद करता है:

1. उत्पादन में टूट-फूट को रोकता है
चूंकि उपभोक्ता परिभाषित करते हैं कि उन्हें क्या चाहिए, प्रदाता के एपीआई में जो परिवर्तन उपभोक्ता की अपेक्षाओं को पूरा नहीं करते हैं, उन्हें विकास पाइपलाइन में जल्दी ही पकड़ लिया जाता है। इससे असंगत परिवर्तनों के कारण उत्पादन प्रणालियों के टूटने का जोखिम कम हो जाता है।

2. वियुग्मन विकास
उपभोक्ता-संचालित अनुबंध परीक्षण उपभोक्ताओं और प्रदाताओं को स्वतंत्र रूप से विकसित होने की अनुमति देता है। यह विशेष रूप से तब उपयोगी होता है जब टीमें या सेवाएँ अलग-अलग विकसित होती हैं। अनुबंध एक इंटरफ़ेस के रूप में कार्य करते हैं जो यह सुनिश्चित करता है कि प्रत्येक विकास चक्र के दौरान पूर्ण एकीकरण परीक्षण की आवश्यकता के बिना एकीकरण अपेक्षित रूप से काम करता है।

3. तेज़ विकास चक्र
सीडीसीटी के साथ, उपभोक्ता और प्रदाता दोनों को समानांतर रूप से विकसित और परीक्षण किया जा सकता है, जिससे विकास में तेजी आ सकती है। उपभोक्ता द्वारा अपनी कार्यक्षमता पूरी तरह से लागू करने से पहले ही प्रदाता उपभोक्ता के अनुबंध के विरुद्ध परीक्षण कर सकते हैं।

4. अनुबंध उल्लंघनों का शीघ्र पता लगाना
प्रदाता में अनुबंध का उल्लंघन करने वाले परिवर्तनों का विकास प्रक्रिया में पहले ही पता चल जाता है, जिससे डेवलपर्स को गंभीर होने से पहले मुद्दों का समाधान करने में मदद मिलती है।

उपभोक्ता-संचालित अनुबंध परीक्षण कैसे लागू करें
सीडीसीटी को लागू करने के लिए कई उपकरण उपलब्ध हैं, जिनमें पैक्ट सबसे लोकप्रिय में से एक है। पैक्ट उपभोक्ताओं को अपने अनुबंधों को परिभाषित करने और प्रदाताओं को उन्हें सत्यापित करने की अनुमति देता है।

यहां पैक्ट का उपयोग करके सीडीसीटी लागू करने के लिए चरण-दर-चरण मार्गदर्शिका दी गई है:
चरण 1: उपभोक्ता अपेक्षाओं को परिभाषित करें
सबसे पहले, उपभोक्ता सेवा में, अनुबंध को परिभाषित करें। इसमें आमतौर पर निम्नलिखित शामिल हैं:
• वह समापन बिंदु जिस पर उपभोक्ता कॉल करेगा।
• अनुरोध विधि (प्राप्त करें, पोस्ट करें, डालें, आदि)।
• अपेक्षित अनुरोध निकाय या पैरामीटर।
• अपेक्षित प्रतिक्रिया निकाय और स्थिति कोड।
जावास्क्रिप्ट में पैक्ट का उपयोग करके उपभोक्ता परीक्षण में अनुबंध को परिभाषित करने का एक उदाहरण यहां दिया गया है:

const { Pact } = require('@pact-foundation/pact');
const path = require('path');

const provider = new Pact({
    consumer: 'UserService',
    provider: 'UserAPI',
    port: 1234,
    log: path.resolve(process.cwd(), 'logs', 'pact.log'),
    dir: path.resolve(process.cwd(), 'pacts'),
});

describe('Pact Consumer Test', () => {
    beforeAll(() => provider.setup());

    afterAll(() => provider.finalize());

    it('should receive user details from the API', async () => {
        // Define the expected interaction
        await provider.addInteraction({
            state: 'user exists',
            uponReceiving: 'a request for user details',
            withRequest: {
                method: 'GET',
                path: '/users/1',
                headers: {
                    Accept: 'application/json',
                },
            },
            willRespondWith: {
                status: 200,
                headers: {
                    'Content-Type': 'application/json',
                },
                body: {
                    id: 1,
                    name: 'John Doe',
                },
            },
        });

        // Make the actual request and test
        const response = await getUserDetails(1);
        expect(response).toEqual({ id: 1, name: 'John Doe' });
    });
});

इस उदाहरण में, उपभोक्ता (यूजरसर्विस) उम्मीद करता है कि प्रदाता (यूजरएपीआई) /यूजर्स/1 को जीईटी अनुरोध करते समय यूजर विवरण लौटाएगा।

चरण 2: अनुबंध प्रकाशित करें
एक बार उपभोक्ता परीक्षण पास हो जाने पर, पैक्ट एक अनुबंध फ़ाइल (पैक्ट फ़ाइल) उत्पन्न करता है जिसे प्रदाता के साथ साझा किया जा सकता है। इस अनुबंध को पैक्ट ब्रोकर या संस्करण नियंत्रण प्रणाली में संग्रहीत किया जा सकता है ताकि प्रदाता सत्यापन के लिए इसका उपयोग कर सके।

चरण 3: प्रदाता अनुबंध का सत्यापन करता है
प्रदाता अनुबंध को पुनः प्राप्त करता है और सत्यापित करता है कि यह उपभोक्ता की अपेक्षाओं का अनुपालन करता है। यह प्रदाता की ओर से एक पैक्ट परीक्षण चलाकर किया जाता है। यहां जावा में एक पैक्ट अनुबंध को सत्यापित करने का एक उदाहरण दिया गया है:

public class ProviderTest {

    @Test
    public void testProviderAgainstPact() {
        PactVerificationResult result = new PactVerifier()
            .verifyProvider("UserAPI", "pacts/UserService-UserAPI.json");

        assertThat(result, instanceOf(PactVerificationResult.Ok.class));
    }
}

प्रदाता यह परीक्षण यह सुनिश्चित करने के लिए चलाता है कि वह उपभोक्ता द्वारा निर्दिष्ट अनुबंध का पालन करता है।

चरण 4: सतत एकीकरण
एक बार सीडीसीटी आपके सीआई/सीडी पाइपलाइन में एकीकृत हो जाने पर, हर बार अनुबंध में बदलाव होने पर, प्रदाता स्वचालित रूप से अनुबंध को सत्यापित कर सकता है। यह सुनिश्चित करता है कि एपीआई परिवर्तन उपभोक्ता की अपेक्षाओं को न तोड़ें, दोनों टीमों के लिए सुरक्षा जाल प्रदान करें।

सीडीसीटी सर्वोत्तम प्रथाएं

  1. छोटे, केंद्रित अनुबंध: सुनिश्चित करें कि आपके अनुबंध छोटे हों और केवल उपभोक्ता की जरूरतों पर केंद्रित हों। यह अनुबंध में अनावश्यक जटिलता को रोकता है और सत्यापन को सरल बनाता है।
  2. अनुबंध संस्करणीकरण: हमेशा अपने अनुबंधों का संस्करणीकरण करें। यह प्रदाताओं को एक ही अनुबंध के कई संस्करणों को संभालने की अनुमति देता है, जिससे आपको विकास के विभिन्न चरणों में विभिन्न उपभोक्ताओं का समर्थन करने में मदद मिलती है।
  3. स्वतंत्र परिनियोजन: सुनिश्चित करें कि सीडीसीटी आपकी सीआई/सीडी पाइपलाइन का हिस्सा है। उपभोक्ता या प्रदाता के किसी भी बदलाव से उत्पादन वातावरण को तोड़ने से बचने के लिए अनुबंध परीक्षण शुरू हो जाना चाहिए।
  4. एक पैक्ट ब्रोकर का उपयोग करें: एक पैक्ट ब्रोकर एक केंद्रीय भंडार है जो आपके अनुबंधों को संग्रहीत करता है और उपभोक्ताओं और प्रदाताओं दोनों को उन्हें पुनः प्राप्त करने की अनुमति देता है। यह अनुबंध संस्करणों और निर्भरताओं को देखने के लिए एक यूआई भी प्रदान करता है।

उपभोक्ता-संचालित अनुबंध परीक्षण का उपयोग कब करें
CDCT विशेष रूप से तब उपयोगी होता है जब:
• आपके पास कई सेवाओं के साथ बातचीत करने वाली माइक्रोसर्विसेज या वितरित आर्किटेक्चर हैं।
• विभिन्न सेवाओं पर काम करने वाली टीमों को लगातार एकीकरण परीक्षण के बिना स्वतंत्र रूप से विकसित होने की आवश्यकता है।
• एपीआई अनुबंध अक्सर बदलने की संभावना है, और आप उपभोक्ता अपेक्षाओं को तोड़ने से बचना चाहते हैं।
• विकास प्रक्रिया में अनुबंध उल्लंघनों का शीघ्र पता लगाने के लिए आपको तेज़ फीडबैक लूप की आवश्यकता है।

निष्कर्ष
उपभोक्ता-संचालित अनुबंध परीक्षण यह सुनिश्चित करने का एक विश्वसनीय तरीका प्रदान करता है कि वितरित प्रणाली में सेवाएँ परिवर्तनों को तोड़े बिना प्रभावी ढंग से संचार करती हैं। उपभोक्ता अपेक्षाओं पर ध्यान केंद्रित करके और उनके विरुद्ध प्रदाता को मान्य करके, सीडीसीटी स्थिरता सुनिश्चित करते हुए टीमों को स्वतंत्र रूप से विकसित होने में मदद करता है। चाहे आप माइक्रोसर्विसेज, एपीआई-आधारित एप्लिकेशन, या वितरित सिस्टम बना रहे हों, सीडीसीटी को अपनी परीक्षण रणनीति में शामिल करने से आपकी सेवाओं की विश्वसनीयता और स्केलेबिलिटी में सुधार होगा।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/keploy/a-guide-to-consumer-driven-contract-testing-2dho?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3