মোবাইল ডেভেলপমেন্টে রিগ্রেশন টেস্টিং — এটি কী, প্রকারভেদ এবং কীভাবে করা হয়

লেখক: IT Sectr প্রকাশিত: 2026-04-07 পড়ার সময়: 8 মিনিট

রিগ্রেশন টেস্টিং হল পরিবর্তনের পরে অ্যাপ্লিকেশন পুনরায় পরীক্ষা করার প্রক্রিয়া যা পূর্বে কাজ করা কার্যকারিতায় ত্রুটি সনাক্ত করার জন্য। প্রতিটি কোড পরিবর্তন — নতুন বৈশিষ্ট্য, বাগ ফিক্স বা রিফ্যাক্টরিং — অনিচ্ছাকৃতভাবে অ্যাপ্লিকেশনের বিদ্যমান ক্ষমতাগুলি ভেঙে দিতে পারে। রিগ্রেশন টেস্টগুলি স্বয়ংক্রিয়ভাবে যাচাই করে যে পুরানো কার্যকারিতা সচল রয়েছে। IBM, 2023-এর একটি গবেষণা অনুসারে, রিগ্রেশন টেস্টিং বাণিজ্যিক পণ্য দলের সমস্ত সম্পাদিত পরীক্ষার 30 থেকে 70% কভার করে, যা উত্পাদন ঘটনার বিরুদ্ধে প্রাথমিক বাধা হিসাবে এর ভূমিকা তুলে ধরে।

মূল বিষয়

  • রিগ্রেশন টেস্টিং — পরিবর্তনের পরে অ্যাপ্লিকেশন পরীক্ষা করা, নিশ্চিত করা যে বিদ্যমান কার্যকারিতা সঠিকভাবে কাজ করতে থাকে।
  • সম্পূর্ণ রিগ্রেশন রান — প্রকল্পের সমস্ত বিদ্যমান পরীক্ষা চালায় এবং স্যুটের আকারের উপর নির্ভর করে 30 মিনিট থেকে কয়েক ঘন্টা সময় নেয়।
  • নির্বাচনী রিগ্রেশন টেস্টিং — শুধুমাত্র পরিবর্তিত কোডের সাথে সম্পর্কিত পরীক্ষাগুলি চালায়, রানের সময় 60–80% হ্রাস করে।
  • CI/CD ইন্টিগ্রেশন বাধ্যতামূলক: প্রতিটি pull request-এ এবং রিলিজের আগে রিগ্রেশন টেস্টগুলি স্বয়ংক্রিয়ভাবে চলে।
  • টেস্টিং পিরামিড গতি এবং কভারেজ গভীরতার ভারসাম্যের জন্য রিগ্রেশন স্যুটে 70% ইউনিট টেস্টের সুপারিশ করে।

রিগ্রেশন টেস্টিং কী?

রিগ্রেশন টেস্টিং হল এক ধরনের পরীক্ষা যার উদ্দেশ্য নিশ্চিত করা যে কোড পরিবর্তনগুলি বিদ্যমান কার্যকারিতা ভাঙেনি। শব্দটি “রিগ্রেশন” অর্থ খারাপ অবস্থায় ফিরে যাওয়া — যখন একটি ফাংশন যা পূর্ববর্তী সংস্করণে কাজ করেছিল নতুন সংস্করণে কাজ করা বন্ধ করে দেয়। রিগ্রেশন টেস্টগুলি প্রতিটি উন্নয়ন চক্রে বারবার সম্পাদিত হয়, যা তাদের নতুন বৈশিষ্ট্য পরীক্ষা থেকে আলাদা করে যা একবার লেখা হয়।

রিগ্রেশন টেস্টিংয়ের প্রয়োজনীয়তা ক্যাসকেডিং পরিবর্তনের প্রভাব থেকে উদ্ভূত হয়: একটি মডিউলে বাগ ফিক্স করা সমস্যার সমাধান করতে পারে কিন্তু সংলগ্ন কার্যকারিতা ভেঙে দিতে পারে যা এটির উপর নির্ভরশীল ছিল। উদাহরণস্বরূপ, ইউজার রিপোজিটরিতে SQL কোয়েরি পরিবর্তন করলে প্রমাণীকরণ দ্রুত হতে পারে কিন্তু ডেটা এক্সপোর্ট ভেঙে যেতে পারে যা একই কোয়েরি ব্যবহার করত। ডেটা এক্সপোর্টে একটি রিগ্রেশন টেস্ট রিলিজের আগে এই লঙ্ঘন সনাক্ত করবে।

CISQ 2023 রিপোর্ট অনুসারে, উত্পাদনে পাওয়া একটি রিগ্রেশন ত্রুটি ঠিক করার খরচ স্বয়ংক্রিয় রিগ্রেশন রান পর্যায়ের তুলনায় 15 গুণ বেশি। Capgemini World Quality Report অনুসারে, স্বয়ংক্রিয় রিগ্রেশন টেস্টিংয়ে বিনিয়োগকারী সংস্থাগুলি বাস্তবায়নের এক বছরের মধ্যে রিলিজে রিগ্রেশন ত্রুটির অংশ 25% থেকে 5% এ হ্রাস করে।

রিগ্রেশন টেস্টিংয়ের প্রকারভেদ

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

সম্পূর্ণ রিগ্রেশন টেস্টিং

সম্পূর্ণ রিগ্রেশন রান ব্যতিক্রম ছাড়া প্রকল্পের সমস্ত স্বয়ংক্রিয় পরীক্ষা সম্পাদন করে। এই পদ্ধতি সর্বাধিক আত্মবিশ্বাস দেয় তবে উল্লেখযোগ্য কম্পিউটিং সংস্থান এবং সময় প্রয়োজন। বড় রিলিজের আগে একটি সম্পূর্ণ রান করা হয় — প্রতি 2–4 সপ্তাহে। 5000 টেস্টের একটি অ্যাপ্লিকেশনের জন্য, পরিকাঠামোর উপর নির্ভর করে সম্পূর্ণ রান 2 থেকে 6 ঘন্টা সময় নেয়।

নির্বাচনী রিগ্রেশন টেস্টিং

নির্বাচনী পদ্ধতি শুধুমাত্র পরিবর্তিত মডিউলগুলির সাথে সম্পর্কিত পরীক্ষাগুলি চালায়। সম্পর্ক নির্ধারণের জন্য কোড-স্তরের নির্ভরতা বিশ্লেষণ ব্যবহার করা হয়: যদি UserRepository ক্লাস পরিবর্তন করা হয়, তাহলে UserRepository-এর উপর প্রত্যক্ষ বা পরোক্ষভাবে নির্ভরশীল পরীক্ষাগুলি চালানো হয়। Jacoco, Android Test Coverage এবং Xcode Code Coverage-এর মতো টুলগুলি সঠিক নির্বাচনের জন্য কভারেজ মানচিত্র সরবরাহ করে। প্রতিটি pull request-এ একটি নির্বাচনী রান করা হয় এবং 5–15 মিনিট সময় নেয়।

ঝুঁকি-ভিত্তিক রিগ্রেশন

ঝুঁকি-ভিত্তিক রিগ্রেশন কার্যকারিতার সমালোচনামূলকতা এবং ভাঙার সম্ভাবনার ভিত্তিতে পরীক্ষাগুলিকে র্যাঙ্ক করে। সমালোচনামূলক ফাংশন — পেমেন্ট, প্রমাণীকরণ, সিঙ্ক্রোনাইজেশন — প্রতিটি কোড পরিবর্তনে পরীক্ষা করা হয়। সহায়ক ফাংশন — “আমাদের সম্পর্কে” স্ক্রিন, অ্যানিমেশন — শুধুমাত্র রিলিজের আগে পরীক্ষা করা হয়। উত্পাদন ঘটনার তথ্যের ভিত্তিতে র্যাঙ্কিং ত্রৈমাসিক পর্যালোচনা করা হয়।

রিগ্রেশন টেস্টিং এবং রিটেস্টের মধ্যে পার্থক্য

প্রায়শই রিগ্রেশন টেস্টিং এবং রিটেস্টের ধারণাগুলি বিভ্রান্ত হয়, যদিও এগুলি ভিন্ন প্রক্রিয়া। রিটেস্ট হল একটি ত্রুটি সংশোধনের পরে, পূর্বে ব্যর্থ হওয়া একটি নির্দিষ্ট পরীক্ষার পুনরায় চালানো। রিটেস্টের উদ্দেশ্য নিশ্চিত করা যে ফিক্স কাজ করে: বাগ আর পুনরুৎপাদন হয় না। রিটেস্ট একবার সঞ্চালিত হয়, ফিক্স এবং ডেভেলপার দ্বারা ফিক্স নিশ্চিত করার পরপরই।

রিগ্রেশন টেস্টিং হল বিদ্যমান কার্যকারিতার উপর পরীক্ষা চালানো যা পরিবর্তন করা হয়নি। লক্ষ্য হল নিশ্চিত করা যে একটি ত্রুটি ঠিক করা অন্য কোথাও নতুন ত্রুটি তৈরি করেনি। রিগ্রেশন টেস্টগুলি প্রতিটি উন্নয়ন চক্রে বারবার চালানো হয়, নির্দিষ্ট কোন বাগগুলি ঠিক করা হয়েছে তা নির্বিশেষে। প্রধান পার্থক্য: রিটেস্ট ফিক্সটি যাচাই করে, রিগ্রেশন ফিক্সের পরিণতি যাচাই করে।

CI/CD পাইপলাইনে, উভয় প্রক্রিয়া ক্রমান্বয়ে চলে। একটি pull_request মার্জ করার পরে, নির্দিষ্ট বাগের একটি রিটেস্ট চালানো হয়, তারপরে একটি সম্পূর্ণ বা নির্বাচনী রিগ্রেশন রান করা হয়। SmartBear (2022) অনুসারে, এই প্রক্রিয়াগুলি পৃথক করা ব্যর্থ CI রান নির্ণয়ের সময় 30% হ্রাস করে, কারণ দলটি সাথে সাথে দেখতে পায় কোন ত্রুটিগুলি রিগ্রেশনের সাথে সম্পর্কিত এবং কোনটি অকার্যকর ফিক্সের সাথে।

রিগ্রেশন টেস্টিংয়ের স্বয়ংক্রিয়করণ

রিগ্রেশন টেস্টিংয়ের স্বয়ংক্রিয়করণ আধুনিক মোবাইল প্রকল্পগুলির জন্য একটি গুরুত্বপূর্ণ সাফল্যের কারণ। ম্যানুয়াল রিগ্রেশন টেস্টিং স্কেলযোগ্য নয়: 200 টেস্টের একটি স্যুটের সাথে, একটি রানের জন্য QA ইঞ্জিনিয়ারের 2–3 কার্যদিবস প্রয়োজন, যা দৈনিক রান অসম্ভব করে তোলে। স্বয়ংক্রিয় রিগ্রেশন টেস্টগুলি মানব হস্তক্ষেপ ছাড়াই 10–60 মিনিটে চলে, যা এগুলিকে প্রতিটি commit বা pull_request-এ চালানোর অনুমতি দেয়।

  • ইউনিট টেস্ট — রিগ্রেশন স্যুটের ভিত্তি (70%)। সেকেন্ডে চলে, ইমুলেটরের প্রয়োজন হয় না এবং ভাঙা ক্লাসের সঠিক সনাক্তকরণ দেয়।
  • ইন্টিগ্রেশন টেস্ট — দ্বিতীয় স্তর (20%)। নিয়ন্ত্রিত নির্ভরতার সাথে নেটওয়ার্ক লেয়ার, ডেটাবেস এবং সিস্টেম পরিষেবাগুলি পরীক্ষা করে।
  • UI টেস্ট এবং E2E টেস্ট — পিরামিডের শীর্ষ (10%)। গুরুত্বপূর্ণ ব্যবহারকারীর পরিস্থিতি কভার করে: নিবন্ধন, পেমেন্ট, সিঙ্ক্রোনাইজেশন।

রিগ্রেশন স্যুট আপডেট রাখতে টেস্ট অ্যানালিটিক্স ব্যবহার করা হয়: Allure, ReportPortal এবং Xray-এর মতো টুলগুলি প্রতিটি পরীক্ষার পাসের হার, সময়কাল এবং স্থিতিশীলতা ট্র্যাক করে। যেসব পরীক্ষার স্থিতিশীলতা 90% এর নিচে নেমে যায় (প্রয়োজনীয়তা পরিবর্তনের কারণে প্রায়শই ভেঙে যায়), সেগুলি লিগ্যাসি হিসাবে চিহ্নিত করা হয় এবং পর্যালোচনার জন্য মালিকের কাছে ন্যস্ত করা হয়।

রিগ্রেশন টেস্ট সেটআপের উদাহরণ

আসুন JUnit 5 লাইব্রেরি এবং Espresso ব্যবহার করে Android-এ একটি স্বয়ংক্রিয় রিগ্রেশন টেস্ট সেটআপ দেখি। উদাহরণটি নির্বাচনী রিগ্রেশন প্রদর্শন করে — পরীক্ষাটি যাচাই করে যে ইউজার রিপোজিটরি রিফ্যাক্টর করার পরে প্রোফাইল স্ক্রিন ভাঙেনি। iOS-এর জন্য, অনুরূপ যুক্তি সহ XCTest ব্যবহার করা হয় — একটি মূল পরিস্থিতিতে পুনরাবৃত্তিমূলক পরীক্ষা।

Android: প্রোফাইল রিগ্রেশন টেস্ট

পরীক্ষাটি সার্ভার অনুকরণ করতে MockWebServer ব্যবহার করে এবং সম্পূর্ণ পথ পরীক্ষা করে: ইউজার ডেটা লোড করা, প্রোফাইল স্ক্রিনে প্রদর্শন করা এবং সার্ভার অনুপলব্ধ হলে ত্রুটি হ্যান্ডলিং। এই ধরনের পরীক্ষাগুলি রিগ্রেশন স্যুটে অন্তর্ভুক্ত করা হয় এবং module-profile-এ প্রতিটি পরিবর্তনে চালানো হয়।

kotlin
@RunWith(AndroidJUnit4::class)
class ProfileRegressionTest {

    @get:Rule
    val composeRule = createComposeRule()

    @Test
    fun profileScreen_rendersCorrectly() {
        val user = User(id = 1, name = "Alice", email = "alice@test.com")
        composeRule.setContent {
            ProfileScreen(user)
        }
        composeRule.onNodeWithText("Alice").assertIsDisplayed()
        composeRule.onNodeWithText("alice@test.com").assertIsDisplayed()
    }

    @Test
    fun profileScreen_handlesNetworkError() {
        setNetworkError()
        composeRule.onNodeWithText("লোড করার ত্রুটি").assertIsDisplayed()
    }
}

iOS: XCTest-এর সাথে রিগ্রেশন টেস্ট

iOS-এর জন্য, রিগ্রেশন টেস্ট API থেকে ডেটা পাওয়ার পরে UI আপডেটের অ্যাসিঙ্ক্রোনাস যাচাইকরণের জন্য XCTestExpectation ব্যবহার করে। পরীক্ষাটি একটি নেটওয়ার্ক প্রতিক্রিয়া অনুকরণ করে এবং যাচাই করে যে UI উপাদানগুলি সঠিকভাবে আপডেট হয়েছে।

swift
class ProfileRegressionTests: XCTestCase {
    func testProfileScreen_rendersCorrectly() {
        let viewModel = ProfileViewModel(userId: 1)
        let view = ProfileView(viewModel: viewModel)
        viewModel.loadProfile()

        let expectation = expectation(description: "profile loaded")
        viewModel.onProfileLoaded = {
            XCTAssertEqual(viewModel.userName, "Alice")
            XCTAssertEqual(viewModel.userEmail, "alice@test.com")
            expectation.fulfill()
        }
        waitForExpectations(timeout: 3.0)
    }
}

রিগ্রেশন স্যুট তৈরির কৌশল

একটি কার্যকর রিগ্রেশন স্যুট তৈরি করা ত্রুটি এবং কোড পরিবর্তনের তথ্যের উপর ভিত্তি করে একটি পুনরাবৃত্তিমূলক প্রক্রিয়া। প্রাথমিক কৌশল — রিগ্রেশন স্যুটে সমস্ত বিদ্যমান পরীক্ষা অন্তর্ভুক্ত করা এবং প্রতিটি রিলিজের আগে একটি সম্পূর্ণ রান চালানো। পরীক্ষার ভিত্তি বাড়ার সাথে সাথে (2000-এর বেশি পরীক্ষা), সম্পূর্ণ রান খুব দীর্ঘ হয়ে যায় এবং একটি নির্বাচনী পদ্ধতির প্রয়োজন হয়।

দ্বিতীয় পর্যায় — নির্ভরতা বিশ্লেষণ সরঞ্জাম বাস্তবায়ন: Android-এর জন্য Jacoco, iOS-এর জন্য Xcode Test Plan। এই সরঞ্জামগুলি একটি “পরীক্ষা — ক্লাস — পদ্ধতি” মানচিত্র তৈরি করে এবং নির্ধারণ করতে দেয় যে একটি নির্দিষ্ট পরিবর্তনের দ্বারা কোন পরীক্ষাগুলি প্রভাবিত হয়। Spotify Engineering (2022) অনুসারে, কভারেজ বিশ্লেষণের উপর ভিত্তি করে নির্বাচনী রান 95% রিগ্রেশন সনাক্তকরণ কার্যকারিতা বজায় রেখে সম্পাদনের সময় 60–80% হ্রাস করে।

তৃতীয় পর্যায় — ক্রমাগত পর্যবেক্ষণ এবং অপ্টিমাইজেশন। যে পরীক্ষাগুলি 6 মাসে ব্যর্থ হয়নি, সেগুলি নিম্ন-অগ্রাধিকার স্যুটে স্থানান্তরিত হয়। যে পরীক্ষাগুলি মাসে একবারের বেশি ব্যর্থ হয়, সেগুলি পর্যালোচনার জন্য প্রার্থী: হয় তারা বাস্তব সমস্যা ধরে (ফিক্স প্রয়োজন) বা তারা খুব ভঙ্গুর (স্থিতিশীলতা প্রয়োজন)। রিগ্রেশন স্যুটের ত্রৈমাসিক পর্যালোচনা এর কার্যকারিতা এবং সম্পাদনের গতি বজায় রাখার জন্য মানক অনুশীলন।

সচরাচর জিজ্ঞাস্য

কতবার রিগ্রেশন টেস্ট চালানো উচিত?

নির্বাচনী রিগ্রেশন রান — প্রতিটি pull request-এ। সম্পূর্ণ রিগ্রেশন রান — প্রতিটি রিলিজের আগে এবং সাপ্তাহিক (nightly build)। মূল নিয়ম: যত বেশি বার রান হবে, তত দ্রুত রিগ্রেশন সনাক্ত হবে এবং সেগুলি ঠিক করার খরচ তত কম হবে। গুরুত্বপূর্ণ প্রকল্পগুলির জন্য, প্রতিটি মার্জে সম্পূর্ণ রিগ্রেশন সম্ভব।

রিগ্রেশন স্যুটে কী কী পরীক্ষা অন্তর্ভুক্ত করবেন?

সমস্ত ইউনিট টেস্ট (মৌলিক রিগ্রেশন), মূল উপাদানগুলিতে ইন্টিগ্রেশন টেস্ট এবং গুরুত্বপূর্ণ ব্যবহারকারীর পরিস্থিতিতে UI টেস্ট। অন্তর্ভুক্ত করবেন না পরীক্ষামূলক কার্যকারিতার পরীক্ষা, 10% এর বেশি flakiness সহ পরীক্ষা এবং ম্যানুয়াল পরিবেশের প্রয়োজন এমন পরীক্ষা।

কীভাবে রিগ্রেশন স্যুট আপডেট রাখবেন?

সরানো কার্যকারিতার পরীক্ষাগুলি সরান, প্রয়োজনীয়তা পরিবর্তন হলে পরীক্ষাগুলি আপডেট করুন, ত্রৈমাসিক স্যুট অডিট করুন। CI অ্যানালিটিক্স — Allure, ReportPortal — প্রাসঙ্গিকতা হারিয়েছে এমন পরীক্ষাগুলি সনাক্ত করতে সহায়তা করে: যদি একটি পরীক্ষা 3 মাসে পরিবর্তিত বা ব্যর্থ না হয়, তবে এটি দৈনিক রান থেকে সরানোর প্রার্থী।

কীভাবে রিগ্রেশন রানের সময় কমানো যায়?

একাধিক ডিভাইসে পরীক্ষার সমান্তরাল সম্পাদন ব্যবহার করুন, পরিবর্তিত কোড কভারেজ বিশ্লেষণের উপর ভিত্তি করে নির্বাচনী রিগ্রেশন প্রয়োগ করুন, অপ্রাসঙ্গিক স্ক্রিনের জন্য ভিজ্যুয়াল স্ন্যাপশট বন্ধ করুন। লক্ষ্য সময় নির্বাচনী রানের জন্য: 5–10 মিনিট, সম্পূর্ণ রানের জন্য: 2 ঘন্টার বেশি নয়।

রিগ্রেশন টেস্টিং কি শুধু স্বয়ংক্রিয়করণ?

না, রিগ্রেশন টেস্টিংয়ে ম্যানুয়াল পরীক্ষাও অন্তর্ভুক্ত: রিলিজের পরে অনুসন্ধানমূলক পরীক্ষা, UX রিগ্রেশন এবং ইন্টারফেস পরিবর্তনের পরে অ্যাক্সেসিবিলিটি পরীক্ষা। স্বয়ংক্রিয়করণ কভার করে 70–80% রিগ্রেশন পরীক্ষা; বাকি 20–30% ম্যানুয়াল, যেসব পরিস্থিতি স্বয়ংক্রিয় করা অসম্ভব বা খুব ব্যয়বহুল সেগুলির উপর ফোকাস করে।

সারাংশ

  • রিগ্রেশন টেস্টিং — অনিচ্ছাকৃত ভাঙন সনাক্ত করতে প্রতিটি কোড পরিবর্তনের পরে বিদ্যমান কার্যকারিতার বারবার যাচাইকরণ।
  • সম্পূর্ণ রিগ্রেশন রান রিলিজের আগে সর্বাধিক আত্মবিশ্বাস দেয়; নির্বাচনী রান প্রতিটি pull request-এ করা হয় যা 60–80% সময় বাঁচায়।
  • রিটেস্ট একটি নির্দিষ্ট ফিক্স যাচাই করে; রিগ্রেশন যাচাই করে যে ফিক্সটি আশেপাশে কিছু ভাঙেনি — এগুলি CI/CD পাইপলাইনে পৃথক প্রক্রিয়া।
  • টেস্টিং পিরামিড রিগ্রেশনের জন্য: 70% ইউনিট, 20% ইন্টিগ্রেশন, 10% UI এবং E2E টেস্ট।
  • নির্বাচনী রিগ্রেশন কভারেজ বিশ্লেষণের (Jacoco, Xcode Test Plan) উপর ভিত্তি করে গুণমান ত্যাগ না করেই রানের সময় হ্রাস করে।
  • ত্রৈমাসিক পর্যালোচনা টেস্ট স্যুটের এবং CI অ্যানালিটিক্স রিগ্রেশন টেস্টিংয়ের কার্যকারিতা বজায় রাখে।
  • স্বয়ংক্রিয়করণ 70–80% রিগ্রেশন পরীক্ষা কভার করে; ম্যানুয়াল পরীক্ষা অনুসন্ধানমূলক এবং UX পরীক্ষার জন্য স্বয়ংক্রিয়করণের পরিপূরক।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন