ফাংশনাল টেস্টিং হল এমন একটি টেস্টিং পদ্ধতি যার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটির ব্যবহারকারীর দৃষ্টিকোণ থেকে কার্যকারিতা যাচাই করেন। Symfony-তে, ফাংশনাল টেস্টিং ব্যবহারকারীর ক্রিয়াকলাপগুলি সিমুলেট করে, যেমন একটি HTTP অনুরোধ তৈরি করা এবং সেই অনুরোধের প্রতিক্রিয়া পরীক্ষা করা। এটি নিশ্চিত করে যে পুরো অ্যাপ্লিকেশনটি প্রত্যাশিতভাবে কাজ করছে।
Symfony-তে ফাংশনাল টেস্টিং পরিচালনা করতে Symfony PHPUnit টেস্ট ফ্রেমওয়ার্ক ব্যবহৃত হয়, যা PHP-এর PHPUnit লাইব্রেরির উপর ভিত্তি করে। Symfony-তে ফাংশনাল টেস্ট চালানোর জন্য, আপনি WebTestCase ক্লাস ব্যবহার করবেন, যা HTTP অনুরোধ তৈরি এবং পরীক্ষার জন্য প্রয়োজনীয় সরঞ্জাম সরবরাহ করে।
Symfony ফাংশনাল টেস্টিং এর উপকারিতা
- ব্যবহারকারীর দৃষ্টিকোণ থেকে পরীক্ষা:
ফাংশনাল টেস্ট ব্যবহারকারীকে সিমুলেট করে, তাই এটি অ্যাপ্লিকেশনটি বাস্তব পরিস্থিতিতে কিভাবে কাজ করবে তা নিশ্চিত করে। - কমপ্লেক্স কার্যকারিতা পরীক্ষা:
এটি পুরো অ্যাপ্লিকেশনের কার্যকারিতা পরীক্ষা করে, যেমন রাউটিং, কন্ট্রোলার, এবং ভিউ ইন্টিগ্রেশন। - অ্যাপ্লিকেশন স্টেট যাচাই:
ফাংশনাল টেস্ট ডেটাবেসের সাথে যোগাযোগ করে, অ্যাপ্লিকেশনটির স্টেট এবং ফাংশনালিটি নিশ্চিত করতে সাহায্য করে।
Symfony ফাংশনাল টেস্ট তৈরি করা
Symfony-তে ফাংশনাল টেস্ট তৈরি করতে, আপনাকে WebTestCase ক্লাস ব্যবহার করতে হবে, যা HTTP অনুরোধ তৈরি করতে এবং প্রতিক্রিয়া যাচাই করতে সাহায্য করে।
WebTestCase ক্লাস ব্যবহার
WebTestCase ক্লাস Symfony-তে ফাংশনাল টেস্ট করার জন্য ব্যবহার করা হয়। এই ক্লাসটি HTTP অনুরোধ করতে এবং তার প্রতিক্রিয়া পরীক্ষা করতে ব্যবহৃত হয়। এটি Symfony\Bundle\FrameworkBundle\Test\WebTestCase থেকে ইনহেরিট করা হয়।
ফাংশনাল টেস্ট উদাহরণ
ফাংশনাল টেস্ট ক্লাস তৈরি করা: Symfony প্রজেক্টের
tests/ডিরেক্টরিতে একটি টেস্ট ক্লাস তৈরি করতে হবে।উদাহরণ:
// tests/Controller/HomeControllerTest.php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class HomeControllerTest extends WebTestCase { public function testHomePage() { // HTTP অনুরোধ তৈরি $client = static::createClient(); $client->request('GET', '/'); // রেসপন্স যাচাই $this->assertResponseIsSuccessful(); $this->assertSelectorTextContains('h1', 'Welcome to Symfony!'); } }এখানে:
createClient()ফাংশনটি একটি HTTP ক্লায়েন্ট তৈরি করে।request()ফাংশনটি একটি GET অনুরোধ তৈরি করে এবং/পাথকে পরীক্ষা করে।assertResponseIsSuccessful()ফাংশনটি চেক করে যে HTTP প্রতিক্রিয়া সফল (200 OK) ছিল কি না।assertSelectorTextContains()ফাংশনটি টেমপ্লেটের মধ্যে<h1>ট্যাগের মধ্যে "Welcome to Symfony!" টেক্সটটি উপস্থিত কিনা তা যাচাই করে।
ফাংশনাল টেস্ট চালানো: টেস্ট চালানোর জন্য, আপনি কমান্ড লাইনে PHPUnit ব্যবহার করবেন:
php bin/phpunitএই কমান্ডটি টেস্ট ফোল্ডারে থাকা সমস্ত টেস্ট ক্লাস চালাবে।
ফাংশনাল টেস্টে আরও কিছু জনপ্রিয় Assertion
Symfony ফাংশনাল টেস্টে বিভিন্ন ধরনের assertion ব্যবহার করা যায়। এখানে কিছু সাধারণ assertion এর উদাহরণ:
assertResponseIsSuccessful():
এটি HTTP রেসপন্সের স্ট্যাটাস কোড চেক করে। সফল রেসপন্সের জন্য এটি 200 OK আশা করে।$this->assertResponseIsSuccessful();assertResponseStatusCodeSame():
এটি নির্দিষ্ট HTTP স্ট্যাটাস কোড চেক করে।$this->assertResponseStatusCodeSame(404); // Expecting 404 Not FoundassertSelectorTextContains():
এটি একটি HTML সিলেক্টরের মধ্যে টেক্সটের উপস্থিতি পরীক্ষা করে।$this->assertSelectorTextContains('h1', 'Hello, World!');assertJsonContains():
এটি JSON রেসপন্সের মধ্যে একটি নির্দিষ্ট ডাটা চেক করে।$this->assertJsonContains([ 'name' => 'John Doe' ]);assertSelectorExists():
এটি HTML ডকুমেন্টে একটি সিলেক্টরের উপস্থিতি পরীক্ষা করে।$this->assertSelectorExists('div.main-content');assertRedirect():
এটি রিডাইরেক্ট সঠিকভাবে হচ্ছে কিনা তা চেক করে।$this->assertRedirectToRoute('homepage');
ফাংশনাল টেস্টে ডাটাবেস পরীক্ষা
ফাংশনাল টেস্টে আপনি ডাটাবেসের সাথে ইন্টারঅ্যাক্টও করতে পারেন, তবে সাধারণত টেস্টের জন্য একটি পৃথক ডাটাবেস ব্যবহার করা হয়। Symfony ফাংশনাল টেস্টের জন্য একটি সেপারেট ডাটাবেস তৈরি করতে phpunit.xml.dist ফাইল কনফিগার করা হয়, যাতে টেস্টের ডেটা মূল ডাটাবেসে প্রভাব ফেলবে না।
টেস্ট ডাটাবেস সেটআপ:
php bin/console doctrine:database:create --env=test
php bin/console doctrine:schema:update --force --env=test
Symfony ফাংশনাল টেস্টিং এর সুবিধা
- ব্যবহারকারীর প্রেক্ষাপটে পরীক্ষা:
এটি ব্যবহারকারীর দৃষ্টিকোণ থেকে অ্যাপ্লিকেশনটি পরীক্ষা করে, সুতরাং অ্যাপ্লিকেশনটি বাস্তব দুনিয়ায় কেমন কাজ করবে তা জানানো সহজ। - বিভিন্ন অংশের ইন্টিগ্রেশন পরীক্ষা:
একাধিক সার্ভিস বা কন্ট্রোলারের ইন্টিগ্রেশন পরীক্ষা করা যায়। - ডেটাবেস ইন্টিগ্রেশন পরীক্ষা:
ফাংশনাল টেস্ট ডেটাবেসের সাথে ইন্টিগ্রেটেড পরীক্ষার সুযোগ দেয়, যা গুরুত্বপূর্ণ। - অ্যাপ্লিকেশন কর্মক্ষমতা:
অ্যাপ্লিকেশনটির কর্মক্ষমতা যাচাই এবং বাস্তব পরিবেশে তা কেমন কাজ করবে তা নিশ্চিত করা যায়।
সারাংশ
ফাংশনাল টেস্টিং Symfony-তে একটি গুরুত্বপূর্ণ টেস্টিং পদ্ধতি, যা ব্যবহারকারীর অনুরোধ এবং প্রতিক্রিয়া যাচাই করার জন্য ব্যবহৃত হয়। WebTestCase ক্লাস ব্যবহার করে Symfony ফাংশনাল টেস্টিং সহজ এবং কার্যকর। এটি অ্যাপ্লিকেশনটির কার্যকারিতা যাচাই করার জন্য গুরুত্বপূর্ণ এবং ডেটাবেস, রাউটিং, কন্ট্রোলার এবং অন্যান্য ইন্টিগ্রেশন টেস্ট করার সুযোগ দেয়। Symfony-তে ফাংশনাল টেস্টিং আপনাকে একটি পূর্ণাঙ্গ ওয়েব অ্যাপ্লিকেশন পরিচালনা করতে সহায়তা করে।
Read more