این مقاله ترجمهای از مقاله A Context-Driven Approach to Automation in Testing نوشته جیمز باخ(James Bach) و مایکل بولتون(Michael Bolton) است که دو تن از بزرگان و مشهورترین افراد در حوزه تست نرمافزار دنیا هستند. این مقاله در فوریه ۲۰۱۶ به رشته تحریر در آمده است.
مقاله پیش رو نسبتا طولانیست که احتمالا طی ۷ تا ۱۰ پست منتشر خواهد شد.
ترجمه این مقاله توسط سرکار خانم مهندس طنانه پارسا کردآسیابی آماده شده است.
خلاصه: راههای شگفت انگیز بسیاری وجود دارند که میتوان از ابزارها برای کمک به تست نرمافزار استفاده کرد. در حال حاضر از ابزارها استفاده مناسبی نمیشود که این موضوع سردرگمی و مشکلات بسیاری را به آنچه در حال حاضر یک مشکل سخت است، اضافه میکند. چرا اینطور است؟ چه کاری میتوان انجام داد؟ ما فکر میکنیم که مشکل اساسی، نگرش سطحی به استفاده از ابزار است. و این مشکل با یک باور همه گیر و غلط درباره تست، که تست را یک فرآیند تکراری و مکانیکی میداند تشدید شده است. یک تست خوب مانند برنامهنویسی، یک فرآیند فکری و چالشی است. بنابراین تست کردن باید به دست افرادی سپرده شود که پیچیدگیهای ابزارها و تستها را متوجه میشوند. این موضوع در مورد توسعه نرمافزار و برنامهنویسی و در واقع برای هر شغل و مهارتی از نجاری تا داروسازی صدق می کند.
فهرست عناوین:
رباتها! کمک!
مشکل ما در مواجه با خودکارسازی(Automation)
اول: آنها را ابزار بنامید[نه خودکارسازی تست (Test Automation)]
دوم: به تست بسیار بیشتر از چک کردن خروجی(Output Checking) فکر کنید
- تفاوت بین تست کردن و چک کردن
- چک کردن مهم است
سوم: روشهای بسیاری برای استفاده از ابزارها کشف کنید!
- اجازه دهید متن شما، ابزارتان را هدایت کند
- به طور مشخص چطور متن، ابزار را هدایت میکند؟
- روی ابزارهایی سرمایهگذاری کنید که آزادیهای بیشتری در موقعیتهای مختلف به شما بدهند
- روی تستپذیر بودن سرمایهگذاری کنید
اجازه دهید در عمل با ابزارهای پشتیبانی کننده تست آشنا شویم!
- مورد اول: ابزار بدون چک کردن استفاده میشود
- مورد دوم: استفاده از ابزار پشتیبانی همراه با تولید دادههای الگو، برای یک Oracle[پیشبینی کننده نتیجه تست] قدرتمند و پوشش بهتر
- مورد سوم: چک کردن خودکار
- چرا خودکارسازی فعالیتهایی که از طریق واسط گرافیکی کاربر(GUI) انجام میشود بسیار سخت است؟
خودکارسازی فعالیتها یک تاکتیک است و نباید یک کار تکراری و روزمره باشد
اجازه دهید زمینه(Context) شما، ابزارتان را هدایت کند
منظور از زمینه، مجموعه عواملی است که باید بر تصمیمات بک آزمونگر مسئول تأثیرگذار باشد. به طور کلی، به یک صنعتگر که دارای مهارت است و علاوه بر آن قصد انتخاب و استفاده از ابزار مناسب در یک Context خاص را داردContext Driven(زمینه محور) میگویند. به طور خاص، آزمون زمینه محور در نرم افزار، یک الگوی تست بر اساس اصول زیر است:
- ارزش هر عملی بستگی به زمینه آن دارد.
- در هر زمنیهای شیوههای(Practice) خوب وجود دارد، اما بهترین شیوه(Best Practice) وجود ندارد.
- افرادی که با هم کار میکنند ، مهمترین بخش از زمینه هر پروژه را تشکیل میدهند.
- به مرور زمان پروژهها به روشهایی که اغلب قابل پیش بینی نیستند، آشکار می شوند.
- محصول یک راهکار(Solution) است. اگر مشکل حل نشود، یعنی محصول کار نمیکند.
- تست خوب و اصولی یک نرمافزار، یک فرآیند فکری چالش برانگیز است.
- ما تنها با مهارت و داوری که در طول کل پروژه به صورت مشارکتی اعمال میشود، میتوانیم در زمانهای مناسب کارهای مناسبی انجام دهیم تا محصولات خود را به طور مؤثر تحت آزمون قرار دهیم.
این اصول توسط سِم کانر(Cem Kaner)، جیمز باخ(James Bach) و برِت پَتیکورد(Bret Pettichord) به رشته تحریر در آمده است که نخستین بار در کتاب “Lessons Learned in Software Testing: A Context-Driven Approach” منتشر شده است. این کتاب، کتاب بدوی و اصلی در زمینه تفکر مبتنی بر Context است.
توجه داشته باشید که اگر شما به گونهای کار میکنید که مشکلات موجود در محیط را حل کنید، ممکن است بدون حرکت به صورت Context Driven، کارهای خاصی برای آن Context انجام دهید. برای اینکه زمینه محور باشید، باید آماده باشید و بتوانید کار را در صورت تغییر زمینه، تغییر دهید. به همین دلیل جامعه زمینه محور، بر توسعه مهارتها و به اشتراک گذاری تجربیات در انواع مختلف پروژهها و فناوریها متمرکز شده است. به همین دلیل ما، کنفرانسهایی که با همکارانمان برگزار میشود را به گفتگو و بحث(تبادل نظر) اختصاص میدهیم.
به طور مشخص چطور زمینه(Context)، ابزار را هدایت میکند؟
ابزارهای زمینه محور، از طریق حل مداوم مسائل و مشکلات فعالیت میکنند. ما این کار را با توسعه ادراکات مختلف در ذهنمان انجام میدهیم، از جمله:
- چه چیزی ما و مکان ما را در جهان احاطه کرده است
- مشتریان و ماموریت ما
- افراد دیگری که درگیر آن هستند و کاری که میخواهند انجام دهند
- ابزارها و تکنیکهای موجود
- اقداماتی که میتوانیم انجام دهیم و تأثیراتی که ممکن است داشته باشد
- هزینههای کوتاه مدت(و زمان) این اقدامات
- هزینههای بلند مدت این اقدامات
- ارزش یادگیری از تلاش برای چیزهای جدید
این ادراکات ممکن است به عنوان فضایی تلقی شود که ما در تمام پروژهها و کارهای خود بررسی میکنیم. همانطور که در طول پروژههای و کارهای خود یاد میگیریم و رشد میکنیم، در هدایت ادراکات خود نیز بهتر میشویم. کاری که ما با ادراکات خود انجام میدهیم، در نهایت منجر به محاسبات ذهنی و تصمیمگیری با قاعده حاکم بر شکل زیر میشود. در کارهای زمینه محور، انتخاب ما نه بر مبنای “بهترین شیوهها”، بلکه بر اساس ارزیابی پویای زمینه، و انتخاب، طراحی یا تعدیل اقداماتمان برای حل مشکلاتیست که با آنها روبرو میشویم. ترجیح می دهیم که با ارزیابی پویا در ارتباط با راهکار مناسب برای حل مسئله انتخاب، طراحی و سازگاری با مشکل مربوطه، مواجه شویم.
این استراتژیها دارای Value-ارزش(کاهشیِ رو به پایین) و هزینهها و ریسکها-Costs And Risks(افزایشیِ رو به بالا) هستند. این نیروها در هر استراتژی علیه یکدیگر فشار وارد میکنند. هنگام مقایسه استراتژیها Value ،Costs And Risks هر یک باید نسبت به دیگری وزن شود.
لازم به ذکر است که ما فقط به این نمی پردازیم که یک استراتژی به خودی خود دارای ارزش است یا نه! مثلا استراتژی B در شکل بالا خطرات و هزینه زیادی را شامل میشود. ما هر استراتژی را با سایر استراتژیها مقایسه میکنیم، مانند استراتژی A. در واقع ما تلاش میکنیم تصمیمگیری براساس شایستگیها صورت گیرد. باید بدانید که در آزمون زمینه محور، ما Best Practiceها را به بُت تبدیل نمیکنیم.