![Automated Testing Vs. Manual Testing](https://tisten.ir/blog/wp-content/uploads/2018/12/Automated-Testing-Vs.-Manual-Testing-1024x632.jpg)
تست دستی چیست؟
تست دستی، نوعی از تست نرمافزار است که در آن تستها توسط تحلیلگران QA انجام میشود. این کار برای استخراج باگها در نرمافزار تحت توسعه انجام میشود.
در تست دستی، تستر تمام امکانات(Feature) اصلی نرمافزار یا اپلیکیشن را بررسی میکند. در این فرآیند، تسترهای نرمافزار Test Caseها را اجرا کرده و گزارشات تست را بدون کمک ابزارهای تست اتوماتیک نرمافزار تولید میکنند.
این یک روش کلاسیک از میان تمام انواع تست است و کمک میکند تا باگها را در سیستمهای نرم افزاری بیابید. به طور کلی این روش توسط یک تستر تجربی برای انجام فرآیند تست نرمافزار هدایت میشود.
تست اتوماتیک چیست؟
در تست اتوماتیک نرمافزار، تسترها برای اتومات کردن اجرای تست، کد یا Test Script مینویسند. تسترها برای توسعه اسکریپتهای تست از ابزارهای اتوماسیون مناسب استفاده کرده و نرم افزار را تائید اعتبار میکنند. در اینجا هدف تکمیل تست در زمان کمتر است.
تست اتوماتیک به طور کامل بر روی “تستِ از پیش اسکریپت شده” تکیه میکند که به صورت اتوماتیک اجرا میشود تا نتایج واقعی را با نتایج مورد انتظار مقایسه نماید. این به تستر کمک میکند تا تعیین کند که آیا برنامه مطابق با انتظار فعالیت میکند یا خیر.
تست اتوماتیک به شما اجازه میدهد تا کارهای تکرارشونده و تست رگرسیون را بدون مداخله تستر دستی اجرا نمایید. حتی اگر تمام فرآیندها به صورت اتوماتیک اجرا شوند، اتوماسیون نیاز به تلاش دستی برای ایجاد اسکریپتهای تست اولیه دارد.
![Automation Testing VS Manual Testing](https://tisten.ir/blog/wp-content/uploads/2018/12/Automation-Testing-VS-Manual-Testing.png)
تست اتوماتیک در مقابل تست دستی
ردیف | پارامتر | تست اتوماتیک | تست دستی |
---|---|---|---|
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 یکی دیگر از مسائل مهم در تست خودکار است. نگهداری تست هزینه زیادی دارد.
این مطلب بخشی از دوره آموزشی رایگان تست نرمافزار بود، که میتوانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.
![ابوالفضل خواجه دیزجی](https://tisten.ir/blog/wp-content/uploads/2018/07/a.dizaji-1.jpg)