شنبه , ۱ اردیبهشت ۱۴۰۳

۷ اصل تست نرم‌افزار

Seven Fundamental Principles of Testing
Seven Fundamental Principles of Testing

پیش‌زمینه

این مهم است که در حین انجام تست نرم‌افزار شما بتوانید بدون انحراف از هدف، Test Resultهای مطلوبی بدست آورید. اما چگونه معلوم می‌شود که استراتژی درستی برای تست دنبال می‌کنید؟ به همین دلیل، شما باید به اصول اولیه تست پایبند باشید. در اینجا، هفت اصل اساسی تست ارائه شده است که به طور گسترده‌ای در صنعت نرم‌افزار مورد استفاده قرار می‌گیرند.

برای درک این موضوع، یک سناریو را در نظر بگیرید که در آن فایل را از پوشه A به پوشه B منتقل می‌کنید.

به  تمام راه‌های ممکن که می‌توانید این را موضوع را تست کنید، فکر کنید.

به غیر از سناریوهای معمول، می‌توانید شرایط زیر را نیز تست کنید:

  • تلاش برای انتقال فایل هنگامی که باز است
  • شما حق امنیتی برای قرار دادن فایل در پوشه B ندارید
  • پوشه B بر روی درایو مشترک(Shared Drive) است و ظرفیت ذخیره‌سازی کامل است
  • پوشه B یک فایل با همان نام دارد

در واقع این لیست بی پایان است.

مثلا می‌توانید فرض کنید شما ۱۵ فیلد ورودی برای تست دارید، هر کدام دارای ۵ مقدار ممکن است، تعداد ترکیباتی که باید مورد تست قرار گیرند، برابر ۱۵^۵(پنج به توان ۱۵).

اگر شما کل ترکیبات احتمالی را تست کنید، زمان و هزینه‌های اجرایی پروژه  به شکل بی حد افزایش می‌یابد. در اینجا نیاز به اصول و استراتژی خاصی برای بهینه‌سازی تلاش تست داریم.

در اینجا ۷ اصل وجود دارد

۱- تست جامع ناممکن است

بله! تست کامل قابل انجام شدن نیست، و البته مثال آنرا در بالا دیدیم. در عوض، ما بر اساس ریسک برنامه به مقدار مطلوبی تست نیاز داریم.

البته ابن یک مثال بسیار ساده بود. اگر شرایط مقداری واقعی‌تر شود تعداد حالات هم به صورت تصاعدی رشد می‌کند.

حالا که فهمیدیم تست کامل ناممکن است، و باید در تست‌های خود ریسک را مد نظر داشته باشیم، سوال میلیون دلاری این است که چگونه این ریسک را تعیین می‌کنید؟

برای پاسخ دادن به این بیایید یک تمرین انجام دهیم:
به نظر شما، کدام عملیات به احتمال زیاد باعث خراب شدن سیستم عامل شما خواهد شد؟

من مطمئن هستم که بسیاری از شما حدس زده‌اید و ۱۰ برنامه مختلف را در همان زمان باز کنید.

بنابراین مثلا اگر شما این سیستم عامل را تست کنید، متوجه خواهید شد که این نواقص احتمالا در فعالیت‌های Multi Tasking یافت می‌شوند و باید کاملا تحت تست قرار بگیرند تا ما را به اصل بعدی یعنی خوشه‌بندی نواقص هدایت کنند.

۲- خوشه‌بندی نقص

خوشه‌بندی نقصی بیان می‌کند تعداد کمی از ماژول‌ها دارای بیشترین نواقص هستند. این همان کاربرد اصل پارتو برای تست نرم‌افزار است: تقریبا ۸۰٪ از مشکلات در ۲۰٪ از ماژول‌ها یافت می‌شوند.

با تجربه، می‌توانید چنین ماژول‌های پر ریسکی را شناسایی کنید. اما این رویکرد مشکلات خاص خود را دارد.

اگر تست‌های یکسان بارها و بارها تکرار شوند، در نهایت همان Test Caseها، باگ‌های جدید را پیدا نخواهد کرد.

۳- پاردوکس آفت‌کش‌ها(ضعف آفت‌کش‌ها)

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

برای غلبه بر این موضوع، Test Case باید به طور منظم بررسی و مورد تجدید نظر قرار گرفته و Test Caseهای جدید و مختلف برای کمک به یافتن نواقص بیشتر اضافه شوند.

تسترها به سادگی نمی‌توانند به تکنیک‌های تست موجود وابسته باشند. تستر باید به طور مداوم به دنبال بهبود متدهای موجود برای تست موثرتر باشد. اما حتی پس از این همه کار سخت در تست، شما هرگز نمی‌توانید ادعا کنید محصول شما بدون اشکال است.

۴- تست نشان می‌دهد نقص وجود دارد

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

علاوه بر پاراگراف بالا همانطور که قبلا دیدیم تست کامل ناممکن است، بنابراین حتی اگر تمام تست‌های شما موفق هم باشد، به دلیل عدم کمال تست شما نمی‌توانید بگویید محصول شما فاقد نقص است.

اما اگر حتی بسیار سخت کار کردید، و تمام اقدامات احتیاطی را انجام داده و محصول نرم افزار خود را ۹۹٪ بدون خطا ارائه دهید ممکن است باز هم این نرم‌افزار نیازمندی‌ها و الزامات مشتریان را برآورده نکند.

۵- عدم وجود خطا، استفاده از نرم‌افزار را تضمین نمی‌کند

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

اصل بعدی راه حل این مشکل است.

۶- تست زودهنگام

تست باید در چرخه حیات توسعه نرم‌افزار در اسرع وقت شروع شود. بنابراین هرگونه نقص در نیازمندی‌ها یا مرحله Design در مراحل اولیه تشخیص داده می‌شود. رفع نقص در مراحل اولیه تست بسیار ارزانتر است. اما چگونه در اوایل باید تست را شروع کنیم؟ توصیه می‌شود یافتن باگ‌ها را زمانی که نیازمندی‌ها تعریف شد، آغاز کنید. در آموزش‌های بعدی بیشتر در این مورد صحبت خواهیم کرد.

۷- تست وابسته به زمینه محصول است

تست وابسته به زمینه است که اساسا به این معنی است که روش تست کردن سایت تجارت الکترونیک متفاوت از روش تست برنامه کسب و کاری موجود در فروشگاه‌هاست. تمام نرم‌افزارهای توسعه یافته یکسان نیستند. شما ممکن است از رویکردها، متدولوژی‌ها، تکنیک‌ها و انواع تست‌های متفاوت بر اساس نوع برنامه استفاده کنید. برای مثال تست هر سیستم POS در یک فروشگاه خرده فروشی متفاوت از تست دستگاه ATM است.

خلاصه ۷ اصل اساسی تست نرم‌افزار

۱- تست جامع ناممکن است

۲- خوشه‌بندی نقص

۳- پارادوکس آفت‌کش‌ها(ضعف آفت‌کش‌ها)

۴- تست نشان می‌دهد نقص وجود دارد

۵- عدم وجود خطا، استفاده از نرم‌افزار را تضمین نمی‌کند

۶- تست زودهنگام

۷- تست وابسته به زمینه محصول است

 

افسانه: “اصول فقط برای مرجع هستند، من از آنها در عمل استفاده نمی‌کنم.”
این یک جمله به شدت نادرست است. اصول تست به شما کمک خواهد کرد تا یک استراتژی تست موثر ایجاد کرده، و Test Caseهایی را به صورت پیشنویس آماده کنید، که خطاها را به دام می‌اندازند.

اما یادگیری اصول تست، درست مثل یادگیری رانندگی برای اولین بار است.

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

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

این مطلب بخشی از دوره آموزشی رایگان تست نرم‌افزار بود، که می‌توانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.

مِلیک وارطانیان

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *