همکاری تستر و توسعه‌دهنده با زیادشدن پیام، جلسه یا Pair session اثبات نمی‌شود. ممکن است تیم در یک روز ده‌ها پیام ردوبدل کند، چند باگ را ببندد و همچنان روی Build اشتباه بحث کند، سؤال مبهم بپرسد، Evidence را بدون محدودیت تفسیر کند یا تصمیمی بگیرد که اختیارش را ندارد. Collaboration وقتی قابل اتکاتر می‌شود که Context، درخواست، پاسخ، Artifact، Observation، Decision و Follow-up به هم متصل باشند.

این راهنما یک Developer–Tester Collaboration Interface می‌سازد. هدف آن حذف گفت‌وگو یا رسمی‌کردن همه‌چیز نیست؛ کمینه‌کردن گم‌شدن Context در نقاطی است که دو یا چند قابلیت باید با هم مسئله‌ای را روشن کنند. Pair Testing، Review، BDD، TDD، Three Amigos، CI و گفت‌وگوی Async گزینه‌اند، نه نسخهٔ جهانی و نه تضمین کیفیت، سرعت یا کاهش هزینه.

مسیر کوتاه همکاری در هشت گام

گامپرسشخروجی
ContextGoal/Basis/Build/Risk جاری چیست؟Baseline
Requestچه کمک یا تصمیمی لازم است؟Collaboration Request
Acknowledgeدرخواست قابل‌فهم و قابل‌پاسخ است؟Status/Owner/Due
ModeAsync، Review، Pair یا Workshop؟Mode rationale
Workبا چه نقش/زمان/Artifact؟Session contract
Evidenceچه مشاهده شد و چه Unknown ماند؟Joint Evidence
Decisionچه کسی چه تصمیمی می‌گیرد؟Decision/Action
Closureچگونه Verify و Correct می‌شود؟Follow-up/Correction

همکاری خوب چیست و چه چیزی نیست؟

همکاری قابل‌بررسینشانهٔ ناکافی
سؤال و Context مشترکتعداد پیام
Artifact و Evidence قابل‌ردیابیتعداد جلسه
نقش و اختیار روشنعنوان شغلی
Observation جدا از تفسیرتوافق سریع
Follow-up و VerificationClosed ticket
حق مخالفت و Correctionنبود تعارض آشکار
انتخاب Mode متناسبPairing دائمی

برای مهارت‌های گفت‌وگو، شنیدن و نوشتن پیام، راهنمای ارتباط بین تستر و توسعه‌دهنده را ببینید. این مقاله مالک Communication عمومی نیست؛ Interface عملی برای انجام کار مشترک و نگهداری Evidence را تعریف می‌کند.

منابع چه می‌گویند و چه چیزی را تضمین نمی‌کنند؟

اصول پشت Agile Manifesto بر همکاری روزانهٔ افراد کسب‌وکار و توسعه‌دهندگان، گفت‌وگو، ریتم پایدار، توجه به تعالی فنی و بازاندیشی منظم تأکید می‌کند. این اصول نقش Tester، Three Amigos، Jira، Pair Testing یا تقسیم تست‌ها را تجویز نمی‌کنند و مدرک موفقیت یک تیم خاص نیستند.

Scrum Guide 2020 یک Scrum Team بدون زیرتیم یا سلسله‌مراتب و با سه accountability یعنی Product Owner، Scrum Master و Developers تعریف می‌کند. Tester عنوان رسمی Scrum نیست؛ متخصص تستی که Increment می‌سازد در معنای Scrum جزو Developers است. Guide تقسیم Unit test برای Developer و E2E برای QA، جلسهٔ Three Amigos یا QA approval gate تعریف نمی‌کند.

ISTQB CTFL 4.0.1 Whole-team approach را همکاری اعضای دارای دانش و مهارت لازم برای کیفیت می‌داند و هم‌زمان می‌گوید سطحی از استقلال تست می‌تواند برای یافتن برخی Failureها مؤثر باشد. پس «همه با هم» نباید به حذف perspective مستقل یا حل‌شدن accountabilityها در شعار تبدیل شود.

مالکیت این مقاله: Collaboration Interface Contract

Goal / Test Basis / Repository / Commit / Build / Risk / DoD
  -> Collaboration Request
  -> Acknowledgement / Negotiated Response
  -> Mode Selection + Rationale
  -> Session Roles / Consent / Timebox / Access
  -> Joint Artifact + Evidence + Unknown
  -> Authorized Decision / Action
  -> Follow-up / Verification
  -> Closure / Correction / Learning

Interface یک Ticket factory یا قرارداد حقوقی نیست. Record کوچکی است که هنگام عبور سؤال از مرز قابلیت‌ها از تحریف Subject و Authority جلوگیری می‌کند. برای سؤال ساده ممکن است یک Comment کوتاه کافی باشد؛ برای Risk مبهم، Incident یا اختلاف Evidence، Contract کامل‌تر لازم است.

Baseline را پیش از همکاری قفل کنید

هویتنمونهٔ ساختگیاگر نباشد
Initiative/Product GoalINIT-18/PG-10حل مسئلهٔ اشتباه
Sprint GoalSG-18اولویت محلی نامرتبط
Test BasisBASIS-v5Oracle منسوخ
Repository/Commitcheckout-api/C18Code متفاوت
BuildBUILD-R18`latest` مبهم
Risk RegistryRISK-v6Risk ناشناخته
Definition of DoneDOD-v5Closure متفاوت
Facts cutoffISO instantEvidence دیررس
collaborationBaseline:
  initiative: INIT-18
  productGoal: PG-10
  sprintGoal: SG-18
  testBasis: BASIS-v5
  repository: checkout-api
  commit: C18
  build: BUILD-R18
  riskRegistry: RISK-v6
  definitionOfDone: DOD-v5
  factsCutoff: 2026-08-13T04:00:00Z

از «یه نگاه بنداز» به Collaboration Request برسید

درخواست مبهمدرخواست محدود
یه نگاه بندازContract و component evidence برای AUTHZ-۸ اختلاف دارند؛ Source و دو Run پیوست است، تا پیش از Merge نظر لازم است.
این باگ را درست کندر BUILD-R18 Observation بازتولید شده؛ علت معلوم نیست؛ Investigation owner و response time می‌خواهیم.
این Story قابل تست است؟برای Rule بازپرداخت، Oracle و state transition مشخص نیست؛ خروجی مورد انتظار Example decision است.
همهٔ تست‌ها را بزنتغییر C18 به authorization path خورده؛ R2 و mandatory checks را انتخاب و skipped scope را ثبت کنید.
تأیید QA بدهRisk owner برای تصمیم نیازمند Evidence درباره R1/R2 و Unknownهای باقی‌مانده است.

قالب Collaboration Request

collaborationRequest:
  id: RQ-18
  baselineRef: COLLAB-BASE-v1
  riskRef: RISK-v6#R2
  sourceRef: BASIS-v5#AUTHZ-8
  subject: BUILD-R18 / commit C18
  observation: contract PASS; component negative case FAIL
  question: which evidence is invalid or incomplete?
  requestedCapability: testing + implementation + product context
  expectedOutput: joint evidence record
  channel/access: restricted collaboration registry
  responseDue: 2026-08-13T08:00:00Z
  requester: capability/requester-18
  status: ACKNOWLEDGED

درخواست باید Subject، Source، Observation، سؤال، قابلیت موردنیاز، خروجی و موعد داشته باشد. «Developer» یا «QA» به‌تنهایی Recipient دقیقی نیست؛ ممکن است پاسخ نزد فردی با Context محصول، پایگاه داده، امنیت یا Test modeling باشد.

Acknowledgement با Acceptance تفاوت دارد

Statusمعناکار بعدی
RECEIVEDرسیده، هنوز بررسی نشدهزمان پاسخ
NEEDS_CONTEXTSource/Subject/Question ناکافیدرخواست تکمیل
ACKNOWLEDGEDفهم مشترک اولیهMode/Owner/Due
SCHEDULEDکار مشترک زمان‌بندی شدهSession contract
REDIRECTEDقابلیت دیگری لازم استOwner تازه با trace
DECLINEDخارج Scope/ناامن/بی‌مجوزReason/alternative/escalation
CLOSEDخروجی و Follow-up ثبت شدهCorrection امکان‌پذیر

Seen، emoji یا حضور در جلسه Acceptance نیست. پاسخ می‌تواند موعد را مذاکره کند، Context بخواهد یا مسیر امن‌تری پیشنهاد دهد. Silence نیز consent یا agreement محسوب نمی‌شود.

Mode را از روی مسئله انتخاب کنید

Modeمناسب برایهزینه/محدودیتخروجی
Async questionسؤال محدود و Source قابل‌خواندنرفت‌وبرگشت/تأخیرپاسخ نسخه‌دار
Artifact reviewCode/Test/Contract/Model آمادهContext پنهانFinding/Disposition
Pair testingExploration یا diagnosis مشترکتمرکز و انرژی دو نفرCharter/Evidence
Pair programmingتغییر Code و یادگیری مشترکبرای همه/همیشه مناسب نیستCode/Test/decision
Example workshopRule/Example/Unknownنیاز به perspective مرتبطBasis decision
TriageFindingهای متعدد/متعارضنباید دادگاه مقصر باشدClassification/Owner
Independent checkBias/authority/high-riskFeedback دیرترCounter-evidence

Mode را با ابهام، شدت Risk، توزیع Context، نیاز به هم‌زمانی، هزینهٔ interruption، محدودیت دسترسی و زمان تصمیم انتخاب کنید. جلسه پاسخ پیش‌فرض نیست. Async pre-read و independent attempt پیش از Pair می‌تواند anchoring را کمتر کند؛ Pair نیز در اختلاف فوری Evidence ممکن است ارزشمند باشد.

Pair Testing یک Session طراحی‌شده است

  • Charter و Subject را پیش از شروع بنویسید.
  • رضایت، زمان، وقفه و حق توقف را روشن کنید.
  • Driver/Navigator یا Tester/Observer را موقت و قابل‌چرخش نگه دارید.
  • Observation، idea، question و action را با label جدا ثبت کنید.
  • Fix فوری را بدون Build/Commit/Verification گم نکنید.
  • در پایان Output، Unknown و Follow-up بسازید.

مقالهٔ On Pair Programming یک تجربهٔ مفصل درباره Driver/Navigator، تعویض نقش، سبک‌های Pairing، خستگی و تناسب‌نداشتن Pairing برای بعضی کارها ارائه می‌کند. این منبع استاندارد یا تضمین بهره‌وری نیست؛ راهنمای تجربی است و باید با Context و رضایت تیم Adapt شود.

Pairing نباید Micro-management شود

خطرSignalControl
Keyboard monopolyیک نفر همیشه اجرا می‌کندrole rotation/choice
Command modeدستور گام‌به‌گامquestion/space/stop
Authority pressureمخالفت ثبت نمی‌شودindependent note/appeal
Exhaustionتمرکز و کیفیت افت می‌کندtimebox/break/async
SurveillanceSession برای ارزیابی فردpurpose/data boundary
Instant-fix lossتغییر بدون tracecommit/build/verification

Three Amigos سه عنوان شغلی ثابت نیست

Business، Development و Testing سه perspective مفیدند، نه الزام حضور دقیق Product Owner، Developer و Tester در هر Story. برای یک تغییر مالی شاید Domain/Accounting، برای دسترسی Security/Privacy و برای عملیات SRE لازم باشد. سؤال مهم این است: چه perspectiveای برای Rule/Risk غایب است؟

Perspectiveسؤال نمونهخروجی
Value/DomainRule و استثنا چیست؟Example/Decision
ImplementationState/Dependency/Constraint چیست؟Technical option
TestingOracle/Boundary/Unknown چیست؟Quality question
Security/PrivacyAsset/abuse/data access چیست؟Control obligation
OperationsDetect/rollback/recover چگونه؟Runtime obligation
Accessibility/Userچه Contextی غایب است؟Representative check

BDD و Gherkin فقط وقتی زبان مشترک‌اند که معنا مشترک باشد

Given/When/Then می‌تواند Example را خوانا کند، اما Syntax یکسان، فهم یا توافق را تضمین نمی‌کند. Source، Rule، Example boundary، Oracle، Unknown و Decision باید معلوم باشند. سناریو ممکن است مستند، مثال، Specification یا Automated check باشد؛ این چهار ادعا را یکی نکنید. آموزش کامل در نوشتن سناریو Gherkin در BDD آمده است.

TDD تقسیم نقش‌ها را تعیین نمی‌کند

Red–Green–Refactor یک چرخهٔ Development است؛ نمی‌گوید Tester باید Test را بنویسد یا Developer «نقش تستر» را بازی می‌کند. تستر می‌تواند با Example، Risk، Oracle، property یا testability کمک کند و Developer می‌تواند در هر سطح Test بسازد. Ownership را از قابلیت، Context و Work بگیرید، نه از یک جدول ثابت Unit/Integration/E2E.

Shift-left همکاری را به حضور دائمی تبدیل نمی‌کند

بازخورد زودهنگام وقتی معنا دارد که سؤال و Artifact کافی باشد. دعوت تستر به همهٔ جلسه‌های طراحی می‌تواند صف، context switching و dependency بسازد. راهنمای نقش تستر در Shift-left انتخاب earliest economical point و اتصال آن به Countercheck دیرتر را توضیح می‌دهد.

CI/CD محل همکاری روی Evidence است، نه تقسیم سیلوها

کارقابلیت‌های محتملخروجی مشترک
Test selectionchange/risk/test modelingselected/skipped scope
Fixturedomain/data/implementation/testingversioned data state
Failure triageimplementation/environment/testingclassified observation
Flaky investigationrunner/test/systemhypothesis/evidence
Gate policyrisk/product/technical authoritypolicy/exception
Pipeline healthplatform/developer/testfeedback SLI

Developer-only Unit tests و Automation-engineer-only Integration/E2E یک تقسیم جهانی نیست. همچنین اجرای همهٔ Checkها روی هر Commit به‌خودی‌خود همکاری یا کیفیت نیست. Subject، Trigger، Risk، cost، latency، stability و Evidence obligation باید انتخاب را هدایت کنند.

Joint Evidence از توافق شفاهی مهم‌تر است

jointEvidence:
  id: JE-18
  requestRef: RQ-18
  subject: BUILD-R18 / commit C18
  sourceRefs: [BASIS-v5#AUTHZ-8, AUTHZ-MATRIX-v3]
  attempts: [RUN-C18-41, RUN-C18-42]
  observations: [contract PASS, component negative case FAIL]
  interpretations: [fixture mismatch candidate]
  unknowns: [deployed policy overlay]
  artifacts: [AUTHZ-FIXTURE-v3, TRACE-SYN-18]
  limitations: [synthetic identity; component environment]
  disposition: INVESTIGATE_FIXTURE
  decisionOwner: authorized-risk-owner
  followUp: system countercheck on BUILD-R19

Observation، Interpretation، Hypothesis و Cause را جدا کنید

لایهنمونهادعای ممنوع
ObservationRUN-۴۲ پاسخ ۲۰۰ دادDeveloper خراب کرده
InterpretationOracle انتظار ۴۰۳ داردRequirement قطعاً درست است
HypothesisFixture role mapping stale استعلت ریشه‌ای پیدا شد
Cause evidenceDiff+control+reproductionتنها علت ممکن
ActionFixture را version و rerun کنیدFix برابر Verification

زبان شخص‌محور—«کدت خراب است»، «QA گیر داده»، «فلانی این Bug را ساخته»—Evidence نیست. رفتار سیستم، Source، Attempt و اثر را ثبت کنید. این کار مسئولیت حرفه‌ای را حذف نمی‌کند؛ Attribution را تا داشتن شاهد معتبر عقب می‌اندازد.

Bug Report نقطهٔ شروع Investigation است

Expected/Actual، Build، State، Data، Attempt و Evidence به همکاری کمک می‌کنند؛ Screenshot یا Log خام همیشه کافی و بی‌خطر نیست. Reproduction Contract و Evidence Packet مرز Observation، Hypothesis، Correlation، Redaction و Verification را پوشش می‌دهد. ثبت Bug مجوز خودکار برای Severity، Priority، Cause یا Release decision نیست.

Finding را رد یا قبول نکنید؛ Disposition بدهید

DispositionمعناEvidence/Action
CONFIRMEDبا Source و Subject فعلی پشتیبانی شدOwner/priority route
NOT_REPRODUCEDدر Attempt محدود دیده نشدنه Invalid، نه Fixed
NEEDS_EVIDENCEOracle/Build/State ناکافیدرخواست مشخص
DUPLICATECanonical record موجودLink/scope check
EXPECTED_BY_BASISرفتار با Source جاری سازگارممکن است Product concern بماند
DEFERREDاقدام بعدی عقب افتادAuthority/reason/expiry
CORRECTED_RECORDگزارش قبلی اصلاح شدsupersedes/history

تعارض Evidence را با Authority حل نکنید

Senior بودن، مالک Code بودن یا عنوان QA به‌تنهایی Oracle نیست. Source hierarchy، Subject identity، comparable attempt و محدودیت را بررسی کنید. اگر تعارض رفتاری/بین‌فردی یا آسیب رابطه‌ای شکل گرفته، راهنمای مدیریت تعارض در QA مسیر جداگانه‌ای دارد؛ Collaboration Interface جای HR، grievance یا safety process نیست.

مسئولیت مشترک به معنی اختیار مشترک برای همه‌چیز نیست

موضوعContributionDecision owner نمونه
رفتار مورد انتظارProduct/Domain/Dev/TestProduct/domain authority
راه‌حل فنیDev/Test/Platform/Securitytechnical authority
Test evidenceهر capability مرتبطevidence owner
Severitytechnical/user/business evidencepolicy/triage authority
Priorityimpact/urgency/optionsProduct/work authority
Risk acceptanceevidence/recommendationnamed risk owner
Releasemulti-source readinessauthorized release owner

QA مالک انحصاری کیفیت یا Release نیست و Developer هم تنها مالک کیفیت فنی نیست. تفکیک Contribution، Accountability و Authority در رهبری تضمین کیفیت با مالکیت همگانی با جزئیات آمده است.

Review با Approval صوری پایان نمی‌یابد

Code/Test/Contract review باید Baseline، معیار، Finding، پاسخ، Disposition، Rework و Closure داشته باشد. Approve فقط نتیجهٔ Process تعریف‌شده است؛ کیفیت محصول، نبود Defect یا اجازهٔ Release را ثابت نمی‌کند. پروتکل کامل در Review Contract تا Finding و Closure قابل استفاده است.

Follow-up باید Owner و موعد داشته باشد

Follow-upOwnerDue/Exit
Source clarificationdomain capabilityDecision record
Fixture correctiondata/test capabilityversioned fixture
Implementation changeimplementation capabilitycommit/build
Counterchecktesting capabilityAttempt/Evidence
Risk decisionrisk owneraccept/mitigate/defer
Record correctionrecord ownersuperseding link

«بعداً بررسی می‌کنیم» Action نیست. اگر مانع روی Sprint Goal یا تصمیم جاری اثر دارد، Update کوتاه Fact/Evidence/Impact/Ask/Owner/Due بسازید؛ قالب آن در گزارش پیشرفت و موانع تست آمده است.

Closure بدون Verification ناقص است

Merged، Fixed، Comment resolved یا Bug closed نتیجهٔ نهایی رفتار را ثابت نمی‌کند. Verification باید Build/Commit، Environment/Data، Oracle، Attempt، Outcome و residual Unknown را ثبت کند. اگر Source یا Evidence بعداً تغییر کرد، رکورد پیشین را پاک نکنید؛ Correction با `supersedes` و علت بسازید.

Remote و Async باید First-class باشند

  • Context، Source و سؤال را پیش از جلسه قابل‌خواندن کنید.
  • Deadline و timezone را با ISO instant ثبت کنید.
  • پاسخ مستقل پیش از بحث هم‌زمان را ممکن کنید.
  • Caption، transcript، keyboard access و alternative text فراهم کنید.
  • تصمیم را از تماس خصوصی به Registry مشترک منتقل کنید.
  • نبود پاسخ را agreement یا consent تفسیر نکنید.

امنیت و حریم Evidence بخشی از همکاری است

ArtifactخطرControl
Screenshot/videoنام/اعلان/sessioncrop/redact/review
Log/tracetoken/PII/queryallowlist/restricted access
HARURL/body/header/cookiesanitize/quarantine
Database sampleواقعی/قابل بازشناسیsynthetic/minimized
Chat exportContext شخصی/retentionextract decision only
AI promptSource/secret leakageclassification/approved boundary

AI می‌تواند Candidate بدهد، نه تصمیم همکاری

AI می‌تواند Request را خلاصه، سؤال‌های گمشده را پیشنهاد، Diff را توضیح یا Meeting note را دسته‌بندی کند. Source/version، input classification، model/version، output digest و reviewer را ثبت کنید. مدل نباید رضایت Pairing، Cause، Priority، Blame، Performance فرد، Risk acceptance، Quality approval یا Release را تعیین کند و نباید Secret/PII/Production evidence مجازنشده دریافت کند.

اندازه‌گیری Collaboration بدون رتبه‌بندی افراد

MetricتعریفGuardrail/Countermetric
Request agecreated→actionable responseresponse quality
Context completenessrequired fields/eligible requestsform burden
Decision latencyEvidence ready→decisionpremature decision
Reopen reasonclosure بعداً invalid شدnew scope/change
Unknown closuredispositioned/eligible unknownsfalse certainty
Follow-up agingopen past duepriority/context
Mode fitnessadopt/adapt/stop reviewfocus time/WIP

تعداد پیام، جلسه، Pair hour، Bug بسته‌شده، Comment یا Approval سنجهٔ کیفیت همکاری نیست. Metric را برای یادگیری سیستم استفاده کنید، نه مقایسهٔ Developer و Tester، ارزیابی فرد، سهمیهٔ جلسه یا پاداش. تغییر Risk mix، Work type و reporting behavior نتیجه را جابه‌جا می‌کند.

آزمایش تکرارپذیر: آیا فعالیت زیاد یعنی همکاری سالم؟

یک Fixture کاملاً ساختگی و بدون dependency با Node.js ۲۶.۷.۰ اجرا شد. سنجهٔ سطحی فقط پنج Pair session، هجده پیام و شش Bug بسته‌شده را دید و PASS داد. Validator قراردادی همان رکورد را بر اساس Baseline، Request، Session، Evidence، Authority، Closure و Improvement بررسی کرد.

خروجی Validator: ۵۲ Finding

fixture: SYN-DEV-TEST-COLLABORATION-01
runtime: Node.js v26.7.0
superficial: PASS | pairSessions=5 | messages=18 | bugsClosed=6

auditedDraft: HOLD
findings (52):
1 stale-initiative:INIT-17->INIT-18
2 stale-productGoal:PG-9->PG-10
3 stale-sprintGoal:SG-17->SG-18
4 stale-testBasis:BASIS-v3->BASIS-v5
5 stale-repository:checkout-web->checkout-api
6 stale-commit:C16->C18
7 stale-build:latest->BUILD-R18
8 stale-riskRegistry:RISK-v3->RISK-v6
9 stale-definitionOfDone:DOD-v3->DOD-v5
10 duplicate-request:RQ-1
11 unknown-risk:R99
12 RQ-1-missing-source
13 RQ-1-question-unbounded
14 RQ-1-trigger-rationale-missing
15 RQ-1-recipient-not-capability-based
16 RQ-1-response-due-missing
17 RQ-1-channel-missing
18 RQ-1-status-missing
19 RQ-1-evidence-access-unbounded
20 RQ-1-redaction-missing
21 RQ-1-expected-output-missing
22 session-unknown-request:RQ-X
23 session-objective-missing
24 collaboration-mode-rationale-missing
25 pairing-consent-missing
26 implementation-perspective-missing
27 roles-fixed-by-job-title
28 role-rotation-missing
29 timebox-missing
30 accessibility-controls-missing
31 recorder-missing
32 decision-authority-missing
33 artifact-missing
34 joint-output-missing
35 unknowns-missing
36 follow-up-missing
37 person-blame-language
38 observation-interpretation-mixed
39 root-cause-overclaim
40 priority-self-assigned
41 qa-exclusive-quality-ownership
42 developer-test-silo
43 automation-capability-silo
44 all-tests-every-commit
45 approval-as-quality-proof
46 closure-without-verification
47 correction-path-missing
48 quality-speed-cost-guarantee
49 improvement-baseline-missing
50 improvement-measure-missing
51 improvement-guardrail-missing
52 individual-ranking-metric

corrected: READY_FOR_COLLABORATION_REVIEW | findings=0

نسخهٔ اصلاحی چه کرد؟

Baseline را روی INIT-۱۸/PG-۱۰/SG-۱۸/BASIS-v5/checkout-api/C18/BUILD-R18/RISK-v6/DOD-v5 قفل کرد؛ یک Request یکتا و Risk/Source-bound ساخت؛ Async review را پیش از Pair روی اختلاف Evidence انتخاب کرد؛ رضایت، perspective، نقش چرخشی، timebox، دسترسی‌پذیری، recorder، Artifact، Unknown، Decision owner و Follow-up را ثبت کرد؛ Blame، Cause overclaim، silo و QA gate را حذف کرد؛ و Improvement را به baseline/measure/guardrail بست.

`READY_FOR_COLLABORATION_REVIEW` فقط کامل‌بودن ساختار Fixture را می‌گوید. کیفیت رابطه، امنیت روانی، صحت Source/Code/Test/Evidence، علت ریشه‌ای، کفایت Risk، سرعت رفع، کاهش هزینه، کیفیت محصول، رضایت کاربر، موفقیت Agile یا آمادگی Release را اثبات نمی‌کند.

آزمایشگاه فارسی و آفلاین همکاری

Lab یک Checkout خیالی بدون شبکه است: Order، PaymentAttempt، PSP Stub، Callback، Ledger و Reconciliation. Developer و Tester نام اشخاص نیستند؛ دو capability ساختگی‌اند که روی اختلاف Contract و Component evidence کار می‌کنند. هیچ شرکت، محصول، کاربر، پرداخت یا Production واقعی وجود ندارد.

FaultRequestJoint workCountercheck
duplicate callbackidempotency evidence conflictstate model + replayintegration run
late callbacktimeout Oracle uncleartimeline/examplesystem clock
wrong tenantauthorization mismatchmatrix + negative fixturedeployed policy
IRR/toman viewdisplay/canonical mismatchconversion propertyUI/API reconcile
stale BuildEvidence disagreementsubject identity auditsame-build rerun
  • IRR کاملاً خیالی Canonical است؛ تومان فقط View صریح.
  • رقم فارسی/عربی/لاتین، Unicode و RTL/LTR در Fixture کنترل می‌شود.
  • زمان UTC instant و Asia/Tehran view است؛ جلالی فقط Presentation است.
  • Tenant/Order/Attempt/Event/Ledger/Run/Build/Evidence identity جداست.
  • نام/موبایل/ایمیل/IP/PAN/CVV2/OTP/cookie/token/credential/log واقعی وجود ندارد.
  • هیچ ادعای بانکی، مالی، حقوقی، مالیاتی، امنیتی یا حریم خصوصی ایران ساخته نمی‌شود.

۲۹ ضدالگوی همکاری تستر و توسعه‌دهنده

  1. Agile به‌عنوان انقلاب یا تضمین
  2. همکاری به‌عنوان الزام بقا
  3. تیم سنتی همیشه متخاصم
  4. تستر به‌عنوان Coach/Consultant دائمی
  5. حضور در همهٔ جلسه‌ها
  6. ۱۰۰× هزینهٔ Bug بدون Context
  7. BDD تضمین فهم مشترک
  8. TDD یعنی Developer نقش Tester دارد
  9. Pairing همیشه کیفیت را شدیداً بالا می‌برد
  10. Pairing بدون consent
  11. Keyboard monopoly
  12. Job title برابر Session role
  13. Three Amigos دقیقاً سه عنوان
  14. Emoji برابر Acknowledgement
  15. Silence برابر Agreement
  16. QA مالک کیفیت
  17. QA صاحب Release
  18. Developer فقط Unit test
  19. Automation specialist فقط E2E
  20. همهٔ Testها روی هر Commit
  21. Approve برابر Quality proof
  22. Bug report برابر Cause
  23. Not reproduced برابر Invalid
  24. Fixed برابر Verified
  25. Closed بدون Follow-up
  26. Screenshot/Log خام و عمومی
  27. تعداد پیام/جلسه KPI فردی
  28. نبود تعارض برابر اعتماد
  29. تضمین سرعت/هزینه/کیفیت/رضایت

Pilot سی‌روزهٔ Collaboration Interface

بازهکارExit محدود
روز ۱–۳سه interaction گمشده و Baselineproblem sample
روز ۴–۷قالب Request/Ackسه Request محدود
روز ۸–۱۰Mode matrixrationale ثبت‌شده
روز ۱۱–۱۵یک Async review و یک PairJoint Evidence
روز ۱۶–۲۰Decision/Follow-up/Verificationclosed loop
روز ۲۱–۲۵request age + guardrailbounded measures
روز ۲۶–۳۰Review adopt/adapt/stopversioned learning

Pilot موفق یعنی Context کمتر گم شده و چند درخواست به خروجی و Follow-up متصل شده‌اند؛ نه اینکه سرعت، کیفیت یا رابطه حتماً بهتر شده باشد. اگر قالب، جلسه یا Pairing WIP و interruption را بالا برد، Scope را کم یا Mode را عوض کنید.

چک‌لیست Audit همکاری

  • Goal/Basis/Repository/Commit/Build/Risk/DoD/Cutoff جاری‌اند.
  • Request ID یکتا و Source/Risk/Subject مشخص دارد.
  • Observation، سؤال، capability، output و due روشن‌اند.
  • Acknowledgement، acceptance و scheduling جدا هستند.
  • Mode با ابهام/Risk/Context/cost توجیه شده است.
  • Pairing رضایت، timebox، حق توقف و نقش چرخشی دارد.
  • perspective غایب و independence لازم بررسی شده‌اند.
  • Artifact نسخه‌دار و Evidence به Subject/Attempt وصل است.
  • Observation/Interpretation/Hypothesis/Cause جدا هستند.
  • Unknown و forbidden inference ثبت شده‌اند.
  • QA quality/release gate یا نقش‌های تستی ثابت ساخته نشده است.
  • Severity/Priority/Risk/Release authority صریح است.
  • Disposition دلیل و Evidence دارد.
  • Follow-up Owner/Due/Exit دارد.
  • Closure به Verification وصل است.
  • Correction و supersedes تاریخچه را حفظ می‌کند.
  • Evidence redaction/access/retention دارد.
  • Async/timezone/accessibility و نبود consent رعایت شده‌اند.
  • AI فقط candidate و تحت review است.
  • Metric برای یادگیری سیستم است، نه رتبه‌بندی فرد.
  • هیچ quality/speed/cost/success guarantee ساخته نشده است.

پرسش‌های متداول

آیا تستر و توسعه‌دهنده باید هر روز Pair کنند؟

خیر. Pairing برای مسئلهٔ مبهم، یادگیری یا Evidence conflict می‌تواند مفید باشد، اما تمرکز دو نفر، consent و زمان می‌خواهد. برای سؤال محدود Async یا Review ممکن است بهتر باشد. Mode را آزمایشی انتخاب و با focus time، WIP و کیفیت خروجی بازبینی کنید.

در Scrum مسئول تست Developer است یا Tester؟

Scrum عنوان Tester یا تقسیم تست بر اساس عنوان شغلی تعریف نمی‌کند. Developers همهٔ افراد متعهد به ساخت Increment قابل‌استفاده‌اند و Scrum Team برای Increment ارزشمند accountable است. Work را بر اساس Risk، مهارت، Context و ظرفیت توزیع کنید؛ تخصص و استقلال لازم را هم حفظ کنید.

آیا BDD و Three Amigos اختلاف نیازمندی را حذف می‌کنند؟

خیر. آنها می‌توانند Rule، Example و perspective را مرئی کنند؛ ولی Source ناقص، stakeholder غایب، Example بد یا تصمیم مبهم باقی می‌ماند. خروجی را به Basis، Unknown، Decision و Countercheck وصل کنید و Syntax Gherkin یا تعداد شرکت‌کنندگان را موفقیت ندانید.

وقتی Developer و Tester درباره یک Bug اختلاف دارند چه کنیم؟

Build/State/Data/Oracle و Attempt را هم‌تراز کنید؛ Observation را از تفسیر جدا و یک Control یا rerun قابل‌مقایسه بسازید. سپس Disposition بدهید. Seniority یا عنوان نقش Oracle نیست. اگر تعارض رفتاری یا آسیب رابطه‌ای وجود دارد، مسیر حل تعارض مستقل لازم است.

چگونه همکاری را بدون شمارش جلسه و پیام بسنجیم؟

Request age، Context completeness، Decision latency، Follow-up aging، reopen reason و Mode fitness را همراه guardrailهایی مثل focus time، form burden و premature closure مشاهده کنید. این سنجه‌ها برای یادگیری سیستم‌اند؛ کیفیت محصول یا عملکرد فرد را ثابت نمی‌کنند.

جمع‌بندی: همکاری یک حلقهٔ Evidence است

همکاری تستر و توسعه‌دهنده با شعار «کیفیت وظیفه همه است» یا اجبار Pairing ساخته نمی‌شود. Context جاری را قفل کنید، Request محدود بفرستید، پاسخ و Mode را مذاکره کنید، نقش و consent را روشن نگه دارید، Joint Evidence و Unknown بسازید، Authority را از Contribution جدا کنید و Follow-up را تا Verification و Correction ببندید. این Interface احتمال گم‌شدن Context را قابل‌بررسی می‌کند؛ اما کیفیت، سرعت، هزینه، اعتماد، رضایت یا موفقیت پروژه را تضمین نمی‌کند.

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