در این مقاله به بررسی مفاهیم اولیه و پیشرفته تست نرم افزار خواهیم پرداخت. با توجه به گستردگی مبحث تست نرم افزار، امروزه آموزش های مختلفی در سطح مبتدی تا پیشرفته وجود دارد که میتوانید با توجه به سطح خود دنبال کنید و به آن مسلط شوید.
پس از تولید نرم افزار، نوبت به توسعه نرم افزار میرسد. توسعه نرم افزار مراحل مشخصی دارد که طبق آن میتوان یک نرم افزار ایده آل نیز تولید کرد. از این رو حتما لازم است که نرم افزار مربوطه از جهات مختلف تست شود و با توجه به نتایج تست های انجام شده، گسترش و توسعه یابد. بنابراین تست نرم افزار یک امر کاملا اجباری محسوب میشود.
همچنین کیفیت نرم افزار های تولید شده شامل بخش های متنوعی میباشد که هر کدام میتواند بر بهبود توسعه نرم افزار اثر مستقیم بگذارد. تست نرم افزار هم یکی از بخش های مهم کیفیت نرم افزار است که ما در این بحث به آن می پردازیم.
این تست ها شامل همه موضوعات مربوط به تست نرم افزار میباشد. مثل :
Black Box Testing
White Box Testing
Visual Box Testing
Gray Box Testing
در سطوحی مثل:
Unit Testing
Integration Testing
Regression Testing
Functional Testing
System Testing
Acceptance Testing
Alpha Testing
Beta Testing
Non-Functional testing
Security Testing
Portability Testing
تست نرم افزار چیست؟
تست نرم افزار یک پروسه برای شناسایی ایرادات و مشکلات نرم افزار با در نظر گرفتن ویژگی هایی مثل (قابلیت اطمینان، مقیاس پذیری، قابلیت حمل، قابلیت استفاده مجدد و …) میباشد. همچنین با کمک فرایند تست نیز می توان عملکرد اجزای نرم افزار را ارزیابی و بر روی عملکرد نرم افزار کاملا مسلط شد.
به صورت کلی تست نرم افزار یک دیدگاه مستقل است که با هدف اطمینان از تناسب نرم افزار انجام میشود. این نوع تست ها تمام اجزای موجود در نرم افزار را تست میکنند. همچنین مطمئن میشوند که آیا نرن افزار تولید شده تمام الزامات مشخص شده و مورد نیاز را به درستی برآورده می کند یا خیر.
در واقع این فرایند یک سری اطلاعات در مورد کیفیت نرم افزار را به مشتریان ارائه می دهد.
همانطور که گفتیم قبل از ارائه نرم افزار به مشتری، انجام تست و آزمون ها بر روی آن یک امر اجباری است؛ زیرا در صورت تست نکردن نرم افزار نمیتوان متوجه خرابی و ایرادات آن شد و احتمال از کار افتادن آن به شدت بالاست. بنابراین عدم تست نرم افزار میتواند شما را در شرایط حساس قرار دهد و باعث خسارت شما شود.
عملیات تست کردن یا tasting چیست؟
تست یا Testing، گروهی از تکنیک ها برای تایید درست بودن عملکرد اسکریپت یک نرم افزار از پیش تعریف شده، میباشد.
هدف اصلی testing، تشخیص خرابی های یک برنامه است. سپس برای کشف و اصلاح خرابی های آن اقدام میکند.
مشکلات و ایرادات نرم افزارها از طریق مکانیسم ها شناسایی می شود. عملیات testing، رفتار و وضعیت نرم افزار را با مکانیسم ها مقایسه می کند. این مکانیسم ممکن است شامل نسخه های قبلی یک محصول مشخص، محصولات قابل مقایسه و رابط های مورد انتظار، استانداردهای مربوطه یا معیارهای دیگر نیز باشد. testing شامل بررسی تمام جنبه های کد در شرایط مختلف میباشد. امروزه تیم های توسعه و testing از هم جدا شده اند. از این رو تیم های testing پس از شناسایی و تشخیص خطاها، آن را به تیم های توسعه گزارش میدهند تا تیم توسعه آنها را رفع کند.
نرم افزاری موفق است که مورد پذیرش مخاطبان قرار گیرد و دارای رابط کاربری گرافیکی آسان، تست هنگام توسعه، بارگذاری سریع، عملکرد قوی و … باشد. به عنوان مثال، مخاطبان یک نرم افزار بانکداری با مخاطبان یک بازی ویدیویی کاملا متفاوت هستند. بنابراین، هنگامی که یک نرم افزار تولید میشود سازندگان و طراحان آن باید در نظر داشته باشند که محصول تولید شده، تمام نیاز های آن سازمان را تامین میکند و برای خریداران و استفاده کنندگان مفید خواهد بود.
نوع تست نرم افزار
با پیشرفت تکنولوژی، امروزه تست های مختلفی در بازار وجود دارد که از آنها برای تست نرم افزارها استفاده میشود.
به صورت عمده و کلی تست ها به دو دسته تقسیم میشوند. تست های دستی و تست های خودکار که در ادامه به معرفی و بررسی انواع تست های نرم افزار خواهیم پرداخت:
تست دستی
تست دستی یا Manual testing، یک فرآیند برای بررسی عملکرد یک برنامه کاربردی مطابق با نیازهای مشتری، بدون استفاده از ابزارهای خودکارسازی میباشد. در حین انجام تست دستی بر روی هر نرم افزار، به دانش و شناخت خاصی از ابزارهای تست نیاز نیست. فقط کافیست یک درک درست از محصول داشته باشیم تا بتوانیم به راحتی آن را تست کنیم.
تست دستی را می توان به سه نوع تقسیم کرد:
- تست جعبه سفید
- تست جعبه سیاه
- تست جعبه خاکستری
تست خودکار
تست خودکار یک فرایند برای تبدیل موارد تست دستی به اسکریپت های آزمایشی با کمک ابزارهای خودکارسازی یا هر زبان برنامه نویسی به عنوان آزمایش اتوماسیون شناخته می شود. با کمک تست خودکار می توانیم سرعت اجرای آزمایش خود را افزایش دهیم. زیرا در اینجا به هیچ گونه تلاش انسانی و کار دستی نیاز نداریم. فقط کافیست اسکریپت آن تست را بنویسیم و سپس آن را اجرا کنیم.
نکته: قبل از یادگیری تست نرم افزار ، باید دانش اساسی در مورد عملکردهای اولیه کامپیوتر ، ریاضیات پایه ، زبان کامپیوتر و عملگرهای منطقی نیز داشته باشید.