Software Regression چیست ؟ – پسرفت نرم افزار به زبان ساده
«پسرفت نرمافزاری» (Software Regression) باگی در برنامه نویسی و توسعه نرم افزار به حساب میآید که باعث میشود نرم افزار در عمل در یک یا چند ناحیه پسرفت داشته باشد. در ادامه این مطلب بیشتر به این موضوع پرداختهایم که Software Regression چیست و همچنین به سایر مباحث مهم پیرامون این موضوع پرداخته شده است.
علت وقوع پسرفت نرم افزاری چیست ؟
رویدادی مثل «ارتقا دادن» (Upgrade)، معمولاً دلیل بروز پسرفت نرمافزاری یا همان Software Regression است. با انجام «آزمون پسرفت» (Regression Testing)، نرم افزار مربوطه بررسی میشود تا اطمینان حاصل کنیم هیچ پسرفتی رخ نداده و نخواهد داد.
انواع Software Regression چیست ؟
دو نوع اصلی از پسرفت نرم افزاری وجود دارد؛ یکی «پسرفت عملکردی» (Functional) و دیگری «پسرفت ناکارایی» (Non-Functional) است.
پسرفت عملکردی یا تابعی یعنی برنامه با سرعت مناسبی کار میکند، اما یک یا بیش از یک تابع یا همان عملکرد در برنامه کار نمیکنند. همچنین پسرفت ناکارایی هم یعنی تمام توابع و عملکردهای برنامه کار میکنند، اما سرعت آنها به طور قابل توجهی کاهش پیدا کرده است.
پسرفت عملکردی یا Functional Regression چیست ؟
پسرفت تابعی یا عملکردی نرم افزار یکی از حالتهای Software Regression است که خود را نشان میدهد. وقتی این حالت رخ میدهد، برنامه به اجرا با حداکثر سرعت ادامه میدهد، بنابراین ممکن است کاربر ابتدا متوجه وجود پسرفت نشود. در این حالت، برخی عملکردها وجود دارند که دیگر کار نمیکنند.
برای مثال، اگر در برنامهای قابلیت جستجوی فایل وجود داشته باشد، آن عملکرد دیگر کار نخواهد کرد. این مسئله میتواند بر عملکردهای جانبی (یعنی آنهایی که زیاد استفاده نمیشوند) یا قابلیتهای عملکردی اصلی برنامه تاثیر بگذارد.
پسرفت ناکارایی یا Non-Functional Regression چیست ؟
در «پسرفت نرم افزاری ناکارایی»، با وجود اینکه تمام عملکردها همچنان کار میکنند، بسیار خطرناکتر و البته یافتن آن آسانتر است. در این نمود، پسرفت باعث میشود برنامه کندتر اجرا شود یا خروجی برنامه به میزان قابل توجهی متفاوت از خروجی واقعی باشد.
سرعت کم یعنی برنامه در برابر کدهای مخرب و حملات نیز آسیبپذیر خواهد بود و این مسئله باعث میشود هم برنامه و هم کامپیوتری که برنامه روی آن اجرا میشود در معرض خطر هک شدن قرار بگیرند. سرعت ممکن است آنقدر کاهش پیدا کند که استفاده از برنامه غیرممکن شود.
پسرفت نرم افزاری Software Regression چگونه اتفاق می افتد ؟
برای رخداد پسرفت نرم افزاری، باید چیزی به نام «رویداد» (Event) اتفاق بیوفتد. این رویداد، کدنویسی نرم افزار را تغییر میدهد و این باگها ایجاد میشوند. حال این اتفاق یا به طور عمدی رخ میدهد (که امری نادر است) یا اینکه به طور غیر عمدی و ناخواسته اتفاق میافتد.
ممکن است برنامه نویس سعی در دیباگ کردن یا بهروزرسانی نسخه برنامه داشته است، اما به اشتباه کدهایی را اضافه میکند که باعث پسرفت برنامه میشوند. رایجترین رویداد، ارتقا دادن یا همان Upgrade کردن برنامه است، زیرا این مسئله مستقیماً کدنویسی برنامه را تحت تاثیر قرار میدهد. سایر رویدادها شامل تغییرات در نسخه یا پیکربندی نرمافزار میشوند.
راهکار جلوگیری از Software Regression چیست ؟
برای کاهش احتمال وقوع Software Regression معمولاً از Regression Testing یا همان آزمون پسرفت استفاده میشود. در این نوع از تست و آزمایش، ابتدا برنامه جدید وارسی و مقایسه با تمام نسخههای قدیمی انجام میشود.
سپس تست مربوطه روی برنامه اجرا میشود تا مشخص شود آیا هیچ نشانی از پسرفت وجود دارد یا خیر و اطمینان حاصل خواهد شد که تمام کدهای برنامه به خوبی کار میکنند. هر نشانهای از پسرفت یا کدهایی که کار نمیکنند به توسعه دهنده یا کاربر بازگردانده میشوند و در خصوص اینکه چه چیزی پسرفت داشته است یا پسرفت در کجا پیدا شده است گزارش خواهد داد.
جمعبندی
پسرفت نرم افزاری یا همان Software Regression نوعی باگ به حساب میآید. علت وقوع آن، وجود اشکالی در برنامه است که یا منجر به از کار افتادن برخی از بخشهای نرم افزار میشود یا سرعت اجرای برنامه به شدت کاهش مییابد. علت بروز پسرفت نرم افزاری معمولاً آپگرید کردن نرم افزار و تغییر در کدهای آن است که البته در اکثر مواقع به صورت تصادفی و غیر عمد رخ میدهد.
دو نوع پسرفت نرم افزاری عملکردی و ناکارایی وجود دارد. در پسرفت عملکردی برخی از عملکردهای نرم افزار دچار مشکل میشوند و در پسرفت ناکارایی هم سرعت اجرای برنامه به شدت کاهش پیدا میکند. برای مقابله با Software Regression از آزمون پسرفت یا همان Regression Testing استفاده میشود که به احتمال زیاد در مطالب بعدی متلبسایت به آن بیشتر خواهیم پرداخت.
اگر این مطلب مفید بوده است، استفاده از دورههای آموزشی و مقالات زیر نیز پیشنهاد میشود:
- مجموعه دورههای آموزش مهندسی نرم افزار
- دوره آموزش ویژوال استودیو – خطایابی کدهای سیشارپ
- مجموعه دورههای آموزش توسعه اپلیکیشن موبایل
- باگ چیست ؟ — Bug در برنامه نویسی و انواع به زبان ساده
- دیباگ چیست ؟ – توضیح اهمیت در برنامه نویسی + شرح فرآیند
- تست نرم افزار چیست ؟ – روش ها و اهمیت به زبان ساده
- دیباگ کردن در ویژوال استودیو کد — به زبان ساده – مجله فرادرس
- نکات و ترفندهای دیباگ در اندروید استودیو | به زبان ساده
- روش توسعه چابک نرم افزار (Agile Software Development) چیست؟
منبع [+]
مجموعه: برنامه نویسی, مهندسی کامپیوتر, مهندسی نرم افزار برچسب ها: آموزش تست نرم افزار, باگ نرم افزاری, باگ و دیباگ, باگ و دیباگ در برنامه نویسی, پس رفت نرم افزاری, تست رگرسیون, تست رگرسیون Regression, تست های نرم افزار, رگرسیون نرم افزاری, عیب یابی نرم افزار, فیلم آموزش توسعه نرم افزار, کندی نرم افزار