کروم برای تست (Chrome for Testing) یک نسخه از کروم است که به طور خاص موارد استفاده از تست برنامههای وب و اتوماسیون را هدف قرار میدهد. این سند توضیح میدهد که چرا تیم کروم احساس نیاز به این مورد را داشته است و مثالهای ملموسی را ارائه میدهد که در آنها کروم برای تست میتواند برای شما به عنوان یک توسعهدهنده مفید باشد.
پیشینه
تست مرورگر، صرف نظر از اینکه به صورت دستی یا خودکار انجام شود، یک جزء حیاتی برای ایجاد یک تجربه وب با کیفیت بالا است. در عین حال، راهاندازی یک محیط تست مرورگر مناسب به طرز چشمگیری دشوار است، به طوری که به طور مداوم به عنوان یک نقطه درد اصلی توسعهدهندگان وب گزارش میشود .
بهروزرسانی خودکار: عالی برای کاربران، دردناک برای توسعهدهندگان
یکی از قابل توجهترین ویژگیهای کروم، قابلیت بهروزرسانی خودکار آن است. کاربران از اینکه میدانند از یک نسخه بهروز و امن مرورگر استفاده میکنند که شامل ویژگیهای مدرن پلتفرم وب، ویژگیهای مرورگر و رفع اشکالات در همه زمانها میشود، خوشحال میشوند.
با این حال، به عنوان یک توسعهدهنده که مجموعهای از تستهای سرتاسری را اجرا میکند، ممکن است دیدگاه کاملاً متفاوتی داشته باشید:
- شما میخواهید نتایج ثابت و تکرارپذیر در طول آزمایشهای مکرر داشته باشید - اما اگر فایل اجرایی یا باینری مرورگر تصمیم بگیرد که خود را بین دو اجرا بهروزرسانی کند، ممکن است این اتفاق نیفتد.
- شما میخواهید یک نسخه خاص از مرورگر را پین کنید و شماره نسخه آن را در مخزن کد منبع خود بررسی کنید، تا بتوانید کامیتها و شاخههای قدیمی را بررسی کنید و تستها را روی فایل باینری مرورگر از آن نقطه زمانی دوباره اجرا کنید.
هیچکدام از این موارد با یک مرورگر با قابلیت بهروزرسانی خودکار امکانپذیر نیست. در نتیجه، ممکن است نخواهید از نسخه معمولی کروم خود برای تست خودکار استفاده کنید. این همان عدم تطابق اساسی بین آنچه برای کاربران معمولی مرورگر خوب است و آنچه برای توسعهدهندگانی که تست خودکار انجام میدهند خوب است، میباشد.
فایلهای باینری مرورگر نسخهبندیشده
گذشته از بهروزرسانی خودکار، ممکن است پیدا کردن یک فایل باینری کروم با یک نسخه خاص برایتان دشوار بوده باشد. گوگل عمداً دانلودهای کروم نسخهبندیشده را در دسترس قرار نمیدهد، زیرا کاربران نباید به شماره نسخهها اهمیت دهند - آنها همیشه باید در اسرع وقت به آخرین نسخه بهروزرسانی شوند. این برای کاربران عالی است، اما برای توسعهدهندگانی که نیاز به تولید مجدد گزارش اشکال در نسخه قدیمیتر کروم دارند، دردناک است.
یک مثال خاصتر از این مشکل زمانی است که میخواهید از ChromeDriver برای خودکارسازی مرورگر استفاده کنید. نه تنها باید به نحوی فایل باینری کروم را دانلود کنید، بلکه به یک فایل باینری ChromeDriver با نسخه متناظر نیز نیاز دارید تا از سازگاری دو فایل باینری اطمینان حاصل شود.
از آنجایی که هیچ راه خوبی برای حل این مشکلات وجود ندارد، بسیاری از توسعهدهندگان به جای آن ، فایلهای باینری Chromium (نه Chrome) را دانلود میکنند، اگرچه این رویکرد دارای برخی نقصها است. اولاً، این فایلهای باینری Chromium به طور قابل اعتمادی در همه پلتفرمها در دسترس نیستند. ثانیاً، آنها جدا از فرآیند انتشار Chrome ساخته و منتشر میشوند و این امر، نگاشت نسخههای آنها به نسخههای واقعی Chrome که توسط کاربر ارائه میشوند را غیرممکن میسازد. ثالثاً، Chromium با Chrome متفاوت است.
راه حل: کروم برای آزمایش
کروم برای تست، که برای حل این مشکلات طراحی شده است، نسخهی اختصاصی کروم است که موارد استفادهی تست را هدف قرار میدهد، بدون بهروزرسانی خودکار، در فرآیند انتشار کروم ادغام شده و برای هر نسخه از کروم در دسترس است. یک فایل باینری نسخهبندی شده که تا حد امکان به کروم معمولی نزدیک است، بدون اینکه تأثیر منفی بر موارد استفادهی تست داشته باشد.
برای ایجاد کروم برای آزمایش، ما تغییراتی را در پایگاههای کد کرومیوم و کروم اعمال کردهایم و زیرساختی را برای ساخت و آپلود این فایلهای باینری در یک سطل عمومی، همگام با فرآیند انتشار کروم در تمام کانالها (پایدار، بتا، توسعهدهندگان و Canary) راهاندازی کردهایم.
زیرساخت اطراف Chrome for Testing فرصتهای جالبی فراتر از خود Chrome را فراهم میکند. به عنوان مثال، مشکلات ذکر شده قبلی در مورد یافتن یک فایل باینری Chrome و ChromeDriver منطبق را میتوان با ادغام فرآیند انتشار ChromeDriver در زیرساخت Chrome for Testing به طور کامل از بین برد. علاوه بر حل این مشکل که برای کاربر دردسرساز است، این امر انتشار ChromeDriver را نیز با Chrome هماهنگ میکند و فرآیند انتشار دستی ChromeDriver را از بین میبرد.