GitHub Actions خودکارسازی تمام گردشهای کاری توسعه نرمافزار را آسان میکند. این به شما امکان می دهد کد خود را مستقیماً از GitHub بسازید، آزمایش کنید و مستقر کنید. گردش کار را می توان با رویدادهای GitHub مانند فشار، ایجاد مشکل، نسخه جدید یا حتی ارسال گردش کار دستی آغاز کرد.
یک مورد رایج برای GitHub Actions این است که هر زمان که تغییرات کد ارسال شود، برنامه شما به طور خودکار ساخته و آزمایش می شود. برای بهبود دید در تستهای خودکار خود و مدیریت آسانتر همه تستکیسها و نتایج تستات – اعم از دستی و خودکار -، میتوانید نتایج تست خودکار خود را مستقیماً از GitHub به TestRail ارسال کنید. در این مقاله به بررسی نحوه استفاده از مزایای آن می پردازیم اقدامات GitHub و TestRail CLI تا این وظیفه را به راحتی انجام دهد.
نتایج تست به TestRail این XML به سبک JUnit را از فریمورک هایی مانند پشتیبانی می کند
یونیت،
TestNG، Pytest، و Cypress – تا زمانی که از استاندارد JUnit XML پیروی کنند
ساختار
همچنین از تجزیه پیشرفته برای فرمت هایی مانند Robot Framework و the
OpenAPI
مشخصات.
در این مثال، ما از آن استفاده خواهیم کرد اقدامات GitHub همراه با سرو.
اگر میخواهید نمونههای بیشتری ببینید، لطفاً نگاهی به Automation Frameworks Integration بیندازید run-all.yml فایل گردش کار و مربوطه اجرای گردش کار.
استفاده از TestRail CLI در فایل های گردش کار GitHub #
فرآیندهای خودکار را می توان با استفاده از فایل های پیکربندی گردش کار در GitHub پیکربندی کرد. اینها فایلهای YAML هستند که به شما امکان میدهند فرآیندهای خود را به صورت ساختاریافته مشخص کنید و از اکشنهای GitHub برای هر مرحله از راه استفاده کنید تا پیکربندی محیط اجرای خود را آسانتر کنید و همچنین هر اقدامی را که نیاز دارید اجرا کنید.
ساده ترین راه برای ادغام TestRail با GitHub Actions این است که فایل های گردش کار خود را برای استفاده از TestRail CLI برای ارسال خودکار نتایج تست به TestRail پیکربندی کنید. در زیر نمونه ای از نحوه فایل گردش کار با استفاده از TestRail CLI برای ارسال نتایج تست به TestRail به نظر می رسد.
name: send-results-to-testrail
on: [workflow_dispatch]
jobs:
send-test-results-to-testrail:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Execute automated tests
uses: ...
- name: Python setup
if: always()
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: TestRail CLI upload results
if: always()
run: |
pip install trcli
trcli -y \
-h https://TESTRAIL_INSTANCE.testrail.io/ \
--project "PROJECT NAME" \
-u USER_EMAIL \
-p PASSWORD \
parse_junit \
--title "Automated Tests from GitHub workflow" \
--run-description ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \
-f "junit-report.xml"
با تفکیک فایل، می توانیم چند جزئیات جالب را ببینیم:
- رویداد ماشه
on: [workflow_dispatch]یعنی این گردش کار تنها در صورتی اجرا می شود که به صورت دستی اجرا شود. رویدادهای دیگری نیز وجود دارند که میتوانند گردش کار را راهاندازی کنند، مانند فشار دادن کد، ایجاد یک درخواست کشش و غیره. - روشن
jobsما یک مورد به نام داریمexecute-tests، یعنی ما فقط یک کار در این گردش کار داریم. - را
execute-testsjob عامل خود را باruns-on: ubuntu-latestو شامل مراحل زیر می باشدsteps، که در بخش های بعدی به تفصیل آن را خواهیم گفت.CheckoutExecute automated testsPython setupTestRail CLI upload results
میتوانید در مورد ویژگیهای گردش کار در رسمی بیشتر بیاموزید مستندات گردش کار GitHub.
مرحله ۱: تسویه حساب #
را Checkout مرحله با استفاده از actions/checkout@v3 GitHub Action که پرداخت کد را روی عامل مخزن شما اجرا می کند.
- name: Checkout
uses: actions/checkout@v3
مرحله ۲: تست های خودکار را اجرا کنید #
را Execute automated tests step یک مکان نگهدار است. این نقطه زمانی است که تستهای خودکاری که در پایگاه کد خود دارید اجرا میشوند و گزارش JUnit مورد نیاز برای ارسال نتایج به TestRail را ایجاد میکنند. این را می توان با استفاده از یک اکشن GitHub یا با قرار دادن اسکریپت اجرای سفارشی خود انجام داد.
name: Execute Automated tests
uses: ...
مرحله ۳: پایتون را روی عامل نصب کنید #
را Python setup استفاده می کند actions/setup-python@v3 GitHub Action برای پیکربندی پایتون روی عامل. از آنجایی که TestRail CLI ابزاری است که در پایتون توسعه یافته است، قبل از اینکه بتوانید آن را نصب و اجرا کنید، لازم است که روی محیط نصب شود.
همچنین به if: always() شرط، که این مرحله را مجبور به اجرا میکند، مهم نیست که آیا اجرای تست خودکار موفقیتآمیز بوده است یا خیر، زیرا، بهطور پیشفرض، اکثر چارچوبهای اتوماسیون آزمایشی در صورت شکست هر یک از آزمایشها با یک کد خطا خارج میشوند.
- name: Python setup
if: always()
uses: actions/setup-python@v3
with:
python-version: '3.x'
مرحله ۴: TestRail CLI را نصب کنید و نتایج تست را آپلود کنید #
را TestRail CLI upload results step یک اسکریپت پوسته سفارشی را برای نصب و فراخوانی TestRail CLI اجرا می کند تا گزارش JUnit تولید شده توسط چارچوب اتوماسیون تست شما را تجزیه کند و نتایج را به TestRail ارسال کند.
TestRail CLI یک بسته پایتون است که در فهرست بسته Python میزبانی می شود (PyPI) بنابراین، برای نصب آن، به سادگی دستور را اجرا می کنیم pip install trcli.
پس از نصب TestRail CLI، چند آرگومان اجباری مانند آدرس نمونه TestRail و اعتبار، پروژه ای که می خواهید به آن گزارش دهید، عنوان اجرای تست و مسیر گزارش JUnit وجود دارد. آرگومان شرح اجرا اجباری نیست، اما توصیه میکنیم از آن برای افزودن پیوندی از TestRail به اجرای گردش کار GitHub خود استفاده کنید. این پیوند را می توان با نوشتن URL با استفاده از متغیرهای جاسازی شده GitHub، مانند قطعه زیر، به دست آورد.
برای اطلاعات بیشتر در مورد استدلال، لطفاً TestRail CLI مستندات
- name: TestRail CLI upload results
if: always()
run: |
pip install trcli
trcli -y \
-h https://TESTRAIL_INSTANCE.testrail.io/ \
--project "PROJECT NAME" \
-u USER_EMAIL \
-p PASSWORD \
parse_junit \
--title "Automated Tests from GitHub workflow" \
--run-description ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \
-f "junit-report.xml"
نمونه کار با استفاده از Cypress #
در زیر نمونهای از فایل گردش کار GitHub است که به زبان ساده، تستهای Cypress را اجرا میکند و نتایج تست را مستقیماً به TestRail ارسال میکند.
name: cypress-tests
on: [workflow_dispatch]
jobs:
execute-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cypress run
id: cypress
uses: cypress-io/github-action@v4
with:
command: npx cypress run --reporter junit --reporter-options mochaFile=reports/TEST-[hash].xml
- name: Python setup
if: always()
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: TestRail CLI upload results
if: always()
run: |
pip install trcli
trcli -y \
-h https://TESTRAIL_INSTANCE.testrail.io/ \
--project "PROJECT NAME" \
-u USER_EMAIL \
-p PASSWORD \
parse_junit \
--title "Automated Tests from GitHub workflow" \
--run-description ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \
-f "reports/junit*.xml"
در تفکیک فایل، بین جریان کاری GitHub عمومی که قبلاً از آن عبور کرده بودیم، تنها دو مورد متفاوت وجود دارد:
- مرحله دوم با a جایگزین شد
Cypress runکه ازcypress-io/github-actions@v4GitHub Action که وابستگی های پروژه Cypress را نصب می کند و دستورات را روی آن اجرا می کندwithپارامتر، اجرای تست خودکار را راه اندازی می کند. - در
TestRail CLI upload results، با TestRail CLI نسخه ۱.۶.۰، مسیر گزارش اکنون از حروف عام پشتیبانی می کند و به شما امکان می دهد چندین گزارش را به طور یکپارچه ادغام کنید. این ویژگی به شما امکان می دهد تا نتایج از منابع مختلف را در یک ارسال اجرا شده ادغام کنید. شما می توانید در مورد این در مستندات در مورد بیشتر بیاموزید ادغام با Cypress.
ایجاد مخزن خود #
ما میخواهیم گردش کار GitHub را با استفاده از خود راهاندازی کنیم نمونه پروژه سرو، که می توانید با بررسی مستندات ما در مورد آن بیشتر بدانید ادغام با Cypress.
به سادگی با دنبال کردن مراحل زیر، گردش کار GitHub خود را با اجرای آزمایش و گزارش نتایج به TestRail در کمترین زمان خواهید داشت.
- یک مخزن جدید در GitHub ایجاد کنید
- دانلود فایل ها در نمونه پروژه سرو
- فایل را اضافه کنید cypress-tests.yml زیر مسیر github/گردشهای کاری و مطالب را از مثال بالا کپی کنید
- جایگزین کنید TESTRAIL_INSTANCE، نام پروژه، USER_EMAIL و رمز عبور در محتوای فایل با استفاده از مشخصات خود (توصیه می کنیم رمز عبور را مستقیماً جایگزین نکنید و استفاده کنید اسرار GitHub در عوض)
- پروژه را در مخزن GitHub خود آپلود کنید
اجرای گردش کار #
- برو به اقدامات صفحه موجود در مخزن خود و شما باید بتوانید گردش کار خود را در لیست مشاهده کنید
- از آنجایی که این یک گردش کار ارسال دستی است، برای اجرای آن ابتدا روی نام گردش کار در سمت چپ کلیک کنید و سپس روی گردش کار را اجرا کنید دکمه
- سپس می توانید وارد جزئیات گردش کار خود شوید تا ببینید چه مشکلی پیش آمده است. لاگ های اجرا بر اساس مراحل تقسیم می شوند. در تصویر زیر می بینیم که اجرای Cypress شکست خورد
- با حفاری در سرو دویدن گزارشها، میتوانیم ببینیم که اجرا به خوبی پیش رفت، اما یک آزمایش ناموفق بود. اگرچه آزمایش ناموفق بود، راه اندازی پایتون و نتایج بارگذاری TestRail CLI مراحل هنوز اجرا می شد زیرا ما از آن استفاده کردیم
if: always()شرط در مرحله تست ما برای اطمینان از ارسال نتایج به TestRail حتی زمانی که تست ها شکست می خورند
- به نمونه TestRail خود بروید و نتایج Test Run خود را مشاهده کنید. توجه داشته باشید که پیوندی به گردش کار GitHub خود دارید تا بتوانید به راحتی نتایج تست خود را بیشتر اشکال زدایی کنید!
بعدش چی؟ #
اکنون که نتایج تست خود را روی TestRail متمرکز کردهاید، نه تنها میتوانید نتایج تستهای خودکار خود را به همراه پیامهای خطای آزمایشهای ناموفق بررسی کنید، بلکه میتوانید تلاشهای آزمایشی دستی و خودکار خود را در گزارشهایی که پوشش کامل آزمون پیرامون برنامهتان را به شما نشان میدهند و حتی پیشرفت اتوماسیون آزمایش را ردیابی کنید، تجمیع کنید. همچنین میتوانید یک اشکال را مستقیماً از نتیجه آزمایش خودکار به یک ردیاب مشکل ترجیحی خود گزارش دهید، همانطور که برای نتایج تست دستی خود انجام میدهید!
می توانید به آن نگاه کنید گزارشهای TestRail و ویدئو معیارهای تست برای آشنایی با نحوه استفاده از قابلیت های گزارش دهی TestRail.

