साइप्रस फ्रंट-एंड परीक्षण के लिए बहुत अच्छा है, लेकिन यह आपके एपीआई का भी प्रभावी ढंग से परीक्षण कर सकता है।

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

साइप्रस आपको व्यापक परीक्षण लिखने की सुविधा देता है जो आपके वेब एप्लिकेशन के वर्कफ़्लो के पूर्ण स्पेक्ट्रम का विस्तार करता है।

साइप्रस का उपयोग करके एपीआई परीक्षण शुरू करना

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

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

instagram viewer

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

यह HTTP अनुरोध करने और उनकी प्रतिक्रियाओं को संभालने के लिए अपने इंजन के रूप में Node.js का उपयोग करके ऐसा करता है।

आप इस प्रोजेक्ट का कोड इसमें पा सकते हैं GitHub भण्डार.

एक Express.js REST API बनाएं

प्रारंभ करना, एक एक्सप्रेस वेब सर्वर बनाएं, और इस पैकेज को अपने प्रोजेक्ट में इंस्टॉल करें:

npm install cors

इसके बाद, अपने प्रोजेक्ट में साइप्रस पैकेज जोड़ें:

npm install cypress --save-dev

अंत में, अपना अपडेट करें package.json इस परीक्षण स्क्रिप्ट को शामिल करने के लिए फ़ाइल:

"test": "npx cypress open"

एपीआई नियंत्रकों को परिभाषित करें

वास्तविक दुनिया के मामले में, आप डेटाबेस या बाहरी एपीआई से डेटा पढ़ने और लिखने के लिए एपीआई कॉल करेंगे। हालाँकि, इस उदाहरण के लिए, आप किसी सरणी से उपयोगकर्ता डेटा जोड़कर और लाकर ऐसी एपीआई कॉल का अनुकरण और परीक्षण करेंगे।

अपने प्रोजेक्ट फ़ोल्डर की रूट डायरेक्टरी में, एक बनाएं नियंत्रक/उपयोगकर्ता नियंत्रक.जे.एस फ़ाइल, और निम्न कोड जोड़ें।

सबसे पहले, परिभाषित करें a रजिस्टर उपयोक्ता नियंत्रक फ़ंक्शन जो उपयोगकर्ता पंजीकरण मार्ग का प्रबंधन करेगा। यह अनुरोध निकाय से उपयोगकर्ता का डेटा निकालेगा, एक नया उपयोगकर्ता ऑब्जेक्ट बनाएगा और उसे इसमें जोड़ेगा उपयोगकर्ताओं सरणी. यदि प्रक्रिया सफल होती है, तो उसे 201 स्थिति कोड और एक संदेश के साथ जवाब देना चाहिए जो दर्शाता है कि उसने उपयोगकर्ता को पंजीकृत कर लिया है।

const users = [];

exports.registerUser = async (req, res) => {
const { username, password } = req.body;

try {
const newUser = { username, password };
users.push(newUser);
res.status(201).send({ message: 'User registered successfully' });
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

दूसरा फ़ंक्शन जोड़ें—उपयोगकर्ता प्राप्त करें-सरणी से उपयोगकर्ता डेटा पुनर्प्राप्त करें, और इसे JSON प्रतिक्रिया के रूप में लौटाएं।

exports.getUsers = async (req, res) => {
try {
res.json(users);
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

अंत में, आप लॉगिन प्रयासों का अनुकरण भी कर सकते हैं। उसी फ़ाइल में, इस कोड को यह जांचने के लिए जोड़ें कि दिया गया उपयोगकर्ता नाम और पासवर्ड किसी भी उपयोगकर्ता डेटा से मेल खाता है या नहीं उपयोगकर्ताओं सरणी:

exports.loginUser = async (req, res) => {
const { username, password } = req.body;

try {
const user = users.find((u) =>
u.username username && u.password password);

if (user) {
res.status(200).send({ message: 'Login successful' });
} else {
res.status(401).send({ message: 'Invalid credentials' });
}
} catch (error) {
console.error(error);
res.status(500).send({ message: 'An error occurred!!' });
}
};

एपीआई रूट्स को परिभाषित करें

अपने एक्सप्रेस रेस्ट एपीआई के लिए मार्गों को परिभाषित करने के लिए, एक नया बनाएं मार्ग/userRoutes.js रूट निर्देशिका में फ़ाइल करें, और इसमें यह कोड जोड़ें:

const express = require('express');
const router = express.Router();
const userControllers = require('../controllers/userControllers');

const baseURL = '/v1/api/';

router.post(baseURL + 'register', userControllers.registerUser);
router.get(baseURL + 'users', userControllers.getUsers);
router.post(baseURL + 'login', userControllers.loginUser);

module.exports = router;

Server.js फ़ाइल को अद्यतन करें

अद्यतन करें सर्वर.जे.एस एपीआई को निम्नानुसार कॉन्फ़िगर करने के लिए फ़ाइल:

const express = require('express');
const cors = require('cors');
const app = express();
const port = 5000;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());

const userRoutes = require('./routes/userRoutes');
app.use('/', userRoutes);

app.listen(port, () => {
console.log(`Server is listening at http://localhost:${port}`);
});

module.exports = app;

परीक्षण वातावरण स्थापित करें

डेमो एपीआई के साथ, आप परीक्षण वातावरण स्थापित करने के लिए तैयार हैं। इस टर्मिनल कमांड के साथ विकास सर्वर प्रारंभ करें:

node server.js

इसके बाद, परीक्षण स्क्रिप्ट कमांड को एक अलग टर्मिनल में चलाएँ:

npm run test

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

अगला, क्लिक करें जारी रखना साइप्रस कॉन्फ़िगरेशन फ़ाइलें जोड़ने के लिए।

एक बार सेटअप प्रक्रिया पूरी हो जाने पर, आपको अपने प्रोजेक्ट में एक नया साइप्रस फ़ोल्डर देखना चाहिए। सरू भी एक जोड़ देगा cypress.config.js फ़ाइल जिसमें आपके परीक्षणों के लिए कॉन्फ़िगरेशन सेटिंग्स शामिल हैं।

आगे बढ़ें और अपने सर्वर बेस यूआरएल को निम्नानुसार शामिल करने के लिए इस फ़ाइल को अपडेट करें:

const { defineConfig } = require("cypress");

module.exports = defineConfig({
chromeWebSecurity: false,
e2e: {
baseUrl: 'http://localhost: 5000',
setupNodeEvents(on, config) {
},
},
});

परीक्षण मामले लिखें

अब आप कुछ परीक्षण मामले लिखने के लिए तैयार हैं। सबसे पहले, उस ब्राउज़र का चयन करें जिसमें साइप्रस साइप्रस क्लाइंट पर उपलब्ध विकल्पों में से परीक्षण चलाने के लिए लॉन्च करेगा।

अगला, क्लिक करें नई विशिष्टता बनाएं अपनी परीक्षण फ़ाइल बनाने और एक नाम प्रदान करने के लिए बटन। तब दबायें विशिष्टता बनाएँ.

अब, खोलें सरू/फिक्स्चर/example.json फ़ाइल, और इसकी सामग्री को निम्नलिखित उपयोगकर्ता क्रेडेंशियल्स के साथ अद्यतन करें। फिक्स्चर वे फ़ाइलें हैं जिनमें स्थैतिक परीक्षण डेटा होता है जिनका उपयोग आप परीक्षण मामलों में कर सकते हैं।

{
"username": "testuser",
"password": "password123"
}

सरू एक प्रदान करता है साइबर.अनुरोध वेब सर्वर पर HTTP अनुरोध करने की विधि। आप इसका उपयोग विभिन्न प्रकार के HTTP एंडपॉइंट्स का परीक्षण करने के लिए कर सकते हैं जो GET, POST, PUT और DELETE सहित विभिन्न ऑपरेशनों का प्रबंधन करते हैं।

आपके द्वारा पहले परिभाषित तीन एपीआई मार्गों का परीक्षण करने के लिए, रजिस्टर एंडपॉइंट के लिए परीक्षण मामले का वर्णन करके प्रारंभ करें। इस परीक्षण मामले को यह सत्यापित करना चाहिए कि नए उपयोगकर्ता को सफलतापूर्वक पंजीकृत करके और दावों को मान्य करके समापन बिंदु सही ढंग से काम कर रहा है।

खोलें cypress/e2e/user.routes.spec.cy.js फ़ाइल करें और इसकी सामग्री को निम्नलिखित कोड के साथ अद्यतन करें।

describe('User Routes', () => {
it('registers a new user', () => {
cy.fixture('example').then((testUser) => {
cy.request({
method: 'POST',
url: `${baseUrl}/v1/api/register`,
body: testUser,
}).then((response) => {
expect(response.status).to.eq(201);
expect(response.body.message).to.eq('User registered successfully');
});
});
});

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

यह ध्यान देने योग्य है कि साइप्रस परीक्षणों के लिए सिंटैक्स मोचा परीक्षणों में उपयोग किए गए सिंटैक्स से काफी मिलता-जुलता है, जिसे साइप्रस ने अपनाया है।

अब, के लिए परीक्षण का वर्णन करें उपयोगकर्ताओं मार्ग। परीक्षण को यह सत्यापित करना चाहिए कि जब इस समापन बिंदु पर अनुरोध किया जाता है तो प्रतिक्रिया में उपयोगकर्ता डेटा शामिल होता है। इसे प्राप्त करने के लिए, निम्नलिखित कोड को इसमें जोड़ें वर्णन करना परीक्षण ब्लॉक.

 it('gets users data and the username matches test data', () => {
cy.fixture('example').then((expectedUserData) => {
cy.request({
method: 'GET',
url: `${baseUrl}/v1/api/users`,
}).then((response) => {
expect(response.status).to.eq(200);
const username = response.body[0].username;
expect(username).to.eq(expectedUserData.username);
});
});
});

अंत में, एक परीक्षण केस शामिल करें जो लॉगिन एंडपॉइंट का परीक्षण करेगा और दावा करेगा कि प्रतिक्रिया स्थिति 200 है, जो एक सफल लॉगिन प्रयास का संकेत देती है।

 it('logs in a user', () => { 
cy.fixture('example').then((loginData) => {
cy.request({
method: 'POST',
url: `${baseUrl}/v1/api/login`,
body: loginData,
}).then((response) => {
expect(response.status).to.eq(200);
});
});
});
});

परीक्षण चलाने के लिए, साइप्रस द्वारा प्रबंधित ब्राउज़र संस्करण पर वापस लौटें और उस विशिष्ट परीक्षण फ़ाइल का चयन करें जिसे आप चलाना चाहते हैं।

साइप्रस परीक्षण धावक परीक्षण चलाएगा और प्रत्येक परीक्षण मामले की उत्तीर्ण या असफल स्थिति दिखाते हुए उनके परिणाम रिकॉर्ड करेगा।

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

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

साइप्रस का उपयोग करके अपने संपूर्ण वेब अनुभव का परीक्षण करना

साइप्रस वेब अनुप्रयोगों के परीक्षण के लिए एक शानदार उपकरण है, जो फ्रंट-एंड और बैक-एंड दोनों के लिए परीक्षणों को सहजता से कवर करता है।

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