در یکی از مقالات خود با عنوان چرا در DevOps به Continuous Testing نیاز دارید علل اصلی پیوند ناگسستنی DevOps و Continuous Testing را ذکر کردیم.
اما در انتهای مقاله ذکر کردیم که اتوماسیون تست باید با خط تحویل نرمافزار و زنجیره ابزار DevOps ادغام شده و یکپارچه شود. در این مقاله میخواهیم درباره یک زنجیره ابزاری مناسب در DevOps صحبت کنیم.
تصویر زیر یک DevOps Pipeline مثالی را نشان میدهد که شامل تست مداوم(Continuous Testing) در طول Check in، یکپارچهسازی مداوم(Continuous Integration) و تحویل مداوم(Continuous Delivery) است.
در حالی که موارد مذکور در اینجا فهرست کاملی از تمام محصولات موجود در DevOps نیست، اما یک چک لیست از ابزارهاییست که با هم یک Continuous Testing DevOps Toolchain مناسب را تشکیل میدهند.
ابزارهای Planning
اگر شما به دنبال یک ابزار هستید که همکاری بین تیمهای مختلف را ساده کنید، Jira یک ابزار مدیریت پروژه Agile است که از هر Agile Methodology چه Scrum، چه Kanban، و یا حتی روش منحصر به فرد شما را پشتیبانی میکند. شما میتوانید داشبورد های Agile تا گزارشات، را Plan کرده، Track کنید، و تمام پروژه توسعه نرمافزار Agile خود را مدیریت نمایید. طیف گستردهای از یکپارچهسازی Jira با دیگر ابزارها نیز به شما کمک خواهد کرد تا شما به دیگر ابزارهایی که احتمالا به آنها نیاز خواهید داشت متصل شوید.
ابزارهای Dev که عبارتند از IDEهای مبتنی بر Cloud یا دسکتاپ
در حالی که Eclipse و ویژوال استادیو محبوبترین ابزارهای دسکتاپ هستند، اما در زمینه Cloud باید گفت Cloud9(توسعه یافته توسط Amazon Web Services)، و JSFiddle پیشرو هستند.
سیستمهای کنترل نسخه(Version Control System-VCS)
چندین سرویس میزبانی وب برای کنترل نسخه در DevOps وجود دارد، از جمله Microsoft GitHu، Atlassian Bitbucket و سرویس منبع باز GitLab. همه کارها در IDEهای استاندارد دسکتاپ یا Cloud برای تسهیل فرآیندهای Check in و Check out کد منبع است.
ابزارهای ساخت(Build)
Jenkins یک CI/CD Server است که اپلیکیشنها را Build کرده، تستها را به طور خودکار انجام میدهد و هر بار که یک برنامهنویس کد جدید را در Source Repository چک میکند، از طریق DevOps Pipeline کد را Push مینماید. به دلیل اکوسیستم غنی پلاگینها، Jenkins میتواند برای Build، Deploy و تقریبا اتومات کردن هر پروژه نرمافزاری مورد استفاده قرار گیرد.
Bamboo یک CI/CD Server از Atlassian است. مانند Jenkins و سایر CI/CD Serverها، Bamboo اجازه میدهد تا توسعهدهندگان به صورت خودکار کد منبع را Build، Integrate، تست و Deploy کنند. Bamboo یک نرمافزار تجاریست که به صورت Out-of-The-Box با دیگر محصولات Atlassian مانند Jira برای مدیریت پروژه و Hipchat برای ارتباطات تیمی یکپارچه شده و پشتیبانی میشود.
ابزار تست خودکار
Cucumber یک ابزار برای مشخص کردن ویژگیهای برنامه و سناریوهای کاربری در متنِ ساده است. Cucumber تستهای پذیرش خودکار که به شیوه توسعه رفتار محور(Behavior-Driven-Development-BDD) نوشته شدهاند را اجرا میکند، که خود به مشارکت در پروژههای نرمافزاری با نوشتن Test Caseها به زبان طبیعی که غیر برنامهنویسان و کارشناسان دامنه بتوانند آنرا بخوانند، تشویق میکند.
Selenium مجموعهای از ابزارهای نرمافزاری Open Source است که امکان تست خودکار برنامههای وب را در بین مرورگرها و سیستم عاملهای مختلف فراهم میکند. Selenium، مانند Jenkins، یک Repository قوی از ابزارهای Open Source دارد که برای انواع مختلف مشکلات اتوماسیون مفید هستند.
تیمهای Agile میتوانند کنترل One-Touch را برای اتوماسیون تست در Zephyr Platform با Vortex اجرا نمایند. بعلاوه میتوانید از Add-on پیشرفته Zephyr که به شما اجازه میدهد تا با یک سوییت در حال رشد از Frameworkهای تست اتومات(شامل eggPlant، Cucumber، Selenium، UFT، و Tricentis) با کمترین پیکربندی Integrate شوید نیز استفاده کنید. با این اوصاف علاوه بر اینکه قادر به اجرای هزاران نمونه تستی خودکار هستید، Vortex ایجاد اتوماتیک Test Caseها از Test Scriptها را ساده کرده، و میتوانید Insightهای استخراجی از Analytics را روی فعالیتهای دستی و اتومات اِعمال نمایید.
تست اکتشافی مبتنی بر جلسه
PractiTest یک سیستم مدیریت تست است که از شیوههای تست اکتشافی مبتنی بر جلسه(Session-Based Exploratory Testing) پشتیبانی میکند. در ابتدا تستهای اکتشافی مبتنی بر جلسه ایجاد میشوند و به مجموعه تستهای در حین آزمون افزوده میگردند. این تستها میتوانند به منظور نگهداشت Test Suiteها، Tractability، و Test Coverage(پوشش تست) با انواع دیگر تستها، از جمله دستی ساختیافته(Structure Manual)و خودکار، ترکیب شوند.
Capture for Jira روی ایجاد پروژههای Agile و رکورد کردن جلسات(Session) تست به صورت Collaborative و Exploratory که برای Planning، اجرا و Tracking روی تستهای Exploratory و دستی مفید است، به تسترها کمک میکند. مدیریت تست مبتنی بر جلسه، که یک نوع تست اکتشافی ساخت یافته است، یک روش بسیار قدرتمند برای بهینهسازی پوشش تست است؛ بدون اینکه هزینههای مرتبط با نوشتن و نگهداری Test Case را در بر داشته باشد. مانند Zephyr for Jira، افزونه Capture for Jira نیز یک Integration عمیق با پلت فرم Jira دارد که به کاربران اجازه میدهد تصاویر را در مرورگرها ضبط نمایند، صفحات را در Chrome رکورد کنند و Annotationها و Validation(اعتبارسنجی) مربوط به Functionality برنامه را در Jira ایجاد نمایند.
ابزارهای استقرار(Deployment)
Chef و Puppet هر دو ابزار اُرکِسترِیشِن(Orchestration) و مدیریت خودکار پیکربندی هستند که برای سرعت بخشیدن به محاسبات و Storage Instanceها بر اساس تقاضا استفاده میشوند.
تست به طور مداوم برای تحویل سریعتر
DevOps چیزی بیش از اتخاذ مجموعه ابزار مناسب است؛ این یک تغییر فرهنگیست که شامل تست در هر مرحله از چرخه حیاتی پروژه میشود. تست مداوم کلید باز کردن این تغییر فرهنگ است. تست مداوم به همه افراد کمک میکند که بیشتر ارتباط برقرار کنند، بهتر کار کنند و سریعتر نوآوری نمایند.