بهروز
بهروز
خواندن ۳ دقیقه·۵ سال پیش

Bug ها را پس از تصحیح رها نکنیم

تاریخ انتشار نسخه اصلی 9 آوریل, 2017
یکی از کارهای روزانه  تیمهای نرم افزاری تصحیح باگهای گزارش شده است. گزارش هایی که یا از سمت مشتری و بخش پشتیبانی ایجاد میشود یا تست کنندگاه سیستم و یا خود برنامه نویسان. در واقع فرقی نمیکند که نرم افزار تولید شده در دوره رشد یا دوره بلوغ  و نگهداری خود باشد. باگها همیشه هستند و همیشه هم باید آنها را با توجه به الویتشان درست کرد. برای گزارش و پیگیری باگها هم سیستمهای یکپارچه رایجی مانند Jira، YouTrack  یا Zandesk وجود دارد که کار را برای بخش فنی و پشتیبانی ساده کرده اند. اما متاسفانه در موارد بسیاری این باگها پس از تصحیح، تایید و patch شدن به دست فراموشی سپرده میشوند ?

یکی از فرایندهایی که در بخشهای فنی کارا و با سابقه وجود دارد، تحلیل باگها یا اصطلاحاً Defect Analysis است.  در این فرایند تیمهای نرم افزاری بجای فراموش کردن باگها در طول زمان، هر یک ماه در جلسهای دور هم مینشینند و باگهای گزارش شده در ماه گذشته را بازنگری، دسته بندی و تجزیه و تحلیل میکنند تا هم شناخت بهتری از وضعیت سیستم داشته باشند و هم علل اصلی ایجاد باگها یا اصطلاحاً Root Cause را با برنامه ریزی رفع کنند. روشهایی برای هم دو کار یعنی تحلیل باگ و تحلیل علل اصلی ایجاد باگ مانند Fishbone Diagram وجود دارد اما در چند خط پیش رو میخواهم تجربه شخصی خود در این مورد بنویسم.

برای تحلیل باگها اولین کار ایجاد معیارهایی برای دسته بندی آنهاست. تعدادی از این دسته بندیها مانند نسخه نرم افزار و اولویت آن به طور پیشفرض در سیستمهای مدیریت باگ وجود دارد. اما میتوان موارد زیر را که برای تحلیل مهمتر است را به آن افزود:

  • آیا این باگ قبلاً نیز گزارش و تصحیح شده؟
  • باگ بخاطر نارسایی در کدام بخش از چرخه تولید نرم افزار رخ داده است؟ مشکل باگ بخاطر تعریف نادرست در نیازمندیها بوده یا در طراحی و پیاده سازی درست صورت گرفته و یا به خاطر نبودن محیط مناسب برای تست بوده است؟ حتی میتواند بخاطر اشکال در زمان نصب یا patch کردن رخ داده باشد.
  • آیا این باگ انقدر مهم بوده است که روند انتشار عمومی نرم افزار را دچار اختلال کند؟ در واقع به نوعی Show Stopper بوده یا نه. بسیاری از شرکتها دوره مشخصی مانند یک هفته، یا یک ماه برای انتشار نسخه عمومی یا patch دارند که در رابطه مستقیم با قرارداد یا سطح سرویس با مشتری است. وجود این باگها معمولا بیانگر مشکلی جدی در سیستم است که حتی تستهای متعدد اتوماتیک و دستی هم در پیدا کردنشان موفق نبوده اند.
  • باگ توسط چه بخش و در قالب چه تستی پیدا شده است؟ مهم است که باگ توسط مشتری پیدا شده باشد یا در جریان تست و یا توسط خود برنامه نویس. روند باید طوری باشد که باگها بیشتر ابتدا در فرایند تولید و بعد از آن در جریان تست ها مشخص بشوند.

یکی از وظیفه های تست کننده در تیم نرم افزار میتواند تحلیل و دسته بندی باگها بر اساس معیارهای بالا و آوردن نتایج برای بررسی در جلسه ادواری تحلیل باگها باشد. حاصل این جلسات موارد زیر است:

  • اولویت بندی مشکلات بر اساس تعداد و اهمیت باگهای گزارش شده در آن زمینه، پیدا کردن علل اصلی بودن این تعداد باگ و شروع فرایند تحقیق و تصحیح
  • پیدا کردن ضعف در مرحله مشخص از چرخه تولید مانند تعریف نیازمندی ها و تلاش برای حل آن با قسمت مربوطه یا حتی رفع مشکل ارتباطی میان بخشها
  • بازبینی تست های اتوماتیک و دستی. ممکن است به این نتیجه برسیم که وجود تعدادی از تستها سودی نداشته و در عوض تلاش کنیم تا تستهای دیگری را اضافه کنیم و یا محیطهای بیشتری را برای تست پوشش دهیم.

انجام این فرایند در ماههای متمادی میتواند راهی باشد برای کاهش میزان مشکلات نرم افزار و شناخت بیشتر از وضعیت آن.

تست نرم افزاراتوماسیون تستباگ نرم افزار
مهندس تست و امنیت نرم افزار https://www.linkedin.com/in/behroozaghakhanian
شاید از این پست‌ها خوشتان بیاید