چرا تضمین کیفیت (QA) در حال تبدیل شدن به DevOps است: راهنمایی برای تازه‌کاران

1404/09/21
75 بازدید

مقدمه: تغییر بزرگ در تضمین کیفیت

نقش مهندس تضمین کیفیت (QA) در حال تحولی سریع و بنیادین است. به قول رودی (Rodie)، یک مهندس با ۱۳ سال تجربه در اتوماشون تست، «QA سنتی تقریباً مرده است». این جمله ضرورت تغییر را به خوبی نشان می‌دهد.

رودی نمونه‌ای واقعی از مهندسی است که با موفقیت این تغییر را مدیریت کرده است. او با افزودن مهارت‌های DevOps به تخصص خود، توانست مسیر شغلی‌اش را متحول کند.

این مقاله به زبانی ساده برای کسانی که به تازگی وارد دنیای فناوری شده‌اند، توضیح می‌دهد که چرا حوزه‌های QA و DevOps در حال ادغام شدن هستند، این تغییر چه معنایی برای یک مسیر شغلی مدرن دارد و چگونه می‌توانید خود را با آن تطبیق دهید.

——————————————————————————–

۱. «روش قدیمی»: درک محدودیت‌های تست سنتی

برای درک اهمیت این تغییر، ابتدا باید با روش سنتی تست آشنا شویم. جریان کار قدیمی معمولاً به این صورت بود:

  1. نوشتن کد: توسعه‌دهندگان کد را می‌نوشتند و آن را به مخزن کد (repository) ارسال می‌کردند.
  2. استقرار (Deployment): کد ساخته (build) و در یک محیط آزمایشی به نام «staging» مستقر می‌شد.
  3. شروع تست: سپس، تیم QA فرآیند تست را آغاز می‌کرد.

مشکل اصلی این روش این بود که «حلقه بازخورد (feedback loop) روزها یا حتی هفته‌ها طول می‌کشید». این موضوع باعث می‌شد رفع باگ‌ها کند و پرهزینه باشد، زیرا تا زمانی که یک باگ پیدا می‌شد، توسعه‌دهنده به سراغ کارهای دیگری رفته بود.

این تأخیرهای پرهزینه، صنعت را به یک سوال اساسی رساند: چگونه می‌توانیم تست را از انتهای صف به ابتدای آن منتقل کنیم؟ پاسخ در یک انقلاب فکری به نام «شیفت-لفت» نهفته است.

۲. رویکردی هوشمندانه‌تر: انقلاب «شیفت-لفت» (Shift-Left)

برای حل مشکل روش سنتی، مفهوم «تست شیفت-لفت» (Shift-Left Testing) پدید آمد. این مفهوم به معنای «انتقال تست به مراحل ابتدایی‌تر چرخه توسعه» است. به عبارت دیگر، تست به جای اینکه در انتهای فرآیند انجام شود، همزمان با نوشتن کد یا بلافاصله پس از ارسال آن اجرا می‌شود.

برای انجام تست به این سرعت و به صورت مکرر، تیم‌ها به محیط‌های تست موقتی و بر اساس تقاضا نیاز دارند. اینجاست که فناوری «محیط‌های موقتی» (Ephemeral Environments) وارد می‌شود.

آن را مانند یک کارگاه موقت و کاملاً مجهز تصور کنید. برای ساخت یک قطعه خاص، شما کل کارگاه را برپا می‌کنید، ابزارها را آماده می‌کنید و پس از اتمام کار، کل کارگاه را جمع می‌کنید تا فضایی اشغال نکند. محیط‌های موقتی دقیقاً همین کار را برای هر تغییر در کد (مانند یک pull request) انجام می‌دهند: یک محیط تست کامل به طور خودکار ساخته می‌شود، تست‌ها در آن اجرا می‌شوند و سپس کل محیط حذف می‌شود.

اما ساختن این محیط‌های قدرتمند و خودکار، به مجموعه‌ای از مهارت‌ها نیاز دارد که بسیار فراتر از اتوماسیون تست سنتی است.

۳. پل ارتباطی: جایی که مهارت‌های QA با ابزارهای DevOps تلاقی می‌کنند

دلیل اصلی ادغام QA و DevOps این است که «بهترین شیوه‌های تست امروزی به مهارت‌های زیرساختی نیاز دارند.» برای ساختن محیط‌های تست خودکار و موقتی، یک مهندس QA دیگر نمی‌تواند فقط به ابزارهای تست سنتی اکتفا کند.

مهارت‌های سنتی QA

  • سلنیوم (Selenium)
  • سایپرس (Cypress)

مهارت‌های مدرن مورد نیاز (مهارت‌های DevOps)

  • داکر (Docker)
  • کوبرنتیس (Kubernetes)
  • پایپ‌لاین‌های CI/CD
  • زیرساخت به عنوان کد (مانند ترافورم (Terraform))
  • پلتفرم‌های ابری (مانند AWS)

چرا این مهارت‌ها ضروری هستند؟ تصور کنید هدف نهایی، ساختن یک دنیای تست موقت و کاملاً خودکار است. برای رسیدن به این هدف، شما به داکر نیاز دارید تا اپلیکیشن خود را در یک بسته قابل حمل (کانتینر) قرار دهید. به کوبرنتیس به عنوان «مدیر» این دنیای موقت نیاز دارید تا به کانتینر شما بگوید کجا و چگونه اجرا شود. و در نهایت، به یک پایپ‌لاین CI/CD به عنوان «معمار اصلی» نیاز دارید تا تمام مراحل، از بسته‌بندی گرفته تا استقرار و اجرای تست‌ها را به صورت خودکار و با هر بار تغییر کد، اجرا کند.

برای اینکه ببینیم این مفاهیم در عمل چگونه کار می‌کنند، بیایید نگاهی به چالش‌های مشخصی بیندازیم که رودی را به سمت یادگیری این مهارت‌های جدید سوق داد.

۴. مطالعه موردی در دنیای واقعی: سفر رودی

رودی در شغل قبلی خود با مشکلاتی روبرو بود که مهارت‌های سنتی‌اش قادر به حل آن‌ها نبودند. این مشکلات عبارت بودند از:

  • نبود محیط تست مناسب: محیط staging یک کپی از محیط production بود. این بدان معنا بود که هر تستی می‌توانست «بر داده‌های production تأثیر بگذارد»، که تست واقعی را غیرممکن و خطرناک می‌کرد.
  • پایپ‌لاین استقرار پیچیده: پایپ‌لاین موجود آنقدر پیچیده بود که تیم تست را از چرخه توسعه جدا می‌کرد و تست را به انتهای فرآیند منتقل می‌کرد.

لحظه تحول نقطه عطف برای رودی زمانی بود که یک مهندس DevOps ایده راه‌اندازی یک کلاستر کوبرنتیس را مطرح کرد. رودی با دیدن قابلیت «review apps» در گیت‌لب (نمونه‌ای از محیط‌های موقتی) متوجه شد که این فناوری چقدر می‌تواند برای «انتقال تست به چپ» (shift-left) قدرتمند باشد.

درس کلیدی مهم‌ترین درسی که رودی از تجربه خود گرفت این بود: دوره‌های آموزشی که ابزارها را به صورت مجزا آموزش می‌دهند، فقط دستورات (syntax) را یاد می‌دهند. اما چالش و ارزش واقعی، همانطور که رودی کشف کرد، در درک جریان کار سرتاسری (end-to-end) است؛ جریانی که در آن ترافورم زیرساخت را آماده می‌کند، انسیبل آن را پیکربندی می‌کند و کوبرنتیس اجرای اپلیکیشن‌ها را مدیریت می‌کند.

تصمیم رودی برای یادگیری این سیستم پیچیده و به‌هم‌پیوسته، فقط برای حل یک مشکل کاری نبود؛ بلکه یک حرکت استراتژیک برای آینده شغلی‌اش بود.

۵. آینده‌نگری شغلی: چرا این تغییر اهمیت دارد؟

یک اصل مهم در دنیای فناوری وجود دارد: «پیچیدگی مساوی است با ارزش».

هر چه یادگیری یک مهارت سخت‌تر باشد، شرکت‌ها حاضرند پول بیشتری برای آن بپردازند. یادگیری یک فریمورک تست جدید (مثلاً رفتن از سایپرس به پلی‌رایت) نسبتاً آسان است. اما یادگیری زیرساخت و DevOps «سطح کاملاً متفاوتی از پیچیدگی» دارد و به همین دلیل، مهندسی با این مهارت‌ها ارزش بسیار بیشتری پیدا می‌کند.

تأثیر هوش مصنوعی (AI) هوش مصنوعی در حال حاضر قادر به خودکارسازی وظایف ابتدایی QA مانند نوشتن کدهای تست و مقایسه‌های بصری است. اما چیزی که AI در آن ضعیف است، مهارت‌های سطح بالاتر است:

  • معماری (Architecture)
  • استراتژی (Strategy)
  • یکپارچه‌سازی ابزارها (Integration)
  • قضاوت و تصمیم‌گیری استراتژیک (Judgment) درباره اینکه چه چیزی واقعاً نیاز به تست دارد.

نقش QA در حال تکامل است؛ از کسی که فقط تست می‌نویسد، به کسی که معماری زیرساخت و استراتژی تست را طراحی می‌کند. این مسئولیت نیازمند دانش عمیق DevOps است.

درک اهمیت این تغییر اولین قدم است؛ قدم بعدی این است که بدانید سفر یادگیری خود را از کجا شروع کنید.

۶. اولین قدم‌های شما در دنیای DevOps

بر اساس توصیه رودی، بهترین نقطه شروع برای یک متخصص QA، یادگیری پایپ‌لاین‌های CI/CD و داکر است. این حوزه نزدیک‌ترین ارتباط را با کار فعلی شما دارد، زیرا تست‌های شما در حال حاضر نیز در یک پایپ‌لاین اجرا می‌شوند. امن‌ترین و مرتبط‌ترین راه برای شروع، استفاده از زیرساخت‌های موجود در شرکت خودتان است.

یک پروژه عملی برای شروع می‌توانید با یک تمرین ساده و کاربردی شروع کنید:

  1. یک پایپ‌لاین CI/CD که شرکت شما از آن استفاده می‌کند را پیدا کنید.
  2. فایل پیکربندی آن پایپ‌لاین را کپی کنید.
  3. در نسخه کپی شده خود، یک مرحله جدید برای اجرای تست‌هایتان (مثلاً با سایپرس یا پلی‌رایت) اضافه کنید.
  4. این مرحله را طوری تنظیم کنید که ابزار تست شما را از یک ایمیج داکر (Docker image) دریافت کند.

هدف از این تمرین این است که شما را با مفاهیم DevOps و CI/CD به روشی عملی و کم‌خطر آشنا کند.

——————————————————————————–

۷. نتیجه‌گیری: نقش در حال تحول مهندس کیفیت

نقش QA در حال از بین رفتن نیست، بلکه در حال تکامل است. این نقش به یک موقعیت فنی‌تر و استراتژیک‌تر تبدیل می‌شود که تخصص عمیق در تست را با مهارت‌های DevOps و زیرساخت ترکیب می‌کند.

مهندسانی که این تغییر را بپذیرند و مهارت‌هایی برای ایجاد پل بین رشته‌های مختلف کسب کنند، ارزشمندترین و موفق‌ترین افراد در دهه آینده خواهند بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آخرین مقالات