-
تست نرم افزار
-
1404-06-15
-
11
-
0
آزمون نرمافزار یا تست نرمافزار (software testing) به فرایند ارزیابی نرمافزار به منظور اطمینان از عملکرد صحیح آن در رویدادهایی مختلفی که ممکن است در دوره استفاده از نرمافزار با آن مواجه شود میباشد و به عبارت دیگر پیدا کردن خطاهایی احتمالی یک نرمافزار برای عملکرد درست، صحیح و بهینه آن در طول استفاده از آن است.
تست نرم افزار از بررسی محصولات و رفتار نرم افزار تحت آزمایش از طریق اعتبارسنجی و تایید تشکیل شده است. همچنین میتواند دیدی هدفدار و مستقل از نرمافزار ارائه دهد تا به کسب و کارها اجازه دهد ریسک اجرای نرم افزار را درک کنند. تست نرم افزار فرایندی است برای اطمینان از اینکه نرم افزار یا برنامه شما همانطور که باید، کار میکند.
چرخه انتشار نرم افزار از زمان شروع کد نویسی تا عرضه نسخه نهایی میباشد که شامل چندین مرحله و عرضه نرم افزار میباشد.
این مرحله شامل تمام فعالیتهای انجام شده قبل از مرحله تست میباشد. در این دوره آنالیز نیازمندیها، طراحی نرم افزار، توسعه نرم افزار و حتی تست واحد باشد. در نرم افزارهای سورس باز چندین نسخه قبل از آلفا ممکن است عرضه شوند.
این مرحله شامل همه فعالیتها از زمان شروع تست میباشد. البته منظور از تست، تست تیمی و تست خود نرم افزار میباشد. نرم افزارهای آلفا هنوز ممکن است خطا و اشکالاتی داشته باشند و ممکن است اطلاعات شما از بین رود. در این مرحله امکانات جدیدی مرتبا به نرم افزار اضافه میگردد.
نرم افزار بتا، همه قابلیتهای آن تکمیل شده و خطاهای زیادی برای کامل شدن نرم افزار وجود دارد. در این مرحله بیشتر به تست کاهش تاثیرات به کاربران و تست کارایی دقت میشود. نسخه بتا، اولین نسخهای خواهد بود که بیرون شرکت و یا سازمان در دسترس قرار میگیرد. برخی توسعه دهندگان به این مرحله preview، technical preview یا early access نیز میگویند.
در این مرحله نرم افزار، آماده عرضه به مصرف کنندگان است و نرم افزارهایی مثل سیستم عاملهای ویندوز در دسترس تولید کنندگان قرار گرفته تا با جدیدترین سخت افزار خود یکپارچه شوند.
تست دستی به معنای آزمایش دستی یک برنامه کاربردی توسط انسان است. یک متخصص تضمین کیفیت «آزمونگر» که آزمایشهای دستی را انجام میدهد، با پیروی از شرایط نوشته شده در موارد آزمایشی، اطمینان حاصل میکند که یک برنامه به درستی کار میکند. آزمایشکننده ممکن است طبق یک اسکریپت تستی یا مراحل آزمایشی این روش را پیش ببرد، یا آزمون اکتشافی خود را به صورت دستی انجام دهد. تست دستی زمانی مفید است که تست خودکار امکان پذیر نباشد.
تست دستی به ویژه زمانی مفید است که:
در حال تست رابط کاربری (UI)، قابلیت استفاده (Usability) و تجربه کاربری (UX) هستید،
در حال ارزیابی رفتار نرم افزار در سناریوهای غیر قابل پیش بینی هستید،
در حال ارزیابی زیبایی شناسی و احساس کلی برنامه هستید.
تست خودکار توسط اسکریپتها یا ابزارها انجام میشود. آزمایشکننده ممکن است ابزار یا اسکریپت را راهاندازی کند، اما آزمایش به صورت خودکار مراحل خود را طی میکند. در تست خودکار، تستهای از پیش تعیین شدهای وجود دارد که به صورت خودکار اجرا میشوند. این آزمایشها برای مقایسه نتایج واقعی با نتایج مورد انتظار انجام میشوند. تستهای خودکار به تعیین اینکه آیا برنامه مطابق انتظار عمل میکند یا خیر کمک میکنند.
سلنیوم یک فریمورک اتوماسیون تست متنباز محبوب است که به آزمایش کنندگان نرم افزار کمک میکند تا اسکریپتهای تست خودکار را بسازند و اجرا کنند. Selenium رابطی را ارائه میکند که به آزمایشکنندگان کمک میکند تا اسکریپتهای تست را در زبانهای برنامهنویسی محبوب مانند Ruby، Node JS، Python، Java، C#، PHP و غیره ایجاد کنند.
تست سلنیوم به شرکتها اجازه میدهد تا اپلیکیشنهای وب را برای عملکرد و سازگاری آنها در مرورگرهای مختلف تایید کنند. سلنیوم به آزمایشکنندگان امکان میدهد تا اسکریپتهای آزمایشی را به زبان برنامهنویسی ترجیحی (preferred ) بنویسند، و میتوان آن را روی یک نمونه مرورگر در هر دستگاه هدف مانند یک گوشی هوشمند، تبلت ، لپ تاپ یا PC اجرا کرد که به تیمهای تست اجازه میدهد ساعتهای بیشماری در زمان تست، صرفهجویی کنند، که در صورتی که مجبور شوند هر ماژول یک برنامه را به صورت دستی در یک محیط run-time واقعی خارج از توسعه تایید کنند، میتوان از آن اجتناب کرد.
Cypress، یک فریم ورک آزمایشی مبتنی بر جاوا اسکریپت است. یک فریم ورک آزمایشی جاوا اسکریپت غنی از ویژگی ها که در مرورگر اجرا می شود و آزمایش های ناهمزمان را ساده و راحت می کند.
یکی از تفاوتهای اصلی Cypress با سایر ابزارهای تست خودکار مانند Selenium، Puppeteer، نحوه عملکرد آن در مرورگر است. Cypress به جای اینکه از طریق یک پروکسی یا لایه واسط با مرورگر ارتباط برقرار کند، مستقیماً در مرورگر اجرا میشود. این امر باعث میشود که تستها سریعتر و دقیقتر انجام شوند و تعاملات پیچیده کاربر با اپلیکیشنها به راحتی قابل شبیهسازی باشد.
ویژگی منحصربهفرد دیگر Cypress، قابلیت time-travel یا بازگشت به عقب است. این ویژگی به کاربران امکان میدهد که هر مرحله از تست را به صورت تصویری مرور کرده و بررسی کنند که در هر لحظه چه اتفاقی رخ داده است. این ویژگی، به خصوص هنگام دیباگ کردن مشکلات تستها، بسیار مفید و کارآمد است و فرآیند رفع خطا را به طرز چشمگیری ساده میکند.
Appium Appium محبوب ترین و جامع ترین ابزار برای خودکارسازی تست اپلیکیشن موبایل است. یک نرم افزار منبع باز برای تست اتوماتیک است و می تواند در انواع برنامه های بومی و غیر بومی و انواع برنامه های طراحی شده با IOS و android مورد استفاده قرار گیرد.
تست جعبهٔ سفید نوعی فرایند تست است که در آن ما دسترسی کاملی به کدهای نرمافزار داریم و برای افزایش امنیت و سنجیدن جریان ورودی و خروجی (I/O) و بهبود طراحی و کاربرد، میتوانیم تمامی این موارد را مورد بررسی قرار دهیم و علت استفاده از گزارهٔ White Box این است که ما در این روش هیچگونه محدودیتی در دسترسی به سورسکد نرمافزار یا اپلیکیشن نداشته و به اصطلاح درون آن پوستهٔ طراحی شده برای کاربر را میبینیم و کنکاش میکنیم.
نوعی از تست است که ما دیگر دسترسی به سورسکد نرمافزار نداشته و بر روی نیازمندیهای نرمافزار/اپلیکیشن و خصوصیات آن تمرکز میکنیم و از همین روی میتوانید نرمافزارهایی که روزانه مورد استفاده قرار میدهید مثل سیستمعامل، مرورگر، ویرایشگر و حتی نرمافزارهای نوشتهشده توسط خودتان را به سادگی مورد آزمون جعبهٔ سیاه قرار دهید.
در تست جعبهٔ سیاه، ابتدا نیازمندیها و ویژگیهای راهاندازی و اجرای نرمافزار را مورد بررسی قرار داده سپس ورودیهای مجاز را برای اینکه ببینیم نرمافزار آنها را به درستی پردازش میکند یا خیر، مورد تست قرار میدهیم که این بخش از کار اصطلاحاً Positive Test Scenario نامیده میشود. از سوی دیگر، ورودیهای غیرمجاز و نامعتبر را به همین روش که اصطلاحاً Negative Test Scenario نام دارد، تست میکنیم و پس از مقایسهٔ خروجیها با مقادیری که انتظارش را داشتیم، تست کِیسهایی را با ورودیهای مد نظر خود نوشته و اجرا میکنیم و در نهایت به مقایسهٔ آنها خواهیم پرداخت و این در حالی است که این پروسه را باید پس از پیدا کردن و حل کردن هر مشکل یا باگی، دوباره اجرا کنیم.
تست جعبه سیاه به دو دسته تست عملکردی (Functional)و تست غیرعملکردی (Non-Functional) تقسیم بندی می شود.
تست جعبه خاکستری (Gray Box Testing Strategy) روشی برای تست نرمافزار است که با آگاهی کم از فعالیتهای داخلی برنامه انجام میگیرد. این تست ترکیبی از تست جعبه سفید و سیاه است.همانطور که میدانید تستر در استراتژی جعبه سیاه از ساختار داخلی برنامه اطلاعی نداشته و در مقابل در استراتژی جعبه سفید آگاهی کامل ازساختار داخلی دارد. اما در استراتژی جعبه خاکستری تستر تا حدودی از ساختار داخلی برنامه آگاه بوده که این شامل دسترسی به ساختاردادههای داخلی و الگوریتمها در جهت طراحی Test Case ها است.
تست عملکردی همانطور که از نامش پیداست، نحوه عملکرد یک نرمافزار یا برنامه را بررسی میکند. رفتار نرمافزار مورد بررسی بر اساس نیاز مشتری تست میشود؛ یعنی با استفاده از سندی به نام مشخصات نرمافزار یا مشخصات مورد نیاز به عنوان راهنما، مورد آزمایش قرار میگیرد.
برای مثال، یک «مورد تست» (Test Case) برای آزمایش قابلیت ایجاد کاربر مینویسیم. این تست کیس، ورودی درستی را به سیستم ارائه میدهد و سپس اطمینان حاصل میکند که خروجی هم درست باشد؛ خروجی درست در اینجا اعلان موفقیتآمیز بودن ایجاد کاربر جدید است. تست عملکردی با تقلید سناریوهای واقعی، بررسی میکند تا همهچیز براساس پیشنیازهای قابل اجرا به درستی عمل کند.
تست غیر عملکردی به عنوان یک نوع آزمایش نرم افزاری برای بررسی جنبه های غیر عملکردی برنامه همچون performance usability، reliability و غیره به کار می رود.به عبارت دیگر این تست برای بررسی آمادگی یک سیستم در موارد غیر کارکردی همچون امنیت و مقیاس پذیری و در دسترس بودن و... طراحی شده است که هرگز با آزمایش عملکردی برطرف نمی شوند.
تست غیر کارکردی به همان اندازه تست عملکردی مهم است و رضایت مشتری را تحت تأثیر قرار می دهد. یکی از ویژگی های تست غیر عملکردی این است که باید قابل اندازه گیری باشد ، بنابراین جایی برای توصیف ذهنی مانند خوب ، بهتر ، بهترین و غیره وجود ندارد.
تست واحد یک تست عملکردی است که واحدها یا اجزای نرم افزار را به صورت مجزا آزمایش می کند. توسعه دهندگان معمولاً این نوع آزمایش را در طول فرآیند توسعه انجام می دهند. این تضمین می کند که هر واحد قبل از ادغام آن در سیستم بزرگتر همانطور که در نظر گرفته شده است کار می کند.
به عنوان مثال: یک اپلیکیشن سفارش غذا را در نظر بگیرد. کاربر محصولی را سفارش می دهد در هنگام تست سفارش محصول، چند بخش دیگر مانند حذف از سبد خرید و پرداخت و ارسال سفارش به صورت جداگانه تست می گردد.
تست یکپارچه سازی نوعی آزمایش است که نحوه کار واحدهای مختلف نرم افزار را هنگام ادغام در یک سیستم بزرگتر با هم آزمایش می کند.
به عنوان مثال: یک اپلیکیشن سفارش غذا را در نظر بگیرد. کاربر محصولی را سفارش می دهد در هنگام سفارش محصول، چند بخش دیگر مانند حذف از سبد خرید و پرداخت و ارسال سفارش به صورت یکپارچه تست می گردد.
تست دود یک نوع مهم از تست نرم افزاری است تا اطمینان حاصل شود که عملکرد اصلی محصول همانطور که انتظار می رود کار می کند. اگر یک واحد به خوبی کار نمی کند، آزمایش قطعات دیگر غیر ضروری است.
به عنوان مثال: یک اپلیکیشن سفارش غذا را در نظر بگیرد. کاربر محصولی را سفارش می دهد در هنگام سفارش محصول، چند بخش دیگر مانند حذف از سبد خرید و پرداخت و ارسال سفارش و احراز هویت کاربر وجود دارد. اگر احراز هویت کاربر به درستی کار نکند آزمایش دیگر سیستم متوقف میشود.
نوع دیگری از تست عملکرد نرم افزار، تست سیستم است که کل سیستم را آزمایش می کند. این تضمین می کند که سیستم تمام الزامات و عملکردهای مورد نظر را برآورده می کند. این نوع تست معمولاً بعد از تست یکپارچه سازی و قبل از تست پذیرش کاربر انجام می شود.
به عنوان مثال: یک برنامه تناسب اندام که با ویژگی های بسیاری مانند اهداف ماهیانه تناسب اندام، معیارهای سلامتی، و ساخت جلسات ورزشی شخصی سازی شده و غیره ساخته شده است. این نوع برنامه نیاز به یک فرآیند تست دارد که عملکرد کامل سیستم را تضمین کند.
تست رگرسیون تضمین می کند که تغییرات ایجاد شده در نرم افزار عملکرد موجود را خراب نمی کند. هدف نهایی این فرآیند بررسی پایداری بهره وری و عملکرد نرم افزار پس از هر افزودن جدید است.
به عنوان مثال: یک برنامه خرید آنلاین لوازم آرایشی یک محصول رایگان جدید را برای خرید اضافه می کند. برای اطمینان از اینکه عملکرد جدید به خوبی کار می کند و عملکرد موجود را خراب نمی کند، به یک تست رگرسیون نیاز دارد.
تست امنیتی بررسی میکند که چگونه نرمافزار در محیط شبکه و در مقابل حملات مخرب ایمن است. حوزههای کلیدی که باید در این تست سنجیده شوند عبارتند از: اعتبارسنجی، تایید هویت کاربران و دسترسی آنها به دادهها براساس نقشهایی مانند مدیریت، تعدیلکننده (moderator)، سازنده (composer) و کاربر معمولی.
برنامهای که قرار است یک حجم کاری (Workload) مشخص را انجام دهد، به این صورت تست میشود که در دنیای واقعی و تحت حجم کاری مشخص چگونه کار میکند. تست لود، توانایی برنامه را برای انجام عملکرد صحیح در زمان تعیین شده و توانایی تحمل حجم بار کاری میسنجد.
در این تست، برنامه با حجم کاری اضافی تحت فشار قرار میگیرد تا بررسی شود که آیا میتواند به طور موثر کار کند و استرس را مطابق با نیاز مدیریت کند یا خیر.
برای مثال، وبسایتی را در نظر بگیرید که برای بررسی رفتارش در زمانی که کاربران در پیک دسترسی هستند، تست میشود. ممکن است شرایطی وجود داشته باشد که حجم کار فراتر از حجم کار مشخص شده اولیه باشد. در این صورت ممکن است وبسایت از کار بیفتد، کند شود یا حتی کرش کند.
آزمون استرس برای بررسی این شرایط با استفاده از ابزارهای اتوماسیونی است که از آنها برای ایجاد یک وضعیت واقعی در حجم کار بالا و پیدا کردن نقایص استفاده میشود.
در تست حجم، توانایی نرمافزار برای پردازش صحیح دادهها در حجم ارائه شده، در یک محیط واقعی مورد آزمایش قرار میگیرد. در این مواقع برنامه برای سنجش صحت و قابلیت اطمینان، تحت شرایط نامطلوب تست میشود.
در تست پایداری، دوام نرمافزار با یک جریان حجم مکرر و ثابت در یک الگوی مقیاسپذیر آزمایش میشود. این تست، قدرت پایداری نرمافزار را هنگامی که با حجم کاری ثابت روبرو میشود، بررسی میکند.
این تست مربوط به زمانی است که می خواهید بررسی کنید سیستم تا چه اندازه استفاده می شود و در صورت نیاز کاربران به آن تا چه حد در دسترس است و همچنین برای اینکه حوادث خرابی را به حداقل برسانید و اینکه بررسی کنید پیش از بازگشت سیستم به حالت نرمال ، چه مدت زمان تعمیر پیش بینی می شود.
انعطاف پذیری نرم افزار برای انتقال از سخت افزار یا محیط نرم افزار فعلی آن به سخت افزار یا محیط نرم افزار دیگر.
برای بررسی اینکه هر برنامه نرم افزاری می تواند ظرفیت پردازش خود را برای پاسخگویی به افزایش تقاضا گسترش دهد.
ثبت دیدگاه جدید
0 دیدگاه
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *