Angular অ্যাপ্লিকেশন ডেভেলপ করার সময় ডিবাগিং এবং টেস্টিং অত্যন্ত গুরুত্বপূর্ণ। ডিবাগিংয়ের মাধ্যমে কোডে ত্রুটি খুঁজে বের করা হয় এবং টেস্টিংয়ের মাধ্যমে কোডের কার্যকারিতা যাচাই করা হয়। Angular এ ডিবাগিং এবং টেস্টিং করার জন্য শক্তিশালী টুলস এবং পদ্ধতি রয়েছে, যা ডেভেলপারদের দ্রুত এবং কার্যকরভাবে অ্যাপ্লিকেশন উন্নয়নে সহায়ক হয়।
এই টিউটোরিয়ালে আমরা Angular অ্যাপ্লিকেশনে ডিবাগিং এবং টেস্টিং এর বিভিন্ন পদ্ধতি সম্পর্কে আলোচনা করব।
ডিবাগিং হল কোডের ত্রুটি খোঁজা এবং সেগুলি ঠিক করার প্রক্রিয়া। Angular অ্যাপ্লিকেশনের মধ্যে ডিবাগিং করার জন্য বিভিন্ন টুলস এবং কৌশল রয়েছে:
Angular অ্যাপ্লিকেশনের ডিবাগিং করার জন্য Chrome DevTools একটি শক্তিশালী টুল। এটি আপনার ব্রাউজারের ডেভেলপমেন্ট কনসোল ব্যবহার করে কোডের ত্রুটি দেখতে এবং সেগুলি সমাধান করতে সাহায্য করে।
Chrome DevTools ব্যবহার করতে:
Angular Augury হল একটি ব্রাউজার এক্সটেনশন যা Angular অ্যাপ্লিকেশন ডিবাগ করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে। এটি Angular কম্পোনেন্ট, ডিরেকটিভ, সার্ভিস ইত্যাদি চিহ্নিত করতে সাহায্য করে এবং তাদের স্টেট এবং ডেটা দেখতে সক্ষম করে।
Angular Augury ইনস্টল করার জন্য Chrome Web Store থেকে এটি ইনস্টল করুন এবং DevTools এ এটি চালু করুন।
console.log()
ব্যবহার করাযখন ছোট ত্রুটি থাকে, তখন কোডের মধ্যে console.log()
ব্যবহার করে আপনি ভেরিয়েবল এবং ফাংশনের মান পরীক্ষা করতে পারেন। যদিও এটি শুধুমাত্র ডিবাগিংয়ের জন্য, তবে এটি দ্রুত সমস্যা চিহ্নিত করার জন্য কার্যকর হতে পারে।
console.log(this.myVariable); // ভেরিয়েবলের মান দেখতে
Angular অ্যাপ্লিকেশন ডিবাগ করার জন্য আপনি breakpoints সেট করতে পারেন। ব্রাউজারের DevTools এ Sources ট্যাবে গিয়ে আপনি কোডের যে অংশে থামাতে চান সেখানে breakpoints সেট করতে পারেন। এতে কোড চলা থেমে যাবে এবং আপনি স্টেপ বাই স্টেপ কোড যাচাই করতে পারবেন।
Angular Testing অ্যাপ্লিকেশনের কোডের কার্যকারিতা যাচাই করার জন্য ব্যবহৃত হয়। Angular এ টেস্টিং করার জন্য সাধারণত দুটি টুল ব্যবহার করা হয়: Karma এবং Jasmine।
Jasmine একটি বিখ্যাত টেস্টিং ফ্রেমওয়ার্ক যা Angular অ্যাপ্লিকেশনের ইউনিট টেস্ট লেখার জন্য ব্যবহৃত হয়। এটি স্পেসিফিকেশন বেসড টেস্টিং (Behavior Driven Development) এর জন্য তৈরি করা হয়েছে।
উদাহরণ:
describe('MyComponent', () => {
it('should add two numbers', () => {
let result = 5 + 3;
expect(result).toBe(8);
});
});
এই কোডে describe
ব্লকটি একটি টেস্ট সেট তৈরি করে এবং it
ব্লকটি একটি স্পেসিফিক টেস্ট কেস তৈরি করে।
Karma একটি টেস্ট রানার যা Angular অ্যাপ্লিকেশনের টেস্ট চালানোর জন্য ব্যবহৃত হয়। এটি Jasmine এর সাথে কাজ করে এবং কোডের টেস্ট রেজাল্ট প্রদর্শন করে।
Karma চালাতে:
ng test
এই কমান্ডটি আপনার টেস্টগুলি চালু করবে এবং ব্রাউজারে টেস্ট রেজাল্ট দেখাবে।
Angular টেস্টিংয়ের জন্য কিছু বিল্ট-ইন ইউটিলিটি রয়েছে, যেমন:
TestBed: Angular এর টেস্টিং পরিবেশ তৈরি করতে ব্যবহৃত হয়। এটি কম্পোনেন্ট, সার্ভিস এবং ডিপেনডেন্সি ইঞ্জেকশন সিস্টেমের জন্য একটি টেস্টিং কনটেইনার সরবরাহ করে।
উদাহরণ:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ]
}).compileComponents();
}));
it('should create the component', () => {
const fixture = TestBed.createComponent(MyComponent);
const component = fixture.componentInstance;
expect(component).toBeTruthy();
});
E2E টেস্টিং পুরো অ্যাপ্লিকেশনটির কাজ কিভাবে করে তা যাচাই করে। Angular এ Protractor টুল ব্যবহৃত হয় E2E টেস্টিং করার জন্য।
E2E টেস্ট শুরু করতে:
ng e2e
এটি আপনার অ্যাপ্লিকেশনটি ব্রাউজারে খুলে এবং সমস্ত ইন্টারঅ্যাকশন এবং পেজ নেভিগেশন পরীক্ষা করে।
ডিবাগিং এবং টেস্টিং হল Angular অ্যাপ্লিকেশন ডেভেলপমেন্টের অপরিহার্য অংশ, যা কোডের গুণগত মান এবং কার্যকারিতা নিশ্চিত করতে সাহায্য করে।
Highcharts একটি শক্তিশালী লাইব্রেরি যা জাভাস্ক্রিপ্ট এবং Angular অ্যাপ্লিকেশনগুলিতে ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। তবে, কখনো কখনো Highcharts চার্টের ইনটিগ্রেশন বা কার্যকারিতায় কিছু সমস্যা হতে পারে, যেগুলো সঠিকভাবে ডিবাগ করার জন্য কিছু পদক্ষেপ অনুসরণ করা প্রয়োজন।
এই টিউটোরিয়ালে আমরা আলোচনা করব কিভাবে Angular অ্যাপে Highcharts এর সাথে কাজ করার সময় কমন সমস্যাগুলি ডিবাগ করা যায় এবং কীভাবে সেগুলোর সমাধান করা যেতে পারে।
Highcharts এর কাজ সঠিকভাবে চলছে কিনা তা যাচাই করতে প্রথমে কনসোল লোগিং ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ। Angular কম্পোনেন্টে বা সার্ভিসে ডেটা পাঠানোর বা লোড করার প্রক্রিয়া সঠিকভাবে ঘটছে কিনা তা বুঝতে কনসোল লোগিং সবচেয়ে সহজ পদ্ধতি।
উদাহরণ:
import { Component, OnInit } from '@angular/core';
import * as Highcharts from 'highcharts';
import { DataService } from './data.service'; // DataService ইমপোর্ট করা
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
Highcharts = Highcharts;
chartOptions: any;
constructor(private dataService: DataService) {}
ngOnInit() {
this.dataService.getData().subscribe(data => {
console.log('Received Data:', data); // ডেটা রিসিভের পর কনসোলে প্রিন্ট করা
this.chartOptions = {
chart: {
type: 'line'
},
title: {
text: 'Highcharts Debugging Example'
},
series: [{
name: 'Data Series',
data: data.values // নিশ্চিত করুন যে ডেটার গঠন সঠিক
}]
};
}, error => {
console.error('Error in data fetching:', error); // ডেটা লোডে সমস্যা থাকলে
});
}
}
এখানে console.log('Received Data:', data)
ব্যবহার করে আমরা রিসিভ করা ডেটা যাচাই করতে পারি। যদি ডেটা সঠিকভাবে না আসে, তাহলে এর মাধ্যমে আপনি দ্রুত সমস্যা চিহ্নিত করতে পারবেন।
Highcharts এর কনফিগারেশন বা chartOptions সঠিকভাবে সেটআপ না হলে চার্ট রেন্ডার হতে পারে না বা ভুলভাবে রেন্ডার হতে পারে। সেক্ষেত্রে আপনি chartOptions এর সমস্ত প্রপার্টি কনসোল লোগ করে চেক করতে পারেন।
উদাহরণ:
this.chartOptions = {
chart: {
type: 'column'
},
title: {
text: 'Sales Data'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May']
},
yAxis: {
title: {
text: 'Sales ($)'
}
},
series: [{
name: 'Sales',
data: [5, 10, 15, 20, 25]
}]
};
console.log('Chart Options:', this.chartOptions); // কনফিগারেশন যাচাই করা
এটি নিশ্চিত করবে যে চার্টের সমস্ত কনফিগারেশন সঠিকভাবে সেট করা আছে।
Highcharts এর API বা প্লাগইন ব্যবহারের সময় যদি কোনো ত্রুটি হয়, তবে Highcharts নিজেই কিছু error handling প্রদান করে। আপনি যদি Highcharts.error
ইভেন্ট ব্যবহার করেন, তবে আপনি অ্যাপ্লিকেশনের যে কোনো অংশে Highcharts এর ত্রুটিগুলি ধরতে পারবেন।
উদাহরণ:
import * as Highcharts from 'highcharts';
Highcharts.error = function(error) {
console.error('Highcharts Error:', error);
alert('Highcharts Error: ' + error.message); // আপনার অ্যাপ্লিকেশনের ক্ষেত্রে চাইলে একটি এ্যালার্টও দিতে পারেন
};
এটি কোনো ত্রুটি ঘটলে তা কনসোলে লগ করবে এবং একটি সতর্কতা প্রদান করবে।
Angular এবং Highcharts এর ডিবাগিংয়ের জন্য আপনি Browser Developer Tools (যেমন Chrome DevTools) ব্যবহার করতে পারেন।
এই টুলগুলির মাধ্যমে আপনি Highcharts এর rendering, data fetching, এবং অন্যান্য লজিক পর্যবেক্ষণ করতে পারবেন।
Highcharts এর একটি debugger মোডও রয়েছে যা আপনাকে চার্টের উন্নত ডিবাগging তথ্য প্রদান করে। এই মোডে Highcharts কিছু অতিরিক্ত ডিবাগ তথ্য দেখাবে যা আপনাকে সমস্যা চিহ্নিত করতে সাহায্য করবে।
Highcharts এর debugger mode সক্রিয় করতে আপনি নিচের মতো Highcharts.setOptions()
ব্যবহার করতে পারেন:
Highcharts.setOptions({
global: {
useUTC: false, // ইউটিসি টাইমজোন ব্যবহারের পরিবর্তে লোকাল টাইমজোন ব্যবহার করুন
timezone: 'local' // টাইমজোন সেট করা
}
});
Highcharts.chart('container', {
// আপনার চার্ট কনফিগারেশন
});
এটি ইউটিসি টাইমজোনের পরিবর্তে লোকাল টাইমজোনে ডেটা দেখাতে সহায়ক হতে পারে, বিশেষ করে সময় সম্পর্কিত ডেটা ব্যবহারের সময়।
Highcharts এর অফিশিয়াল ডকুমেন্টেশন (https://api.highcharts.com/) এবং API রেফারেন্সটি খুবই সহায়ক। এখানে আপনি বিভিন্ন চার্ট টিপস, কনফিগারেশন অপশন, এবং এর ব্যবহার পদ্ধতি খুঁজে পাবেন। ডকুমেন্টেশনটি পড়ার মাধ্যমে আপনি বিভিন্ন সমস্যা সমাধান করতে পারবেন।
Highcharts এর সাথে ডিবাগিং করার জন্য আপনি কনসোল লোগিং, chartOptions যাচাই, error handling, এবং ডেভেলপমেন্ট টুলস ব্যবহার করতে পারেন। এর মাধ্যমে আপনি দ্রুত এবং কার্যকরভাবে সমস্যাগুলি চিহ্নিত করতে পারবেন এবং সমাধান করতে পারবেন। Highcharts এর ডিবাগ মোড এবং API রেফারেন্স ব্যবহার করে আপনি আরো বিস্তারিত ডিবাগিং তথ্য পেতে পারেন।
Angular একটি শক্তিশালী এবং জনপ্রিয় ফ্রন্ট-এন্ড ফ্রেমওয়ার্ক হলেও, কিছু সাধারণ ত্রুটি বা এরর দেখা দিতে পারে যখন আপনি Angular অ্যাপ্লিকেশন ডেভেলপ করছেন। এই ত্রুটিগুলি সাধারণত ভুল কনফিগারেশন, ভুল সিনট্যাক্স, বা ভুল ব্যবহারকারীর ইনপুটের কারণে হয়। এখানে কিছু কমন Angular ত্রুটির সমাধান নিয়ে আলোচনা করা হলো।
এটি তখন ঘটে যখন আপনি Angular CLI এর কমান্ড ব্যবহার করার চেষ্টা করেন কিন্তু Angular CLI সঠিকভাবে ইনস্টল করা থাকে না অথবা পাথ ভুল থাকে।
Node.js এবং npm ইনস্টল নিশ্চিত করুন: Angular CLI ব্যবহারের জন্য Node.js এবং npm সঠিকভাবে ইনস্টল করা থাকতে হবে। ইনস্টলেশন চেক করতে:
node -v
npm -v
Angular CLI ইনস্টল করুন: যদি Angular CLI ইনস্টল না করা থাকে, তাহলে নিচের কমান্ডটি ব্যবহার করে Angular CLI ইনস্টল করুন:
npm install -g @angular/cli
এই ত্রুটি তখন হয় যখন আপনি একটি মডিউল বা লাইব্রেরি ইমপোর্ট করতে চেষ্টা করছেন, কিন্তু Angular তাকে সঠিকভাবে খুঁজে পাচ্ছে না।
npm install পুনরায় চালান: যদি নির্দিষ্ট লাইব্রেরি বা মডিউলটি খুঁজে না পাওয়া যায়, তবে প্রথমে প্রজেক্টের ডিপেনডেন্সি আপডেট করতে:
npm install
নির্দিষ্ট লাইব্রেরি ইনস্টল করুন: যদি কোনও নির্দিষ্ট প্যাকেজ মিসিং থাকে, যেমন @angular/forms
, rxjs
, বা অন্য কিছু, তবে আপনি সেই প্যাকেজটি ইনস্টল করতে পারেন:
npm install <package-name>
এই ত্রুটি তখন ঘটে যখন আপনি এমন একটি মেম্বার (যেমন ক্লাস, ফাংশন, বা কনস্ট্যান্ট) ইমপোর্ট করার চেষ্টা করছেন যা মডিউলে এক্সপোর্ট করা হয়নি।
এক্সপোর্ট চেক করুন: যেই মডিউল থেকে মেম্বার ইমপোর্ট করছেন, সেটি এক্সপোর্ট করা হচ্ছে কিনা তা চেক করুন। উদাহরণস্বরূপ:
// utils.ts
export class MyClass { }
// app.component.ts
import { MyClass } from './utils'; // নিশ্চিত করুন যে MyClass এক্সপোর্ট করা হয়েছে
এই ত্রুটি সাধারণত Angular এর change detection সিস্টেমের সঙ্গে সম্পর্কিত। এটি ঘটে যখন কোনো ডেটা অ্যাসাইনমেন্ট বা পরিবর্তন ngOnInit বা ngAfterViewInit এর পর ঘটতে থাকে।
Change Detection Strategy ব্যবহার করুন: আপনি ChangeDetectorRef
ব্যবহার করে ম্যানুয়ালি ডেটা আপডেট করতে পারেন:
import { ChangeDetectorRef } from '@angular/core';
constructor(private cdRef: ChangeDetectorRef) { }
ngAfterViewInit() {
this.cdRef.detectChanges(); // ডেটা চেঞ্জ চেক করতে
}
setTimeout ব্যবহার করুন: আপনি ডেটা আপডেট করার জন্য setTimeout
ব্যবহার করতে পারেন যা change detection শেষ হওয়ার পরে আপডেট হবে:
ngOnInit() {
setTimeout(() => {
this.data = newData; // ডেটা আপডেট করুন
});
}
এই ত্রুটি ঘটে যখন আপনি ngModel
ব্যবহার করার চেষ্টা করছেন, কিন্তু FormsModule
ইমপোর্ট করা হয়নি।
FormsModule ইমপোর্ট করুন: Angular Forms এর জন্য FormsModule
ইমপোর্ট করতে হয়। আপনার অ্যাপ মডিউলে এই মডিউলটি ইমপোর্ট করুন:
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [FormsModule]
})
এটি তখন ঘটে যখন Angular এর ডিপেন্ডেন্সি ইনজেকশন সিস্টেমে কোন প্রোভাইডার (যেমন সার্ভিস) পাওয়া যায় না।
প্রোভাইডার রেজিস্টার করুন: যদি আপনি একটি সার্ভিস ব্যবহার করতে চান, তবে অবশ্যই তাকে মডিউল বা কম্পোনেন্টে প্রোভাইডার হিসেবে রেজিস্টার করতে হবে:
@NgModule({
providers: [MyService]
})
এই ত্রুটি সাধারণত ভুল সিনট্যাক্সের কারণে হয়, যেমন অতিরিক্ত কমা, বন্ধনী বা ভুল প্যারামিটার ব্যবহৃত হওয়া।
tsconfig.json
ফাইলের কনফিগারেশন সঠিকভাবে সেট করা হয়েছে কিনা তা চেক করুন।Angular অ্যাপ্লিকেশনে বিভিন্ন ধরনের সাধারণ ত্রুটি বা এরর দেখা দিতে পারে। এই ত্রুটিগুলোর সমাধান সঠিকভাবে ডিপেনডেন্সি ম্যানেজমেন্ট, সঠিক সিনট্যাক্স ব্যবহার, এবং প্রোভাইডার বা মডিউল কনফিগারেশনের মাধ্যমে করা সম্ভব। প্রাপ্ত ত্রুটি বার্তাগুলি বিশ্লেষণ করে এবং সঠিক সমাধান প্রয়োগ করে আপনি Angular অ্যাপ্লিকেশন ডেভেলপমেন্টে সফল হতে পারবেন।
Angular এ ইউনিট টেস্টিং করা গুরুত্বপূর্ণ কারণ এটি অ্যাপ্লিকেশনের কোডের স্থিতিশীলতা এবং কার্যকারিতা নিশ্চিত করতে সাহায্য করে। যখন আপনি Highcharts ব্যবহার করছেন, তখন টেস্টিং আরও গুরুত্বপূর্ণ হয়ে ওঠে, বিশেষ করে যখন আপনার চার্টের ডেটা, কনফিগারেশন এবং ইন্টারঅ্যাকশনগুলি ডায়নামিক এবং কাস্টমাইজড হয়। Angular এর টেস্টিং ফ্রেমওয়ার্ক, যা Jasmine এবং Karma ব্যবহার করে, সেটির মাধ্যমে আমরা Highcharts চার্টের ইউনিট টেস্টিং করতে পারি।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে Angular অ্যাপ্লিকেশনে Highcharts এর জন্য ইউনিট টেস্টিং করা যায়।
ধরি, আমাদের অ্যাপের app.component.ts ফাইলে Highcharts এর একটি বেসিক চার্ট কনফিগারেশন তৈরি করা আছে।
import { Component, OnInit } from '@angular/core';
import * as Highcharts from 'highcharts';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
Highcharts = Highcharts; // Highcharts ব্যবহার করার জন্য
chartOptions: any;
ngOnInit() {
// Highcharts কনফিগারেশন
this.chartOptions = {
chart: {
type: 'column'
},
title: {
text: 'Highcharts টেস্টিং'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May']
},
yAxis: {
title: {
text: 'মান'
}
},
series: [{
name: 'Sales',
data: [10, 20, 30, 40, 50]
}]
};
}
}
এটি একটি বেসিক কলাম চার্ট তৈরি করেছে যেখানে "Sales" নামক সিরিজের ডেটা রয়েছে।
এখন, আমরা app.component.spec.ts ফাইলে এই চার্টের জন্য টেস্ট তৈরি করব। Angular এর টেস্টিং ফ্রেমওয়ার্ক Jasmine ব্যবহার করে এই টেস্টগুলো লিখতে হবে।
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';
import * as Highcharts from 'highcharts';
import { HighchartsChartModule } from 'highcharts-angular'; // HighchartsChartModule ইমপোর্ট করা
describe('AppComponent', () => {
let fixture: ComponentFixture<AppComponent>;
let component: AppComponent;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [AppComponent],
imports: [HighchartsChartModule] // HighchartsChartModule যোগ করা
}).compileComponents();
fixture = TestBed.createComponent(AppComponent);
component = fixture.componentInstance;
});
it('should create the component', () => {
expect(component).toBeTruthy();
});
it('should have chartOptions defined', () => {
expect(component.chartOptions).toBeDefined();
});
it('should have correct chart title', () => {
expect(component.chartOptions.title.text).toBe('Highcharts টেস্টিং');
});
it('should have categories on x-axis', () => {
expect(component.chartOptions.xAxis.categories).toEqual(['Jan', 'Feb', 'Mar', 'Apr', 'May']);
});
it('should have series data', () => {
expect(component.chartOptions.series[0].data).toEqual([10, 20, 30, 40, 50]);
});
});
HighchartsChartModule
ইমপোর্ট করা হয়েছে যাতে Highcharts এর সাথে ইন্টারঅ্যাকশন করা যায়।beforeEach()
ব্লকে প্রতিটি টেস্টের আগে কম্পোনেন্টটি তৈরি করা হয় এবং HighchartsChartModule যোগ করা হয়।chartOptions
ডিফাইনড এবং ঠিকঠাক কাজ করছে।chartOptions.title.text
সঠিকভাবে "Highcharts টেস্টিং" হিসেবে সেট করা হয়েছে।categories
সঠিকভাবে প্রদান করা হয়েছে।series
এর ডেটা সঠিকভাবে প্রদান করা হয়েছে।Angular এর Karma টেস্ট রানার ব্যবহার করে এই টেস্টগুলো রান করা হয়। আপনি টার্মিনালে নিচের কমান্ডটি ব্যবহার করে টেস্ট রান করতে পারেন:
ng test
এই কমান্ডটি Karma টেস্ট রানার চালু করবে এবং আপনি আপনার টেস্টের ফলাফল দেখতে পাবেন।
Highcharts এর ইউনিট টেস্টিং করার জন্য Angular এর টেস্টিং ফ্রেমওয়ার্ক Jasmine এবং Karma ব্যবহার করা হয়। এই টেস্টগুলো কম্পোনেন্টের ডেটা এবং কনফিগারেশন যাচাই করতে সহায়তা করে, যাতে অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা যায়। Highcharts এর মতো ডায়নামিক লাইব্রেরির ক্ষেত্রে টেস্টিং গুরুত্বপূর্ণ, কারণ এটি ডেটার উপর ভিত্তি করে রেন্ডারিং এবং অন্যান্য ইন্টারঅ্যাকশন পরিচালনা করে।
End-to-End (E2E) টেস্টিং হল একটি টেস্টিং প্রক্রিয়া যেখানে পুরো অ্যাপ্লিকেশনটি পরীক্ষা করা হয় যাতে নিশ্চিত করা যায় যে সব সিস্টেম কম্পোনেন্ট একসাথে সঠিকভাবে কাজ করছে। Angular অ্যাপ্লিকেশনগুলির জন্য দুইটি জনপ্রিয় E2E টেস্টিং টুল হলো Protractor এবং Cypress। এই টিউটোরিয়ালে আমরা আলোচনা করবো কীভাবে Angular অ্যাপ্লিকেশনে Protractor এবং Cypress ব্যবহার করে E2E টেস্টিং করা যায়।
Protractor হল Angular অ্যাপ্লিকেশনের জন্য একটি প্রাথমিক E2E টেস্টিং টুল, যা Angular স্পেসিফিক কার্যকারিতা যেমন ng-model, ng-bind ইত্যাদি সাপোর্ট করে। এটি Selenium WebDriver এর উপর ভিত্তি করে কাজ করে এবং Angular অ্যাপ্লিকেশনের UI টেস্টিং করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
Protractor দিয়ে E2E টেস্টিং শুরু করতে প্রথমে আপনাকে Protractor ইনস্টল করতে হবে।
npm install protractor --save-dev
Protractor ব্যবহার করার জন্য, আপনাকে webdriver-manager
ইনস্টল এবং আপডেট করতে হবে:
npm install -g webdriver-manager
webdriver-manager update
protractor.conf.js
ফাইল তৈরি করুন:
exports.config = {
directConnect: true,
framework: 'jasmine',
specs: ['e2e/**/*.spec.js'], // আপনার টেস্ট স্পেসিফিকেশন ফাইলের লোকেশন
capabilities: {
'browserName': 'chrome'
},
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
}
};
আপনি e2e/
ফোল্ডারের মধ্যে টেস্ট ফাইল তৈরি করে সেখানে টেস্ট লিখতে পারবেন। যেমন:
describe('Angular App', function() {
it('should have a title', function() {
browser.get('http://localhost:4200');
expect(browser.getTitle()).toEqual('My Angular App');
});
});
এখন টেস্ট রান করার জন্য নিচের কমান্ডটি ব্যবহার করুন:
protractor protractor.conf.js
এটি আপনার Angular অ্যাপ্লিকেশনটি খুলবে এবং নির্দিষ্ট টেস্ট ফাইলগুলো চালাবে।
Cypress হল একটি আধুনিক JavaScript টেস্টিং ফ্রেমওয়ার্ক যা দ্রুত এবং নির্ভুলভাবে End-to-End টেস্টিং করার জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের জন্য উন্নত ডিবাগিং এবং দ্রুত টেস্ট রান করার সুবিধা প্রদান করে। Cypress প্রকৃতপক্ষে ব্রাউজারের মধ্যেই চলে, যা দ্রুত এবং স্টেবল টেস্টিং সেশন নিশ্চিত করে।
Cypress দিয়ে E2E টেস্টিং শুরু করার জন্য প্রথমে আপনাকে Cypress ইনস্টল করতে হবে।
npm install cypress --save-dev
Cypress ইনস্টল হওয়ার পর, আপনি Cypress GUI খুলতে পারেন:
npx cypress open
এটি Cypress এর GUI খুলবে, যেখানে আপনি টেস্ট ফাইলগুলি তৈরি এবং রান করতে পারবেন।
Cypress নিজে থেকেই একটি cypress.json
কনফিগারেশন ফাইল তৈরি করে, যেখানে আপনার প্রয়োজনীয় সেটিংস থাকবে। আপনি সেটি কাস্টমাইজ করতে পারেন।
Cypress টেস্টের জন্য একটি টেস্ট ফাইল তৈরি করুন যেমন cypress/integration/app.spec.js
:
describe('Angular App', () => {
it('should have a title', () => {
cy.visit('http://localhost:4200');
cy.title().should('eq', 'My Angular App');
});
});
Cypress GUI খুলে আপনার টেস্ট রান করুন বা টার্মিনালে রান করুন:
npx cypress run
এটি টেস্ট রান করবে এবং টেস্ট রেজাল্ট টার্মিনালে প্রদর্শিত হবে।
বৈশিষ্ট্য | Protractor | Cypress |
---|---|---|
পারফরম্যান্স | Selenium WebDriver ব্যবহার করে, তাই কিছুটা স্লো। | দ্রুত, ব্রাউজারের মধ্যে চলে। |
সাপোর্ট | Angular অ্যাপ্লিকেশন স্পেসিফিক। | যেকোনো ওয়েব অ্যাপ্লিকেশন সাপোর্ট করে। |
ডিবাগিং | ডিবাগিং সহজ নয়, তবে browser.debug() এর মাধ্যমে কিছু সাহায্য পাওয়া যায়। | উন্নত ডিবাগিং সুবিধা, ব্রাউজারের কনসোল থেকে সরাসরি। |
কম্প্লেক্সিটি | কনফিগারেশন এবং সেটআপ অনেকটা কমপ্লেক্স। | সহজ সেটআপ এবং কনফিগারেশন। |
ব্রাউজার সাপোর্ট | শুধুমাত্র Chrome এবং Firefox সাপোর্ট। | সব ব্রাউজারে কাজ করে। |
Protractor এবং Cypress উভয়ই Angular অ্যাপ্লিকেশনগুলির জন্য End-to-End টেস্টিং সরঞ্জাম হিসেবে ব্যবহৃত হয়। Protractor Angular-র জন্য তৈরি করা হলেও, Cypress একটি আধুনিক টেস্টিং টুল যা দ্রুত, নির্ভুল এবং উন্নত ডিবাগিং সুবিধা প্রদান করে। Protractor এবং Cypress এর মধ্যে পার্থক্য রয়েছে, তবে Cypress নতুন এবং উন্নত প্রকল্পগুলির জন্য আরও জনপ্রিয় হয়ে উঠছে, কারণ এটি দ্রুত, স্থিতিশীল এবং ডেভেলপার-বান্ধব।
Read more