PHPUnit documentation: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
PHPUnit ডকুমেন্টেশন: একটি বিস্তারিত গাইড
PHPUnit ডকুমেন্টেশন


PHPUnit হল PHP প্রোগ্রামিং ভাষার জন্য একটি বহুল ব্যবহৃত [[ইউনিট টেস্টিং]] ফ্রেমওয়ার্ক। এটি ডেভেলপারদের কোডের কার্যকারিতা যাচাই করতে এবং নিশ্চিত করতে সাহায্য করে যে তাদের অ্যাপ্লিকেশনগুলি প্রত্যাশিতভাবে কাজ করছে। এই নিবন্ধে, আমরা PHPUnit ডকুমেন্টেশনের বিভিন্ন দিক নিয়ে বিস্তারিত আলোচনা করব, যা আপনাকে এই শক্তিশালী সরঞ্জামটি ব্যবহার করে আপনার কোডের গুণমান উন্নত করতে সহায়ক হবে।
=== ভূমিকা ===


ভূমিকা
PHPUnit হল একটি জনপ্রিয় এবং বহুল ব্যবহৃত [[ইউনিট টেস্টিং ফ্রেমওয়ার্ক]] যা PHP প্রোগ্রামিং ভাষায় লেখা কোড পরীক্ষা করার জন্য ব্যবহৃত হয়। এটি [[এক্সট্রিম প্রোগ্রামিং]] এবং [[টেস্ট-ড্রাইভেন ডেভেলপমেন্ট]] (TDD) পদ্ধতির সাথে সঙ্গতিপূর্ণ। PHPUnit ডেভেলপারদের নির্ভরযোগ্য এবং ত্রুটিমুক্ত কোড তৈরি করতে সাহায্য করে। এই নিবন্ধে, PHPUnit-এর বিভিন্ন দিক, যেমন - এর বৈশিষ্ট্য, ইনস্টলেশন, কনফিগারেশন, এবং ব্যবহারের নিয়মাবলী বিস্তারিতভাবে আলোচনা করা হবে।
ইউনিট টেস্টিং হল [[সফটওয়্যার টেস্টিং]] এর একটি গুরুত্বপূর্ণ অংশ। PHPUnit এর মাধ্যমে, আপনি আপনার কোডের প্রতিটি ইউনিটকে আলাদাভাবে পরীক্ষা করতে পারেন, যা ত্রুটিগুলি দ্রুত খুঁজে বের করতে এবং সমাধান করতে সাহায্য করে। PHPUnit একটি এক্সটেনসিবল ফ্রেমওয়ার্ক, যা আপনাকে বিভিন্ন ধরনের টেস্টিং পরিস্থিতি তৈরি করতে এবং কাস্টমাইজ করতে দেয়।


PHPUnit এর মূল ধারণা
=== PHPUnit এর বৈশিষ্ট্য ===
PHPUnit ব্যবহারের আগে, এর কিছু মৌলিক ধারণা সম্পর্কে জানা জরুরি:


*  টেস্ট স্যুট (Test Suite): এটি পরীক্ষার একটি সংগ্রহ, যেখানে একাধিক [[টেস্ট কেস]] অন্তর্ভুক্ত থাকে।
PHPUnit অসংখ্য বৈশিষ্ট্য সরবরাহ করে যা এটিকে PHP কোড পরীক্ষার জন্য একটি শক্তিশালী হাতিয়ার করে তুলেছে। এর মধ্যে কয়েকটি প্রধান বৈশিষ্ট্য নিচে উল্লেখ করা হলো:
*  টেস্ট কেস (Test Case): এটি একটি নির্দিষ্ট ইউনিটের কার্যকারিতা পরীক্ষা করার জন্য তৈরি করা হয়।
*  অ্যাস assertions (Assertions): এগুলি হল সেই শর্ত যা যাচাই করে যে আপনার কোড প্রত্যাশিত ফলাফল দিচ্ছে কিনা।
*  টেস্ট রানার (Test Runner): এটি টেস্ট স্যুট চালায় এবং ফলাফল প্রদর্শন করে।


PHPUnit ইন্সটল করা
*  '''বিভিন্ন ধরনের অ্যাসারশন (Assertion):''' PHPUnit বিভিন্ন ধরনের অ্যাসারশন প্রদান করে, যা পরীক্ষার ফলাফল যাচাই করতে ব্যবহৃত হয়। যেমন: assertEquals(), assertTrue(), assertFalse(), assertNull(), assertNotNull() ইত্যাদি। [[অ্যাসারশন]]গুলি প্রত্যাশিত ফলাফল এবং প্রকৃত ফলাফলের মধ্যে তুলনা করে।
PHPUnit ইন্সটল করার জন্য, আপনার কম্পিউটারে [[PHP]] এবং [[Composer]] ইন্সটল করা থাকতে হবে। Composer ব্যবহার করে PHPUnit ইন্সটল করার জন্য নিম্নলিখিত কমান্ডটি চালান:
*  '''টেস্ট স্যুট (Test Suite):''' PHPUnit আপনাকে একাধিক টেস্ট কেসকে একটি টেস্ট স্যুট-এ একত্রিত করার সুযোগ দেয়, যা পুরো অ্যাপ্লিকেশন বা নির্দিষ্ট অংশের জন্য পরীক্ষা চালাতে সহায়ক।
*  '''টেস্ট রানার (Test Runner):''' PHPUnit-এর একটি শক্তিশালী টেস্ট রানার রয়েছে, যা টেস্ট স্যুটগুলি পরিচালনা করে এবং পরীক্ষার ফলাফল প্রদর্শন করে।
*  '''মকিং এবং স্টাবিং (Mocking and Stubbing):''' জটিল নির্ভরতা (Dependencies) দূর করার জন্য PHPUnit মকিং এবং স্টাবিং সমর্থন করে। [[মকিং]] এবং [[স্টাবিং]] ব্যবহার করে, আপনি পরীক্ষার সময় অন্যান্য উপাদানগুলির আচরণ নিয়ন্ত্রণ করতে পারেন।
*  '''ডেটা প্রোভাইডার (Data Provider):''' বিভিন্ন ইনপুট ডেটা ব্যবহার করে একই টেস্ট মেথড চালানোর জন্য ডেটা প্রোভাইডার ব্যবহার করা হয়।
*  '''কভারেজ বিশ্লেষণ (Code Coverage Analysis):''' PHPUnit কোড কভারেজ বিশ্লেষণ করতে পারে, যা আপনার কোডের কত শতাংশ টেস্ট করা হয়েছে তা জানতে সাহায্য করে।
 
=== PHPUnit ইনস্টলেশন ===
 
PHPUnit ইনস্টল করার জন্য কয়েকটি পদ্ধতি রয়েছে। নিচে সবচেয়ে সহজ পদ্ধতিটি আলোচনা করা হলো:
 
১. '''Composer ব্যবহার করে ইনস্টলেশন:''' PHPUnit ইনস্টল করার সবচেয়ে সহজ উপায় হল Composer ব্যবহার করা। আপনার প্রোজেক্ট ডিরেক্টরিতে Composer ইনস্টল করা থাকলে, নিচের কমান্ডটি চালান:


```bash
```bash
Line 21: Line 26:
```
```


এই কমান্ডটি আপনার প্রোজেক্টে PHPUnit এবং এর dependencies ইন্সটল করবে।
২. '''ম্যানুয়ালি ইনস্টলেশন:''' আপনি PHPUnit-এর অফিসিয়াল ওয়েবসাইট থেকে ডাউনলোড করে ম্যানুয়ালি ইনস্টল করতে পারেন। ডাউনলোড করার পর, আপনাকে আপনার সিস্টেমের PATH-এ PHPUnit-এর bin ডিরেক্টরি যোগ করতে হবে।
 
=== PHPUnit কনফিগারেশন ===


PHPUnit কনফিগারেশন
PHPUnit কনফিগার করার জন্য, আপনাকে একটি `phpunit.xml` ফাইল তৈরি করতে হবে। এই ফাইলে, আপনি আপনার টেস্ট স্যুট, টেস্ট রানার এবং অন্যান্য সেটিংস কনফিগার করতে পারেন। একটি সাধারণ `phpunit.xml` ফাইলের উদাহরণ নিচে দেওয়া হলো:
PHPUnit কনফিগার করার জন্য, আপনাকে একটি `phpunit.xml` ফাইল তৈরি করতে হবে। এই ফাইলে, আপনি আপনার টেস্ট স্যুট, টেস্ট কেস এবং অন্যান্য কনফিগারেশন সেটিংস নির্দিষ্ট করতে পারেন। একটি সাধারণ `phpunit.xml` ফাইলের উদাহরণ নিচে দেওয়া হলো:


```xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php" colors="true">
<phpunit bootstrap="vendor/autoload.php">
     <testsuites>
     <testsuites>
         <testsuite name="My Project Test Suite">
         <testsuite name="My Project Test Suite">
Line 37: Line 43:
```
```


এই কনফিগারেশন ফাইলে, `bootstrap` অ্যাট্রিবিউটটি আপনার প্রোজেক্টের autoload ফাইলটি নির্দিষ্ট করে এবং `directory` অ্যাট্রিবিউটটি আপনার টেস্ট ফাইলগুলির অবস্থান নির্দেশ করে।
এই কনফিগারেশন ফাইলে, `bootstrap` অ্যাট্রিবিউটটি আপনার প্রোজেক্টের অটোলোডার ফাইল নির্দেশ করে এবং `directory` অ্যাট্রিবিউটটি আপনার টেস্ট ফাইলগুলির অবস্থান নির্দেশ করে।


টেস্ট কেস লেখা
=== PHPUnit ব্যবহারবিধি ===
PHPUnit এ একটি টেস্ট কেস লেখার জন্য, আপনাকে `PHPUnit\Framework\TestCase` ক্লাসটি এক্সটেন্ড করতে হবে। প্রতিটি টেস্ট কেস একটি বা একাধিক মেথড ধারণ করে, যা বিভিন্ন অ্যাস assertions ব্যবহার করে কোডের কার্যকারিতা পরীক্ষা করে।


একটি উদাহরণ টেস্ট কেস নিচে দেওয়া হলো:
PHPUnit ব্যবহার করার জন্য, আপনাকে প্রথমে একটি টেস্ট কেস তৈরি করতে হবে। টেস্ট কেস হলো একটি PHP ক্লাস যা `PHPUnit\Framework\TestCase` ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। প্রতিটি টেস্ট কেসে, আপনি বিভিন্ন টেস্ট মেথড তৈরি করতে পারেন, যেখানে আপনি আপনার কোড পরীক্ষা করবেন।
 
একটি সাধারণ টেস্ট কেসের উদাহরণ নিচে দেওয়া হলো:


```php
```php
Line 58: Line 65:
     }
     }
}
}
```
এই টেস্ট কেসে, `testAdd` মেথডটি `MyClass` এর `add` মেথডটি পরীক্ষা করে। `assertEquals` অ্যাস assertion ব্যবহার করে যাচাই করা হয় যে `add` মেথডটি প্রত্যাশিত ফলাফল (5) দিচ্ছে কিনা।
অ্যাস assertions এর প্রকারভেদ
PHPUnit বিভিন্ন ধরনের অ্যাস assertions প্রদান করে, যা আপনাকে বিভিন্ন পরিস্থিতিতে কোডের কার্যকারিতা পরীক্ষা করতে সাহায্য করে। কিছু গুরুত্বপূর্ণ অ্যাস assertions নিচে উল্লেখ করা হলো:
*  `assertEquals($expected, $actual)`: দুটি মান সমান কিনা তা যাচাই করে।
*  `assertSame($expected, $actual)`: দুটি মান একই কিনা (same object) তা যাচাই করে।
*  `assertTrue($condition)`: একটি শর্ত সত্য কিনা তা যাচাই করে।
*  `assertFalse($condition)`: একটি শর্ত মিথ্যা কিনা তা যাচাই করে।
*  `assertNull($variable)`: একটি ভেরিয়েবল `null` কিনা তা যাচাই করে।
*  `assertNotNull($variable)`: একটি ভেরিয়েবল `null` না কিনা তা যাচাই করে।
*  `assertEmpty($variable)`: একটি ভেরিয়েবল খালি কিনা তা যাচাই করে।
*  `assertNotEmpty($variable)`: একটি ভেরিয়েবল খালি না কিনা তা যাচাই করে।
*  `assertGreaterThan($expected, $actual)`: একটি মান অন্য মানের চেয়ে বড় কিনা তা যাচাই করে।
*  `assertLessThan($expected, $actual)`: একটি মান অন্য মানের চেয়ে ছোট কিনা তা যাচাই করে।
টেস্ট স্যুট চালানো
টেস্ট স্যুট চালানোর জন্য, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
```bash
./vendor/bin/phpunit
```
এই কমান্ডটি আপনার `phpunit.xml` ফাইলে নির্দিষ্ট করা টেস্ট স্যুট চালাবে এবং ফলাফল প্রদর্শন করবে।
মকিং (Mocking)
মকিং হল একটি গুরুত্বপূর্ণ কৌশল, যা আপনাকে আপনার কোডের dependencies গুলোকে isolate করতে সাহায্য করে। PHPUnit এর `Mockery` লাইব্রেরি ব্যবহার করে আপনি সহজেই মক অবজেক্ট তৈরি করতে পারেন।
একটি উদাহরণ নিচে দেওয়া হলো:
```php
<?php
use Mockery;
class MyClassTest extends TestCase
{
    public function testDoSomething()
    {
        $mock = Mockery::mock('MyDependency');
        $mock->shouldReceive('someMethod')->with('someValue')->andReturn('mockedResult');
        $myClass = new MyClass($mock);
        $result = $myClass->doSomething();


        $this->assertEquals('mockedResult', $result);
class MyClass {
    public function add($a, $b) {
        return $a + $b;
     }
     }
}
}
```
```


এই উদাহরণে, `MyDependency` ক্লাসের একটি মক অবজেক্ট তৈরি করা হয়েছে এবং `someMethod` কল করার জন্য একটি expectation সেট করা হয়েছে।
এই উদাহরণে, `MyClassTest` হলো একটি টেস্ট কেস যা `MyClass` ক্লাসের `add` মেথডটি পরীক্ষা করে। `assertEquals` অ্যাসারশন ব্যবহার করে, আমরা যাচাই করি যে `add` মেথডটি প্রত্যাশিত ফলাফল (5) প্রদান করছে কিনা।


ডেটা প্রোভাইডার (Data Provider)
=== টেস্ট রান করা ===
ডেটা প্রোভাইডার আপনাকে বিভিন্ন ইনপুট ডেটা ব্যবহার করে একই টেস্ট কেস একাধিকবার চালানোর সুযোগ দেয়। এটি বিশেষ করে boundary testing এবং edge case testing এর জন্য উপযোগী।


```php
টেস্ট রান করার জন্য, আপনি কমান্ড লাইন ব্যবহার করতে পারেন। আপনার প্রোজেক্ট ডিরেক্টরিতে নেভিগেট করে নিচের কমান্ডটি চালান:
<?php


use PHPUnit\Framework\TestCase;
```bash
 
./vendor/bin/phpunit
class MyClassTest extends TestCase
{
    public static function dataProviderForAdd()
    {
        return [
            [2, 3, 5],
            [1, 1, 2],
            [0, 0, 0],
        ];
    }
 
    /**
    * @dataProvider dataProviderForAdd
    */
    public function testAddWithDataProvider($a, $b, $expected)
    {
        $myClass = new MyClass();
        $result = $myClass->add($a, $b);
        $this->assertEquals($expected, $result);
    }
}
```
```


এই উদাহরণে, `dataProviderForAdd` মেথডটি বিভিন্ন ইনপুট ডেটা প্রদান করে, যা `testAddWithDataProvider` মেথডটি ব্যবহার করে।
এই কমান্ডটি আপনার `phpunit.xml` ফাইলে কনফিগার করা টেস্ট স্যুটগুলি চালাবে এবং পরীক্ষার ফলাফল প্রদর্শন করবে।


কভারেজ (Coverage) রিপোর্টিং
=== আরও কিছু গুরুত্বপূর্ণ বিষয় ===
PHPUnit আপনাকে আপনার কোডের কভারেজ রিপোর্ট তৈরি করতে সাহায্য করে। কভারেজ রিপোর্ট আপনাকে জানতে দেয় যে আপনার কোডের কত শতাংশ টেস্ট কেস দ্বারা আচ্ছাদিত। কভারেজ রিপোর্ট তৈরি করার জন্য, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:


```bash
*  '''ফ্যাক্টরি ফাংশন (Factory Functions):''' জটিল অবজেক্ট তৈরি করার জন্য ফ্যাক্টরি ফাংশন ব্যবহার করা যেতে পারে, যা টেস্ট কেসকে আরও সহজ করে। [[ফ্যাক্টরি ফাংশন]] ব্যবহার করে আপনি আপনার কোডের টেস্টেবিলিটি বাড়াতে পারেন।
./vendor/bin/phpunit --coverage-html coverage
*  '''টেস্ট ডাবল (Test Doubles):''' মকিং এবং স্টাবিংয়ের জন্য টেস্ট ডাবল ব্যবহার করা হয়। এটি নির্ভরতাগুলো নিয়ন্ত্রণ করতে সাহায্য করে।
```
*  '''বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট (BDD):''' PHPUnit BDD-এর সাথেও ব্যবহার করা যায়। [[বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট]] আপনার কোডের স্পেসিফিকেশন লেখার একটি পদ্ধতি।
*  '''কন্টিনিউয়াস ইন্টিগ্রেশন (CI):''' PHPUnit কন্টিনিউয়াস ইন্টিগ্রেশন সিস্টেমে ব্যবহার করা যায়, যা কোড পরিবর্তনের সাথে সাথে স্বয়ংক্রিয়ভাবে পরীক্ষা চালায়। [[কন্টিনিউয়াস ইন্টিগ্রেশন]] আপনার কোডের গুণগত মান নিশ্চিত করে।
*  '''কোড কোয়ালিটি টুলস (Code Quality Tools):''' PHPUnit অন্যান্য কোড কোয়ালিটি টুলের সাথে ব্যবহার করা যায়, যেমন - PHPStan এবং Psalm।


এই কমান্ডটি `coverage` ডিরেক্টরিতে একটি HTML কভারেজ রিপোর্ট তৈরি করবে।
=== উন্নত কনফিগারেশন ===


PHPUnit এর সুবিধা
`phpunit.xml` ফাইলে আপনি আরও অনেক কনফিগারেশন অপশন ব্যবহার করতে পারেন। কিছু গুরুত্বপূর্ণ অপশন নিচে উল্লেখ করা হলো:
*  কোডের গুণমান বৃদ্ধি করে।
*  ত্রুটিগুলি দ্রুত খুঁজে বের করতে সাহায্য করে।
*  রিফ্যাক্টরিং (refactoring) করার সময় আত্মবিশ্বাস যোগায়।
*  কোডের ডকুমেন্টেশন হিসেবে কাজ করে।
*  টিমওয়ার্ক (teamwork) উন্নত করে।


PHPUnit এর বিকল্প
*  '''backupGlobals:''' এই অপশনটি গ্লোবাল ভেরিয়েবলগুলির ব্যাকআপ তৈরি করে, যাতে আপনার টেস্টগুলি গ্লোবাল ভেরিয়েবলগুলিকে প্রভাবিত না করে।
PHPUnit ছাড়াও, PHP-এর জন্য আরও কিছু ইউনিট টেস্টিং ফ্রেমওয়ার্ক রয়েছে, যেমন:
*  '''bootstrap:''' এই অপশনটি আপনার প্রোজেক্টের অটোলোডার ফাইল বা অন্য কোনো ইনিশিয়ালাইজেশন স্ক্রিপ্ট নির্দিষ্ট করে।
*  '''cacheResult:''' এই অপশনটি টেস্টের ফলাফল ক্যাশে করে, যাতে পরবর্তী রানগুলিতে পরীক্ষা দ্রুত হয়।
*  '''colors:''' এই অপশনটি টেস্ট রানারের আউটপুটে রঙ যোগ করে, যা ফলাফলগুলি সহজে বুঝতে সাহায্য করে।
*  '''convertErrorsToExceptions:''' এই অপশনটি PHP-এর ত্রুটিগুলিকে ব্যতিক্রম (Exceptions)-এ রূপান্তরিত করে, যা টেস্ট কেসে ধরা যেতে পারে।


*  SimpleTest
=== রিসোর্স এবং আরও তথ্য ===
*  Codeception


উপসংহার
*  [[PHPUnit এর অফিসিয়াল ওয়েবসাইট]]
PHPUnit একটি শক্তিশালী এবং বহুল ব্যবহৃত ইউনিট টেস্টিং ফ্রেমওয়ার্ক, যা আপনার PHP অ্যাপ্লিকেশনগুলির গুণমান উন্নত করতে সহায়ক। এই নিবন্ধে, আমরা PHPUnit ডকুমেন্টেশনের বিভিন্ন দিক নিয়ে আলোচনা করেছি। আশা করি, এই গাইডটি আপনাকে PHPUnit ব্যবহার করে আপনার কোডের কার্যকারিতা পরীক্ষা করতে এবং উন্নত করতে সাহায্য করবে।
*  [[PHPUnit এর ডকুমেন্টেশন]]
*  [[Composer এর অফিসিয়াল ওয়েবসাইট]]
*  [[টেস্ট-ড্রাইভেন ডেভেলপমেন্ট (TDD)]]
*  [[ইউনিট টেস্টিং]]
*  [[মকিং]]
*  [[স্টাবিং]]
*  [[অ্যাসারশন]]
*  [[ফ্যাক্টরি ফাংশন]]
*  [[টেস্ট ডাবল]]
*  [[বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট (BDD)]]
*  [[কন্টিনিউয়াস ইন্টিগ্রেশন (CI)]]
*  [[কোড কোয়ালিটি টুলস]]
*  [[PHPStan]]
*  [[Psalm]]
*  [[এক্সট্রিম প্রোগ্রামিং]]
*  [[কোড কভারেজ]]
*  [[ডেটা প্রোভাইডার]]
*  [[টেস্ট স্যুট]]
*  [[টেস্ট রানার]]


আরও জানতে, আপনি নিম্নলিখিত লিঙ্কগুলি অনুসরণ করতে পারেন:
=== উপসংহার ===


PHPUnit Official Documentation: [https://phpunit.de/](https://phpunit.de/)
PHPUnit একটি শক্তিশালী এবং নমনীয় ইউনিট টেস্টিং ফ্রেমওয়ার্ক, যা PHP ডেভেলপারদের জন্য অপরিহার্য। এই নিবন্ধে, PHPUnit-এর মূল বৈশিষ্ট্য, ইনস্টলেশন, কনফিগারেশন এবং ব্যবহারের নিয়মাবলী বিস্তারিতভাবে আলোচনা করা হয়েছে। PHPUnit ব্যবহার করে, আপনি আপনার কোডের গুণগত মান উন্নত করতে এবং ত্রুটিমুক্ত অ্যাপ্লিকেশন তৈরি করতে পারবেন। নিয়মিতভাবে ইউনিট টেস্টিং করা আপনার প্রোজেক্টের দীর্ঘমেয়াদী সাফল্যের জন্য অত্যন্ত গুরুত্বপূর্ণ।
*  Mockery Documentation: [https://mockery.phpunit.de/](https://mockery.phpunit.de/)
*  Unit Testing: [https://www.guru99.com/unit-testing-tutorial.html](https://www.guru99.com/unit-testing-tutorial.html)
*  Software Testing: [https://www.tutorialspoint.com/software_testing/index.htm](https://www.tutorialspoint.com/software_testing/index.htm)
PHP Documentation: [https://www.php.net/docs.php](https://www.php.net/docs.php)
*  Composer Documentation: [https://getcomposer.org/doc/](https://getcomposer.org/doc/)
*  Boundary Value Analysis: [https://www.softwaretestinghelp.com/boundary-value-analysis/](https://www.softwaretestinghelp.com/boundary-value-analysis/)
*  Edge Case Testing: [https://www.testim.io/blog/edge-case-testing/](https://www.testim.io/blog/edge-case-testing/)
*  Black Box Testing: [https://www.guru99.com/black-box-testing.html](https://www.guru99.com/black-box-testing.html)
*  White Box Testing: [https://www.guru99.com/white-box-testing.html](https://www.guru99.com/white-box-testing.html)
*  Integration Testing: [https://www.softwaretestinghelp.com/integration-testing/](https://www.softwaretestinghelp.com/integration-testing/)
*  System Testing: [https://www.softwaretestinghelp.com/system-testing/](https://www.softwaretestinghelp.com/system-testing/)
*  Regression Testing: [https://www.softwaretestinghelp.com/regression-testing/](https://www.softwaretestinghelp.com/regression-testing/)
*  Performance Testing: [https://www.guru99.com/performance-testing.html](https://www.guru99.com/performance-testing.html)
*  Security Testing: [https://www.guru99.com/security-testing.html](https://www.guru99.com/security-testing.html)
*  User Acceptance Testing: [https://www.softwaretestinghelp.com/user-acceptance-testing/](https://www.softwaretestinghelp.com/user-acceptance-testing/)


[[Category:PHPUnit]]
[[Category:PHPUnit]]
অন্যান্য


== এখনই ট্রেডিং শুরু করুন ==
== এখনই ট্রেডিং শুরু করুন ==

Latest revision as of 10:26, 23 April 2025

PHPUnit ডকুমেন্টেশন

ভূমিকা

PHPUnit হল একটি জনপ্রিয় এবং বহুল ব্যবহৃত ইউনিট টেস্টিং ফ্রেমওয়ার্ক যা PHP প্রোগ্রামিং ভাষায় লেখা কোড পরীক্ষা করার জন্য ব্যবহৃত হয়। এটি এক্সট্রিম প্রোগ্রামিং এবং টেস্ট-ড্রাইভেন ডেভেলপমেন্ট (TDD) পদ্ধতির সাথে সঙ্গতিপূর্ণ। PHPUnit ডেভেলপারদের নির্ভরযোগ্য এবং ত্রুটিমুক্ত কোড তৈরি করতে সাহায্য করে। এই নিবন্ধে, PHPUnit-এর বিভিন্ন দিক, যেমন - এর বৈশিষ্ট্য, ইনস্টলেশন, কনফিগারেশন, এবং ব্যবহারের নিয়মাবলী বিস্তারিতভাবে আলোচনা করা হবে।

PHPUnit এর বৈশিষ্ট্য

PHPUnit অসংখ্য বৈশিষ্ট্য সরবরাহ করে যা এটিকে PHP কোড পরীক্ষার জন্য একটি শক্তিশালী হাতিয়ার করে তুলেছে। এর মধ্যে কয়েকটি প্রধান বৈশিষ্ট্য নিচে উল্লেখ করা হলো:

  • বিভিন্ন ধরনের অ্যাসারশন (Assertion): PHPUnit বিভিন্ন ধরনের অ্যাসারশন প্রদান করে, যা পরীক্ষার ফলাফল যাচাই করতে ব্যবহৃত হয়। যেমন: assertEquals(), assertTrue(), assertFalse(), assertNull(), assertNotNull() ইত্যাদি। অ্যাসারশনগুলি প্রত্যাশিত ফলাফল এবং প্রকৃত ফলাফলের মধ্যে তুলনা করে।
  • টেস্ট স্যুট (Test Suite): PHPUnit আপনাকে একাধিক টেস্ট কেসকে একটি টেস্ট স্যুট-এ একত্রিত করার সুযোগ দেয়, যা পুরো অ্যাপ্লিকেশন বা নির্দিষ্ট অংশের জন্য পরীক্ষা চালাতে সহায়ক।
  • টেস্ট রানার (Test Runner): PHPUnit-এর একটি শক্তিশালী টেস্ট রানার রয়েছে, যা টেস্ট স্যুটগুলি পরিচালনা করে এবং পরীক্ষার ফলাফল প্রদর্শন করে।
  • মকিং এবং স্টাবিং (Mocking and Stubbing): জটিল নির্ভরতা (Dependencies) দূর করার জন্য PHPUnit মকিং এবং স্টাবিং সমর্থন করে। মকিং এবং স্টাবিং ব্যবহার করে, আপনি পরীক্ষার সময় অন্যান্য উপাদানগুলির আচরণ নিয়ন্ত্রণ করতে পারেন।
  • ডেটা প্রোভাইডার (Data Provider): বিভিন্ন ইনপুট ডেটা ব্যবহার করে একই টেস্ট মেথড চালানোর জন্য ডেটা প্রোভাইডার ব্যবহার করা হয়।
  • কভারেজ বিশ্লেষণ (Code Coverage Analysis): PHPUnit কোড কভারেজ বিশ্লেষণ করতে পারে, যা আপনার কোডের কত শতাংশ টেস্ট করা হয়েছে তা জানতে সাহায্য করে।

PHPUnit ইনস্টলেশন

PHPUnit ইনস্টল করার জন্য কয়েকটি পদ্ধতি রয়েছে। নিচে সবচেয়ে সহজ পদ্ধতিটি আলোচনা করা হলো:

১. Composer ব্যবহার করে ইনস্টলেশন: PHPUnit ইনস্টল করার সবচেয়ে সহজ উপায় হল Composer ব্যবহার করা। আপনার প্রোজেক্ট ডিরেক্টরিতে Composer ইনস্টল করা থাকলে, নিচের কমান্ডটি চালান:

```bash composer require --dev phpunit/phpunit ```

২. ম্যানুয়ালি ইনস্টলেশন: আপনি PHPUnit-এর অফিসিয়াল ওয়েবসাইট থেকে ডাউনলোড করে ম্যানুয়ালি ইনস্টল করতে পারেন। ডাউনলোড করার পর, আপনাকে আপনার সিস্টেমের PATH-এ PHPUnit-এর bin ডিরেক্টরি যোগ করতে হবে।

PHPUnit কনফিগারেশন

PHPUnit কনফিগার করার জন্য, আপনাকে একটি `phpunit.xml` ফাইল তৈরি করতে হবে। এই ফাইলে, আপনি আপনার টেস্ট স্যুট, টেস্ট রানার এবং অন্যান্য সেটিংস কনফিগার করতে পারেন। একটি সাধারণ `phpunit.xml` ফাইলের উদাহরণ নিচে দেওয়া হলো:

```xml <?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php">

   <testsuites>
       <testsuite name="My Project Test Suite">
           <directory suffix="Test.php">tests</directory>
       </testsuite>
   </testsuites>

</phpunit> ```

এই কনফিগারেশন ফাইলে, `bootstrap` অ্যাট্রিবিউটটি আপনার প্রোজেক্টের অটোলোডার ফাইল নির্দেশ করে এবং `directory` অ্যাট্রিবিউটটি আপনার টেস্ট ফাইলগুলির অবস্থান নির্দেশ করে।

PHPUnit ব্যবহারবিধি

PHPUnit ব্যবহার করার জন্য, আপনাকে প্রথমে একটি টেস্ট কেস তৈরি করতে হবে। টেস্ট কেস হলো একটি PHP ক্লাস যা `PHPUnit\Framework\TestCase` ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। প্রতিটি টেস্ট কেসে, আপনি বিভিন্ন টেস্ট মেথড তৈরি করতে পারেন, যেখানে আপনি আপনার কোড পরীক্ষা করবেন।

একটি সাধারণ টেস্ট কেসের উদাহরণ নিচে দেওয়া হলো:

```php <?php

use PHPUnit\Framework\TestCase;

class MyClassTest extends TestCase {

   public function testAdd()
   {
       $myClass = new MyClass();
       $result = $myClass->add(2, 3);
       $this->assertEquals(5, $result);
   }

}

class MyClass {

   public function add($a, $b) {
       return $a + $b;
   }

} ```

এই উদাহরণে, `MyClassTest` হলো একটি টেস্ট কেস যা `MyClass` ক্লাসের `add` মেথডটি পরীক্ষা করে। `assertEquals` অ্যাসারশন ব্যবহার করে, আমরা যাচাই করি যে `add` মেথডটি প্রত্যাশিত ফলাফল (5) প্রদান করছে কিনা।

টেস্ট রান করা

টেস্ট রান করার জন্য, আপনি কমান্ড লাইন ব্যবহার করতে পারেন। আপনার প্রোজেক্ট ডিরেক্টরিতে নেভিগেট করে নিচের কমান্ডটি চালান:

```bash ./vendor/bin/phpunit ```

এই কমান্ডটি আপনার `phpunit.xml` ফাইলে কনফিগার করা টেস্ট স্যুটগুলি চালাবে এবং পরীক্ষার ফলাফল প্রদর্শন করবে।

আরও কিছু গুরুত্বপূর্ণ বিষয়

  • ফ্যাক্টরি ফাংশন (Factory Functions): জটিল অবজেক্ট তৈরি করার জন্য ফ্যাক্টরি ফাংশন ব্যবহার করা যেতে পারে, যা টেস্ট কেসকে আরও সহজ করে। ফ্যাক্টরি ফাংশন ব্যবহার করে আপনি আপনার কোডের টেস্টেবিলিটি বাড়াতে পারেন।
  • টেস্ট ডাবল (Test Doubles): মকিং এবং স্টাবিংয়ের জন্য টেস্ট ডাবল ব্যবহার করা হয়। এটি নির্ভরতাগুলো নিয়ন্ত্রণ করতে সাহায্য করে।
  • বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট (BDD): PHPUnit BDD-এর সাথেও ব্যবহার করা যায়। বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট আপনার কোডের স্পেসিফিকেশন লেখার একটি পদ্ধতি।
  • কন্টিনিউয়াস ইন্টিগ্রেশন (CI): PHPUnit কন্টিনিউয়াস ইন্টিগ্রেশন সিস্টেমে ব্যবহার করা যায়, যা কোড পরিবর্তনের সাথে সাথে স্বয়ংক্রিয়ভাবে পরীক্ষা চালায়। কন্টিনিউয়াস ইন্টিগ্রেশন আপনার কোডের গুণগত মান নিশ্চিত করে।
  • কোড কোয়ালিটি টুলস (Code Quality Tools): PHPUnit অন্যান্য কোড কোয়ালিটি টুলের সাথে ব্যবহার করা যায়, যেমন - PHPStan এবং Psalm।

উন্নত কনফিগারেশন

`phpunit.xml` ফাইলে আপনি আরও অনেক কনফিগারেশন অপশন ব্যবহার করতে পারেন। কিছু গুরুত্বপূর্ণ অপশন নিচে উল্লেখ করা হলো:

  • backupGlobals: এই অপশনটি গ্লোবাল ভেরিয়েবলগুলির ব্যাকআপ তৈরি করে, যাতে আপনার টেস্টগুলি গ্লোবাল ভেরিয়েবলগুলিকে প্রভাবিত না করে।
  • bootstrap: এই অপশনটি আপনার প্রোজেক্টের অটোলোডার ফাইল বা অন্য কোনো ইনিশিয়ালাইজেশন স্ক্রিপ্ট নির্দিষ্ট করে।
  • cacheResult: এই অপশনটি টেস্টের ফলাফল ক্যাশে করে, যাতে পরবর্তী রানগুলিতে পরীক্ষা দ্রুত হয়।
  • colors: এই অপশনটি টেস্ট রানারের আউটপুটে রঙ যোগ করে, যা ফলাফলগুলি সহজে বুঝতে সাহায্য করে।
  • convertErrorsToExceptions: এই অপশনটি PHP-এর ত্রুটিগুলিকে ব্যতিক্রম (Exceptions)-এ রূপান্তরিত করে, যা টেস্ট কেসে ধরা যেতে পারে।

রিসোর্স এবং আরও তথ্য

উপসংহার

PHPUnit একটি শক্তিশালী এবং নমনীয় ইউনিট টেস্টিং ফ্রেমওয়ার্ক, যা PHP ডেভেলপারদের জন্য অপরিহার্য। এই নিবন্ধে, PHPUnit-এর মূল বৈশিষ্ট্য, ইনস্টলেশন, কনফিগারেশন এবং ব্যবহারের নিয়মাবলী বিস্তারিতভাবে আলোচনা করা হয়েছে। PHPUnit ব্যবহার করে, আপনি আপনার কোডের গুণগত মান উন্নত করতে এবং ত্রুটিমুক্ত অ্যাপ্লিকেশন তৈরি করতে পারবেন। নিয়মিতভাবে ইউনিট টেস্টিং করা আপনার প্রোজেক্টের দীর্ঘমেয়াদী সাফল্যের জন্য অত্যন্ত গুরুত্বপূর্ণ।

এখনই ট্রেডিং শুরু করুন

IQ Option-এ নিবন্ধন করুন (সর্বনিম্ন ডিপোজিট $10) Pocket Option-এ অ্যাকাউন্ট খুলুন (সর্বনিম্ন ডিপোজিট $5)

আমাদের সম্প্রদায়ে যোগ দিন

আমাদের টেলিগ্রাম চ্যানেলে যোগ দিন @strategybin এবং পান: ✓ দৈনিক ট্রেডিং সংকেত ✓ একচেটিয়া কৌশলগত বিশ্লেষণ ✓ বাজারের প্রবণতা সম্পর্কে বিজ্ঞপ্তি ✓ নতুনদের জন্য শিক্ষামূলক উপকরণ

Баннер