برنامه نویسی

نحوه شناسایی و کاهش تست های پوسته پوسته: بهترین شیوه ها و استراتژی ها.

Summarize this content to 400 words in Persian Lang
افزایش قابلیت اطمینان و کارایی تست در خطوط لوله CI/CD

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

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

در یک موقعیت ایده آل، شما باید اولویت را برای هر مورد آزمایشی تعیین کرده باشید و آخرین پایه کد را برای گذراندن حداقل درصدی از موارد فرض کنید.

اما به دلیل پوسته پوسته شدن کیس های تست، که همچنان با شکست مواجه می شوند، زیرا ممکن است کهنه شده باشند یا مورد استفاده تغییر کرده باشد، کیس تست شما با شکست مواجه شده و ادغام درخواست کشش تبدیل به یک کابوس می شود. به جای کاهش درصد موارد قبولی، ما باید به فکر اصلاح این موارد باشیم.

دلیل درک Flaky Test.

نتایج تست غیر قابل پیش بینی: تست های پوسته پوسته با وجود اینکه کد تغییر نکرده است، گاهی اوقات با گذراندن و گاهی اوقات با شکست باعث غیرقابل پیش بینی شدن می شوند. این تصادفی بودن می تواند اعتماد به نتایج آزمون را دشوار کند.
اشکال زدایی پیچیده: ردیابی علت اصلی آزمایش پوسته پوسته شدن می تواند چالش برانگیز باشد زیرا ممکن است مشکل به طور مداوم تکرار نشود و شناسایی و رفع آن دشوار باشد.
زمان و منابع تلف شده: توسعه دهندگان می توانند زمان قابل توجهی را صرف اجرای مجدد تست ها، بررسی موارد مثبت کاذب و اشکال زدایی کنند که در واقع به عملکرد کد مربوط نمی شود.
تأثیر بر یکپارچگی مداوم (CI): تست های پوسته پوسته می توانند خطوط لوله یکپارچه سازی مداوم را مختل کنند که منجر به خرابی های غیرضروری در ساخت و کاهش کارایی کلی فرآیندهای تست خودکار می شود.
اعتماد به نفس یا بی اعتمادی کاذب: تست های پوسته پوسته می توانند اعتماد کاذب را در صورت قبولی پراکنده ایجاد کنند یا در صورت شکست غیرقابل پیش بینی باعث بی اعتمادی به مجموعه تست شوند و تکیه بر نتایج آزمایش را سخت تر کند.

راه هایی برای کاهش موارد تست Flaky

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

استراتژی ها و ابزارهای مختلف برای کاهش موارد تست پوسته پوسته شدن

جنکینز، CircleCI، تراویس CI: ابزارهای Continuous Integration/Continuous Deployment (CI/CD) مانند اینها را می توان برای اجرای مجدد تست هایی که شکست می خورند پیکربندی کرد و به شناسایی تست های پوسته پوسته کمک می کند. آنها اغلب دارای پلاگین یا پشتیبانی داخلی برای کنترل تست های پوسته پوسته هستند.
داکر: شرکت ها از Docker برای ایجاد محیط های ایزوله برای اجرای آزمایش ها استفاده می کنند. این تضمین می‌کند که تست‌ها هر بار که اجرا می‌شوند یک محیط ثابت و تمیز دارند و پوسته پوسته شدن ناشی از تفاوت‌های محیطی را کاهش می‌دهد.
ماشین های مجازی (VM): مانند Docker، VM ها را می توان برای اطمینان از اجرای آزمایش ها در یک محیط کنترل شده و ایزوله استفاده کرد و تداخل سایر فرآیندها یا وابستگی ها را به حداقل رساند.
تجزیه و تحلیل آماری با استفاده از یادگیری ماشین: برخی از سیستم های پیشرفته از یادگیری ماشین برای تجزیه و تحلیل نتایج تست و شناسایی الگوهای نشان دهنده تست های پوسته پوسته استفاده می کنند. این می تواند به شناسایی فعال و رسیدگی به پوسته پوسته شدن کمک کند.
سیاست های بررسی کد و قلاب های کنترل نسخه: اجرای سیاست های بررسی دقیق کد که شامل بررسی منابع بالقوه پوسته پوسته شدن است، می تواند از معرفی تست های پوسته پوسته جلوگیری کند. استفاده از قلاب‌های پیش‌فرض یا سایر مکانیسم‌های کنترل نسخه برای اجرای آزمایش‌ها به شیوه‌ای کنترل‌شده قبل از ادغام تغییرات، می‌تواند آزمایش‌های پوسته‌پوسته را زودتر تشخیص دهد.

استراتژی های برخی از سازمان های بزرگ

گوگل:

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

مایکروسافت:

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

3. فیس بوک:

سم زدایی: فیس بوک یک کتابخانه منبع باز به نام Detox برای آزمایش برنامه های تلفن همراه خود توسعه داد. Detox تضمین می کند که تست ها در یک حالت و محیط ثابت اجرا می شوند و پوسته پوسته شدن ناشی از عملیات ناهمزمان و سایر مشکلات زمان بندی را کاهش می دهد.
تست مداوم: فیس بوک با استفاده از ابزارهایی برای اجرای مجدد خودکار تست ها و شناسایی رفتار پوسته پوسته در اوایل چرخه توسعه، آزمایش مداوم را در فرآیند توسعه خود ادغام می کند.

4. نتفلیکس:

مهندسی آشوب: نتفلیکس از شیوه های مهندسی آشوب برای آزمایش انعطاف پذیری سیستم های خود استفاده می کند. با معرفی عمدی خرابی ها و اختلالات، آنها می توانند تست های پوسته پوسته را شناسایی کرده و استحکام تست ها و سیستم های خود را بهبود بخشند.
تلاش مجدد خودکار: نتفلیکس از مکانیسم‌های تکرار خودکار در خطوط لوله CI/CD خود برای اجرای مجدد تست‌هایی که به طور متناوب با شکست مواجه می‌شوند، استفاده می‌کند و به شناسایی و مدیریت تست‌های پوسته‌دار کمک می‌کند.

5. لینکدین:

ابزارهای مدیریت تست Flakyلینکدین ابزارهایی را به طور خاص برای مدیریت تست های پوسته پوسته توسعه داده است. این ابزارها به ردیابی تست‌های پوسته پوسته کمک می‌کنند، رخداد آن‌ها را مشاهده می‌کنند و وضوح آنها را اولویت‌بندی می‌کنند.
استانداردسازی محیط تستلینکدین بر استانداردسازی محیط‌های آزمایشی تمرکز می‌کند تا تنوع را کاهش دهد و اطمینان حاصل کند که آزمایش‌ها در شرایط ثابت اجرا می‌شوند، که به کاهش پوسته پوسته شدن کمک می‌کند.

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

Apoorv Tomar یک توسعه دهنده نرم افزار و وبلاگ در **Mindroast است. می توانید در شبکه های اجتماعی وصل شوید. در **خبرنامه مشترک شوید برای جدیدترین محتوای سرپرستی شده

افزایش قابلیت اطمینان و کارایی تست در خطوط لوله CI/CD

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

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

در یک موقعیت ایده آل، شما باید اولویت را برای هر مورد آزمایشی تعیین کرده باشید و آخرین پایه کد را برای گذراندن حداقل درصدی از موارد فرض کنید.

اما به دلیل پوسته پوسته شدن کیس های تست، که همچنان با شکست مواجه می شوند، زیرا ممکن است کهنه شده باشند یا مورد استفاده تغییر کرده باشد، کیس تست شما با شکست مواجه شده و ادغام درخواست کشش تبدیل به یک کابوس می شود. به جای کاهش درصد موارد قبولی، ما باید به فکر اصلاح این موارد باشیم.

دلیل درک Flaky Test.

  1. نتایج تست غیر قابل پیش بینی: تست های پوسته پوسته با وجود اینکه کد تغییر نکرده است، گاهی اوقات با گذراندن و گاهی اوقات با شکست باعث غیرقابل پیش بینی شدن می شوند. این تصادفی بودن می تواند اعتماد به نتایج آزمون را دشوار کند.

  2. اشکال زدایی پیچیده: ردیابی علت اصلی آزمایش پوسته پوسته شدن می تواند چالش برانگیز باشد زیرا ممکن است مشکل به طور مداوم تکرار نشود و شناسایی و رفع آن دشوار باشد.

  3. زمان و منابع تلف شده: توسعه دهندگان می توانند زمان قابل توجهی را صرف اجرای مجدد تست ها، بررسی موارد مثبت کاذب و اشکال زدایی کنند که در واقع به عملکرد کد مربوط نمی شود.

  4. تأثیر بر یکپارچگی مداوم (CI): تست های پوسته پوسته می توانند خطوط لوله یکپارچه سازی مداوم را مختل کنند که منجر به خرابی های غیرضروری در ساخت و کاهش کارایی کلی فرآیندهای تست خودکار می شود.

  5. اعتماد به نفس یا بی اعتمادی کاذب: تست های پوسته پوسته می توانند اعتماد کاذب را در صورت قبولی پراکنده ایجاد کنند یا در صورت شکست غیرقابل پیش بینی باعث بی اعتمادی به مجموعه تست شوند و تکیه بر نتایج آزمایش را سخت تر کند.

راه هایی برای کاهش موارد تست Flaky

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

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

  3. جداسازی تست: اطمینان از اینکه هر آزمایش در انزوا کامل انجام می شود، بدون تکیه بر حالت های مشترک یا عوامل خارجی، می تواند به طور قابل توجهی احتمال پوسته پوسته شدن را کاهش دهد.

  4. سرویس و نگهداری های مرتب: بازنگری و بازنگری منظم مجموعه تست برای حذف یا رفع تست های پوسته پوسته به حفظ یکپارچگی و قابلیت اطمینان فرآیند تست در طول زمان کمک می کند.

استراتژی ها و ابزارهای مختلف برای کاهش موارد تست پوسته پوسته شدن

  1. جنکینز، CircleCI، تراویس CI: ابزارهای Continuous Integration/Continuous Deployment (CI/CD) مانند اینها را می توان برای اجرای مجدد تست هایی که شکست می خورند پیکربندی کرد و به شناسایی تست های پوسته پوسته کمک می کند. آنها اغلب دارای پلاگین یا پشتیبانی داخلی برای کنترل تست های پوسته پوسته هستند.

  2. داکر: شرکت ها از Docker برای ایجاد محیط های ایزوله برای اجرای آزمایش ها استفاده می کنند. این تضمین می‌کند که تست‌ها هر بار که اجرا می‌شوند یک محیط ثابت و تمیز دارند و پوسته پوسته شدن ناشی از تفاوت‌های محیطی را کاهش می‌دهد.

  3. ماشین های مجازی (VM): مانند Docker، VM ها را می توان برای اطمینان از اجرای آزمایش ها در یک محیط کنترل شده و ایزوله استفاده کرد و تداخل سایر فرآیندها یا وابستگی ها را به حداقل رساند.

  4. تجزیه و تحلیل آماری با استفاده از یادگیری ماشین: برخی از سیستم های پیشرفته از یادگیری ماشین برای تجزیه و تحلیل نتایج تست و شناسایی الگوهای نشان دهنده تست های پوسته پوسته استفاده می کنند. این می تواند به شناسایی فعال و رسیدگی به پوسته پوسته شدن کمک کند.

  5. سیاست های بررسی کد و قلاب های کنترل نسخه: اجرای سیاست های بررسی دقیق کد که شامل بررسی منابع بالقوه پوسته پوسته شدن است، می تواند از معرفی تست های پوسته پوسته جلوگیری کند.
    استفاده از قلاب‌های پیش‌فرض یا سایر مکانیسم‌های کنترل نسخه برای اجرای آزمایش‌ها به شیوه‌ای کنترل‌شده قبل از ادغام تغییرات، می‌تواند آزمایش‌های پوسته‌پوسته را زودتر تشخیص دهد.

استراتژی های برخی از سازمان های بزرگ

  1. گوگل:
  • تست های ناموفق را دوباره اجرا کنید: Google خط‌مشی دارد که در آن آزمایش‌هایی را مجدداً اجرا می‌کند که نمی‌تواند مشخص کند که آیا شکست سازگار است یا خیر. این به شناسایی تست های پوسته پوسته کمک می کند. آنها همچنین ابزارها و زیرساخت های داخلی برای مدیریت و کاهش پوسته پوسته شدن در مجموعه های آزمایشی گسترده خود دارند.

  • جداسازی تست: گوگل بر اهمیت جداسازی تست برای اطمینان از عدم تداخل تست ها با یکدیگر تاکید می کند، که در کاهش پوسته پوسته شدن بسیار مهم است.

  1. مایکروسافت:
  • تجزیه و تحلیل و گزارش گیری تست کنید: مایکروسافت از تجزیه و تحلیل دقیق تست و ابزارهای گزارش برای ردیابی تست های پوسته پوسته استفاده می کند. با تجزیه و تحلیل نتایج آزمایش در طول زمان، آنها می توانند الگوها را شناسایی کرده و تست های پوسته پوسته را مشخص کنند.

  • تست های قرنطینه پوسته پوسته شدن: مایکروسافت گاهی اوقات تست های پوسته پوسته را قرنطینه می کند و آنها را از مجموعه آزمایشی اصلی جدا می کند تا زمانی که ثابت شود تا از تأثیرگذاری بر نتایج کلی آزمایش جلوگیری کند.

3. فیس بوک:

  • سم زدایی: فیس بوک یک کتابخانه منبع باز به نام Detox برای آزمایش برنامه های تلفن همراه خود توسعه داد. Detox تضمین می کند که تست ها در یک حالت و محیط ثابت اجرا می شوند و پوسته پوسته شدن ناشی از عملیات ناهمزمان و سایر مشکلات زمان بندی را کاهش می دهد.

  • تست مداوم: فیس بوک با استفاده از ابزارهایی برای اجرای مجدد خودکار تست ها و شناسایی رفتار پوسته پوسته در اوایل چرخه توسعه، آزمایش مداوم را در فرآیند توسعه خود ادغام می کند.

4. نتفلیکس:

  • مهندسی آشوب: نتفلیکس از شیوه های مهندسی آشوب برای آزمایش انعطاف پذیری سیستم های خود استفاده می کند. با معرفی عمدی خرابی ها و اختلالات، آنها می توانند تست های پوسته پوسته را شناسایی کرده و استحکام تست ها و سیستم های خود را بهبود بخشند.

  • تلاش مجدد خودکار: نتفلیکس از مکانیسم‌های تکرار خودکار در خطوط لوله CI/CD خود برای اجرای مجدد تست‌هایی که به طور متناوب با شکست مواجه می‌شوند، استفاده می‌کند و به شناسایی و مدیریت تست‌های پوسته‌دار کمک می‌کند.

5. لینکدین:

  • ابزارهای مدیریت تست Flakyلینکدین ابزارهایی را به طور خاص برای مدیریت تست های پوسته پوسته توسعه داده است. این ابزارها به ردیابی تست‌های پوسته پوسته کمک می‌کنند، رخداد آن‌ها را مشاهده می‌کنند و وضوح آنها را اولویت‌بندی می‌کنند.

  • استانداردسازی محیط تستلینکدین بر استانداردسازی محیط‌های آزمایشی تمرکز می‌کند تا تنوع را کاهش دهد و اطمینان حاصل کند که آزمایش‌ها در شرایط ثابت اجرا می‌شوند، که به کاهش پوسته پوسته شدن کمک می‌کند.

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

Apoorv Tomar یک توسعه دهنده نرم افزار و وبلاگ در **Mindroast است. می توانید در شبکه های اجتماعی وصل شوید. در **خبرنامه مشترک شوید برای جدیدترین محتوای سرپرستی شده

نوشته های مشابه

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

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

دکمه بازگشت به بالا