<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های امیرحسین گل ابادی</title><link>https://virgool.ir/feed/@amirhossein.golabadi1994</link><description>مدیر تست نرم‌افزار فیدیبو/ دیجی‌کالا</description><language>fa</language><pubDate>2026-11-12 20:12:02</pubDate><image><url>https://files.virgool.ir/upload/users/834765/avatar/sBt6Y0.jpeg</url><title>امیرحسین گل ابادی</title><link>https://virgool.ir/@amirhossein.golabadi1994</link></image><item><title>تست نرم‌افزار(چیست؟چگونه؟توسط چه کسی؟)</title><link>https://virgool.ir/@amirhossein.golabadi1994/تست-نرم-افزارچیستچگونهتوسط-چه-کسی-nk7knzuegnij</link><description>مقدمهتست نرم‌افزار فعالیتی است که تقریبا هر فرد تست‌کننده‌ای در حرفه‌ خود در حال انجام است.این دو واژه (تست نرم‌افزار) از جنبه‌‌های عملی بسیار گسترده هستند. در این مجموعه مطالب که در حوزه تست نرم‌افزار است به هسته‌های اصلی و مهم تست نرم‌افزار می‌پردازیم و به مرور وارد جزئیات و نکاتی که در این مقاله بیان کردیم خواهیم شد.در این مطلب، ابتدا از این که تست نرم‌افزار از نظر علمی و تئوری به چه معناست گفتم و بعد عناوین و بخش‌های مختلف تست نرم‌افزار رو شرح مختصر دادم و در مقالات بعدی این موارد رو به صورت کامل‌تر باز می‌کنم .از این که برخی دوستان بگن این موارد رو می‌دونیم خودمون، موارد پیچیده‌ای نیست و یا موارد تکراری وخیلی ساده هستند درسته ولی از اونجایی که این مجموعه مطالب توسط جامع بزرگی از افراد مطالعه میشه، سعی کردم با زبان ساده و ذکر همه قسمت‌ها موارد رو بیان کنم و به مرور حرفه‌ای‌تر و کامل‌تر بشه.تست نرم‌افزار چیست؟تست نرم‌افزار به عنوان یک نوع تست که برای یافتن خطاهای نرم‌افزار و بررسی و رفع این موارد توسط تیم‌های مربوطه تعریف شده است.این کار کمک می‌کند تا ضمن کاهش هزینه‌ها، به حداکثر رساندن ‌ROI و صرفه‌جویی در زمان تیم Tech  کیفیت نرم‌افزار را  افزایش دهد.مراحل تست نرم‌افزار شامل نیازمندی‌های لازم برای تجزیه و تحلیل نرم‌افزار (Requirement analysis)، برنامه‌ریزی تست( Test planning)، تجزیه و تحلیل تست (Test analysis)، طراحی تست (Test Design)، اجرای تست‌ (Test execution) و گزارش مشکلات (Bug reporting) و… است.انواع تست نرم‌افزارهاهر نوع تست نرم‌افزار ویژگی‌ها، مزایا و معایب خاص خود را دارد. با این حال، در این مقاله فقط عناوین را مطرح خواهیم کرد و در مقاله‌های بعدی هر کدام را کامل توضیح خواهم داد .دسته‌بندی انواع تست نرم‌افزار به شرح زیر است:Functional Testing :Unit TestingIntegration TestingSystem TestingSanity TestingSmoke TestingInterface TestingRegression TestingBeta/Acceptance TestingNon-functional Testing :Performance TestingLoad TestingStress TestingVolume TestingSecurity TestingCompatibility TestingInstall TestingRecovery TestingReliability TestingUsability TestingCompliance TestingLocalization Testingتنوع انواع تست نرم‌افزار بیش از صد مدل است ولی در بالا مواردی که بیش‌تر و مهم‌تر هستند و کاربرد بیش‌تری دارد را بیان کردم.انواع نرم‌افزارهانرم‌افزارها از نظر تنوع به سه دسته تقسیم می‌شوند:۱- تست نرم‌افزار تحت وب۲- تست نرم‌افزار نسخه دسکتاپ۳- تست نرم‌افزار نسخه موبایل(به دلیل تخصصی بودن نام‌های تست نرم‌افزار این قسمت با همان عنوان‌های انگلیسی بیان شده است)Web application TestingFunctional and performance TestingCross-browser TestingLoad and Stress TestingRegression and compliance TestingUser acceptance TestingBeta testingExploratory and smoke testingMulti Language support and compatibility TestingSecurity TestingDesktop application TestingUI TestingUsability TestingPerformance TestingHardware and software Compatibility TestingFunctional TestingSecurity TestingData flow TestingIntegrity TestingMobile Application TestingUI TestingRule based TestingRegression TestingFunctional TestingSecurity testingبنابراین نرم‌افزار تحت تست (Application under test) یا نرم‌افزار دسکتاپ است یا یک وب سایت است یا یک نرم افزار نسخه موبایل.متدولوژی‌های تست نرم‌افزارمتدولوژی‌های تست نرم‌افزار روشی متفاوت برای اطمینان از تست کامل نرم‌افزار است. متدولوژی تست ضعیف و نامنظم می‌تواند نرم‌افزاری ناپایدار رو به دست کار نهایی برساندسه روش در این متدولوژی به شرح زیر است:۱- Black Box Testing۲- White Box Testing۳- Grey Box testing۱- تست Black Box ‫ ‫‫‫تکنیک Black Box Testing، ‫AUT براساس ورودی‌ها و خروجی‌های مورد ‫انتظار بدون توجه به نحوه تبدیل ورودی‌ها به خروجی‌ها مورد استفاده قرار می‌گیرد و تست‌کننده‌ها حداقل نگرانی را در ساختار داخلی یا کدها خواهند داشت. معمولا برای آزمایش Functional Testing، ‫‫Non-functional testing و Regression Testing به کار می‌رود.در تست Black Box Testing ، چهار روش اصلی برای طراحی این متدولوژی تست مورد استفاده قرار می‌گیرد:Equivalence Class TestingBoundary Value TestingDecision Table TestingState Transition Tables۲- تست White Box تکنیک White Box Testing  به طور معمول برای تست کد نرم‌افزار جهت بررسی حفره‌های امنیتی داخلی، مسیرهای شکسته یا ساختار نامناسب (Broken or poorly structured paths) ، عملکرد حلقه‌های شرطی (Functionality of conditional loop) و… استفاده می‌‌شود.در تست White Box Testing، ساختارهای داخلی نرم‌افزار که تست‌شده و تکنیک‌های موجود برای این کار عبارت‌اند از:Code Coverage analysisPath Coverageهر دو روش ذکر شده در بالا، شامل چندین استراتژی دیگر است که در مقاله‌های آینده مورد بحث قرار خواهد گرفت.۳- تست Grey Box تست Grey Box testing ترکیبی از Black Box Testing و White Box Testing است. در این روش تست‌کننده نرم‌افزار برنامه را با رویکرد Black Box Testing تست می‌کند، اما برای برخی از ماژول‌های حساب به شرایط کسب و کار یا جهت یافتن نقص براساس ساختار نامناسب یا استفاده از نرم‌افزار ( Improper structure or application use) از طریق White Box Testing انجام می‌شود.ابزارهای تست نرم‌افزارابزارهای تست مختلفی برای تست نرم‌افزار وجود دارد که به صورت پولی و Open source در دسترس است . انتخاب ابزار به نوع تست نرم‌افزار شما بستگی دارد چرا که برای سیستم‌ عامل‌های مختلف ابزارهای مختلفی مورد نیاز است. ابزارهای تست نرم‌افزار کارآمدی (Performance)، قابلیت اجرا و عملکرد نرم‌افزار ( Usability and functionality test) در انواع دستگاه‌ها تضمین می‌کنند.برخی از مهم‌ترین ویژگی‌های ابزارهای تست که در بیش‌تر نرم‌افزار مشترک است به شرح زیر است :Record and PlayParameterize the ValuesScript EditorRun (the test or script, with debug and update modes)Report on Run sessionتامین‌کننده‌گان نرم‌افزارهای تست هر کدام ویژگی‌های خاصی را ارائه می‌دهند که محصول آن‌ها را نسبت به سایر محصولات منحصر می‌کند اما ویژگی‌های ذکرشده در بالا متداول‌ترین است.در زیر لیستی از چند ابزار تست نرم‌افزار که به طور گسترده استفاده می‌شوند، آورده شده است.۱- Selenium2- IBM rational robot3- RFT(Rational functional tester)4- Load runner (HP performance tester)5- Apache Jmeter6- Telerikبرنامه‌ریزی تست نرم‌افزار (Software Test Plan)برای هر فعالیتی، برخی برنامه‌ریزی‌ها همیشه مورد نیاز است و برای تست نرم‌افزار نیز همین مورد وجود دارد چرا که بدون داشتن یک برنامه مناسب، همیشه خطر حواس‌پرتی در طول تست وجود دارد.اگر این خطر به واقعیت تبدیل شود، نتایج می‌تواند خطرناک و گاها هزینه‌های جبران ناپذیری داشته باشد.سند Test planاز توضیحات محصول، مشخصات SRS نرم‌افزار، سند Use case تشکیل شده است.تمرکز تست نرم‌افزار بدین معنی است که چه چیزی را تست کنیم، چگونه تست کنیم، چه زمانی تست کنیم، چه کسی تست را انجام دهد؟سند Test planجهت ارتباط بین تیم تست و مدیران تست نرم‌افزار یک مجموعه استفاده می‌شود، یک برنامه‌ریزی استاندارد برای تست یک نرم‌افزار باید ویژگی‌های زیر را دارا باشد:۱- دامنه تست نرم‌افزار مشخص شود (Scope of testing)بررسی اجمالی AUTویژگی‌ها و قسمت‌های از نرم‌افزار که باید تست شوداستثناها با دلیل (ویژگی‌ها و قسمت‌هایی از نرم‌افزار که نیاز به تست ندارد)وابستگی‌ها (تست‌هایی که بر روی یک دیگر باید انجام شود وتاثیر می‌گذارد)۲- هدف تست مشخص شود (Objective of testing)این قسمت با هدف شرح تست است به عنوان مثال: تایید رفع مشکلات (Validation of bug fixes)، ویژگی‌های جدید که اضافه شده است یا بازسازی ‫AUT ‫(Revamp of aut)‫و …۳- تمرکز نوع تست(Focus)در این بخش به جنبه‌های از نرم‌افزار که تست می‌شود توجه داریم به طور مثال: Functionality , Usability , Reliability , Performance ,...۴- رویکرد برای تست فعالیت (Approach for testing activity) چه روش تستی برای کدام قسمت از AUT  مورد استفاده قرار خواد گرفت. به طور مثال: در STP یک برنامه ERP ، بخش حقوق و دستمزد از روش Black box testing که حاوی اطلاعات است ، استفاده شود و از طرفی دیگر، برای بخش گزارش‌ها رویکرد روش Gray box testing باشد.۵- زمان‌بندی برای تست (Schedule for testing):چه کسی در AUT ،چه چیزی(what)، کجا(where)، چه زمانی(when) و چگونه(How) کار را انجام خواهد داد. بخش زمان‌بندی تست نرم‌افزار در حقیقت ۴W و ۱H (اشاره به سوالات خط بالا)در برنامه‌ریزی تست نرم‌افزار است. این برنامه به صورت یک جدول ساده تهیه می‌شود و هر سازمانی ممکن است متناسب با نیازهای خود این جدول را پیاده‌سازی کند.۶- پیگیری و گزارش مشکلات نرم‌افزار (Bug tracking and reporting): این بخش سندی دقیق در مورد اشکلات موجود در نرم‌افزار است. گزارش اشکالات شامل هر جزئیاتی که مربوط به مشکلاتی مانند عنوان، شرح، دستگاه تست شده، OS Version و … است و به تیم برطرف‌کننده راهنمایی لازم را ارائه می‌دهد. پیگیری مشکلات به دین صورت است که بعد از برطرف کردن دوباره تست شود و از اصلاح اطمینان حاصل شود.بهترین روش‌ها برای تست نرم‌افزارانتخاب استراتژی مناسب برای تست نرم‌افزار، تضمین تشخیص نقص در برنامه است. بنابراین مسئولیت شناسایی خطاهای بیش‌تر در زمان کمتر در تیم QA بسیار مهم است.برخی از بهترین اقدامات برای تست نرم‌افزار شامل: ۱- تعریف عملکردهای خاص (Functional specification)۲- بررسی و بازبینی (Review and Inspection)۳- معیارهای رسمی ورودی و خروجی( Formal Entry and Exit criteria)۴- تست عملکرد تغییرات (Functional test variations)۵- تست Multi-platform۶- اجرای تست خودکار (Automated test execution)با توجه به این که فرآیند تیم‌ها Agile است، ضروری است که تیم‌های فرآیند‌های تست خود را به صورت خودکار (Automation test)  انجام دهند و این مورد کمک خواهد کرد که ویژگی‌های جدید را سریع‌تر معرفی کرده و از رقبا برتری کسب کنند. نکته قابل توجه در راستای سریع‌تر شدن فرآیند ارائه نسخه به بازار ، تست کامل نرم‌افزار در نسخه‌های موبایل یا وب است و همچنین تست کردن نرم‌افزار روی کاربران واقعی جهت کسب اطمینان قبل از ارائه مستقیم نرم‌افزار به بازار است.چالش‌های تست نرم‌افزاردر هنگام تست نرم‌افزار، شخص تست‌کننده(تستر) نر‌م‌افزار ممکن است با چالش‌های زیادی روبرو شود. همچنین با افزایش تعداد کاربران و دستگاه‌های، تست نرم‌افزار پیچیده‌ و پیچیده‌تر می‌شود. تست نرم‌افزار نسخه موبایل به شکل چشم‌گیری با نرم‌افزار نسخه دسکتاپ تحت وب تفاوت دارد. چالش‌های هنگام تست نر‌م‌افزار عبارت‌اند از:پوشش همه جانبه تست( Comprehensive test coverage)مدیریت بخش‌های مختلف از جمله OS مختلف، پردازنده، حافظهنبود برنامه‌ریزی تست(Lack of test plan)محدودیت و فشار زمانی (Time pressure)کمبود دستگاه فیزیکی (Lack of Physical devices)تنوع زیاد در پلتفرم‌ و OSعدم توانایی مشاهده خطاها در برنامه و عمکلردنتیجه‌گیریدر تست نرم‌افزار، کل برنامه تست خواهد شد و به همین منظور روش‌ها و ابزارها و متودولوژی‌های مختلف استفاده می‌شود.تست کارآمدی نرم‌افزار قبل از ارائه محصول به کاربران برای یک نرم‌افزار موفق و خوب بسیار مهم است.امروزه تست نرم‌افزار به عنوان یکی از مهم‌ترین بخش‌ها در جامعه نرم‌افزار شناخته شده است تا جایی که شرکت‌های بزرگ نرم‌افزار توجه ویژه‌ای به این تیم و ساختار تیم دارند.</description><category>امیرحسین گل ابادی</category><author>امیرحسین گل ابادی</author><pubDate>Thu, 22 Apr 2021 21:58:54 +0430</pubDate></item></channel></rss>