Unit Test এবং Integration Test তৈরি করা

KoaJS এর Testing এবং Debugging - কোআজেএস (KoaJS) - Web Development

207

Unit Testing এবং Integration Testing দুটি গুরুত্বপূর্ণ প্রক্রিয়া যা সফটওয়্যার ডেভেলপমেন্টের অংশ হিসেবে কোডের কার্যকারিতা নিশ্চিত করতে সাহায্য করে। KoaJS অ্যাপ্লিকেশনগুলির জন্য টেস্টিং তৈরি করার জন্য বিভিন্ন টেস্টিং ফ্রেমওয়ার্ক এবং লাইব্রেরি ব্যবহার করা হয়, যেমন Mocha, Chai, এবং Supertest

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে KoaJS অ্যাপ্লিকেশনগুলির জন্য Unit Test এবং Integration Test তৈরি করা যায়।


১. Unit Testing

Unit Testing হল ছোট ছোট কোড ইউনিটের (ফাংশন বা মেথড) জন্য টেস্ট তৈরি করা, যাতে কোডের প্রতিটি ইউনিট সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা যায়। KoaJS-এ, আমরা Mocha এবং Chai ব্যবহার করে ইউনিট টেস্ট তৈরি করতে পারি।

১.১. Mocha এবং Chai ইনস্টল করা

npm install mocha chai
  • Mocha: টেস্ট রানার।
  • Chai: অ্যাসারশন লাইব্রেরি যা আমাদের টেস্টে আসারশন বা যাচাই করতে সাহায্য করে।

১.২. Unit Test উদাহরণ (KoaJS)

ধরা যাক, আমাদের একটি সিম্পল ফাংশন রয়েছে যা দুটি সংখ্যার যোগফল বের করে।

// sum.js
function sum(a, b) {
  return a + b;
}

module.exports = sum;

এখন আমরা Mocha এবং Chai ব্যবহার করে এই ফাংশনের জন্য ইউনিট টেস্ট তৈরি করব।

// test/sum.test.js
const chai = require('chai');
const expect = chai.expect;
const sum = require('../sum');

describe('sum function', () => {
  it('should return 5 when adding 2 and 3', () => {
    const result = sum(2, 3);
    expect(result).to.equal(5);
  });

  it('should return -1 when adding -3 and 2', () => {
    const result = sum(-3, 2);
    expect(result).to.equal(-1);
  });
});

১.৩. Unit Test রান করা

npx mocha test/sum.test.js

আউটপুট:

sum function
    ✓ should return 5 when adding 2 and 3
    ✓ should return -1 when adding -3 and 2

  2 passing (12ms)

এখানে, আমরা sum ফাংশনের জন্য দুটি টেস্ট তৈরি করেছি:

  • প্রথমটি চেক করে যে ২ এবং ৩ যোগ করলে ৫ হয় কিনা।
  • দ্বিতীয়টি চেক করে যে -৩ এবং ২ যোগ করলে -১ হয় কিনা।

২. Integration Testing

Integration Testing হল একাধিক কোড ইউনিট বা সিস্টেম অংশ একত্রে কাজ করছে কিনা তা পরীক্ষা করা। এটি সাধারণত একাধিক মডিউল বা সার্ভিসের মধ্যে ইন্টারঅ্যাকশন পরীক্ষা করতে ব্যবহৃত হয়। KoaJS-এ Integration Testing করার জন্য আমরা Supertest ব্যবহার করি, যা HTTP রিকোয়েস্ট মডেল করে এবং সার্ভারের সাথে ইন্টিগ্রেশন টেস্ট করতে সাহায্য করে।

২.১. Supertest ইনস্টল করা

npm install supertest

২.২. Integration Test উদাহরণ (KoaJS)

ধরা যাক, আমাদের একটি KoaJS অ্যাপ্লিকেশন আছে যা একটি GET /users রাউট প্রদান করে। আমরা এই রাউটের জন্য Integration Test তৈরি করব।

// app.js
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();

router.get('/users', async (ctx) => {
  ctx.body = [{ id: 1, name: 'John Doe' }];
});

app.use(router.routes()).use(router.allowedMethods());

module.exports = app;

এখন আমরা Supertest ব্যবহার করে /users রাউটের জন্য Integration Test তৈরি করব।

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

describe('GET /users', () => {
  it('should return a list of users', async () => {
    const response = await request(app.callback()).get('/users');
    expect(response.status).toBe(200);
    expect(response.body).toEqual([{ id: 1, name: 'John Doe' }]);
  });
});

২.৩. Integration Test রান করা

npx mocha test/app.test.js

আউটপুট:

GET /users
    ✓ should return a list of users

  1 passing (8ms)

এখানে, আমরা /users রাউটের জন্য একটি Integration Test তৈরি করেছি যা:

  • GET /users রিকোয়েস্ট পাঠায়।
  • স্ট্যাটাস কোড এবং রেসপন্স বডি যাচাই করে নিশ্চিত হয় যে সার্ভার সঠিকভাবে রেসপন্স দিচ্ছে।

৩. Unit Test এবং Integration Test এর মধ্যে পার্থক্য

বৈশিষ্ট্যUnit TestIntegration Test
ফোকাসএকক ফাংশন বা মেথড পরীক্ষাএকাধিক ফাংশন বা সিস্টেমের ইন্টারঅ্যাকশন পরীক্ষা
ব্যবহারছোট ছোট ইউনিটের ফাংশনালিটি পরীক্ষাবিভিন্ন কোড ইউনিটের একত্রে কাজ করা পরীক্ষা
টেস্টিংসাধারণত মক বা স্টাব ব্যবহারপ্রকৃত সার্ভার বা সার্ভিসে রিকোয়েস্ট পাঠানো
পারফরম্যান্সদ্রুত এবং ছোটবেশি সময় নিতে পারে কারণ একাধিক মডিউল পরীক্ষা করা হয়

৪. Test Coverage

Test Coverage হল একটি কোড মেট্রিক যা পরিমাপ করে কতটুকু কোড টেস্ট করা হয়েছে। আপনি KoaJS অ্যাপ্লিকেশনগুলির জন্য nyc অথবা jest এর মাধ্যমে কোড কভারেজ দেখতে পারেন।

৪.১. nyc ইনস্টল করা

npm install --save-dev nyc

৪.২. nyc কনফিগারেশন এবং টেস্ট রান করা

npx nyc mocha

এই কমান্ডটি রান করলে আপনি দেখতে পারবেন কোডের কতটুকু অংশ টেস্ট করা হয়েছে এবং তা কিভাবে কভারেজ মানে পরিণত হয়েছে।


সারাংশ

KoaJS-এ Unit Testing এবং Integration Testing তৈরি করা সহজ এবং কার্যকর। Mocha এবং Chai ব্যবহার করে ইউনিট টেস্ট এবং Supertest ব্যবহার করে ইন্টিগ্রেশন টেস্ট তৈরি করা যেতে পারে। Unit Test কোডের প্রতিটি ইউনিট পরীক্ষা করে, যখন Integration Test একাধিক ইউনিটের পারস্পরিক কাজ পরীক্ষা করে। Test Coverage টুল ব্যবহার করে আপনি টেস্টের কভারেজ নিশ্চিত করতে পারেন, যা কোডের কার্যকারিতা এবং ভুল সনাক্তকরণে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...