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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

آیا این نوشته را دوست داشتید؟
pluralsight-approaching-automated-security-testing-in-devsecops

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


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

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

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


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

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

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


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

1399/10/10 330 بازدید
pluralsight-angular-denver-19-quasi-human-angular-automated-testing-with-cucumber

دوره Denver '19 انگولار: تست خودکار انگولار شبه انسانی با Cucumber


در این دوره، Lukas Ruebbelke به شما می آموزد كه چگونه با ایجاد ارتش روباتی برای سازمان خود اطمینان حاصل كنید كه برنامه شما همانطور كه تبلیغ می شود كار...

1399/10/10 288 بازدید
pluralsight-penetrating-networks-for-comptia-pentest

آشنایی با نفوذ به شبکه ها برای +CompTIA PenTest


در این دوره آموزشی +CompTIA PenTest شما توانایی بررسی تمام ابعاد زیرساخت شبکه برای کشف هرگونه نقطه ضعفی در طول تست نفوذ را کسب خواهید کرد. در ابتدا، ش...

1399/10/09 747 بازدید
pluralsight-writing-maintainable-ui-test-automation-with-appium

نوشتن اتوماسیون تست رابط کاربری قابل نگهداری با Appium


شما در این دوره، خواهید آموخت که چگونه می توانید روش نوشتن اتوماسیون تست را بهبود بخشید تا تست هایتان با شکست کمتری انجام شود و تعمیر تست ها در لحظه خ...

1399/10/03 386 بازدید
pluralsight-writing-burp-suite-macros-and-plugins

نوشتن ماکرو و پلاگین های Burp Suite


شما در این دوره، می آموزید که چگونه عملکردهای Burp Suite را به صورت سفارشی متناسب با هر نوع نیاز خاص تجاری ایجاد کنید. ابتدا اسرار استفاده از Burp Mac...

1399/10/02 407 بازدید
pluralsight-penetration-testing-with-the-metasploit-framework

آموزش تست نفوذ با فریمورک Metasploit


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

1399/10/02 616 بازدید
pluralsight-angular-denver-19-e2e-testing-with-cypress-io

دوره Denver '19 انگولار: تست E2E با Cypress.io


در این دوره، Jesse Sanders جنبه های درون NgRx را بررسی می کند. برخی از این جنبه ها شامل تست، NgRx Entity ،NgRx Data ،NgRx Auto Entity، مدیریت خط، اکشن...

1399/09/28 413 بازدید
laracasts-intuitive-integration-testing

آموزش تست یکپارچه سازی بصری


واقعیت این است، گاهی اوقات، شما برای کمک به مکالمات هماهنگ با مشاغل، طراحی اشیاء خود و موارد دیگر، به یک فریمورک بزرگ تست نیاز ندارید. گاهی، شما فقط م...

1399/09/24 420 بازدید
pluralsight-angular-denver-19-more-unit-testing-less-effort

دوره Denver '19 انگولار: تست واحدهای بیشتر، تلاش کمتر


در این دوره، Lance Finney نحوه عبور از این مانع را نشان می دهد و شرایطی را توصیف می کند که ممکن است از تزریق وابستگی کاملاً صرف نظر کنید....

1399/09/21 364 بازدید
pluralsight-unit-testing-with-pytest

آموزش تست واحد با pytest


در این سخنرانی، Tola Alade بر تست واحد با استفاده از pytest، فریموک تست مبتنی بر Python و نشان دادن چند مثال در مورد چگونگی افزایش اعتماد به پایپ لاین...

1399/09/06 631 بازدید
pluralsight-ux-user-testing

تست کاربری UX


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

1399/09/04 478 بازدید
pluralsight-ui-testing-at-pinterest

تست رابط کاربری در پینترست


Ryan Cooke تجربه دنیای واقعی پینترست در مورد چگونگی حفظ زیرساخت های غالبا چالش برانگیز تست رابط کاربری و ابزارهایی که ساخته شده اند تا توسعه دهندگان س...

1399/09/01 253 بازدید
pluralsight-unit-testing-strategies-and-patterns-in-c-codemash

استراتژی های تست واحد و الگوها در سی شارپ: CodeMash


در این جلسه، شما الگوها و استراتژی های رایج را می آموزید تا به طور موثر کد خود را در #C تست کنید. Bill Dinger اصول طراحی و روش هایی را برای اطمینان از...

1399/09/01 627 بازدید
pluralsight-unit-testing-in-scala

آموزش تست واحد با Scala


در این دوره، یاد خواهید گرفت که چگونه یک پروژه Scala را با استفاده از ScalaTest تست کنید. ابتدا، با استفاده از Assertions و Matchers، کدپایه خود را تس...

1399/08/30 312 بازدید
pluralsight-performing-non-technical-tests-for-comptia-pentest

انجام تست های غیر فنی برای +CompTIA PenTest


شما در این دوره، توانایی ارزیابی واقعی جنبه های غیر فنی (دیجیتال) یک تست نفوذ را پیدا خواهید کرد. ابتدا یاد خواهید گرفت که چگونه مهندسی اجتماعی می توا...

1399/08/24 551 بازدید زیرنویس دارد
pluralsight-droidcon-boston-19-writing-tests-that-stand-the-test-of-time

دوره Droidcon Boston '19: نوشتن تست هایی که در برابر تست زمان دوام می آورند


اگر تا به حال برایتان پیش آمده است که هر بار رفتار وابستگی یک کلاس تغییر می کند، باید تست های خود را به روز کنید، این سخنرانی برای شما مناسب است. این ...

1399/08/22 323 بازدید
pluralsight-droidcon-boston-19-test-the-untested-our-journey-from-zero-coverage-to-automated-testing

دوره Droidcon Boston '19: تست کردن چیزهای تست نشده: این دوره از ابتدا تا تست خودکار را پوشش می دهد


آیا از تغییر شکل پایگاه کد غول پیکر قدیمی می ترسید؟ آیا پوشش تست صفر دارید و نمی دانید چگونه در کار روزمره خود ایمنی را بدست آورید؟ به این سخنرانی بیا...

1399/08/15 282 بازدید
pluralsight-spring-boot-fundamentals

آموزش اصول Spring Boot


Spring Boot، یک افزونه از فریمورک اسپرینگ است که به توسعه دهندگان کمک می کند اپلیکیشن های ساده و مبتنی بر وب را با کد کمتر بسازند. این دوره، ویژگی های...

1399/08/12 949 بازدید زیرنویس دارد