در TestRail ۳.۰ بخش جدیدی با نام Reports اضافه شد که از ساخت، زمانبندی، اشتراکگذاری و ارسال reportها با ایمیل پشتیبانی میکند. با اینکه TestRail چندین template عمومی و قدرتمند برای reportها بهصورت پیشفرض دارد، گاهی لازم است report سفارشی بسازید؛ مثلا وقتی میخواهید دادهها را از زاویهای متفاوت ببینید یا آنها را به شکلی تجمیع و نمایش دهید که reportهای داخلی پوشش نمیدهند.
این سند ساختار پایه reportهای سفارشی، روش افزودن آنها به نصب TestRail و بهترین روشهای کار را توضیح میدهد. فرض این سند این است که با PHP، SQL و توسعه وب (HTML، CSS و JavaScript) آشنایی اولیه دارید. برای پیادهسازی report سفارشی باید با همه این فناوریها تجربه داشته باشید.
اصطلاحات #
TestRail برای تفاوتگذاری بین موجودیتهای مرتبط با report از اصطلاحات زیر استفاده میکند:
Report #
Reportها سندهای مبتنی بر HTML و فایلهای وابستهای هستند که تولید میشوند. آنها معمولا نمودارها و آمار را برای نمایش تصویری دادهها نشان میدهند. Reportها میتوانند خصوصی باشند یا بین همه کاربران یک project مشخص به اشتراک گذاشته شوند.

Report job #
Reportها را میتوانید در بازههای زمانی قابل تنظیم زمانبندی کنید. Report job برنامه زمانبندی را تعریف میکند و همه تنظیمات مرتبط را نگه میدارد. در UI TestRail به report jobها، scheduled reports هم گفته میشود.
Report format #
Report را میتوانید داخل TestRail (inline) یا خارج از TestRail (standalone) ببینید. وقتی report تولید میشود، TestRail آن را پسپردازش میکند و در قالبهای مختلفی ذخیره میکند که به آنها report format گفته میشود.
Report plugin #
Report plugin فرایند واقعی تولید reportهای قابل مشاهده را پیادهسازی میکند. Report pluginها بستههایی مستقل و قابل استفاده مجدد از فایلهای PHP و assetهای HTML هستند؛ مثل style sheetها، فایلهای JavaScript و تصویرها. هر report plugin یک مسئله مشخص را پیادهسازی یا حل میکند (مثلا نمایش result coverage برای test caseها) و با ارسال گزینههای report قابل تنظیم است.
Report form #
وقتی یک report یا scheduled report را ایجاد یا ویرایش میکنید، این کار را در report form انجام میدهید. Report form دو section دارد. section اول گزینههای سفارشی report را تنظیم میکند و ظاهر آن برای هر report plugin متفاوت است. section دوم گزینههای سیستمی را تعریف میکند (دسترسی، اعلانها و زمانبندی) و برای همه report pluginها یکسان است.
شروع کار #
TestRail هنگام راهاندازی برنامه، report pluginها را در دو پوشه جستوجو میکند. پوشه اول همان جایی است که TestRail pluginهای پیشفرض داخلی خود را هم نگه میدارد. در این پوشه هرگز اسکریپتهای plugin را اضافه یا ویرایش نکنید، چون با بهروزرسانی TestRail این فایلها بازنویسی میشوند:
<TestRail>/app/plugins/reports
اسکریپتهای plugin جدید یا ویرایششده را همیشه در پوشه report pluginهای سفارشی قرار دهید:
<TestRail>/custom/reports
سادهترین راه برای شروع کار با report pluginهای TestRail استفاده از مخزن زیر در GitHub است. میتوانید از این template بهعنوان reference استفاده کنید، اما بهتر است برای report pluginهای جدید از یک پوشه خالی شروع کنید و فایلهای template را یکییکی بسازید یا کپی کنید.
$ git clone https://github.com/gurock/testrail-custom.git
$ ls testrail-custom/reports/template
about.json
i18n/
images/
js/
report.php
styles/
views/
ساختار plugin #
همانطور که در template نمونه میبینید، یک report plugin فقط یک پوشه ساده است. این پوشه ماژول اصلی PHP افزونه (report.php)، فایل توضیحات (about.json) و چند زیرپوشه دارد که assetهای HTML (تصویرها، js و styleها)، فایلهای زبان و viewها را نگه میدارند. viewها برای render کردن report استفاده میشوند. sectionهای بعدی این بخشها را با جزئیات توضیح میدهند.
about.json #
این فایل، فایل توضیحات plugin است و metadata مربوط به report plugin، مثل label (نام)، description و author را مشخص میکند. فایل از JSON استفاده میکند و ساختار آن به این شکل است:
{
"author": "Gurock Software",
"version": 1,
"label": "l:reports_tmpl_meta_label",
"summary": "l:reports_tmpl_meta_summary",
"description": "l:reports_tmpl_meta_description",
"group": "l:reports_tmpl_meta_group",
"translations": ["reports_tmpl"]
}
TestRail کاملا قابل ترجمه است و این قابلیت شامل reportها هم میشود. برای ترجمه یک report میتوانید یک یا چند فایل «ترجمه» اضافه کنید. TestRail هنگام راهاندازی report plugin، این فایلها را خودکار بارگذاری میکند.
label و group تعیین میکنند report plugin در نوار کناری صفحه نمای کلی reportها در TestRail چگونه نمایش داده شود. فیلدهای summary و description باید توضیحی کوتاه یا کمی کاملتر از کاری باشند که report plugin انجام میدهد.
طبق قرارداد، stringهایی که با “l:” شروع میشوند، بهعنوان stringهای فایل ترجمه در نظر گرفته میشوند (بخش زیر را ببینید).
i18n/ #
این پوشه فایلهای ترجمه report plugin را نگه میدارد و باید فایلی را که قبلا در about.json مشخص کردهاید، در آن قرار دهید؛ مثلا reports_tmpl.php. در نتیجه مسیر نسبی کامل این فایل باید این باشد:
i18n/translations/en/reports_tmpl.php
این مسیر از همان قراردادهای سیستم ترجمه استاندارد TestRail پیروی میکند. محتوای فایل، stringهای ترجمهشده را مشخص میکند:
$lang['reports_tmpl_meta_label'] = 'Template';
$lang['reports_tmpl_meta_group'] = 'Template Group';
$lang['reports_tmpl_meta_summary'] = 'Demonstrates how to develop \
custom report plugins.';
$lang['reports_tmpl_meta_description'] = 'Demonstrates how to develop \
custom report plugins and serves as a skeleton for new report \
plugins.';
..
report.php #
این فایل پیادهسازی واقعی report plugin بر پایه PHP را شامل میشود. TestRail انتظار دارد کلاسی با نام پوشه report plugin و پسوند “_report_plugin” وجود داشته باشد:
class Template_report_plugin extends Report_plugin
{
}
..
این class باید چند method برای render کردن و اعتبارسنجی report form و گزینههای report، و همچنین برای تولید خود report پیادهسازی کند.
views/ #
این پوشه viewهای report plugin را نگه میدارد که در فرایند render کردن report استفاده میشوند. viewها فایلهای استاندارد PHP هستند که report plugin آنها را بارگذاری میکند و سندهای HTML واقعی را میسازد.
ساخت plugin خودتان #
برای اینکه ببینید چطور report سفارشی بنویسید و با ساختار و سازوکار داخلی report pluginها بیشتر آشنا شوید، مقالههای زیر را بخوانید:

