آموزش تست نرم افزار

آموزش تست نرم افزار

آنچه در این صفحه می خوانید:

تست نرم افزار چیست؟

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

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

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

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

تست نرم افزار می تواند به محض وجود نرم افزار قابل اجرا (حتی اگر جزئی یا کامل باشد) انجام شود. رویکرد کلی توسعه نرم افزار اغلب تعیین می کند که چه زمان و چگونه تست انجام می شود. به عنوان مثال، در فرآیند مرحله ای، بیشتر تست ها پس از تعریف نیازهای سیستم و سپس در برنامه های قابل تست انجام می شود. در مقابل، تحت رویکرد چابک، الزامات، برنامه نویسی و تست اغلب به طور همزمان انجام می شود.

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

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

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

چرا تست نرم افزار ها امری ضروری است؟

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

چگونه می توانیم تستر نرم افزار باشیم؟

تست کنندگان نرم افزار نقش مهمی در توسعه برنامه دارند. آنها کارشناسان تضمین کیفیت هستند که برنامه هایی را برای رفع اشکالات، عملکرد ضعیف و مشکلات رابط کاربری بررسی می کنند. برای انجام این کار، آنها انواع تست ها - اهمیت، عملکرد، وظیفه ای، مقیاس پذیری، پذیرش کاربر - را در مراحل مختلف چرخه عمر نرم افزار اجرا می کنند. از آنجا که تست نرم افزار برای کیفیت و قابلیت استفاده محصول نهایی از اهمیت بالایی برخوردار است، تست کنندگان معمولاً در مرحله برنامه ریزی و طراحی قرار می گیرند و اغلب در کل پشتیبانی پس از انتشار درگیر می شوند. بیشتر تستر ها در تیم هایی کار می کنند که نرم افزار فروشنده را توسعه می دهند. امروزه نرم افزارهای زیادی از طریق تیم های 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)

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

آیا این نوشته را دوست داشتید؟
packt-automation-framework-design-using-testng

آموزش طراحی Automation Framework با TestNG


این دوره اصول و همچنین مفاهیم پیشرفته در TestNG و ایجاد automation framework را به شما ارائه می دهد. شما با یادداشت های اساسی در تست شروع خواهید کرد و...

1400/03/27 82 بازدید
packt-javascript-testing-best-practices

بهترین شیوه های تست جاوا اسکریپت


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

1400/02/08 590 بازدید
pluralsight-structure-unit-testing-with-spek

آموزش ایجاد ساختار تست واحد با Spek


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

1400/01/20 271 بازدید
linkedin-advanced-jmeter

آموزش JMeter پیشرفته


این دوره شامل نکات و تکنیک های پیشرفته JMeter است که برای کمک به تست کنندگان و مهندسان نرم افزار طراحی شده است تا ارزش بیشتری از JMeter کسب کنند. Mich...

1400/01/08 584 بازدید زیرنویس دارد
udemy-rest-api-testing-automation-from-scratch-restassured-java

تست Rest API (خودکارسازی) از ابتدا - RestAssured Java


سطح مهارت خود را در خودکارسازی تست Rest API برای فریمورک با چندین مثال بلادرنگ بالاترین میزان برسانید. با پایان این دوره، شما دانش کاملی در مورد تست ا...

1399/12/17 952 بازدید
pluralsight-postman-delivers-codemash

آشنایی با قابلیت های CodeMash :Postman


در این کنفرانس، Bob Crowley با استفاده از تنها ویژگی های نسخه رایگان Postman، شما را با استفاده مؤثر از ویژگی ها برای صرفه جویی در زمان، کاهش خطاها و ...

1399/12/14 520 بازدید
linkedin-software-testing-foundations-test-management

آموزش اصول تست نرم افزار: مدیریت تست


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

1399/12/11 774 بازدید زیرنویس دارد
linkedin-ux-deep-dive-usability-testing

بررسی عمیق UX: تست کاربردپذیری


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

1399/12/08 948 بازدید
pluralsight-mutation-testing-to-the-rescue-of-your-tests-codemash

تست جهش برای نجات تست های خود: CodeMash


تست جهش، یک استراتژی برای اطمینان از مرتبط بودن کد تست است. در این کنفرانس، Nicholas Frankel نحوه محاسبه پوشش کد و نقص ذاتی آن را توضیح خواهد داد. سپس...

1399/12/07 399 بازدید
pluralsight-appium-the-big-picture

آموزش Big Picture :Appium


شما در این دوره، نمای کلی از Appium و اینکه چگونه می توانید از این فناوری برای اتوماتیک کردن تست های UI خود استفاده کنید را خواهید دید. ابتدا، روش مدر...

1399/12/02 472 بازدید
pluralsight-swiftfest-boston-19-mutation-testing-an-automated-technique-for-better-tests

کنفرانس SwiftFest Boston '19: تست جهش - یک تکنیک خودکار برای تست های بهتر


در این دوره، Sean Olszewski توضیح خواهد داد که تست جهش چیست، چطور از آن استفاده کنیم و چطور استفاده نکنیم، و چه ابزارهایی وجود دارند که در انجام تست ج...

1399/11/29 439 بازدید
pluralsight-what-is-tdd-and-why-it-is-not-unit-testing-executive-briefing

استراتژی TDD چیست و چرا تست واحد نیست: خلاصه


در این دوره، شما دانش بنیادینی از توسعه تست محور (TDD) و دلیل تفاوت آن با تست واحد را کسب خواهید کرد. در ابتدا، یاد خواهید گرفت که TDD چیست و تفاوت آن...

1399/11/19 822 بازدید
pluralsight-post-exploitation-pillaging-and-data-exfiltration

آموزش Post Exploitation: بررسی Pillaging و Data Exfiltration


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

1399/11/14 451 بازدید زیرنویس دارد
pluralsight-swiftfest-boston-19-testing-testing-one-two

کنفرانس SwiftFest Boston '19: تست می کنیم. تست می کنیم. یک. دو.


در این دوره، مدرس Cavelle Benjamin کاربرد برنامه نویسی پروتکل گرای Swift در تست رابط کاربری برای ایجاد رابط های سبک وزن که ترکیبی از رفتار کاربر و وضع...

1399/11/13 338 بازدید
pluralsight-security-control-assessment

ارزیابی کنترل امنیت


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

1399/11/13 699 بازدید
pluralsight-unit-testing-rxjs-with-marble-diagrams

آموزش تست واحد RxJS با Marble Diagrams


کتابخانه RxJS یکی از محبوب ترین کتابخانه ها در دنیای جاوااسکریپت است. RxJS قابلیت برنامه نویسی واکنش گرا در اپلیکیشن شما را ارائه می کند. در این دوره،...

1399/11/12 521 بازدید
pluralsight-assessing-red-team-post-exploitation-activity

دوره Assessing Red Team Post Exploitation Activity


تهدیدات داخلی رو به رشد است و می تواند احراز هویت یا دسترسی از راه دور شبکه را به طور کامل دور بزند. هرچقدر یک pen-test از فاز دسترسی اولیه به سمت فعا...

1399/11/11 561 بازدید
pluralsight-approaching-automated-security-testing-in-devsecops

رویکرد تست امنیت خودکار در DevSecOps


در این دوره، شما دانش بنیادین تست امنیت خودکار را فرا خواهید گرفت. در ادامه، مفهوم تست امنیت خودکار، جوانب مثبت و منفی تست امنیت خودکار، سوژه تست، و م...

1399/10/23 1058 بازدید زیرنویس دارد
pluralsight-conducting-passive-reconnaissance-for-comptia-pentest

شناسایی غیرفعال برای +CompTIA PenTest


در این دوره، انجام شناسایی منفعل برای پلاس CompTIA PenTest +، در مورد جمع آوری موثر اطلاعات غیرقابل ردیابی، که تحت عنوان "شناسایی" شناخته می شود، خواه...

1399/10/18 963 بازدید
pluralsight-angular-denver-19-supercharge-your-angular-tests-with-jest-snapshots-included

دوره Denver '19 انگولار: تست های انگولار خود را با Jest سوپرشارژ کنید (شامل Snapshots)


در این دوره، Michal Szcepaniak عملکرد تست را با استفاده از Jest و Jasmine در یک برنامه Angular مقایسه می کند، نحوه کار تماشاگران را در هر دو فریمورک ت...

1399/10/10 595 بازدید