جمعه , ۲۱ اردیبهشت ۱۴۰۳

مقایسه تست دستی و تست اتومات: تفاوت چیست؟

Automated Testing Vs. Manual Testing
Automated Testing Vs. Manual Testing

تست دستی چیست؟

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

در تست دستی، تستر تمام امکانات(Feature) اصلی نرم‌افزار یا اپلیکیشن را بررسی می‌کند. در این فرآیند، تسترهای نرم‌افزار Test Caseها را اجرا کرده و گزارشات تست را بدون کمک ابزارهای تست اتوماتیک نرم‌افزار تولید می‌کنند.

این یک روش کلاسیک از میان تمام انواع تست است و کمک می‌کند تا باگ‌ها را در سیستم‌های نرم افزاری بیابید. به طور کلی این روش توسط یک تستر تجربی برای انجام فرآیند تست نرم‌افزار هدایت می‌شود.

تست اتوماتیک چیست؟

در تست اتوماتیک نرم‌افزار، تسترها برای اتومات کردن اجرای تست، کد یا Test Script می‌نویسند. تسترها برای توسعه اسکریپت‌های تست از ابزارهای اتوماسیون مناسب استفاده کرده و نرم افزار را تائید اعتبار می‌کنند. در اینجا هدف تکمیل تست در زمان کمتر است.

تست اتوماتیک به طور کامل بر روی “تستِ از پیش اسکریپت شده” تکیه می‌کند که به صورت اتوماتیک اجرا می‌شود تا نتایج واقعی را با نتایج مورد انتظار مقایسه نماید. این به تستر کمک می‌کند تا تعیین کند که آیا برنامه مطابق با انتظار فعالیت می‌کند یا خیر.

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

Automation Testing VS Manual Testing
Automation Testing VS Manual Testing

تست اتوماتیک در مقابل تست دستی

ردیف

پارامتر

تست اتوماتیک

تست دستی

1

تعریف

تست اتوماتیک برای اجرای Test Caseها از ابزارهای اتوماسیون استفاده می‌کند

در تست دستی، Test Caseها بوسیله تستر انسانی و تعامل وی با نرم‌افزار اجرا می شود

2

زمان پردازش

تست اتوماتیک به طور قابل توجهی سریعتر از روش دستی است

تست دستی زمانگیر بوده و منابع انسانی را به خود جذب می‌کند

3

Exploratory Testing

اتوماسیون اجازه تست تصادفی را نمی‌دهد

تست اکتشافی یا Exploratory Testing در تست دستی مقدور است

4

سرمایه‌گذاری اولیه

سرمایه‌گذاری اولیه در تست اتوماتیک بیشتر است. هر چند ROI در بلندمدت بهتر است.

سرمایه‌گذاری اولیه در تست دستی، نسبتا پایین است. ROI در مقایسه با تست اتوماتیک در بلندمدت پایین تر است

5

اطمینان‌پذیری(Reliability)

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

تست دستی به علت احتمال خطاهای انسانی دقیق نیست

6

تغییر UI

برای حتی یک تغییر بی‌اهمیت در UI مربوط به اپلیکیشن تحت تست، اسکریپت تست اتوماتیک نیاز به تغییر دارد تا بدین ترتیب مطابق انتظار کار کند

تغییرات کوچک مانند تغییر در id، کلاس و غیره از یک دکمه اجرای یک تستر دستی را عقیم نمی‌کند

7

سرمایه‌گذاری

سرمایه‌گذاری برای ابزارهای تست و همچنین مهندسان اتوماسیون لازم است

برای منابع انسانی سرمایه‌گذاری مورد نیاز است

8

مقرون به صرفگی

برای رگرسیون کم حجم موثر نیست

برای رگرسیون حجم بالا مقرون به صرفه نیست

9

میدان دید Test Report

با تست اتوماتیک، تمام ذینفعان می‌توانند به سیستم اتئماسیون لاگین کرده و نتایج اجرای تست را بررسی کنند

تست‌های دستی معمولا در اکسل یا Word ثبت می‌شوند و نتایج تست‌ها به آسانی قابل دسترس نیستند

10

مشاهده انسانی

تست اتوماتیک درک انسانی را درگیر نمی‌کند. بنابراین هرگز نمی‌تواند تضمینی روی User-Friendly بودن و تجربه مثبت مشتری به ما ارائه دهد

متد تست دستی مشاهدات انسانی را مقدرو می‌سازد که ممکن است برای پیشنهاد یک سیستم User Friendly مفید باشد

11

تست Performance

تست‌های Performance مانند تست بار، تست استرس، تست Spike، و غیره باید توسط ابزارهای اتوماسیون به صورت اجباری تست شوند

تست Performance به صورت دستی امکان پذیر نیست

12

اجرای موازی

این تست می‌تواند به صورت موازی در سیستم عامل‌های مختلف اجرا شده و زمان اجرای تست را کاهش دهد

تست‌های دستی می‌توانند به صورت موازی اجرا شوند، اما باید منابع انسانی خود را که گران هستند افزایش دهند

13

Batch Testing

شما می‌توانید چند تست اسکریپت را برای اجرای شبانه Batch کنید

تست های دستی نمی‌توانند Batch شوند

14

دانش برنامه‌نویسی

در تست اتوماتیک باید دانش برنامه‌نویسی وجود داشته باشد

در تست دستی نیازی به برنامه‌نویسی نیست

15

Set up

تست اتوماتیک نیازمند ستاپ ساده‌تری برای اجرای تست است

تست دستی نیازمند یک ستاپ اجرای تست ساده‌تر است

16

مشارکت

انجام توسط ابزار. دقیق و بدون خستگی

اجرای تست دستی تکرا شونده می‌تواند خسته کننده بوده و خطاپذیر باشد

17

رویکرد ایده‌آل

تست اتوماتیک زمانی مفید است که اغلب همان مجموعه از Test Caseها را اجرا کنید

تست دستی زمانی مفید است که Test Case فقط یک یا دو بار اجرا شود

18

Build Verification Testing

تست اتوماسیون برای تست تأیید Build یا Build Verification Testing-BVT مفید است

اجرای تست تأیید Build یا Build Verification Testing-BVT در تست دستی بسیار دشوار و وقتگیر است

19

Deadlineها

تست‌های اتوماتیک دارای ریسک صفر در راستای از دست رفتن پیش‌آزمون‌هاست

تست دستی در معرض خطر بالاتر در راستای از دست رفتن پیش‌آزمون‌هاست

20

Framework

تست اتوماتیک از چارچوب هایی مانند Data Drive، Keyword، Hybrid برای سرعت بخشیدن به فرایند اتوماسیون استفاده می‌کند

تست دستی از Frameworkها استفاده نمی‌کنند، اما ممکن است از دستورالعمل‌ها، چک‌لیست‌ها، فرآیندهای سختگیرانه برای تهیه برخی Test Caseها استفاده کند

21

مستندسازی

تست‌های اتوماتیک به عنوان یک سندی عمل می‌کنند که که ارزش آموزشی آن به صورت ویژه برای Unit Test Caseهاست. یک Developer جدید می‌تواند به Unit Test Caseها نگاه کرده و Code Base را فورا درک کند

Test Caseهای دستی، ارزش آموزشی ندارد

22

طراحی تست

Unit Testهای اتوماتیک، Test Driven Development/Design را اجباری نموده و یا راه‌اندازی می‌کنند

Unit Testهای دستی، طراحی را در فرآیند کدنویسی راه‌اندازی نمی‌کنند

23

Devops

تست‌های اتوماتیک به Build Verification Testing کمک کرده و بخش جدایی ناپذیر از چرخه DevOps است

تست دستی، اصول ساخت اتوماتیک در DevOps را نقض می‌کند

24

چه موقع استفاده شود؟

تست اتوماتیک برای تست رگرسیون، تست Performance، تست Load، یا Test Caseهای بسیار تکرار شوندۀ Functional مناسب است

تست دستی برای تست Exploratory، Usability و Adhoc Test مناسب است. همچنین باید در جایی که AUT(اپلیکیشن تحت تست) اغلب تغییر می‌کند استفاده شود

جوانب مثبت و منفی تست دستی

جوانب مثبت تست دستی

  • بازخورد بصری سریع و دقیق می‌گیرید.
  • ارزان‌تر است زیرا شما نیازی به صرف بودجه خود برای فرآیندها و ابزارهای اتوماسیون ندارید.
  • قضاوت و شهود انسانی همواره تست دستی را بهره‌مند می‌کنند.
  • در حین تست کردن یک تغییر کوچک، یک تست اتوماتیک نیازمند کدنویسیست که می‌تواند زمان زیادی را صرف کند. در حالی که شما می‌توانید به صورت On The Fly تست خود را به شکل دستی اجرا نمایید.

جوانب منفی تست دستی

  • از آنجاییکه تست دستی توسط انسان انجام می‌شود، این روش تست کمتر قابل اطمینان(Reliable) است. بنابراین، همیشه مستعد اشتباه و خطاست.
  • فرآیند تست دستی را نمی‌توان رکورد کرد، بنابراین امکان استفاده مجدد(Reuse) از تست دستی وجود ندارد.
  • در این روش تست، وظایف خاصی به صورت دستی انجام می‌شوند که ممکن است نیاز به زمان بیشتری از فاز تست نرم‌افزار داشته باشند.

جوانب مثبت و منفی تست اتوماتیک

جوانب مثبت تست اتوماتیک

  • تست اتوماتیک کمک می‌کند تا باگ‌های بیشتری  را در مقایسه با تستر انسانی بیابید.
  • همانطور که بسیاری از قسمت‌های فرآیند تست اتومات شده است، شما می‌توانید یک فرآیند سریع و کارآمد داشته باشید.
  • فرآیند اتوماسیون قابلیت رکورد شدن دارد. این به شما اجازه می‌دهد تا یک عملیات از تست را دوباره استفاده(Reuse) نموده و اجرا کنید.
  • تست اتوماتیک با استفاده از ابزارهای نرم‌افزاری انجام می‌شود، بنابراین بر خلاف انسان در تست دستی، بدون خستگی انجام می‌شود.
  • این نوع تست به راحتی می‌تواند بهره‌وری را افزایش دهد، چرا که نتیجه سریع و دقیق را برای تست به ارمغان می‌آورد.
  • تست اتوماتیک از اپلیکیشن‌های مختلف پشتیبانی می‌کند.
  • با استفاده تست اتوماتیک می‌توان Test Coverage را افزایش داد، چرا که ابزار تست اتوماتیک حتی چک کردن کوچکترین Unitها را فراموش نمی‌کند.

جوانب منفی تست اتوماتیک

  • بدون عنصر انسانی دشوار است که جنبه‌های بصری UI مانند رنگ، فونت، اندازه، کنتراست و یا اندازه دکمه را درک کرد.
  • ابزارهای اجرای تست اتوماتیک می‌تواند گران باشد، و همین امر می‌تواند هزینه پروژه تست را افزایش دهد.
  • ابزار تست اتوماتیک هنوز کاملا جا نیفتاده است. هر ابزار اتوماسیون دارای محدودیت‌هاییست که دامنه اتوماسیون را کاهش می‌دهد.
  • دیباگ کردن Test Script یکی دیگر از مسائل مهم در تست خودکار است. نگهداری تست هزینه زیادی دارد.

 

این مطلب بخشی از دوره آموزشی رایگان تست نرم‌افزار بود، که می‌توانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *