தமிழ்

சூப்பர்டெஸ்ட் பயன்படுத்தி ஏபிஐ சோதனைக்கு கவனம் செலுத்தும் ஒருங்கிணைப்பு சோதனைக்கான ஒரு விரிவான வழிகாட்டி. இதில் அமைப்பு, சிறந்த நடைமுறைகள் மற்றும் மேம்பட்ட நுட்பங்கள் உள்ளன.

ஒருங்கிணைப்பு சோதனை: சூப்பர்டெஸ்ட் மூலம் ஏபிஐ சோதனையில் தேர்ச்சி பெறுதல்

மென்பொருள் மேம்பாட்டில், தனிப்பட்ட கூறுகள் தனித்தனியாக சரியாக செயல்படுவதை உறுதி செய்வது (யூனிட் சோதனை) மிகவும் முக்கியமானது. இருப்பினும், இந்தக் கூறுகள் ஒன்றோடு ஒன்று தடையின்றி செயல்படுவதை சரிபார்ப்பதும் சமமாக முக்கியம். இங்குதான் ஒருங்கிணைப்பு சோதனை (integration testing) devreye girer. ஒருங்கிணைப்பு சோதனை என்பது ஒரு பயன்பாட்டிற்குள் உள்ள பல்வேறு தொகுதிகள் அல்லது சேவைகளுக்கு இடையேயான தொடர்புகளை சரிபார்ப்பதில் கவனம் செலுத்துகிறது. இந்தக் கட்டுரை ஒருங்கிணைப்பு சோதனை, குறிப்பாக சூப்பர்டெஸ்ட் மூலம் ஏபிஐ சோதனை பற்றி ஆழமாக ஆராய்கிறது. இது Node.js-ல் HTTP உறுதிப்படுத்தல்களைச் சோதிப்பதற்கான ஒரு சக்திவாய்ந்த மற்றும் பயனர் நட்பு நூலகமாகும்.

ஒருங்கிணைப்பு சோதனை என்றால் என்ன?

ஒருங்கிணைப்பு சோதனை என்பது தனிப்பட்ட மென்பொருள் தொகுதிகளை ஒன்றிணைத்து அவற்றை ஒரு குழுவாகச் சோதிக்கும் ஒரு வகை மென்பொருள் சோதனையாகும். இது ஒருங்கிணைக்கப்பட்ட அலகுகளுக்கு இடையேயான தொடர்புகளில் உள்ள குறைபாடுகளை வெளிப்படுத்துவதை நோக்கமாகக் கொண்டுள்ளது. யூனிட் சோதனையைப் போலல்லாமல், இது தனிப்பட்ட கூறுகளை மையமாகக் கொண்டது, ஒருங்கிணைப்பு சோதனை தொகுதிகளுக்கு இடையேயான தரவு ஓட்டம் மற்றும் கட்டுப்பாட்டு ஓட்டத்தை சரிபார்க்கிறது. பொதுவான ஒருங்கிணைப்பு சோதனை அணுகுமுறைகள் பின்வருமாறு:

ஏபிஐகளின் சூழலில், ஒருங்கிணைப்பு சோதனை என்பது வெவ்வேறு ஏபிஐகள் ஒன்றாகச் சரியாகச் செயல்படுவதையும், அவற்றுக்கிடையே அனுப்பப்படும் தரவு சீராக இருப்பதையும், ஒட்டுமொத்த அமைப்பு எதிர்பார்த்தபடி செயல்படுவதையும் சரிபார்ப்பதை உள்ளடக்குகிறது. உதாரணமாக, தயாரிப்பு மேலாண்மை, பயனர் அங்கீகாரம் மற்றும் கட்டண செயலாக்கத்திற்கான தனித்தனி ஏபிஐகளைக் கொண்ட ஒரு இ-காமர்ஸ் பயன்பாட்டை கற்பனை செய்து பாருங்கள். ஒருங்கிணைப்பு சோதனையானது இந்த ஏபிஐகள் சரியாகத் தொடர்புகொள்வதை உறுதிசெய்யும், இதனால் பயனர்கள் தயாரிப்புகளை உலாவவும், பாதுகாப்பாக உள்நுழையவும், வாங்குதல்களை முடிக்கவும் முடியும்.

ஏபிஐ ஒருங்கிணைப்பு சோதனை ஏன் முக்கியமானது?

ஏபிஐ ஒருங்கிணைப்பு சோதனை பல காரணங்களுக்காக மிகவும் முக்கியமானது:

ஒரு உலகளாவிய பயண முன்பதிவு தளத்தைக் கவனியுங்கள். விமான முன்பதிவுகள், ஹோட்டல் முன்பதிவுகள் மற்றும் பல்வேறு நாடுகளிலிருந்து வரும் கட்டண நுழைவாயில்களைக் கையாளும் ஏபிஐகளுக்கு இடையில் சுமூகமான தொடர்பை உறுதிசெய்ய ஏபிஐ ஒருங்கிணைப்பு சோதனை மிக முக்கியமானது. இந்த ஏபிஐகளைச் சரியாக ஒருங்கிணைக்கத் தவறினால் தவறான முன்பதிவுகள், கட்டணத் தோல்விகள் மற்றும் மோசமான பயனர் அனுபவத்திற்கு வழிவகுக்கும், இது தளத்தின் நற்பெயரையும் வருவாயையும் எதிர்மறையாகப் பாதிக்கும்.

சூப்பர்டெஸ்ட் அறிமுகம்: ஏபிஐ சோதனைக்கான ஒரு சக்திவாய்ந்த கருவி

சூப்பர்டெஸ்ட் என்பது HTTP கோரிக்கைகளைச் சோதிப்பதற்கான ஒரு உயர்-நிலை சுருக்கமாகும். இது உங்கள் பயன்பாட்டிற்கு கோரிக்கைகளை அனுப்பவும் பதில்களில் உறுதிப்படுத்தல்களைச் செய்யவும் ஒரு வசதியான மற்றும் சரளமான ஏபிஐ-ஐ வழங்குகிறது. Node.js-ன் மேல் கட்டமைக்கப்பட்ட சூப்பர்டெஸ்ட், குறிப்பாக Node.js HTTP சேவையகங்களைச் சோதிக்க வடிவமைக்கப்பட்டுள்ளது. இது ஜெஸ்ட் மற்றும் மோக்கா போன்ற பிரபலமான சோதனை கட்டமைப்புகளுடன் விதிவிலக்காக நன்றாக வேலை செய்கிறது.

சூப்பர்டெஸ்ட்டின் முக்கிய அம்சங்கள்:

உங்கள் சோதனை சூழலை அமைத்தல்

நாம் தொடங்குவதற்கு முன், ஒரு அடிப்படை சோதனை சூழலை அமைப்போம். உங்களிடம் Node.js மற்றும் npm (அல்லது yarn) நிறுவப்பட்டிருப்பதாக நாங்கள் கருதுகிறோம். நாங்கள் எங்கள் சோதனை கட்டமைப்பாக ஜெஸ்ட்டையும், ஏபிஐ சோதனைக்கு சூப்பர்டெஸ்ட்டையும் பயன்படுத்துவோம்.

  1. ஒரு Node.js திட்டத்தை உருவாக்கவும்:
mkdir api-testing-example
cd api-testing-example
npm init -y
  1. சார்புநிலைகளை நிறுவவும் (Install dependencies):
npm install --save-dev jest supertest
npm install express  # Or your preferred framework for creating the API
  1. ஜெஸ்ட்டை உள்ளமைக்கவும்: உங்கள் package.json கோப்பில் பின்வருவனவற்றைச் சேர்க்கவும்:
{
  "scripts": {
    "test": "jest"
  }
}
  1. ஒரு எளிய ஏபிஐ முனையத்தை உருவாக்கவும்: app.js (அல்லது அதுபோன்ற) என்ற பெயரில் ஒரு கோப்பை உருவாக்கி பின்வரும் குறியீட்டைச் சேர்க்கவும்:
const express = require('express');
const app = express();
const port = 3000;

app.get('/hello', (req, res) => {
  res.send('Hello, World!');
});

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

module.exports = app; // Export for testing

உங்கள் முதல் சூப்பர்டெஸ்ட் சோதனையை எழுதுதல்

இப்போது நமது சூழலை அமைத்துவிட்டோம், நமது ஏபிஐ முனையத்தை சரிபார்க்க ஒரு எளிய சூப்பர்டெஸ்ட் சோதனையை எழுதுவோம். உங்கள் திட்டத்தின் மூலத்தில் app.test.js (அல்லது அதுபோன்ற) என்ற பெயரில் ஒரு கோப்பை உருவாக்கவும்:

const request = require('supertest');
const app = require('./app');

describe('GET /hello', () => {
  it('responds with 200 OK and returns "Hello, World!"', async () => {
    const response = await request(app).get('/hello');
    expect(response.statusCode).toBe(200);
    expect(response.text).toBe('Hello, World!');
  });
});

விளக்கம்:

சோதனையை இயக்க, உங்கள் டெர்மினலில் பின்வரும் கட்டளையை இயக்கவும்:

npm test

எல்லாம் சரியாக அமைக்கப்பட்டிருந்தால், சோதனை வெற்றியடைவதை நீங்கள் காண்பீர்கள்.

மேம்பட்ட சூப்பர்டெஸ்ட் நுட்பங்கள்

சூப்பர்டெஸ்ட் மேம்பட்ட ஏபிஐ சோதனைக்கு பல அம்சங்களை வழங்குகிறது. அவற்றில் சிலவற்றை ஆராய்வோம்.

1. கோரிக்கை உள்ளடக்கங்களை அனுப்புதல் (Sending Request Bodies)

கோரிக்கை உள்ளடக்கத்தில் தரவை அனுப்ப, நீங்கள் .send() முறையைப் பயன்படுத்தலாம். உதாரணமாக, JSON தரவை ஏற்கும் ஒரு முனையத்தை உருவாக்குவோம்:

app.post('/users', express.json(), (req, res) => {
  const { name, email } = req.body;
  // Simulate creating a user in a database
  const user = { id: Date.now(), name, email };
  res.status(201).json(user);
});

சூப்பர்டெஸ்ட்டைப் பயன்படுத்தி இந்த முனையத்தை நீங்கள் சோதிப்பது இங்கே:

describe('POST /users', () => {
  it('creates a new user', async () => {
    const userData = {
      name: 'John Doe',
      email: 'john.doe@example.com',
    };

    const response = await request(app)
      .post('/users')
      .send(userData)
      .expect(201);

    expect(response.body).toHaveProperty('id');
    expect(response.body.name).toBe(userData.name);
    expect(response.body.email).toBe(userData.email);
  });
});

விளக்கம்:

2. தலைப்புகளை அமைத்தல் (Setting Headers)

உங்கள் கோரிக்கைகளில் தனிப்பயன் தலைப்புகளை அமைக்க, நீங்கள் .set() முறையைப் பயன்படுத்தலாம். அங்கீகார டோக்கன்கள், உள்ளடக்க வகைகள் அல்லது பிற தனிப்பயன் தலைப்புகளை அமைக்க இது பயனுள்ளதாக இருக்கும்.

describe('GET /protected', () => {
  it('requires authentication', async () => {
    const response = await request(app).get('/protected').expect(401);
  });

  it('returns 200 OK with a valid token', async () => {
    // Simulate getting a valid token
    const token = 'valid-token';

    const response = await request(app)
      .get('/protected')
      .set('Authorization', `Bearer ${token}`)
      .expect(200);

    expect(response.text).toBe('Protected Resource');
  });
});

விளக்கம்:

3. குக்கீகளைக் கையாளுதல்

சூப்பர்டெஸ்ட் குக்கீகளையும் கையாள முடியும். நீங்கள் .set('Cookie', ...) முறையைப் பயன்படுத்தி குக்கீகளை அமைக்கலாம், அல்லது குக்கீகளை அணுக மற்றும் மாற்ற .cookies பண்பைப் பயன்படுத்தலாம்.

4. கோப்பு பதிவேற்றங்களைச் சோதித்தல்

கோப்பு பதிவேற்றங்களைக் கையாளும் ஏபிஐ முனையங்களைச் சோதிக்க சூப்பர்டெஸ்ட்டைப் பயன்படுத்தலாம். கோரிக்கையுடன் கோப்புகளை இணைக்க நீங்கள் .attach() முறையைப் பயன்படுத்தலாம்.

5. உறுதிப்படுத்தல் நூலகங்களைப் பயன்படுத்துதல் (சாய்)

ஜெஸ்ட்டின் உள்ளமைக்கப்பட்ட உறுதிப்படுத்தல் நூலகம் பல நிகழ்வுகளுக்கு போதுமானதாக இருந்தாலும், சூப்பர்டெஸ்ட்டுடன் சாய் போன்ற சக்திவாய்ந்த உறுதிப்படுத்தல் நூலகங்களையும் நீங்கள் பயன்படுத்தலாம். சாய் மேலும் வெளிப்படையான மற்றும் நெகிழ்வான உறுதிப்படுத்தல் தொடரியலை வழங்குகிறது. சாய்-ஐப் பயன்படுத்த, நீங்கள் அதை நிறுவ வேண்டும்:

npm install --save-dev chai

பின்னர், நீங்கள் உங்கள் சோதனை கோப்பில் சாய்-ஐ இறக்குமதி செய்து அதன் உறுதிப்படுத்தல்களைப் பயன்படுத்தலாம்:

const request = require('supertest');
const app = require('./app');
const chai = require('chai');
const expect = chai.expect;

describe('GET /hello', () => {
  it('responds with 200 OK and returns "Hello, World!"', async () => {
    const response = await request(app).get('/hello');
    expect(response.statusCode).to.equal(200);
    expect(response.text).to.equal('Hello, World!');
  });
});

குறிப்பு: சாய் உடன் சரியாக வேலை செய்ய ஜெஸ்ட்டை நீங்கள் உள்ளமைக்க வேண்டியிருக்கலாம். இது பெரும்பாலும் சாய்-ஐ இறக்குமதி செய்து ஜெஸ்ட்டின் உலகளாவிய expect உடன் வேலை செய்ய அதை உள்ளமைக்கும் ஒரு அமைவு கோப்பைச் சேர்ப்பதை உள்ளடக்குகிறது.

6. ஏஜெண்ட்களை மீண்டும் பயன்படுத்துதல்

ஒரு குறிப்பிட்ட சூழலை (எ.கா., அங்கீகாரம்) அமைக்க வேண்டிய சோதனைகளுக்கு, ஒரு சூப்பர்டெஸ்ட் ஏஜெண்ட்டை மீண்டும் பயன்படுத்துவது பெரும்பாலும் நன்மை பயக்கும். இது ஒவ்வொரு சோதனை வழக்கிலும் தேவையற்ற அமைப்புக் குறியீட்டைத் தவிர்க்கிறது.

describe('Authenticated API Tests', () => {
  let agent;

  beforeAll(() => {
    agent = request.agent(app); // Create a persistent agent
    // Simulate authentication
    return agent
      .post('/login')
      .send({ username: 'testuser', password: 'password123' });
  });

  it('can access a protected resource', async () => {
    const response = await agent.get('/protected').expect(200);
    expect(response.text).toBe('Protected Resource');
  });

  it('can perform other actions that require authentication', async () => {
    // Perform other authenticated actions here
  });
});

இந்த எடுத்துக்காட்டில், நாம் beforeAll ஹூக்கில் ஒரு சூப்பர்டெஸ்ட் ஏஜெண்ட்டை உருவாக்கி, அந்த ஏஜெண்ட்டை அங்கீகரிக்கிறோம். describe பிளாக்கிற்குள் உள்ள அடுத்தடுத்த சோதனைகள் ஒவ்வொரு சோதனைக்கும் மீண்டும் அங்கீகரிக்காமல் இந்த அங்கீகரிக்கப்பட்ட ஏஜெண்ட்டை மீண்டும் பயன்படுத்தலாம்.

சூப்பர்டெஸ்ட் உடன் ஏபிஐ ஒருங்கிணைப்பு சோதனைக்கான சிறந்த நடைமுறைகள்

திறமையான ஏபிஐ ஒருங்கிணைப்பு சோதனையை உறுதிப்படுத்த, பின்வரும் சிறந்த நடைமுறைகளைக் கவனியுங்கள்:

தவிர்க்க வேண்டிய பொதுவான தவறுகள்

முடிவுரை

ஏபிஐ ஒருங்கிணைப்பு சோதனை மென்பொருள் மேம்பாட்டு செயல்முறையின் ஒரு முக்கிய பகுதியாகும். சூப்பர்டெஸ்ட்டைப் பயன்படுத்துவதன் மூலம், உங்கள் பயன்பாட்டின் தரம் மற்றும் நிலைத்தன்மையை உறுதிசெய்ய உதவும் விரிவான மற்றும் நம்பகமான ஏபிஐ ஒருங்கிணைப்பு சோதனைகளை நீங்கள் எளிதாக எழுதலாம். முழுமையான பணிப்பாய்வுகளைச் சோதித்தல், யதார்த்தமான தரவைப் பயன்படுத்துதல், உங்கள் சோதனைகளைத் தனிமைப்படுத்துதல் மற்றும் உங்கள் சோதனை செயல்முறையை தானியக்கமாக்குதல் ஆகியவற்றில் கவனம் செலுத்த நினைவில் கொள்ளுங்கள். இந்த சிறந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலம், நீங்கள் ஒருங்கிணைப்புச் சிக்கல்களின் அபாயத்தைக் கணிசமாகக் குறைத்து, மேலும் வலுவான மற்றும் நம்பகமான தயாரிப்பை வழங்க முடியும்.

நவீன பயன்பாடுகள் மற்றும் மைக்ரோ சர்வீசஸ் கட்டமைப்புகளை ஏபிஐகள் தொடர்ந்து இயக்கி வருவதால், வலுவான ஏபிஐ சோதனை, குறிப்பாக ஒருங்கிணைப்பு சோதனையின் முக்கியத்துவம் தொடர்ந்து வளரும். சூப்பர்டெஸ்ட் உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கு அவர்களின் ஏபிஐ தொடர்புகளின் நம்பகத்தன்மை மற்றும் தரத்தை உறுதிப்படுத்த சக்திவாய்ந்த மற்றும் அணுகக்கூடிய கருவித்தொகுப்பை வழங்குகிறது.