بهروز
بهروز
خواندن ۳ دقیقه·۵ سال پیش

تست اتوماتیک یا غیراتوماتیک، مسئله این نیست!

تاریخ انتشار نسخه اصلی نوامبر 13, 2016
همانطور که در پست مربوط به Web Automation نوشتم، خوب است که در مورد خود اتوماسیون تست هم صحبت بشود. اینکه چه زمانی تست را باید اتوماتیک کرد و چه زمانی به صورت دستی انجام داد؟ مزایا و معایب آن را با رسم شکل توضیح دهید؟ ?

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

  • نوع تست از لحاظ نزدیکی به تجربه کاربر:تست میتواند در سطوح Unit و Integration یا سیستم و تست Acceptance باشد. نزدیکی به تجربه کاربر در این سطوح از تست به همین ترتیب افزایش میابد. اگر فرض را بر این بگیریم که کاربر نهایی نرم افزار انسان است،  شبیه سازی نحوه استفاده او از سیستم کار مشکلب است. در واقع در سطوح بالای تست بر خلاف سطوح پایین که تمرکزش بروی Function ها و کلاسها و interface هاست، دغدغه بر روی شبیه سازی همین تجربه کاربر با در نظر گرفتن پیچیدگی های رفتاری او است. پیچیدگی که با دریافت بازخورد مداوم از مشتری مدام در حال بروزشدن است. در این سطح،  طراحی و اجرای تست اتوماتیک دشوار و احتمالا ناکارآمد است. در حالی که در سطوح پایین اتوماتیک کردن تست شدنی و ناگزیر است.
  • هزینه تست: آیا برای پیاده سازی تست اتوماتیک نیاز به خرید framework یا ابزاری گران است یا نوع رایگان آن موجود است؟ آیا برای نوشتن یا راه اندازی تست شرکت نیازمند آوردن متخصص ای پرهزینه است یا اینکه یکی از نیروی های حاضر با صرف مدتی میتواند مسئولیت آن را برعهده گیرد؟ برآوردی از میزان ارتقای کیفیت نرم افزار و بالارفتن رضایت مشتری وجود دارد که این هزینه ها را توجیه کند؟
  • میزان چالاکی تولید: صحبت در مورد اتوماسیون در تست از زمانی زیاد بگوش میرسد که R&D اقدام به بکارگیری متدهای چابک یا Agile در تولید نرم افزار میکند. در روشهای چابک (که در پستی جداگانه در مورد آن خواهم نوشت)،  تست بر اساس بازخوردهای سریع و مداوم است. سرعت و مداومت هر دو نیازهایی است که از طریق اتوماسیون میتوان به آنها رسید. نیاز به اتوماسیون در شرکتی که هنوز به سمت روشهای چابک نرفته است کمتر احساس میشود.

علاوه بر نقش عوامل بالا در تصمیم گیری، باید اضافه کرد که طراحی و پیاده سازی اتوماسیون تست فرایندی ادامه دار است. کد نوشته شده  باید با تغییرات سیستم یا بازخوردهای مشتری مدام بروز رسانی شود تا هم از گزارشات false positive جلوگیری شود و هم اطمینان کاذب از کیفیت ایجاد نشود. بسیار دیده شده که کدهای تست بعد از مدتی صرفاً برای زیبایی و اینکه گفته شود که کاری در مورد اتوماسیون انجام شده است همچنان اجرا میشوند درحالی که هیچ بازخوردی به برنامه نویس نمیدهند. متاسفانه برخی از تیمهای نرم افزاری با اتوماسیون به عنوان یک کالای لوکس و دهان پر کن برخورد میکنند. مهندسین QA یا برنامه نوسان برای آنکه مهارت خود را در کدنویسی نشان دهند، اقدام به اتوماتیک کردن تستهایی میکنند که از اساس باید به صورت دستی و توسط یک کاربر معمولی انجام شوند.برای من اتوماسیون تست به ذات امری ضروری نیست. هدف تست بالا بردن کیفیت نرم افزار از طریق بازخوردهای دقیق و سریع است. اتوماسیون تنها وسیله است برای رسیدن به این هدف.

تست نرم افزاراتوماسیون تستخودکارسازی تستتست دستی
مهندس تست و امنیت نرم افزار https://www.linkedin.com/in/behroozaghakhanian
شاید از این پست‌ها خوشتان بیاید