Efficient Logging এবং Reporting গাইড ও নোট

Java Technologies - টেস্টএনজি (TestNG) - TestNG এর Performance Optimization Techniques
362

কার্যকরী লগিং (Efficient Logging) কী?

লগিং (Logging) হলো সফটওয়্যার টেস্টিং এর একটি গুরুত্বপূর্ণ অংশ, যা প্রোগ্রামের কার্যক্রমের তথ্য, ত্রুটি এবং ফলাফল লগ ফাইলের মাধ্যমে রেকর্ড করে। টেস্টিং চলাকালীন ত্রুটি, ব্যতিক্রম (Exceptions), অথবা গুরুত্বপূর্ণ তথ্য লগিংয়ের মাধ্যমে রেকর্ড করা হয়, যা পরবর্তী সময়ে সমস্যা বিশ্লেষণ এবং সমাধান করতে সহায়তা করে।

TestNG-এ কার্যকরী লগিং একটি টেস্ট কেসের কার্যক্রম ট্র্যাক করার জন্য ব্যবহৃত হয়, এবং এটি বিশেষত বড় এবং জটিল টেস্ট স্যুটে অপরিহার্য।


TestNG-এ লগিং এর জন্য সেরা পদ্ধতি

১. SLF4J এবং Logback ব্যবহার

SLF4J (Simple Logging Facade for Java) এবং Logback দুটি শক্তিশালী লগিং টুল, যা TestNG-র সঙ্গে ব্যবহৃত হতে পারে। SLF4J বিভিন্ন লগিং ফ্রেমওয়ার্কের জন্য সাধারণ ইন্টারফেস প্রদান করে এবং Logback একটি অত্যন্ত কার্যকরী এবং পারফরম্যান্ট লগিং সিস্টেম।

উদাহরণ: SLF4J এবং Logback সেটআপ

  1. pom.xml এ ডিপেনডেন্সি যুক্ত করুন:
<dependencies>
    <!-- SLF4J Dependency -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.32</version>
    </dependency>

    <!-- Logback Dependency -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.6</version>
    </dependency>
</dependencies>
  1. Logger ব্যবহার করুন:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;

public class TestLogging {

    private static final Logger logger = LoggerFactory.getLogger(TestLogging.class);

    @Test
    public void testMethod() {
        logger.info("Test started");
        
        try {
            // Some test logic
            int result = 10 / 0;  // This will cause an exception
        } catch (Exception e) {
            logger.error("An error occurred: ", e);
        }
        
        logger.info("Test ended");
    }
}

এখানে info() এবং error() পদ্ধতি ব্যবহার করা হয়েছে। আপনি অন্যান্য লগ লেভেল যেমন debug(), warn(), trace()ও ব্যবহার করতে পারেন। Logback লগ ফাইল তৈরি করে এবং এতে রেকর্ড রাখে।


TestNG-এ রিপোর্টিং (Reporting) কী?

রিপোর্টিং (Reporting) হল একটি প্রক্রিয়া যার মাধ্যমে টেস্ট কেসের ফলাফল এবং কার্যক্রম বিশ্লেষণ করা যায়। TestNG স্বয়ংক্রিয়ভাবে বিস্তারিত রিপোর্ট তৈরি করে, যা টেস্ট রানের সফলতা বা ব্যর্থতা সম্পর্কে তথ্য প্রদান করে।


TestNG-এর বিল্ট-ইন রিপোর্টিং

TestNG বিভিন্ন ধরনের রিপোর্টিং ফরম্যাট যেমন HTML, XML, এবং JUnit রিপোর্ট তৈরি করে।

TestNG HTML রিপোর্ট উদাহরণ:

যখন আপনি TestNG টেস্ট চালান, এটি একটি HTML রিপোর্ট তৈরি করে। এই রিপোর্টে প্রতিটি টেস্ট কেসের ফলাফল, পরীক্ষণের সময়, এবং ফলস্বরূপ স্ট্যাটাস (পাস/ফেইল) দেখা যায়।

TestNG চালানোর পর তৈরি হওয়া রিপোর্ট:

  • target/surefire-reports/testng-results.html

এই HTML রিপোর্টে, আপনি দেখবেন:

  • টেস্ট নাম
  • টেস্টের স্থিতি (পাস/ফেইল)
  • ফেল হওয়া টেস্টের বর্ণনা
  • টেস্ট রানের সময়

TestNG XML রিপোর্ট উদাহরণ:

TestNG আরেকটি সাধারণ রিপোর্ট ফরম্যাট হল XML রিপোর্ট, যা বিশ্লেষণ এবং অন্যান্য টুলে ইনপোর্ট করার জন্য ব্যবহার করা যেতে পারে।


কাস্টম রিপোর্টিং (Custom Reporting)

TestNG আপনাকে Reporter ক্লাস ব্যবহার করে কাস্টম রিপোর্ট তৈরি করার সুযোগ দেয়। এর মাধ্যমে আপনি নিজের প্রয়োজন অনুযায়ী টেস্ট রিপোর্ট তৈরি করতে পারেন।

উদাহরণ: কাস্টম রিপোর্ট তৈরি

import org.testng.Reporter;
import org.testng.annotations.Test;

public class CustomReporting {

    @Test
    public void testMethod() {
        Reporter.log("Test started", true);
        
        // Some test logic
        int result = 10 / 2;
        
        Reporter.log("Test finished successfully", true);
    }
}

এখানে Reporter.log() ব্যবহার করা হয়েছে যা কাস্টম মেসেজ টেস্ট রিপোর্টে যোগ করবে। true প্যারামিটারটি লগ মেসেজকে কনsole-এ দেখানোর জন্য ব্যবহৃত হয়।


Advanced Reporting: ExtentReports

TestNG ব্যবহারকারী প্রায়ই ExtentReports প্লাগইন ব্যবহার করেন, যা একটি অত্যন্ত বিশদ এবং কাস্টমাইজযোগ্য রিপোর্টিং সিস্টেম। ExtentReports টেস্ট রানের বিস্তারিত তথ্য, স্ক্রীনশট, স্টেপ-বাই-স্টেপ টেস্ট প্রক্রিয়া, এবং আরও অনেক কিছু ধারণ করে।

ExtentReports কনফিগারেশন:

  1. pom.xml এ ExtentReports ডিপেনডেন্সি যোগ করুন:
<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>5.1.0</version>
</dependency>
  1. ExtentReports সেটআপ:
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import org.testng.annotations.Test;

public class ExtentReportsExample {

    ExtentReports extent;
    ExtentTest test;

    @Test
    public void testMethod() {
        ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("extentReport.html");
        extent = new ExtentReports();
        extent.attachReporter(htmlReporter);

        test = extent.createTest("Test Method", "Sample test to generate report");
        test.pass("Test passed successfully");

        extent.flush();
    }
}

এই উদাহরণে, ExtentHtmlReporter ব্যবহার করে একটি HTML রিপোর্ট তৈরি করা হয়েছে যা টেস্টের ফলাফল বিস্তারিতভাবে উপস্থাপন করবে।


সারাংশ

TestNG-তে কার্যকরী লগিং এবং রিপোর্টিং টেস্টিং প্রক্রিয়া সহজ এবং পরিস্কার করে তোলে। SLF4J এবং Logback-এর মতো টুল ব্যবহার করে আপনি কার্যকরী লগিং করতে পারেন, এবং TestNG এর বিল্ট-ইন রিপোর্টিং ফিচার বা কাস্টম রিপোর্টিং টুল ব্যবহার করে বিস্তারিত রিপোর্ট তৈরি করতে পারেন। কাস্টম রিপোর্টিং-এর জন্য ExtentReports একটি শক্তিশালী টুল, যা টেস্ট ফলাফল আরও উন্নতভাবে প্রদর্শন করে।


Content added By
Promotion

Are you sure to start over?

Loading...