Cypress یک ابزار تست جلویی نسل بعدی بسیار محبوب است که برای وب مدرن ساخته شده است. می توان از آن برای تست های واحد، ادغام و حتی انتها به انتها، با ویژگی های بهره وری مانند انتظار خودکار، سفر در زمان، بارگذاری مجدد زمان واقعی و ابزارهای اشکال زدایی استفاده کرد.
در این آموزش، نحوه ادغام نتایج آزمون تولید شده توسط آزمایش خودکار Cypress را در TestRail با استفاده از TestRail CLI. این به شما این امکان را می دهد که نتایج تست خودکار خود را متمرکز کنید و از تمام قابلیت های تحلیلی و گزارش دهی TestRail استفاده کنید.
نمای کلی #
در طول این آموزش، ما از یک پروژه نمونه استفاده خواهیم کرد تا شما را در فرآیند راه اندازی یک پروژه تست های خودکار Cypress که با TestRail CLI سازگار است و بارگذاری نتایج تست تولید شده را راهنمایی کند.
پس از مطالعه این آموزش، شما قادر خواهید بود:
- تست های یک پروژه ساده سرو را اجرا کنید
- TestRail CLI را نصب کنید
- نمونه TestRail خود را پیکربندی کنید
- CLI را اجرا کنید
- تستکیسها و نتایج تست خود را در TestRail مشاهده کنید
پیش نیازها #
برای اینکه بتوانید یک پروژه تست Cypress را اجرا کنید، می توانید آن را از طریق npm یا به صورت مستقل نصب کنید. مستندات نصب سرو، اما برای هدف این مقاله از طریق npm نصب می کنیم. همچنین مزایای خود را دارد از جمله این که Cypress مانند هر وابستگی دیگری نسخه می شود و همچنین اجرای Cypress را در یکپارچگی مداوم ساده می کند. به عنوان یک پیش نیاز برای نصب Cypress با استفاده از npm تنها کاری که باید انجام دهید نصب Node.js است.
همچنین برای نصب و اجرای TestRail CLI که برای وارد کردن نتایج تست به TestRail استفاده می شود، به پایتون نیاز دارید.
| پیش نیاز | توضیحات |
|---|---|
| Node.js | نسخه را برای سیستم عامل خود دانلود کنید و دستورالعمل های جادوگر نصب را دنبال کنید. برای اطمینان از موفقیت آمیز بودن نصب، دستورات را اجرا کنید node --version و npm --version از خط فرمان شما و آنها باید نسخه نصب شده را خروجی بگیرند. |
| پایتون ۳.۱۰.۴ | نسخه را برای سیستم عامل خود دانلود کنید و دستورالعمل های جادوگر نصب را دنبال کنید.
برای اطمینان از موفقیت آمیز بودن نصب، دستورات را اجرا کنید |
نصب نمونه پروژه #
بیایید با واکشی کد پروژه نمونه و نصب وابستگی های مورد نیاز شروع کنیم.
- کلون یا دانلود کنید نمونه پروژه
- خط فرمان خود را در پوشه ریشه پروژه باز کنید و دستور زیر را اجرا کنید
$ npm install
را packages.json فایل شامل کتابخانه هایی است که می خواهیم برای این پروژه نصب کنیم. در این مورد تنها وابستگی خود Cypress است که طبیعتاً به کتابخانه های دیگر بستگی دارد.
| مورد نیاز | توضیحات |
|---|---|
| سرو | چارچوب اتوماسیون را با قابلیت های اتوماسیون وب تست کنید |
بررسی پروژه نمونه #
از IDE مورد علاقه خود برای باز کردن پروژه نمونه استفاده کنید و شروع به حفاری در فایل های آزمایشی کنید. ما کد تست های خودکار را ساده نگه داشته ایم تا تمرکز این آموزش بر نحوه وارد کردن نتایج اجرا باقی بماند. این تست ها شامل تعاملات ساده با یک برنامه وب لیست TO DO است که توسط خود تیم cypress میزبانی می شود.
// To learn more about how Cypress works and
// what makes it such an awesome testing tool,
// please read the getting started guide:
// https://on.cypress.io/introduction-to-cypress
describe('[smoke] example to-do app', () => {
beforeEach(() => {
cy.visit('https://example.cypress.io/todo')
})
it('displays two todo items by default', () => {
cy.get('.todo-list li').should('have.length', 2)
cy.get('.todo-list li').first().should('have.text', 'Pay electric bill')
cy.get('.todo-list li').last().should('have.text', 'Walk the dog')
})
})
اجرای نمونه پروژه #
در همان خط فرمان، دستور زیر را برای اجرای تست های Cypress در پروژه اجرا کنید و نتایج را با فرمت JUnit XML ذخیره کنید.
$ npx cypress run --reporter junit --reporter-options "mochaFile=reports/TEST-[hash].xml"
اگر اجرای سرو با موفقیت انجام شد، باید بتوانید نتایج تست خود را در پوشه گزارش ها مشاهده کنید. باید حاوی چندین فایل XML باشد که گزارش سبک JUnit برای هر مجموعه آزمایشی است. توجه داشته باشید که فایل های گزارش همه با شروع می شوند TEST-، که طبق دستوری است که ما اجرا کردیم تا بعداً بتوانیم همه گزارش ها را در یک ادغام کنیم. این یک فایل توسط TestRail CLI تجزیه می شود تا اجرای تست ایجاد شود و در مرحله بعد نتایج تست شما در TestRail بارگذاری شود. در زیر نمونه ای از گزارش جزئی را مشاهده می کنید.
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="Mocha Tests" time="1.4800" tests="5" failures="1">
<testsuite name="Root Suite" timestamp="2022-06-22T13:40:26" tests="0" file="cypress/integration/1-getting-started/todo_interactions.spec.js" time="0.0000" failures="0">
</testsuite>
<testsuite name="[interactions] example to-do app" timestamp="2022-06-22T13:40:26" tests="2" time="0.8810" failures="0">
<testcase name="[interactions] example to-do app can add new todo items" time="0.6530" classname="can add new todo items">
</testcase>
<testcase name="[interactions] example to-do app can check off an item as completed" time="0.2280" classname="can check off an item as completed">
</testcase>
</testsuite>
<testsuite name="with a checked task" timestamp="2022-06-22T13:40:28" tests="3" time="0.5990" failures="1">
<testcase name="[interactions] example to-do app with a checked task can filter for uncompleted tasks" time="0.3060" classname="can filter for uncompleted tasks">
</testcase>
<testcase name="[interactions] example to-do app with a checked task can filter for completed tasks" time="0.2930" classname="can filter for completed tasks">
</testcase>
<testcase name="[interactions] example to-do app with a checked task can delete all completed tasks" time="0.0000" classname="can delete all completed tasks">
<failure message="Timed out retrying after 4000ms: Not enough elements found. Found '1', expected '2'." type="AssertionError">
<![CDATA[AssertionError: Timed out retrying after 4000ms: Not enough elements found. Found '1', expected '2'.
at Context.eval (https://example.cypress.io/__cypress/tests?p=cypress\integration\1-getting-started\todo_interactions.spec.js:186:31)]]>
</failure>
</testcase>
</testsuite>
</testsuites>
#
فایلهای آزمایشی را با بلوکهای توصیفی با همین نام ایجاد نکنید، زیرا باعث برخورد نامها میشود و ممکن است واردات آنطور که انتظار میرود کار نکند. توجه داشته باشید که ما یک پیشوند اضافه کردیم (به عنوان مثال: [interactions]) به بلوک های توصیفی در پروژه ما می پردازیم تا این اتفاق نیفتد.
در حال وارد کردن نتایج به TestRail #
پس از انجام تستها و تولید فایلهای گزارش JUnit، میتوانید به راحتی نتایج تست (و تستکیسها!) خود را به TestRail وارد کنید. این امر باعث می شود تا اجرای تست خودکار شما قابل مشاهده باشد و به شما امکان می دهد تا به تصویر بزرگی از نحوه آزمایش برنامه خود در TestRail نگاه کنید.
نصب TestRail CLI #
با توجه به اینکه قبلا پایتون را روی دستگاه خود نصب کرده اید، نصب TestRail CLI به سادگی اجرای دستور زیر در خط فرمان شما است.
$ pip install trcli
پیکربندی TestRail #
در مرحله دوم، شما باید نمونه TestRail خود را طبق دستورالعمل های زیر پیکربندی کنید.
- را فعال کنید TestRail API با رفتن به مدیر > تنظیمات سایت، روی API برگه، و چک کردن فعال کردن API گزینه
- ایجاد یک فیلد سفارشی به منظور نگاشت کد تستکیسها خودکار خود به موارد واقعی TestRail. شما می توانید این کار را با رفتن به مدیر > سفارشی سازی ها و کلیک کردن فیلد را اضافه کنید. بعد از اینکه به صفحه ایجاد فیلد رسیدید، دو شرط برای این فیلد سفارشی وجود دارد:
- را نام سیستم باید باشد automation_id
- را تایپ کنید باید باشد متن
ارسال نتایج به TestRail #
پس از اتمام نصب TestRail CLI و پیکربندی نمونه TestRail شما به پایان رسید، تنها یک مرحله اضافی قبل از آپلود نتایج شما وجود دارد. با TestRail CLI نسخه ۱.۶.۰، مسیر گزارش اکنون از حروف عام پشتیبانی می کند و به شما امکان می دهد چندین گزارش را به صورت یکپارچه ادغام کنید. این ویژگی به شما امکان می دهد تا نتایج از منابع مختلف را در یک ارسال اجرا شده ادغام کنید
شما می توانید نتایج تست خود را به سادگی با استفاده از یک خط مانند زیر بارگذاری کنید.
$ trcli -y \
> -h https://INSERT-INSTANCE-NAME.testrail.io \
> --project "My Project" \
> --username INSERT-EMAIL \
> --password INSERT-PASSWORD \
> parse_junit \
> --title "Cypress Automated Test Run" \
> -f "./reports/junit*.xml"
توجه داشته باشید که نام فایل پس از -ف در صورتی که مکان پیش فرض آن را تغییر دهید، گزینه باید با مسیر فایل گزارش شما مطابقت داشته باشد. همه گزینه های دیگر باید مطابق با نمونه و پروژه TestRail شما باشد. می توانید با علامت زدن گزینه های دیگر خط فرمان را بررسی کنید TestRail CLI README.md از طریق دستورات زیر، در مخزن پروژه، مقاله مستندات TRCLI، یا کمک CLI تعبیه شده فایل کنید.
$ trcli --help
$ trcli parse_junit --help
تجسم نتایج در TestRail #
حالا، اگر شما به تستکیسها در صفحه پروژه TestRail خود، متوجه خواهید شد که TestRail CLI به طور خودکار تستکیسها را که در گزارش نتایج تست شما وجود داشت ایجاد می کند. توجه داشته باشید که با ترکیب کردن یک شناسه اتوماسیون منحصر به فرد اضافه شده است classname و name ویژگی های هر آزمون در گزارش JUnit. این شناسه اتوماسیون برای نگاشت آزمایشهای روی پایه کد اتوماسیون شما به تستکیسها در TestRail استفاده میشود. این بدان معناست که هر بار که TestRail CLI را اجرا میکنید، ابتدا سعی میکند یک تستکیس موجود در TestRail را مطابقت دهد و فقط در صورتی که تستکیس با آن شناسه اتوماسیون وجود نداشته باشد، مورد جدیدی ایجاد میکند.
#
اگر نام آزمایشهای خود، نام فایل یا مکان آن را تغییر دهید، شناسه اتوماسیون آن تستها تغییر میکند و آنها به تستکیسها موجود در TestRail نگاشت نمیشوند.

در اجراهای آزمایشی & نتایج صفحه، ما می توانیم ببینیم که یک آزمایش با نام اجرا می شود اجرای تست خودکار Cypress ایجاد شد. با باز کردن آن، میتوانیم جزئیات هر یک از نتایج تست خودکار را بیشتر بررسی کنیم و تجزیه و تحلیل سطح بالایی از علت شکست هر آزمایش انجام دهیم، زیرا پیام خطای ارائه شده توسط چارچوب اتوماسیون تست نیز در نتیجه آزمون ثبت شده است، همانطور که در تصویر زیر مشاهده میکنید.

بعدش چی؟ #
اکنون که نتایج تست خود را روی TestRail متمرکز کردهاید، نه تنها میتوانید نتایج تستهای خودکار خود را به همراه پیامهای خطای آزمایشهای ناموفق بررسی کنید، بلکه میتوانید تلاشهای آزمایشی دستی و خودکار خود را در گزارشهایی که پوشش کامل آزمون پیرامون برنامهتان را به شما نشان میدهند و حتی پیشرفت اتوماسیون آزمایش را ردیابی کنید، تجمیع کنید. همچنین میتوانید یک اشکال را مستقیماً از نتیجه آزمایش خودکار به یک ردیاب مشکل ترجیحی خود گزارش دهید، همانطور که برای نتایج تست دستی خود انجام میدهید!
می توانید به آن نگاه کنید گزارشهای TestRail و ویدئو معیارهای تست برای آشنایی با نحوه استفاده از قابلیت های گزارش دهی TestRail.

