Jira یک گزارش باگ ضعیف را خودکار به Evidence خوب تبدیل نمی‌کند و یک Workflow شلوغ نیز الزاماً کنترل بهتری نمی‌سازد. اگر فیلدها معنای مشترک نداشته باشند، Transitionها اختیار روشن نداشته باشند، Resolution با Status ناسازگار باشد یا Automation در سکوت داده را تغییر دهد، بورد سبز می‌تواند واقعیت را پنهان کند.

این راهنما Jira Cloud را برای QA به‌صورت یک Flow قابل ممیزی طراحی می‌کند: Signal → Work item → Field contract → Triage → State transition → Verification → Disposition/Resolution → Closure → Learning. هر مرحله Owner، Authority، Evidence، Permission، Query و Audit record دارد. هدف «تبدیل‌شدن به تستر حرفه‌ای با چند Gadget» نیست؛ هدف جلوگیری از گم‌شدن معنا بین گزارش، تصمیم و اجراست.

خلاصهٔ عملی: Jira برای QA چه چیزی باید فراهم کند؟

  • هر Work item نوع، Scope، منبع، ریسک، Owner و Evidence قابل‌ردیابی دارد.
  • Status جای Flow را نشان می‌دهد؛ Resolution دلیل پایان را، و Priority ترتیب تصمیم را.
  • Severity اثر مشاهده‌شده است و با Priority، Urgency یا SLA یکی نیست.
  • Transition فقط با Authority، ورودی، Validator، Action و Failure behavior روشن اجرا می‌شود.
  • JQL مجموعه‌ای را بازیابی می‌کند؛ حقیقت، KPI یا کیفیت محصول را به‌تنهایی اثبات نمی‌کند.
  • Automation باید Actor، Scope، Idempotency، Loop guard، Error path و Audit قابل نگهداری داشته باشد.
  • Attachment و Comment بر اساس کمینه‌سازی، Permission، Security level و Retention مدیریت می‌شوند.
  • تغییر Scheme/Field/Rule ابتدا در Sandbox مصنوعی آزموده، سپس با Migration و Rollback منتشر می‌شود.

مرز این راهنما با مدیریت نقص و گزارش باگ

پرسشمالک محتواخروجی
یک گزارش چگونه بازتولیدپذیر شود؟گزارش باگ قابل بازتولیدReproduction Contract و Evidence
در جلسهٔ Triage چه تصمیمی گرفته شود؟جلسه تریاژ باگDisposition و Decision Packet
State Machine عمومی نقص چگونه باشد؟گردش کار نقصState/Transition/Audit مستقل از ابزار
برنامهٔ سازمانی نقص، SLA و یادگیری چیست؟مدیریت نقص نرم‌افزارOperating model و Governance
این قراردادها در Jira چگونه پیاده شوند؟همین مقالهField/Workflow/JQL/Automation/Permission/Audit runbook

پس در این صفحه دوباره نسخهٔ عمومی «Summary + Steps + Expected/Actual» را جایگزین طراحی سیستم نمی‌کنیم. Jira لایهٔ اجرای قرارداد است؛ اگر قرارداد بیرون از ابزار مبهم باشد، Custom field بیشتر فقط ابهام را رسمی می‌کند.

دامنهٔ منابع رسمی و تغییر واژگان Jira

این متن در ۱۴ اوت ۲۰۲۶ با مستندات Jira Cloud بررسی شده است. Atlassian در صفحات فعلی از عبارت‌هایی مانند Work item و Space نیز استفاده می‌کند، درحالی‌که بسیاری از تیم‌ها و APIها هنوز Issue و Project می‌گویند. نام منو، قابلیت، Plan و رفتار Company-managed/Team-managed می‌تواند تغییر کند؛ قبل از اجرا Edition، نوع Space، نسخهٔ UI و Permission واقعی Instance را ثبت کنید.

مستند رسمی Ruleهای Workflow چهار خانوادهٔ Restriction، Request input، Validation و Action را توضیح می‌دهد. صفحهٔ ساخت Transition تأکید می‌کند Transition جهت‌دار است و باز/بسته‌بودن در Jira با مقدار Resolution ارتباط دارد، نه صرفاً نام Status. این قابلیت‌ها Policy مناسب تیم شما را تعیین نمی‌کنند؛ آن Policy باید جدا تصویب و سپس پیاده شود.

Instance Contract را پیش از Configuration ثبت کنید

Jira Instance Contract
instance-id / platform: Cloud / plan / observed-at
space model: company-managed / team-managed / service
space keys / work types / workflow schemes
admin / space owner / data owner / security owner
user classes and groups / guests / automation actors
data classification / residency / retention policy
approved integrations / apps / API clients
business timezone / locale / calendar
change window / sandbox / backup-export path
review-at / expiry / correction owner

یک Screenshot از بورد، Configuration baseline نیست. Scheme، Context، Screen، Permission، Security level، Automation scope و Filter ownership را با شناسه یا Export مجاز ثبت کنید. Secret، Token و دادهٔ شخصی را داخل سند عمومی Configuration نگذارید.

Authority Matrix: چه کسی حق چه تصمیمی دارد؟

عملپیشنهاددهندهتصمیم‌گیرمجریشاهد پایان
Create defectهر Reporter مجاز—Reporter/IntegrationContract حداقلی
SeverityQA/SupportRole توافق‌شدهField editorImpact evidence
Priority/OrderTriage participantsProduct/Risk ownerAuthorized roleDecision note
Accept fix for verificationDeveloper/CIWorkflow contractTransition actorBuild/commit/deploy evidence
Verify behaviorQA/ReporterDefined verifierVerifierOracle + run evidence
Close/resolveVerifier/TriageDisposition ownerAuthorized transitionResolution + reason
Release despite residual riskTriageRelease authorityRelease ownerRisk acceptance

QA ممکن است Verification را انجام دهد اما لزوماً صاحب Priority، Closure یا Release نیست. «تستر Done کند» فقط وقتی درست است که Authority contract همان را گفته باشد. نام فرد را با Role جایگزین نکنید؛ Absence، Delegation و Escalation هم باید تعریف شوند. برای بستن مسیر Request، Ack، Handoff و Escalation میان نقش‌ها از توافق کاری تستر و توسعه‌دهنده استفاده کنید.

Signal چه زمانی Work item مستقل می‌شود؟

هر مشاهده الزاماً یک Bug ticket نیست. Signal می‌تواند سؤال Rule، Product feedback، incident، environment failure، security concern، test defect یا duplicate باشد. Intake rule تعیین کند چه چیز فوراً ثبت می‌شود، چه چیز ابتدا نیاز به containment خصوصی دارد و چه چیز به Work type دیگری می‌رود.

Intake Record
signal-id / source / observed-at
reporter class / contact route
product / build / environment / tenant class
observed behavior / expected source / uncertainty
potential harm / affected scope / urgency
data classification / security route
candidate work type / duplicate search
containment / next owner / review-by

Work type را بر اساس Flow انتخاب کنید

Bug، Story، Task، Incident، Security finding و Test debt می‌توانند Field، Workflow و SLA متفاوت بخواهند. تعریف هر Work type باید Inclusion، Exclusion، مثال مرزی و Route داشته باشد. صرف این‌که Jira همه را Work item می‌نامد، معنای عملی آن‌ها را یکی نمی‌کند.

Field Contract: هر فیلد یک تصمیم را پشتیبانی کند

Field Contract
field-id / display name / semantic name
question answered / decision consumer
type / unit / allowed values / null meaning
source / editor / validator / transition requirement
context: spaces + work types
screen placement / API name / smart-value path
classification / visibility / retention
default and migration rule
quality query / owner / review-at

فیلد «Environment» اگر یک Text آزاد باشد شاید Chrome، مرورگر، prod، production و خالی را مخلوط کند. اگر برای Routing یا Metric مصرف می‌شود، Vocabulary محدود و Unknown صریح لازم است. Default نباید Missingness را پنهان کند؛ مقدار «Medium» خودکار برای Priority می‌تواند دادهٔ ساختگی بسازد.

Field Context و Screen دو قرارداد متفاوت‌اند

Context مشخص می‌کند Field برای کدام Space/Work type و با چه Optionهایی معنا دارد؛ Screen تعیین می‌کند چه زمانی دیده یا ویرایش می‌شود. Field سراسری با نام یکسان اما معنای متفاوت، گزارش و Automation را می‌شکند. Contextهای هم‌پوشان، Optionهای حذف‌شده و Fieldهای مشابه را Inventory کنید.

حداقل Fieldهای Defect را از روی Decision بسازید

  • Summary با Object/Condition/Observed signal، نه قضاوت کلی.
  • Build/Version و Environment identity قابل بازتولید.
  • Expected source و Actual observation جدا.
  • Reproduction/evidence anchor یا دلیل عدم امکان.
  • Impact/Severity با Scope و Confidence.
  • Priority/Order با Decision owner و تاریخ.
  • Component/Owner routing با Unknown مجاز.
  • Security/Data classification پیش از Attachment.
  • Related item/build/commit/deployment links با semantics مشخص.
  • Resolution/Disposition reason و Verification evidence هنگام پایان.

تمام فیلدها را در Create اجباری نکنید. Intake سریع ممکن است Evidence ناقص داشته باشد؛ Transition به Triage یا Ready for Work می‌تواند Fieldهای بیشتری بخواهد. Progressive validation از رهاشدن گزارش یا جعل مقدار برای عبور از فرم جلوگیری می‌کند.

Summary را قابل جست‌وجو و بی‌اغراق بنویسید

الگوی نمونه: «[Checkout][IRR][duplicate callback] Ledger entry دوبار ثبت می‌شود». عبارت «سیستم خراب است» Object، Condition و signal ندارد. Summary باید از PII، Token و متن خطای حساس خالی باشد چون ممکن است در Email، Notification، Search یا Integration تکثیر شود.

Evidence را کمینه و قابل پیگیری نگه دارید

Screenshot همیشه لازم یا کافی نیست. برای Race، Log/Trace؛ برای State، Query/response؛ برای UI، تصویر/ویدیو؛ برای Rule، Source/acceptance criterion مفید است. Evidence باید Timestamp، Build، Environment، redaction، capture method و Chain-of-custody لازم را داشته باشد.

Evidence Manifest
evidence-id / work-item key
claim or observation supported
captured-at / actor / method
build / environment / dataset class
hash / storage / access level
redactions / reviewer
retention / deletion owner
limitations / expiry

Attachment یک مرز امنیتی است

پیش از پیوست، Token، Cookie، Header، Email، شماره تماس، کد ملی، دادهٔ تراکنش، دامنهٔ داخلی و Metadata را بررسی کنید. Crop یا Blur همیشه برگشت‌ناپذیر نیست؛ نسخهٔ پاک‌سازی‌شده بسازید و اصل را در محل مجاز نگه دارید. دسترسی Work item، Download و Integration consumer را آزمون کنید.

راهنمای رسمی Permissionهای Jira Cloud Global، Space و Work-item security را از هم جدا می‌کند. Permission دیدن Space الزاماً مجوز دیدن هر Work item حساس نیست؛ Guest، App و Automation actor را هم در Threat model بیاورید.

Severity، Priority، Urgency و SLA را جدا کنید

Constructپرسشمالک نمونهEvidence
Severityاثر مشاهده‌شده چقدر است؟Risk/QA roleHarm، scope، workaround
Priorityنسبت به کارهای دیگر چه زمانی رسیدگی شود؟Product/Risk ownerValue، risk، cost، dependency
Urgencyمهلت واکنش چرا کوتاه است؟Incident/Service ownerTime sensitivity
SLA/SLOتعهد پاسخ/حل چیست؟Service governancePolicy/contract/calendar

Priority پیش‌فرض Jira قابل سفارشی‌سازی است؛ نام Critical/Major/Minor قانون جهانی نیست. تعریف، مثال مثبت/منفی، مرز، Override و review cadence را کنار Field contract نگه دارید.

Workflow را از State Machine مصوب بسازید

Workflow State Record
status-id / semantic state / status category
entry evidence / owner / permitted work
exit decision / required fields
allowed transitions and actors
SLO clock behavior
automation/integration side effects
exception and escalation
metric inclusion/exclusion

Open → In Progress → Done فقط یک نمونه است. Triage، Needs Info، Ready for Work، In Fix، Ready for Verification، Verified و Closed ممکن است مفید یا اضافی باشند. هر Status باید تفاوت تصمیمی داشته باشد؛ Statusی که Owner، entry/exit یا گزارش متفاوت ندارد احتمالاً Queue پنهان می‌سازد.

Status، Column و Status Category یکی نیستند

Board column می‌تواند چند Status را نمایش دهد و Mapping آن قابل تغییر است. انتقال Card میان Column همیشه همان Transition معنایی مورد انتظار نیست. وضعیت‌هایی که به ستون نامناسب Map شده‌اند، Work in progress و Done را تحریف می‌کنند. Board filter و Sub-filter نیز ممکن است Work item را پنهان کنند.

Resolution دلیل پایان است، نه نام ستون

مستند رسمی Status، Priority و Resolution می‌گوید Status جای Work item در Workflow و Resolution نحوهٔ پایان آن را توصیف می‌کند. صفحهٔ مدیریت Resolution نیز نمونه‌هایی مانند Fixed، Duplicate یا Could not replicate را توضیح می‌دهد. نام و معنا می‌تواند در Instance سفارشی شود.

Transition پایان باید Resolution مناسب را Set کند و Transition بازگشت آن را Clear کند؛ وگرنه Item در گزارش‌ها Closed یا Unresolved اشتباه دیده می‌شود. Resolution به نام «Unresolved» نسازید؛ نبود مقدار خودِ حالت unresolved است. Before/after query و نمونهٔ Reopen را در تست Workflow بگنجانید.

Transition Contract را کامل بنویسید

Transition Contract
transition-id / from / to / semantic action
authorized roles / delegation
input screen and editable fields
conditions / validators / error messages
post actions / events / notifications
resolution set-or-clear behavior
automation/integration consumers
idempotency / retry / partial-failure behavior
audit evidence / rollback transition

Restriction مشخص می‌کند چه کسی Transition را می‌بیند یا اجرا می‌کند؛ Input دادهٔ لازم را می‌گیرد؛ Validator پیش از تغییر State مانع ورودی نامعتبر می‌شود؛ Action پس از Transition اثر می‌گذارد. اگر Validator رد شود، Work item نباید به مقصد برود. Failure message باید اقدام بعدی را بگوید، نه فقط «خطا».

Ready for Verification بدون Build evidence ناقص است

Transition به Ready for Verification حداقل Fix reference، Build/deploy identity، Environment، scope و known limitations می‌خواهد. Comment «fix شد» Receiver را مجبور به حدس می‌کند. اگر Feature flag یا migration لازم است، وضعیت فعال و rollback آن نیز ثبت شود.

Verification و Closure را از هم جدا کنید

Verification پاسخ می‌دهد رفتار مورد ادعا در Build/Environment/Data مشخص مطابق Oracle شده است؛ Closure پاسخ می‌دهد Flow با Disposition و Authority لازم تمام شده است. QA می‌تواند Verification Pass دهد ولی Risk owner با residual risk، release یا زمان Closure تصمیم دیگری بگیرد.

Verification Record
verification-id / work item / fix reference
build / environment / dataset
original reproduction result
target-fault and adjacent checks
oracle / evidence anchors
pass / fail / blocked / inconclusive
residual scope / regression gap
verifier / verified-at / next route

Reopen یک شکست اخلاقی نیست؛ Transition با شاهد تازه است

Reopen باید Reason، Build، Evidence و تفاوت با Verification قبلی داشته باشد. ممکن است Fix ناقص، محیط اشتباه، Regression، همان Failure mechanism یا مسئله‌ای تازه باشد. اگر مسئله تازه Scope متفاوت دارد، Link و Work item جدید بهتر از بازکردن تاریخچهٔ نامرتبط است. «هر باگ یک Ticket» نیز قانون نیست؛ Atomicity را با Owner، Fix، deploy، verify و rollback بسنجید.

Disposition را با Comment آزاد جایگزین نکنید

Fixed، Duplicate، Cannot reproduce، Won’t do، By design، Deferred یا Data issue باید تعریف و Authority داشته باشند. «Rejected» بدون Reason، Source و Appeal route تعارض می‌سازد. Triage packet و تصمیم را طبق پروتکل مستقل ثبت و Jira را برای Trace آن پیکربندی کنید.

Duplicate یعنی یک Canonical owner و چند شاهد

قبل از Duplicate، Failure mechanism، Build، Component و Impact را مقایسه کنید. فقط مشابه‌بودن Summary کافی نیست. Canonical item باید مالک تصمیم باشد؛ Duplicate item منبع، Reporter، evidence و affected context خود را حفظ و به Canonical Link شود. Merge بی‌ردیابی می‌تواند Population و اثر را کم‌برآورد کند.

Link type باید Semantics داشته باشد

Blocks، is blocked by، relates to، duplicates، caused by، tests یا implements را به‌جای هم استفاده نکنید. جهت، Expected consumer، ایجادکننده، validator و cleanup هر Link type را تعریف کنید. لینک Story به Bug به‌تنهایی Coverage، علت یا Release inclusion را ثابت نمی‌کند.

Sub-task و Hierarchy را برای Ownership به‌کار ببرید

تفکیک «تست Chrome» و «تست Firefox» به Sub-task فقط وقتی مفید است که Owner، State، Evidence یا Scheduling جدا داشته باشند. شکستن بی‌دلیل، WIP و گزارش را متورم می‌کند. Child closure نباید خودکار Parent outcome را ثابت فرض کند مگر Contract و Validator آن را پوشش دهد.

Board مشاهدهٔ Flow است، نه خود Flow

Filter، Column mapping، swimlane، quick filter و permission تعیین می‌کنند چه می‌بینید. یک Card ناپدیدشده ممکن است خارج از Filter باشد، نه Done. WIP limit باید Queue policy و exception داشته باشد. «هر صبح Ready for QA را چک کن» جای Pull policy، owner و SLO نیست.

Sprint عضویت است، نه Evidence کیفیت

وجود Bug در Sprint، ارتباط آن با Sprint goal یا کشف‌شدن در همان Sprint را خودکار ثابت نمی‌کند. Carry-over، added-after-start، reopened و out-of-scope را جدا کنید. QA نباید Story را صرفاً به‌دلیل یک Bug به In Progress برگرداند؛ Link، acceptance policy و Authority تیم تعیین‌کننده‌اند.

JQL را به‌عنوان Query Contract مدیریت کنید

مستند رسمی Advanced search با JQL آن را زبان ساخت Query دقیق معرفی می‌کند؛ صفحهٔ JQL fields عملگرها، تابع‌ها و محدودیت Fieldها را نسخه‌وار توضیح می‌دهد. Query syntax صحیح، معنای Field یا کامل‌بودن داده را اثبات نمی‌کند.

JQL Query Contract
query-id / question answered
JQL text / owner / saved-filter id
field semantics and null policy
space/work-type/timezone scope
permission/viewer class
expected positive/negative fixtures
sample result reviewed-at
known blind spots / performance limits
consumers: board / dashboard / automation / export
expiry / change trigger

سه JQL نمونه، با محدودیت صریح

project = PAY AND issuetype = Bug AND resolution IS EMPTY
  ORDER BY priority DESC, created ASC

project = PAY AND status = "Ready for Verification"
  AND fixVersion IS NOT EMPTY ORDER BY updated ASC

project = PAY AND resolution CHANGED TO Fixed AFTER -14d
  ORDER BY resolved DESC

این Queryها فقط Fixture آموزشی‌اند. نام Project، Work type، Status و Field در Instance شما متفاوت است. Query اول «همهٔ نقص‌های واقعی باز» نیست؛ فقط Work itemهای قابل‌دیدن و منطبق را برمی‌گرداند. Permission، Missing field، Archive و ingestion gap را در نتیجه بنویسید.

Filter یک دارایی عملیاتی با Owner است

Personal filter را بی‌Owner به Board یا Automation حیاتی وصل نکنید. Owner، Editors/Viewers، Subscription، Consumer، Change log و fallback را ثبت کنید. حذف حساب سازنده، Rename Field یا تغییر Permission می‌تواند خروجی را بی‌صدا تغییر دهد.

Dashboard برای سؤال مشخص است، نه نمایش اعتبار QA

هر Gadget باید سؤال، Query، Cohort، Unit، timezone، refresh، missingness و Owner داشته باشد. تعداد Bug باز، کیفیت محصول نیست؛ می‌تواند با Release scope، Reporting behavior، Duplicate policy یا دسترسی تغییر کند. Pie chart جذاب، Construct ضعیف را نجات نمی‌دهد.

Metric Contract را قبل از Gadget بسازید

Metric Contract
metric-id / decision / construct
population / inclusion / exclusion
event timestamps and timezone
numerator / denominator / unit
JQL or extraction version
status/resolution semantics
missing / duplicate / reopen handling
segmentation / uncertainty / guardrail
owner / review / anti-gaming note

Cycle time را با Status history و Clock تعریف کنید؛ Created→Resolved با Triage→Verified یکی نیست. Reopen، Waiting، migration و bulk update را مشخص کنید. Trend بدون تغییر Definition یا Query قابل مقایسه نیست.

Automation را مثل کد Production اداره کنید

Automation Rule Contract
rule-id / purpose / owner / scope
trigger and event cardinality
conditions / branches / lookup queries
actor / permissions / impersonation limits
read fields / write fields / side effects
smart values / null/default behavior
idempotency key / loop guard / retry
partial-failure and compensation
notifications / audit / retention
test fixtures / rollout / rollback / expiry

Ruleی که Priority را از Severity کپی می‌کند Policy می‌سازد، نه صرفاً صرفه‌جویی. Trigger می‌تواند چند بار برسد؛ Branch ممکن است N Work item را تغییر دهد؛ Actor ممکن است بیش از کاربر Permission داشته باشد. Blast radius و dry-run/log-only phase تعریف کنید.

Smart Value می‌تواند خالی یا حساس باشد

راهنمای رسمی Smart valueهای Automation Dot notation، Default و آزمون با Manual trigger/Log action را نشان می‌دهد. Field ناموجود می‌تواند مقدار خالی بدهد؛ Email یا Comment ممکن است PII داشته باشد. Null، escaping، list cardinality و access را با Fixture مثبت/منفی تست کنید.

Smart-value Probe
rule version / fixture key
expression / expected type/cardinality
present / absent / null / malformed cases
RTL/LTR and Persian digit cases
escaped output / redaction result
viewer and actor permissions
audit-log sample / no-secret assertion
decision: PASS / HOLD / REWRITE

Idempotency و Loop guard را عمداً آزمایش کنید

Rule نباید با Edit خود دوباره Trigger و Comment/Transition تکراری بسازد. Marker یا State check، actor exclusion، changed-from/to condition و correlation ID می‌تواند کمک کند، اما هر کدام Failure mode دارد. همان Event را دوبار Replay و نتیجهٔ نهایی را مقایسه کنید.

Audit log دائمی و کامل فرض نشود

مستند رسمی Automation audit log Trigger، وضعیت و Step detail را برای Debug نشان می‌دهد و در متن فعلی از نگهداری ۹۰روزهٔ Log سخن می‌گوید. Retention می‌تواند تغییر کند و Log الزاماً تمام Business evidence یا دادهٔ لازم برای ممیزی بلندمدت نیست. Export/Archive مجاز، حداقل‌سازی و حذف را مطابق Policy خود طراحی کنید.

Notification باید Route، Ack و Escalation داشته باشد

Email یا Mention زیاد Signal را خفه می‌کند. Event، Audience، Purpose، content classification، Ack expectation، quiet hours، fallback و unsubscribe/role handoff را مشخص کنید. Notification ارسال‌شده ثابت نمی‌کند پیام دیده، فهمیده یا تصمیم گرفته شده است.

Integration را با Data Contract ببندید

CI، Git، Chat، Test management و Monitoring ممکن است Work item بسازند یا تغییر دهند. Event ID، Schema/version، mapping، actor، permission، retry/backoff، idempotency، ordering، dead-letter/reconciliation و redaction لازم است. برای طراحی جزئی‌تر به یکپارچه‌سازی ابزارهای تست رجوع کنید.

Integration Receipt
source / event-id / schema-version
sent-at / received-at / correlation-id
target work-item / mapping-version
actor / action / before-after hash
attempt / response / retry-after
duplicate disposition / reconciliation
redaction / audit URI / owner

Test management add-on را Jira ذاتی فرض نکنید

Jira Work tracking با Test repository/plan/execution/evidence/report یکی نیست. Marketplace app می‌تواند Work type، Field، Permission، storage، API و هزینه اضافه کند. Zephyr/Xray یا هر گزینهٔ دیگر را با نام برند انتخاب نکنید؛ راهنمای انتخاب ابزار مدیریت تست Hard Gate، PoC، TCO و Exit را جدا پوشش می‌دهد.

API و Bulk edit خطر شعاع اثر دارند

Query اول Count و نمونهٔ Dry-run بدهد؛ سپس Batch محدود با Idempotency و Receipt اجرا شود. Rate limit، pagination، partial failure، field context، permission و history را لحاظ کنید. Token کم‌اختیار، rotation و revoke لازم است. تغییر هزار Work item با یک Script «اصلاح داده» نیست مگر Reconciliation و Rollback داشته باشد.

Configuration change را Migration بدانید

Jira Change Record
change-id / problem / non-goals
baseline schemes/fields/rules/filters
affected spaces/work types/items/users/apps
semantic mapping old → new
data backfill / missing / conflict policy
sandbox fixtures / test results
rollout cohort / monitoring / stop rule
rollback and irreversible steps
communication / training / owner / review-at

Rename Status یا Option می‌تواند JQL، Dashboard، Automation، API mapping و Export downstream را بشکند. Delete/merge قبل از Consumer inventory و Data migration انجام نشود. تغییر Hierarchy یا Context ممکن است اثر گسترده یا غیرقابل برگشت داشته باشد؛ Preview و Vendor docs همان لحظه را بررسی کنید.

Sandbox باید Fixture و Oracle داشته باشد

  1. Work item کامل، ناقص، محرمانه و بدون Permission.
  2. هر Transition مجاز و غیرمجاز با Roleهای مختلف.
  3. Resolution set/clear و Reopen.
  4. Duplicate/Link direction و canonical owner.
  5. JQL مثبت، منفی، Null، timezone و permission.
  6. Automation present/null/malformed، replay و loop.
  7. Integration duplicate، out-of-order، rate-limit و partial failure.
  8. Bulk migration با conflict، stop و rollback.
  9. Persian text، ارقام، ZWNJ، URL و RTL/LTR.
  10. Attachment redaction، access و retention.

Sandbox نباید Snapshot خام Production با دادهٔ شخصی باشد. Fixture مصنوعی و حداقل لازم بسازید. Pass تنها وقتی است که State، Field، History، Notification، Audit و Query output مطابق Oracle باشند.

آزمون دسترسی را با ماتریس Role اجرا کنید

Access Matrix Probe
viewer/actor role
browse / create / edit / comment / attach / transition
security-level visibility
field visibility and editability
filter/dashboard share
automation/app/API access
expected deny and error behavior
observed result / evidence / reviewer

Admin view برای اثبات تجربهٔ کاربر کافی نیست. Least privilege و Negative test لازم است. Work item محرمانه نباید از Filter share، notification، smart value، export یا integration نشت کند.

شرایط ایران و دسترسی Cloud را تاریخ‌دار نگه دارید

دسترسی Site، Login، Email، Marketplace، API، CDN، Payment و Support ممکن است با Provider، Plan، شبکه و زمان تفاوت داشته باشد. یک HTTP ۲۰۰ عمومی Eligibility سازمان یا امکان خرید/پشتیبانی را ثابت نمی‌کند. مسیر مجاز را با Terms، سازمان، Provider و تاریخ بررسی کنید؛ آدرس/هویت جعلی، حساب مشترک یا دورزدن کنترل نسخهٔ امن نیست.

AI و Rovo نباید بدون Review Configuration را تغییر دهند

اگر AI Summary، JQL، Automation یا Workflow پیشنهاد می‌دهد، Prompt/context، model/service، data boundary، proposed diff، reviewer و accepted/rejected change را ثبت کنید. خروجی ممکن است Field/Status موجود در Instance دیگری را فرض کند. Secret یا Work item حساس را بدون Policy به مدل ندهید؛ Apply نیازمند همان Sandbox، Authority و Rollback است.

آزمایشگاه آفلاین ایرانی SYN-JIRA-QA-IR-۰۱

برای آزمودن روش بدون دست‌زدن به Site واقعی، مدل حافظه‌ای کاملاً ساختگی ساختیم: Space «پرداخت-نمونه»، Work itemهای خیالی PAY-۱۰۱ تا PAY-۱۲۴ و Journeyهای Checkout/Order/PaymentAttempt/PSP Stub/Callback/Ledger/Reconciliation. هیچ Jira site، User، Employee، Customer، Work item، Attachment، Automation run یا Release decision واقعی هدف نبود.

Fixture شامل IRR canonical، تومان صرفاً presentation، ارقام فارسی/عربی/لاتین، ی/ی و ک/ک، ZWNJ، RTL/LTR/Bidi، UTC، Asia/Tehran و جلالی صرفاً نمایشی بود. Token، Email، Domain، Screenshot و Actor همگی Dummy بودند. مدل به Atlassian، Marketplace، Email یا Product واقعی وصل نشد.

Configuration بد چه وعده‌ای می‌داد؟

نسخهٔ بد Jira را سازندهٔ خودکار شفافیت می‌دانست؛ هر Signal را Bug می‌کرد؛ Priority را از Severity کپی می‌کرد؛ Medium را Default می‌گذاشت؛ «هر باگ یک Ticket» و «همیشه Screenshot/video» را Rule می‌کرد؛ به QA اجازه می‌داد هر Fix را Done کند؛ Resolution را در Reopen پاک نمی‌کرد؛ Filter شخصی را به Board و Automation وصل می‌کرد؛ و نمودار Bug count را «کیفیت محصول» می‌نامید.

یک Rule با Actor ادمین روی هر Edit دوباره Trigger، Comment تکراری و Notification می‌ساخت؛ Smart value خالی را «Unknown» پنهان می‌کرد؛ Attachment ساختگی حاوی Dummy token بود؛ JQL Permission blindness داشت و Audit retention دائمی فرض شده بود. Checker سطحی این شعارها را موفقیت دانست و به‌اشتباه نوشت:

JIRA_AUTO_TRANSPARENCY_ONE_BUG_ONE_TICKET_ALWAYS_SCREENSHOT_QA_DONE_DASHBOARD_QUALITY_READY

Validator چرا HOLD-۹۱۰ داد؟

Validator مستقل، قطعی و بدون وابستگی خارجی دقیقاً ۹۱۰ کنترل یکتا را در ۷۰ گروه Identity، As-of، Platform، Edition، Space، Model، Role، Authority، Work item، Issue type، Field، Context، Screen، Permission، Security، Classification، Confidentiality، Evidence، Attachment، Redaction، Workflow، Status، Transition، Condition، Validator، Action، Resolution، Reopen، Triage، Priority، Severity، Disposition، Duplicate، Linkage، Hierarchy، Board، Column، WIP، Sprint، JQL، Filter، Dashboard، Metric، Automation، Trigger، Rule condition، Branch، Smart value، Actor، Idempotency، Loop، Audit، Retention، Notification، Integration، API، Rate limit، Schema، Mapping، Migration، Sandbox، Test، Rollback، Monitoring، Ownership، Review، Expiry، Correction، AI و Limits شمرد. ID فاقد Group یا تکراری رد شد.

HOLD-910
NO_REAL_JIRA_SITE_USER_EMPLOYEE_CUSTOMER_WORK_ITEM_ATTACHMENT_RELEASE_PASS

Hold دربارهٔ مهارت تستر یا کیفیت Jira نبود؛ Configuration fixture برای Flow audit آماده نبود. قاعدهٔ مستقل نبود Target واقعی را تأیید کرد. Validator امنیت Site، صحت Product، کامل‌بودن Evidence، Permission واقعی یا Release را اثبات نمی‌کند.

تعمیر Fixture و نتیجهٔ محدود

Instance/Authority/Field/Transition contractها Pin شدند؛ Severity از Priority جدا شد؛ Null قابل مشاهده ماند؛ Attachment پاک‌سازی و دسترسی منفی آزموده شد؛ Resolution در پایان Set و Reopen Clear شد؛ Filter service-owned و Query fixtureدار شد؛ Automation actor محدود، event marker و Loop guard گرفت؛ Smart valueهای null/malformed آزموده شدند؛ Replay نتیجهٔ واحد ساخت؛ Dashboard به سؤال/Population/Limit وصل شد؛ Migration dry-run و rollback گذشت.

READY_FOR_JIRA_QA_FLOW_AUDIT_REVIEW-0

صفر فقط یعنی در مدل مصنوعی فیلد کنترل‌نشده باقی نمانده است. تصمیم مجاز «آماده برای بازبینی Flow audit» بود، نه اثبات شفافیت، کیفیت محصول، صلاحیت فرد یا ایمنی هر Jira Instance.

۲۸ ضدالگوی Jira برای QA

  1. Jira خودکار شفافیت می‌سازد.
  2. هر Signal یک Bug است.
  3. هر Bug دقیقاً یک Ticket است.
  4. همیشه Screenshot یا Video لازم است.
  5. Priority همان Severity است.
  6. Default، Missing را پنهان می‌کند.
  7. نام Status معنای کافی دارد.
  8. Column همان State است.
  9. Done بدون Resolution درست است.
  10. Reopen بدون Clear resolution است.
  11. QA همیشه صاحب Closure است.
  12. Reject بدون Reason/Appeal است.
  13. Duplicate فقط با Summary تشخیص داده می‌شود.
  14. Link جهت و semantics ندارد.
  15. Sub-task برای هر Browser ساخته می‌شود.
  16. Sprint membership کیفیت را ثابت می‌کند.
  17. JQL syntax صحیح یعنی دادهٔ کامل.
  18. Filter شخصی Consumer حیاتی دارد.
  19. Dashboard Bug count کیفیت محصول است.
  20. Automation actor ادمین دائمی است.
  21. Rule Replay و Loop test ندارد.
  22. Smart value خالی با Default پنهان می‌شود.
  23. Audit log دائمی فرض می‌شود.
  24. Notification برابر دریافت تصمیم است.
  25. Integration بدون event receipt است.
  26. Bulk edit بدون Dry-run/Rollback است.
  27. Production data به Sandbox کپی می‌شود.
  28. AI diff بدون Review Apply می‌شود.

چک‌لیست ۴۸ نقطه‌ای پیش از فعال‌سازی Flow

  1. Platform/Plan/Space model تاریخ‌دار است.
  2. Owner و Admin جدا شده‌اند.
  3. Authority matrix تصویب شده است.
  4. Work typeها Inclusion/Exclusion دارند.
  5. Intake و Security route روشن است.
  6. هر Field سؤال تصمیمی دارد.
  7. Null meaning تعریف شده است.
  8. Default دادهٔ ساختگی نمی‌سازد.
  9. Contextها هم‌پوشانی ناخواسته ندارند.
  10. Screenها Progressive validation دارند.
  11. API/Smart-value path ثبت است.
  12. Summary دادهٔ حساس ندارد.
  13. Evidence manifest وجود دارد.
  14. Attachment redaction بازبینی شده است.
  15. Permission منفی آزموده شد.
  16. Work-item security از Space جداست.
  17. Severity/Priority/Urgency جدا هستند.
  18. هر Status معنای یکتا دارد.
  19. Entry/Exit evidence ثبت است.
  20. Column mapping بررسی شد.
  21. Transition جهت و Authority دارد.
  22. Input/Condition/Validator/Action روشن‌اند.
  23. Error message اقدام‌پذیر است.
  24. Resolution در پایان Set می‌شود.
  25. Reopen Resolution را Clear می‌کند.
  26. Verification از Closure جداست.
  27. Disposition Reason/Owner دارد.
  28. Duplicate canonical/evidence را حفظ می‌کند.
  29. Link semantics و جهت دارد.
  30. Board filter Blind spot ثبت دارد.
  31. WIP exception و owner دارد.
  32. Sprint interpretation محدود است.
  33. JQL Query contract دارد.
  34. Positive/negative/null fixtures گذشت.
  35. Filter service owner دارد.
  36. Dashboard سؤال/Population/Limit دارد.
  37. Metric denominator/timezone روشن است.
  38. Automation actor کم‌اختیار است.
  39. Smart value null/malformed آزموده شد.
  40. Replay و Loop guard گذشت.
  41. Partial failure جبران دارد.
  42. Audit retention و archive روشن است.
  43. Notification Ack/Escalation دارد.
  44. Integration event receipt دارد.
  45. API batch dry-run/reconciliation دارد.
  46. Migration Sandbox و stop rule دارد.
  47. Rollback واقعاً آزموده شد.
  48. Owner/monitor/review/expiry/correction ثبت است.

برنامهٔ ۳۰روزهٔ پیاده‌سازی بدون Site واقعی

روزهای ۱ تا ۳ Instance/Role/Authority؛ ۴ تا ۷ Work type/Field/Context/Screen؛ ۸ تا ۱۱ Workflow/Transition/Resolution/Reopen؛ ۱۲ تا ۱۴ Evidence/Privacy/Permission؛ ۱۵ تا ۱۷ JQL/Filter/Dashboard/Metric؛ ۱۸ تا ۲۱ Automation/Smart value/Replay/Audit؛ ۲۲ تا ۲۴ Integration/API/Notification؛ ۲۵ تا ۲۷ Sandbox/Migration/Rollback؛ ۲۸ Access review؛ ۲۹ Receiver handoff؛ ۳۰ Audit report/expiry. همهٔ Fixtureها ساختگی‌اند.

سوالات متداول Jira برای تستر و QA

آیا QA باید باگ رفع‌شده را به Done ببرد؟

نه به‌صورت قانون عمومی. Authority matrix مشخص می‌کند چه کسی Verification و چه کسی Closure را انجام می‌دهد. Transition باید Build evidence، Oracle، Resolution و residual risk را طبق قرارداد بررسی کند.

Severity و Priority در Jira چه تفاوتی دارند؟

Severity اثر مشاهده‌شده را مدل می‌کند؛ Priority ترتیب رسیدگی را در میان کارها. Jira Priority قابل سفارشی‌سازی است و Severity معمولاً Field قراردادی تیم است. کپی خودکار یکی به دیگری بدون Decision policy نادرست است.

آیا هر باگ باید یک Ticket جدا داشته باشد؟

Atomicity به Failure mechanism، Owner، Fix، Deploy، Verify و Rollback بستگی دارد. چند مشاهده با Cause و مسیر یکسان ممکن است یک Canonical item بخواهند؛ یک Summary مشابه با Cause متفاوت نباید بی‌دلیل Merge شود.

بهترین JQL برای باگ‌های باز چیست؟

Query جهانی نداریم. Work type، Space، Resolution semantics، Permission، Archive و Null policy Instance را وارد Query Contract کنید. نتیجه فقط Itemهای قابل‌دیدن و منطبق را نشان می‌دهد، نه تمام نقص‌های واقعی محصول.

آیا Jira به‌تنهایی برای مدیریت Test case کافی است؟

به نیاز شما بستگی دارد. Work tracking با Test repository، plan، execution، evidence و reporting یکسان نیست. Capability gap را بنویسید و Add-on یا ابزار مستقل را با Permission، integration، TCO و Exit در PoC بسنجید.

جمع‌بندی: Jira را حافظهٔ حقیقت ننامید؛ Flow قابل ممیزی بسازید

Jira فقط آنچه را تیم با Field، Workflow، Permission، Query و Rule طراحی و وارد کرده نگه می‌دارد. برای QA، ارزش آن زمانی شکل می‌گیرد که Signal به Work item درست Route شود، Evidence امن بماند، Authority و Transition قابل دفاع باشند، Resolution و Reopen معنا را حفظ کنند، JQL محدودیت خود را اعلام کند و Automation بدون Loop یا تغییر پنهان عمل کند.

قبل از فعال‌سازی، Contractها را بیرون از UI روشن کنید؛ در Sandbox مصنوعی Positive/Negative/Null/Permission/Replay/Migration را آزمایش کنید؛ Rollback را اجرا کنید و Owner، Audit، Expiry و Correction را ثبت کنید. خروجی حرفه‌ای یک Dashboard زیبا نیست؛ زنجیره‌ای است که از مشاهده تا تصمیم و Closure را بدون اغراق، نشت داده یا گم‌کردن مسئولیت بازسازی می‌کند.

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