آنچه در این صفحه می خوانید:
- تست نرم افزار چیست؟
- چرا تست نرم افزار امری ضروری است؟
- چگونه می توانیم تستر نرم افزار باشیم؟
- انواع تست نرم افزار
تست نرم افزار چیست؟
تست نرم افزار تحقیقاتی است که اطلاعاتی را برای ذینفعان فراهم می آورد و به کیفیت محصول یا خدمات نرم افزاری تحت تست می پردازد. تست نرم افزار همچنین می تواند یک دیدگاه مستقل و عینی از نرم افزار ارائه دهد تا به تجارت اجازه دهد تا خطرات اجرای نرم افزار را درک کند. تکنیک های تست شامل روند اجرای یک برنامه یا اپلیکیشن با هدف پیدا کردن اشکالات نرم افزاری (خطاها یا سایر نقص ها) و تأیید صحت این محصول نرم افزاری برای استفاده می باشد.
تست نرم افزار شامل اجرای یک مؤلفه نرم افزاری یا مؤلفه سیستم برای ارزیابی یک یا چند خاصیت مورد علاقه است. به طور کلی، این خصوصیات نشانگر میزان مؤلفه یا سیستم تحت تست است:
- الزاماتی را که راهنمایی در طراحی و توسعه آن دارد.
- به درستی به انواع ورودی پاسخ می دهد.
- عملکرد خود را در مدت زمان قابل قبولی انجام می دهد.
- به اندازه کافی قابل استفاده است.
- آن را می توان در محیط های مورد نظر خود نصب و اجرا کرد.
- به نتیجه کلی تمایل ذینفعان خود می رسد.
از آنجا که تعداد تست های ممکن برای حتی مؤلفه های نرم افزار ساده نیز بی نهایت است، تمام تست های نرم افزاری از برخی استراتژی ها برای انتخاب تست هایی استفاده می کنند که برای زمان و منابع موجود امکان پذیر است. در نتیجه، تست نرم افزار به طور معمول (اما نه به طور انحصاری) سعی در اجرای برنامه یا برنامه با هدف پیدا کردن اشکالات نرم افزاری (خطاها یا نقص های دیگر) دارد. کار تست فرآیند تکراری است زیرا وقتی اشکال برطرف می شود، می تواند اشکالات عمیق تر دیگری را روشن کند یا حتی می تواند موارد جدیدی ایجاد کند. تست نرم افزار می تواند اطلاعاتی مستقل و عینی در مورد کیفیت نرم افزار و خطر عدم موفقیت آن برای کاربران یا حامیان مالی ارائه دهد.
تست نرم افزار می تواند به محض وجود نرم افزار قابل اجرا (حتی اگر جزئی یا کامل باشد) انجام شود. رویکرد کلی توسعه نرم افزار اغلب تعیین می کند که چه زمان و چگونه تست انجام می شود. به عنوان مثال، در فرآیند مرحله ای، بیشتر تست ها پس از تعریف نیازهای سیستم و سپس در برنامه های قابل تست انجام می شود. در مقابل، تحت رویکرد چابک، الزامات، برنامه نویسی و تست اغلب به طور همزمان انجام می شود.
اگرچه تست نرم افزار می تواند صحیح بودن نرم افزار را با فرض برخی فرضیه های خاص تعیین کند، آزمایش نمی تواند تمام نواقص موجود در نرم افزار را شناسایی کند. در عوض، انتقاد یا مقایسه را ارائه می دهد که وضعیت و رفتار محصول را در برابر اصول آزمایشگاهی - اصول یا مکانیسم هایی که توسط آنها ممکن است یک مشکل را تشخیص دهد، مقایسه می کند. این پیش گویی ها ممکن است شامل مشخصات فنی، قراردادها، محصولات قابل مقایسه، نسخه های قبلی در مورد همان محصول، استنتاج های مورد نظر یا مورد انتظار، انتظارات کاربر یا مشتری، استانداردهای مربوطه، قوانین قابل اجرا یا سایر معیارها باشد.
هدف اصلی آزمایش، شناسایی نقص نرم افزار است تا نقص ها کشف و اصلاح شوند. آزمایش نمی تواند مشخص کند که یک محصول در هر شرایطی به درستی کار می کند، بلکه تنها در شرایط خاص عملکرد مناسب ندارد. دامنه تست نرم افزار اغلب شامل بررسی کد و همچنین اجرای آن کد در محیط ها و شرایط مختلف و همچنین بررسی جنبه های کد است: آیا آن کاری را که قرار است انجام دهد را انجام می دهد و کاری را که باید انجام دهد را انجام می دهد؟ در فرهنگ فعلی توسعه نرم افزار، یک سازمان تست ممکن است جدا از تیم توسعه باشد. نقش های مختلفی برای تست اعضای تیم وجود دارد. اطلاعات به دست آمده از تست نرم افزار ممکن است مورد استفاده قرار گیرد برای اصلاح فرایندی که توسط آن نرم افزار ایجاد شده است.
هر محصول نرم افزاری مخاطب هدف دارد. به عنوان مثال، مخاطب برای نرم افزار بازی های ویدیویی با نرم افزار بانکی کاملاً متفاوت است. بنابراین، هنگامی که یک سازمان در یک محصول نرم افزاری سرمایه گذاری می کند، می تواند ارزیابی کند که آیا این محصول نرم افزاری برای کاربران نهایی، مخاطبان هدف، خریداران و سایر ذینفعان قابل قبول خواهد بود. تست نرم افزار به روند تلاش برای انجام این ارزیابی کمک می کند.
چرا تست نرم افزار ها امری ضروری است؟
- شناسایی خطا ها و نقص های نرم افزار در مراحل توسعه
- تضمین رضایت و اعتماد مشتری به برنامه
- اطمینان از کیفیت محصول
- ارائه امکانات با کیفیت و با هزینه کمتر تعمیرات به مشتریان و حصول نتایج بهتر
- اجرای موثر برنامه کاربردی نرم افزار یا محصول
- اطمینان حاصل کنید که برنامه نباید به هیچ گونه خرابی منجر شود، زیرا در آینده یا در مراحل بعدی توسعه می تواند بسیار گران تمام شود.
- ثابت نگه داشتن شرایط کسب وکار
چگونه می توانیم تستر نرم افزار باشیم؟
تست کنندگان نرم افزار نقش مهمی در توسعه برنامه دارند. آنها کارشناسان تضمین کیفیت هستند که برنامه هایی را برای رفع اشکالات، عملکرد ضعیف و مشکلات رابط کاربری بررسی می کنند. برای انجام این کار، آنها انواع تست ها - اهمیت، عملکرد، وظیفه ای، مقیاس پذیری، پذیرش کاربر - را در مراحل مختلف چرخه عمر نرم افزار اجرا می کنند. از آنجا که تست نرم افزار برای کیفیت و قابلیت استفاده محصول نهایی از اهمیت بالایی برخوردار است، تست کنندگان معمولاً در مرحله برنامه ریزی و طراحی قرار می گیرند و اغلب در کل پشتیبانی پس از انتشار درگیر می شوند. بیشتر تستر ها در تیم هایی کار می کنند که نرم افزار فروشنده را توسعه می دهند. امروزه نرم افزارهای زیادی از طریق تیم های DevOps (توسعه + عملیات) تحت فشار قرار می گیرند، جایی که توسعه، تست و تحویل با استفاده از فریمورک های Agile، Lean یا Scrum در حلقه مداوم قرار دارند.
تست کننده نرم افزار برای اکثر پروژه های عمرانی قهرمان ستایش نشده است. آنها کاربران نهایی را از کار با نرم افزارهای بسیار باگ دار یا برنامه های کاربردی که به خوبی کار نمی کنند، نجات می دهد، تا حد زیادی تماس های پشتیبانی فنی از مشتریان ناامید را کاهش می دهد. آنها همچنین با اطمینان از عدم وجود اشکالات مهم و ضروری که مانع از کارکرد نرم افزار بصورت طراحی و تبلیغات می شوند، باعث می شوند تیم توسعه و فروش نرم افزار به نظر خوب برسند.
آموزش اساسی، پیش زمینه و مهارت لازم برای تستر نرم افزار
بسیاری از کارفرمایان به دنبال کاندیداهای تستر نرم افزار با مدرک لیسانس در رشته کامپیوتر، ریاضیات یا مهندسی هستند، اگرچه همیشه لازم نیست. اگر شما تجربه زیادی، سابقه کار پایدار و ارجاعات مستحکم یا توصیه نامه های خود را دارید، می توانید بدون داشتن مدرک دانشگاهی کار را انجام دهید. موقعیت سطح متوسط به طور معمول به سه تا شش سال تجربه مستقیم در تست نرم افزار یا ترکیبی از آموزش و تجربه نیاز دارد.
صرف نظر از نحوه آماده شدن برای حرفه تست نرم افزار، در اینجا مهارت هایی که باید داشته باشید یا برای توسعه برنامه ریزی می کنید وجود دارد:
- برنامه ها و مراحل تست خودکار و دستی، ایجاد و مستند سازی، اجرای تست ها، تجزیه و تحلیل نتایج و گزارش مشکلات و ناهنجاری های تست
- انجام تست نرم افزار در کلیه مراحل چرخه عمر نرم افزار طراحی، توسعه، تست، انتشار، حفظ
- روش های مختلف توسعه مانند Agile و Scrum و سیستم عامل ها یا محیط های تست نرم افزار را درک کنید.
- داشتن دانش کاملی از چندین ابزار تست
- مسلط به یونیکس، لینوکس و یا ویندوز و همچنین ابزارهای برنامه نویسی و خط فرمان باشید.
- چند کاره باشید.
- با توسعه، عملیات، مدیریت محصول و مشتریان ارتباط برقرار (کتبی و کلامی) باشید.
- از زبان های مختلف برنامه نویسی، مانند جاوا، جاوااسکریپت، سی شارپ یا سی پلاس پلاس، SQL، پایتون، پی اچ پیو روبی آن ریلز آگاهی داشته باشید. برخی از موقعیت ها به مهارت های برنامه نویسی و درک اطلاعات از پایگاه داده نیاز دارند. شما لزوماً به سالها تجربه برنامه نویسی نیاز ندارید که آزمایشگر باشید، اما ضرری ندارد.
دریافت گواهینامه ها
تست کنندگان نرم افزار باید برای اثبات ظرافت خود و جلب توجه مدیران استخدام کننده، دریافت یک یا چند گواهینامه را در نظر بگیرند. اکثر گواهینامه های تست کننده نرم افزار بی طرف هستند و دانش و مهارت های قابل اجرا در کلیه جنبه های تست نرم افزار را می شناسند.
در اینجا دو محبوب ترین گواهینامه تستر نرم افزار وجود دارد:
- ISTQB Certified Tester: هیئت صلاحیت های تست نرم افزار آمریکایی (ASTQB) اعتبار تستر معتبر ISTQB بی طرف را در سطح بنیاد و متخصص ارائه می دهد. ASTQB همچنین گواهینامه های تحلیلگر تست پیشرفته، تستر پیشرفته، تستر پیشرفته امنیتی و تستر پیشرفته فنی را با هدف تست برنامه تلفن همراه، مهندسان اتوماسیون تست، مدیران آزمون و تحلیلگران تجارت ارائه می دهد.
- Certified Software Tester: هیئت بین المللی صدور گواهینامه نرم افزار (ISCB) از هشت گواهینامه تست نرم افزار، تضمین کیفیت و تجزیه و تحلیل تجارت پشتیبانی می کند. علاوه بر قبولی در آزمون صدور گواهینامه، گواهینامه CSTE به (1) لیسانس و دو سال تجربه در خدمات اطلاعاتی، (2) مدرک دو ساله و چهار سال تجربه یا (3) شش سال تجربه نیاز دارد. بعلاوه، باید ثابت کنید که در 18 ماه گذشته در تست نرم افزار کار کرده اید. اگر الزامات تجربه کار CSTE را برآورده نمی کنید، دانشیار معتبر در تست نرم افزار (CAST) را به عنوان نقطه شروع در نظر بگیرید.
گواهینامه های توسعه نرم افزار خاص فروشنده یا پلتفرم هستند، اما یافتن مدارک معتبر مربوط به فروشنده که تمرکز آن بر روی تست باشد دشوارتر است. با این حال، اگر شما با سیستم عامل تست نرم افزار خاص تجربه دارید و می خواهید روی پروژه هایی که بر روی آن پلتفرم ساخته شده اند کار کنید، دریابید که فروشنده برنامه صدور گواهینامه را دارد یا خیر که آیا هر از گواهینامه های توسعه دهنده آن یک جزء تست را شامل می شود.
آموزش تستر نرم افزار و منابع
داوطلبان علاقمند به آموزش تست نرم افزار می توانند از برخی دوره های رایگان استارت که بصورت آنلاین در دسترس هستند استفاده کنند. Microsoft Virtual Academy چندین دوره مرتبط مانند شش ماژول موجود در مجموعه نرم افزارهای تست نرم افزار و Live Unit Testing در ویژوال استودیو 2017 را ارائه می دهد.
داوطلبان علاقمند همچنین باید وب سایت انجمن تست نرم افزار (AST) را بررسی کنند. این سایت پر از منابع است، از جمله پیوندی به کانال AST YouTube، که شامل وبینارها و سخنرانی های اصلی کنفرانس سالانه این گروه است. انستیتوی بین المللی تست نرم افزار (IIST) به همه افراد امکان می دهد در صورت وجود، وبینارهای تعاملی و درخواستی و سمینارهای زنده را در شهرهای منتخب ایالات متحده ثبت نام کنند.
بررسی فرصت های تست کننده نرم افزار
PayScale می گوید متوسط حقوق تستر نرم افزار در ایالات متحده تقریباً 56000 دلار است، اما بسته به شرکت، شهر و مدارک تحصیلی می تواند بسیار بالاتر برسد. مانند هر شغل دیگری، شروع کار معمولاً به معنای گذراندن وقت برای هیئت های کاری مانند Monster، در واقع، Dice و LinkedIn Jobs است. رزومه خود را در هر سایت در نظر بگیرید و حتما هشدار را تنظیم کنید تا از تست نرم افزار جدید و لیست شغل های تضمین کیفیت مطلع شوید تا بتوانید بلافاصله درخواست دهید.
هنگامی که رزومه شما آنلاین است، احتمالاً در شرکت هایی که لزوماً تبلیغ عمومی نمی کنند، با استخدام کنندگان با فرصت های داخلی تماس خواهید گرفت. اگر می خواهید برای شرکت خاص کار کنید، رزومه شغلی آنلاین خود را بطور مرتب بروز کنید و برای برقراری ارتباط با HR بروید. از منابع رایگان مانند گروه های تست کننده نرم افزار LinkedIn ،Reddit و سایر انجمن ها و انجمن های آنلاین استفاده کنید. آنها می توانند منبع خوبی برای اطلاعات در مورد کارفرمایان خوب یا بد باشند، چه ابزاری را باید بیاموزید و منجر به مشاغل شوید.
انواع تست نرم افزار
آموزش تست واحد (Unit testing)
کوچکترین قسمت قابل تست نرم افزار، واحد می باشد که در طی تست واحد، هر واحد به طور جداگانه و دقیق تست می شود.
آموزش تست استاتیک (Static testing)
تکنیک تست نرم افزاری است که در آن نرم افزار بدون اجرای کد مورد تست قرار می گیرد.
آموزش تست یکپارچه سازی (Integration testing)
تست یکپارچه سازی فرآیند توسعه نرم افزاری است که واحدهای برنامه را به صورت چند گانه ترکیب و تست می کنند.
آموزش تست نفوذ (Penetration Testing)
Penetration testing یا pen testing به معنای تست نفوذ، انجام تست سیستم کامپیوتری، شبکه یا برنامه وب برای شناسایی آسیب پذیری هایی است که مهاجم می تواند از آن استفاده کند.
آموزش تست خودکار (Automated Testing)
تست خودکار تکنیک است که اپلیکیشن یا نرم افزار برای پیاده سازی کل چرخه عمر نرم افزار در زمان کم از آن استفاده و بهره وری و اثربخشی را برای نرم افزار تست فراهم می کند.