برنامهی Apache JMeter™ یک ابزار متنباز و ۱۰۰٪ مبتنی بر Java است که برای load testing رفتارهای functional و اندازهگیری performance طراحی شده است. JMeter در ابتدا برای تست web applicationها ساخته شد، اما بعدا گسترش پیدا کرد و حالا از انواع مختلف testing پشتیبانی میکند.
میتوان از آن برای ارزیابی performance منابع static و dynamic، از جمله web applicationها، استفاده کرد. JMeter بار سنگین را روی یک server (یا گروهی از serverها)، network یا object شبیهسازی میکند تا میزان پایداری آن سنجیده شود و performance کلی در شرایط load مختلف تحلیل شود.
در این آموزش، بررسی میکنیم چطور نتایج تست JMeter را با استفاده از TestRail CLI در TestRail یکپارچه کنیم. این integration به شما کمک میکند نتایج تستهای خودکار را در یک محل متمرکز کنید و از قابلیتهای تحلیل و گزارشگیری TestRail استفاده کنید.
نمای کلی #
در این آموزش از یک sample project استفاده میکنیم تا مراحل راهاندازی یک project تست performance در JMeter را نشان دهیم؛ این project با TestRail CLI یکپارچه میشود و نتایج test تولیدشده را upload میکند.
در پایان این آموزش، میتوانید:
- برای sample project در JMeter، تستهای performance بسازید
- TestRail CLI را نصب کنید
- TestRail instance خود را پیکربندی کنید
- از CLI برای اجرای تستهای performance و upload نتایج در TestRail استفاده کنید
- test caseها و نتایج خود را در TestRail ببینید
پیشنیازها #
برای ساخت و اجرای sample project، باید Apache JMeter، JUnit Reporter Plugin و Python را نصب کنید (Python برای نصب و اجرای TestRail CLI لازم است). از این ابزارها برای تولید و وارد کردن نتایج test در TestRail استفاده میشود.
| پیشنیاز | توضیح |
|---|---|
| Apache JMeter™ | نسخه مناسب سیستمعامل خود را دانلود کنید و دستورالعملهای نصب را دنبال کنید. |
| Python 3.X | آخرین نسخه Python ۳.X را برای سیستمعامل خود دانلود کنید و مراحل install wizard را دنبال کنید.
برای بررسی نصب، دستور |
| JMeter Plugins Manager |
برای دسترسی به pluginهای دیگر JMeter که ممکن است مفید باشند، Plugins Manager را دانلود کنید. همچنین میتوانید فقط JUnit Report Plugin را نصب کنید |
ساخت sample project #
بعد از نصب JMeter، وقت آن است که یک sample project بسازید.
توجه: اگر ترجیح میدهید از یک project از پیش پیکربندیشده استفاده کنید، میتوانید sample project را از repository نمونه TestRail Automation Frameworkclone کنید.
یا اگر میخواهید همهچیز را از ابتدا بسازید، این مراحل را دنبال کنید:
- وقتی JMeter GUI را باز میکنید، محیطی شبیه تصویر زیر میبینید. در این بخش میتوانید نام project را تغییر دهید.

- روی project راستکلیک کنید و Add → Thread Group را انتخاب کنید. Thread Group نقطه شروع هر test plan است. همه controllerها و samplerها باید زیر یک Thread Group قرار بگیرند.
- Thread Group را پیکربندی کنید: JMeter چند عنصر قابل تنظیم در Thread Group دارد. عناصر قابل تنظیم:
-
Number of Threads: هر thread کل test plan را مستقل از threadهای دیگر اجرا میکند -
Ramp-up period: مشخص میکند JMeter چه مدت زمانی برای رسیدن به تعداد کامل threadها صرف کند. مثال: اگر ۱۰ thread داشته باشید و Ramp-up period را روی ۱۰۰ ثانیه بگذارید، JMeter در طول این مدت threadها را بهتدریج شروع میکند. -
Loop Count: بهطور پیشفرض، Thread Group طوری تنظیم شده که فقط یک بار عناصر داخل خود را اجرا کند. در صورت نیاز میتوانید این مقدار را تغییر دهید.
-
- سپس روی Thread Group راستکلیک کنید تا action را پیکربندی کنید؛ این action یک HTTP Request است.
-
Server Name or IP: برای این project نمونه، کافی است آدرس server مقصد را در HTTP Request وارد کنید. در صورت نیاز میتوانید نام فایل را تغییر دهید. مثال: نام server انتخابشده عبارت است از www.google.com (نیازی به وارد کردنhttp://نیست)
-
- سپس دوباره روی Thread Group راستکلیک کنید تا listener را پیکربندی کنید؛ این listener از نوع JUnit Reporter است.
-
Filename: مشخص کنید فایل گزارش performance test کجا ذخیره شود. TRCLI از این فایل برای upload نتایج اجرا به TestRail استفاده میکند. -
Key Performance Indicators (KPIs): برای test case نمونه، دو metric برای ارزیابی نتایج پیکربندی میکنیم؛ این metricها بهعنوان Test Case در نظر گرفته میشوند. وقتی TRCLI فایل JUnit Report را میخواند، نام Test Caseها را از ترکیب فیلدهای Metric، Comparator و Threshold میسازد. مقداری که در فیلد Name در JMeter وارد میکنید فقط یک مرجع است تا metric در حال تست را راحتتر تشخیص دهید. هر KPI در TestRail بهصورت یک Test Case نمایش داده میشود.
Name Metric Comparator Threshold هدف تست میانگین کمتر از 1000ms MEAN 1000 میانگین زمان پاسخ باید کمتر از ۱۰۰۰ میلیثانیه باشد خطاهای sample بیشتر از ۱٪ نباشد ERRORS <=.01 نرخ خطا در test اجراشده باید کمتر از ۰.۰۱٪ باشد
-
اجرای project نمونه #
اجرا با JMeter GUI: #
برای اجرای دستی performance test، کافی است روی دکمه سبز Play کلیک کنید. بعد از شروع تست، دکمه Start خاکستری و غیرفعال میشود. میتوانید روند اجرا را از گوشه بالا سمت راست دنبال کنید.
برای اینکه بدانید اجرا چه زمانی تمام شده، منتظر بمانید دکمه Start دوباره سبز شود. در این مرحله، گزارش اجرا برای بررسی در دسترس است.
اگر پیکربندی metricهای مثال را دنبال کرده باشید، گزارش شما شبیه تصویر زیر خواهد بود. گزارش در پوشهای ذخیره میشود که هنگام تنظیم listener از نوع JUnit Reporter مشخص کردهاید.
<?xml version="1.0" encoding="UTF-8"?>
<testsuite errors="0"
failures="0"
name="JUnit Reporter_ TRintegration"
skipped="0"
tests="2">
<testcase classname="Average less than 100ms" name="MEAN(.*) < 1000"/>
<testcase classname="Not more than 1% sample error" name="ERRORS(.*) <= .01"/>
</testsuite>
اجرای JMeter از طریق command line #
./jmeter.bat --nongui --testfile "C:\path\to\your\trcli\config\file\jmeter_perf_test.jmx"
وارد کردن نتایج به TestRail #
نصب TestRail CLI #
اگر Python از قبل روی سیستم شما نصب است، برای نصب TestRail CLI کافی است دستور زیر را در command line اجرا کنید.
$ pip install trcli
پیکربندی TestRail #
در گام دوم، باید TestRail instance خود را طبق دستورهای زیر پیکربندی کنید.
- برای فعال کردن TestRail API ، از مسیر Admin > Site Settings بروید، روی تب API کلیک کنید و گزینه Enable API را فعال کنید.
- یک Custom Field ایجاد کنید تا کد test caseهای خودکار را با test caseهای واقعی در TestRail مرتبط کنید. برای این کار به مسیر Admin > Customizations بروید و روی Add Field کلیک کنید. بعد از ورود به صفحه ساخت field، این Custom Field باید دو ویژگی زیر را داشته باشد:
- مقدار System Name باید automation_id باشد.
- مقدار Type باید Text باشد.
ارسال نتایج به TestRail #
بعد از نصب TestRail CLI و تکمیل پیکربندی TestRail instance، قبل از آپلود نتایج فقط دو مرحله دیگر باقی میماند.
ابتدا باید فایل پیکربندی TRCLI خود را بسازید (.yml فرمت فایل)؛ ساختار آن باید شبیه نمونه زیر باشد
host: https://<TESTRAIL_HOST>.testrail.io
project: Performance_Integration
username: user@testrail.com
password: password
title: JMeter Performance Test Run
-
host: آدرس TestRail instance -
project: محلی که test run شما در آن ذخیره میشود -
username and password: credentials شما برای TestRail instance مشخصشده در بالا -
title: نام test run شما؛ نتایج در این run ذخیره میشود
TRCLI را با یک shell script اجرا کنید. TestRail CLI را میتوانید بهراحتی از طریق یک shell script اجرا کنید. نمونه زیر برای Windows و با استفاده از Git Bash طراحی شده است (آن را بهصورت یک .sh):
clear
bold=$(tput bold)
TRCLI_CONFIG_PATH="C:\path\to\your\trcli\config\file\trcli-config.yml"
TRCLI_TEST_FILE="C:\path\to\your\trcli\config\file\jmeter_perf_test.jmx"
JMETER_RESULTS="C:\path\to\your\file\sample_results.xml"
echo "($bold)-------------------------------------"
echo "($bold)--- JMeter TestRail Sample Project --"
echo "($bold)-------------------------------------"
echo "($bold)... verify if TRCLI is installed:"
echo
trcli
echo
echo "($bold)... execute JMeter Load Test:"
echo
./jmeter.bat --nongui --testfile "$TRCLI_TEST_FILE"
echo
echo "($bold)... executing TestRail TRCLI to upload results in a new Test Run:"
echo
trcli -y --config "$TRCLI_CONFIG_PATH" parse_junit --file "$JMETER_RESULTS" --title "JMeter Demo"
echo
echo "($bold)... execution completed. New Test Run created."
مطمئن شوید نام فایلی که بعد از گزینه -f میآید، با مسیر درست فایل گزارش شما مطابقت داشته باشد؛ بهخصوص اگر محل پیشفرض آن را تغییر دادهاید. در این مثال، مسیر فایل در یک متغیر ذخیره شده است، اما میتوانید آن را مستقیم هم وارد کنید. همه گزینههای دیگر را هم مطابق TestRail instance و project خود تنظیم کنید.
برای آشنایی با گزینههای بیشتر command-line، به TestRail CLI README.md که در repository پروژه موجود است، مقاله مستندات TRCLI، یا راهنمای داخلی CLI مراجعه کنید. برای دیدن راهنما، دستورهای زیر را اجرا کنید:
$ trcli --help
$ trcli parse_junit --help
نمایش نتایج در TestRail #
حالا اگر به صفحه Test Cases در project خود در TestRail بروید، میبینید که TestRail CLI بهصورت خودکار همان test caseهایی را ایجاد کرده که در گزارش نتایج test شما وجود داشتهاند.

در صفحه Test Runs & & Results میبینیم که یک test run با نام JMeter Test Run ایجاد شده است. با باز کردن آن، میتوانیم جزئیات هر نتیجه test خودکار را دقیقتر بررسی کنیم و یک تحلیل کلی از علت fail شدن test داشته باشیم؛ چون پیام خطایی که framework اتوماسیون test ارائه کرده هم در test result ثبت شده است، همانطور که در تصویر زیر میبینید.

قدم بعدی چیست؟ #
حالا که نتایج test خود را در TestRail متمرکز کردهاید، هم میتوانید نتایج test runهای خودکار و پیام خطای testهای ناموفق را بررسی کنید، هم تلاشهای تست دستی و خودکار را در گزارشهایی کنار هم ببینید که پوشش کامل test برای اپلیکیشن شما را نشان میدهند و حتی پیشرفت test automation را دنبال میکنند. همچنین میتوانید مثل نتایج testهای دستی، یک bug را مستقیم از نتیجه test خودکار به issue tracker دلخواهتان گزارش کنید.
برای آشنایی با روش استفاده از قابلیتهای گزارشگیری TestRail، میتوانید ویدیوی TestRail’s Reports and Test Metrics را ببینید.


