انواع مختلف تست نرم افزار

انواع مختلف تست نرم افزار

صدها نوع مختلف تست نرم افزار داریم اما به طول کلی دو روش تست تقسیم می شوند: تست دستی و تست خودکار.

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

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

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

انواع تست نرم افزار

در اینجا برخی از رایج ترین و پر استفاده ترین انواع تست رو معرفی میکنیم:

تست دسترس پذیری

این نوع تست نرم افزار اغلب برای بررسی اینکه آیا نرم افزار مجموعه ای از خواسته های مورد نیاز رو برآورده میکنه یا نه انجام می شود. برای انجام این  شما نیازه کل اپلیکیشن را را اندازی کرده باشید و در حال اجرا داشته باشید تا تست کننده نرم افزار بتونه همه رفتارهای ممکن کاربر را mirror یا شبیه سازی کند، عمکلرد سیستم در حال اجرا را دنبال کند و در صورتی که اهدافی برآورده نمی شوند تغییرات قطعی را reject کند.

تست Black box

این نوع تست نرم افزار برای بررسی جنبه عملکردی نرم افزار بدون هرگونه دانشی از کد یا ساختار داخلی اپلیکشین می باشد. تست black box در اصل بر اساس خواسته ها و عملکرد است، اغلب توسط تیم های QA انجام می شود.

تست end to end

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

این نوع تست به شدت کاربردی است. تنها مشکل این است که خیلی پر هزینه است و نگهداری آن در صورتی که خودکار شود سخت است.

قبل از اولین اجرای نرم افزار یا بعد از توسعه جدید ضروری است در عین حال که به تست های نرم افزار Lower-end مثل تست های واحد و یکپارچگی برای شناسایی هر گونه breaking changes تکیه می کنید، چند تا تست end to end انجام بدید تا عملکرد بهینه را تضمین کنید.

تست عملکرد یا Functional

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

تست اکتشاف یا Exploratory

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

تست یکچارچگی

تنها هدف اجرای تست های یکپارچگی برای نرم افزار شما این است که تایید کنید ماژول ها و سرویس های مختلف که نرم افزار شما ارائه می کند به خوبی با هم کار می کنند. یک مثال خیلی رایج از تست یکپارچکی زمانی که است که نرم افزار برای سازگاری با دیتابیس تست می شود. به طور کلی این نوع تست می تواند بسیار گران باشد چون نیاز هست تعدادی از بخش های برنامه شما راه اندازی شده و در حال اجرا باشند.

تست بار یا load

تست های بار جز دسته بندی کارایی تست نرم افزار هستند. تمرکز آنها روی این است که نرم افزار شما قبل از اینکه شروع به کاهش کارایی کند چقدر بار را می تواند تحمل کند. اجرای تست های Load مهم است چون شما متوجه میشوید چه میزان ظرفیتی برنامه شما می تواند هندل کند.

تست غیر عملکردی یا non-functional

این نوع تست روی جنبه های غیر عملکردی نرم افزار مثل کارایی، امنیت، قابلیت استفاده و قابلیت اتکا دارد. تست های غیر عملکردی بعد از اینکه همه تست های عملکردی به پایان رسیدند انجام می شوند.

تست های غیر عملکردی عالی هستند چون به شما اجازه می دهند کیفیت نرم افزار خود را تا حد زیادی بهبود بدهید. در حالیکه تست های عملکردی یک ساختار solid و working برای نرم افزار ایجاد می کند تست های غیر عملکردی بیشتر شبیه یک polish برای اپلیکیشن عمل می کنند.

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

تست کارایی

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

به عنوان مثال شما می توانید یک تست کارایی اجرا کنید تا زمان پاسخ پلتفرم در مقابل تعداد بالای درخواست را مشاهده کنید که به شما اجازه می دهد ببینید سیستم چطور تحت فشار کار می کند.

این نوع تست ذاتا خیلی گران است اما از اهمیت اساسی برخوردار است چون به شما کمک می کند تا شما قبل از اینکه پیاده سازی تغییرلت جدید Live شوند درک بهتری از اینکه چطور نرم افزار تحت تاثیر قرار می گیرد داشته باشید.

تست regression

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

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

تست سلامت یا Sanity

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

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

تست امنیت

امنیت نرم افزار یا application شما باید همیشه بالاترین اولویت را داشته باشد. لو رفتن داده های کاربر ممکن است شما را در شرایط خیلی بدی قرار دهد. به همین خاطر است که امنیت نرم افزار برای هر نرم افزاری حیاتی است.

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

تست منفی یا Negative

تست منفی اغلب با استفاده از داده غیر معتبر یا خطا انجام می شود تا مطمئن شود سیستم با ورودی غیر معتبر و اشتباه مطابق انتظار رفتار می کند.

تست Smoke

تست smoke اشاره به چک کردن عملکرد پایه application شما دارد. این تست تضمین می کند که همه feature های major پلتفرم شما همانطور که باید عمل می کنند. این نوع از تست نرم افزار خیلی ارزان است و نیازمند میزان زیادی وقت و توان نیست.

تست های smoke به ویژه بعد از اینکه توسعه جدید داده شد برای تعیین اینکه آیا شما می توانید یا نمی توانید تست نرم افزاری گران تری را انجام دهید یا آیا application شما به درستی در محیط استقرار جدید خودش در حال اجرا هست مفید است.

تست استرس

تست استرس، استراتژی دیگری برای اندازه گیری ظرفیت است. برای تعیین این که چگونه و چه موقع نرم افزار با استرس بیشتر از مشخصاتش شکست می خورد. برای stress-test یک نرم افزار یا application خاص شما نیاز دارید تا آن را زیر بار تعداد زیادی پرس و جوی دیتابیس، ورودی های پیوسته یا بارگزاری بیش از حد ظرفیت حافظه و غیره، تحت فشار قرار دهید.

تست واحد

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

تست white-box

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

نتیجه گیری

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

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

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

 

منبع

https://www.orientsoftware.com/blog/what-are-the-different-software-testing-types/

اشتراک گذاری