یک Suite رگرسیون دستی ۸۰ نفر-ساعت زمان می‌برد و اجرای خودکار آن ۴ ساعت طول می‌کشد. تیم ماهی دو بار Suite را اجرا می‌کند. Spreadsheet می‌نویسد: «۷۶ × ۲ × ۱۲ نفر-ساعت صرفه‌جویی؛ ROI مثبت؛ پروژه را تصویب کنید.» اما چهار ساعت Runtime ماشین با چهار ساعت کار انسان یکی نیست، زمان آزادشده الزاماً Cash saving نیست، Setup و نگهداری و Triage جا افتاده‌اند، تعداد اجرای آینده هنوز Forecast است و شاید گلوگاه Release اصلاً Regression نباشد.

ROI اتوماسیون تست (Test Automation ROI) یک درصد تزئینی برای توجیه خرید ابزار نیست. یک Automation Investment Case است که هزینه‌ها، منافع، زمان، ریسک و گزینه‌های واقعی را نسبت به Baseline/Counterfactual یکسان مقایسه می‌کند؛ سپس Forecast را با Actuals بازبینی می‌کند. اگر منفعت پولی قابل‌دفاع ندارید، تحلیل Cost-effectiveness یا Capacity/Service case شاید صادقانه‌تر از ROI ساختگی باشد.

پاسخ کوتاه: برای محاسبه ROI اتوماسیون، جریان نقدی افزایشی هر گزینه را نسبت به «اگر اتوماسیون را اجرا نکنیم چه می‌شود؟» بسازید؛ TCO کامل، منافع Cashable/Cost avoidance/Capacity/Risk را جدا کنید؛ نرخ تنزیل و افق را ثبت کنید؛ NPV، ROI و Payback را با سناریو و حساسیت گزارش دهید؛ و هیچ Benefit را بدون Owner، Mechanism، Baseline و Evidence دوباره نشمارید.

این راهنما دقیقاً چه چیزی را مالک می‌شود؟

این مقاله مالک پروندهٔ تصمیم سرمایه‌گذاری اتوماسیون است: Decision → Options → Baseline/Counterfactual → Scope/Horizon → Cost/Benefit Registry → Cash-flow model → Risk/Uncertainty → ROI/NPV/Payback → Recommendation → Benefits realization → Correction. برای انتخاب سناریوی مناسب، هرم تست و شروع فنی به راهنمای اتوماسیون تست بروید؛ برای Evidence، Flakiness، نگهداری و Retirement هر Check، چرخهٔ عمر اتوماسیون تست مالک موضوع است.

تخصیص بودجه بین چند سرمایه‌گذاری QA در Portfolio بودجه‌بندی QA انجام می‌شود؛ Attribution اثر مشترک در Contribution Evaluation؛ ادعاهای اعتماد/برند در تست نرم‌افزار و اعتماد مشتری. این صفحه آن مالکیت‌ها را با یک درصد ROI ادغام نمی‌کند.

ROI اتوماسیون تست چیست و چه نیست؟

ROI معتبرROI نامعتبر
مقایسهٔ جریان‌های افزایشی گزینه‌ها با Counterfactualجمع‌کردن هر منفعت QA و نسبت‌دادن آن به Automation
یک Convention نسخه‌دار برای هزینه/منفعت/تنزیلفرمول بدون افق، زمان و واحد پول
Forecast با Range، فرض و خطای تاریخیعدد قطعی و Break-even عمومی
Decision aid همراه ریسک و آثار غیرپولیاثبات کیفیت، Cause یا تضمین بازگشت
Forecast→Actual→CorrectionSpreadsheet یک‌بارمصرف برای گرفتن بودجه

فرمول پایه و Convention

Incremental ROI over horizon H (%) =
  [PV(attributable incremental benefits) - PV(incremental costs)]
  ────────────────────────────────────────────────────────────── × 100
                  PV(incremental costs)

NPV = Σ from t=0..H [incremental net cash flow_t / (1 + r)^t]

Payback = first period where cumulative net cash flow becomes non-negative

Every output must state:
perspective, option, counterfactual, horizon, currency basis,
real/nominal convention, discount rate/source, tax/accounting treatment,
cash-flow timing, uncertainty method and as-of date.

بعضی سازمان‌ها ROI را بدون تنزیل و بعضی با Present Value گزارش می‌کنند. فرمول جهانی واحدی برای همهٔ Business caseها وجود ندارد؛ Convention را با Finance تصویب و کنار عدد بنویسید. NPV معمولاً زمان‌بندی Cash flow را بهتر از یک Ratio پنهان‌گر نشان می‌دهد. Payback نیز ارزش پس از نقطهٔ سربه‌سر و Risk را نادیده می‌گیرد؛ هیچ‌کدام به‌تنهایی تصمیم نیست.

اول Decision، نه درصد ROI

پرسش «آیا اتوماسیون ارزش دارد؟» گزینه و Authority ندارد. پرسش تصمیمی چنین است: «برای Regression مسیر Checkout در ۱۲ ماه آینده، میان O0 بهبود اجرای دستی، O1 اتوماسیون انتخابی ۲۰ سناریوی پایدار و O2 اتوماسیون گسترده، کدام گزینه با Budget و Risk appetite فعلی وارد Pilot شود؟»

investment_decision_id: AUTO-INV-SYN-042-v1
question: "کدام گزینه برای Pilot محدود Checkout انتخاب شود؟"
options: [O0_MANUAL_IMPROVEMENT, O1_SELECTIVE_AUTOMATION, O2_BROAD_AUTOMATION]
authority_role: ROLE-INVESTMENT-DECISION
decision_due: 2026-09-15T09:00:00Z
budget_ceiling: fictional IRR 900,000,000
horizon: 12 months
required_outputs: [TCO, NPV, ROI, payback-range, risk, non-monetized-effects]
not_deciding: [release, product-quality, people-reduction, vendor-contract]
review_due: 2026-11-01T09:00:00Z

Perspective تعیین می‌کند چه چیزی هزینه یا منفعت است

Perspectiveچه چیزی می‌بیند؟خطر مخلوط‌کردن
Budget/Cashپرداخت و دریافت واقعی واحد سازمانیزمان آزادشده را Cash saving می‌نامد
Financial enterpriseاثر مالی کل سازمان و Transferهای داخلیهزینهٔ یک واحد و منفعت واحد دیگر را دوباره می‌شمارد
OperationalCapacity، Lead time، Service level و EvidenceOutcome غیرپولی را با ROI قاطی می‌کند
Economic/socialهزینهٔ فرصت و آثار گسترده‌تر تحت روش رسمینرخ/قواعد عمومی را بی‌دلیل به Business case خصوصی منتقل می‌کند

Perspective را Freeze کنید. Charge داخلی ممکن است برای یک تیم Cost و برای تیم دیگر Revenue باشد اما برای سازمان Transfer خنثی باشد. این مقاله Business case داخلی را توضیح می‌دهد، نه حسابداری رسمی، مالیات یا ارزش‌گذاری اجتماعی؛ Finance/Accounting مسئول باید Convention را تأیید کند.

گزینهٔ «عدم تغییر» را واقع‌بینانه بسازید

Counterfactual نباید «دستی برای همیشه با هزینهٔ ثابت» باشد. بدون Automation هم Scope، Release cadence، Salary، Test design، Tooling و Process تغییر می‌کنند. O0 می‌تواند بهبود Risk-based regression، حذف Case کم‌ارزش یا Testability بهتر باشد. Automation باید با بهترین گزینهٔ جایگزین مقایسه شود، نه با وضعیت مصنوعی بد.

Baseline و Counterfactual فرق دارند

مفهومتعریفمثال
Baselineمشاهدهٔ واقعی پیش از Interventionمیانهٔ effort ده Run هم‌Scope
Counterfactual forecastپیش‌بینی اینکه بدون گزینه چه رخ می‌دهدO0 با Scope و Wage forecast
Targetسطح مطلوبFeedback زیر ۳۰ دقیقه
ActualOutcome تحقق‌یافته پس از تصمیمeffort و Cash outturn هر ماه
Varianceاختلاف Forecast و Actual با علت/CorrectionMaintenance دو برابر فرض

Baseline هم‌Scope و هم‌کیفیت لازم است

اجرای دستی ۸۰ ساعته و اجرای خودکار چهار‌ساعته فقط وقتی قابل‌مقایسه‌اند که Risk obligations، Scenario/Data/Environment، Oracle، Evidence و Review outcome هم‌سطح باشند. اجرای سریع‌تر که فقط ۲۰٪ Scope را پوشش می‌دهد Benefit همان Suite نیست. Eligible population و Acceptance of evidence را نسخه‌دار کنید.

Scope و Horizon را قبل از Cost model ثابت کنید

«اتوماسیون Regression» بیش از حد بزرگ است. Subject، Product/Service، Journey، Test level، Browser/device/environment، Scenario population، Data، CI cadence، Start/ramp/steady/retirement dates و Out-of-scope را بنویسید. Horizon کوتاه هزینهٔ Setup را برجسته و Horizon دور Benefits نامطمئن را بزرگ می‌کند؛ هر دو باید با Decision و عمر محتمل Artifact متناسب باشند.

از Options analysis استفاده کنید

گزینهتوصیفTrade-off
O0بهبود اجرای دستی، Sampling و TestabilitySetup کم؛ تکرار انسانی بیشتر
O1۲۰ سناریوی پایدار/پرتکرار با Evidence محدودقابل‌بازگشت‌تر؛ Benefit محدود اما آزمون‌پذیر
O2Suite گسترده چندمرورگر/دادهCoverage بالقوه بیشتر؛ TCO، Flake و Lock-in بالاتر
O3خرید سرویس/پلتفرم مدیریت‌شدهTime-to-start کمتر؛ Vendor/FX/exit risk

گزینه‌ها باید Scope/Outcome مشترک داشته باشند و Reversibility/stop/exit روشن باشد. پروژهٔ بزرگ نامطمئن را می‌توان با Real option ساده به Pilot مرحله‌ای شکست: مبلغ کوچک برای خرید Evidence، سپس Gate برای Scale/Redesign/Stop؛ نه Commitment کامل براساس Forecast اولیه.

TCO اتوماسیون تست چیست؟

Total Cost of Ownership فقط License و نوشتن Script نیست. تمام منابع افزایشی لازم برای طراحی، ساخت، اجرا، تفسیر، نگهداری، کنترل و خروج را در Horizon می‌گیرد. برای هر Cost، Quantity×Unit cost، timing، source، owner، range، escalation و double-count check ثبت کنید.

Cost familyنمونه‌هامحرک
Discovery/designRisk mapping، feasibility، architecture، pilotسناریو و Integration
BuildFramework، Check، Data factory، Oracle، CI integrationComplexity/coverage obligation
Tool/infrastructureLicense، Runner، Cloud compute، device، storageConcurrency/execution/minutes
OperationTrigger، monitoring، result review، evidence retentionRun frequency/failure volume
MaintenanceProduct/locator/data/env change، dependency upgradeChange rate/coupling
Failure demandFlake triage، rerun، false alert، outage، quarantineSignal quality
Enablement/governanceTraining، review، security، privacy، audit، accessibilityteam/control scope
Transition/exitMigration، decommission، export، vendor lock-inarchitecture/vendor
Opportunity costبهترین کار جایگزین تیمcapacity diverted

هزینهٔ نیروی انسانی را دو بار نشمارید

اگر Full-loaded hourly rate شامل Salary، Benefits و Overhead است، آن‌ها را دوباره اضافه نکنید. Calendar time و person-hours جدا هستند. چهار مهندس × دو هفته الزاماً ۸ نفر-هفتهٔ Incremental cash نیست اگر Salary ثابت می‌ماند؛ اما Capacity/opportunity cost دارد. Finance باید Cash، accounting allocation و economic opportunity را تفکیک کند.

Runtime ماشین با Effort انسان فرق دارد

زمانواحد/Costدر مدل
Wall-clock runtimeدقیقه تا FeedbackService outcome و compute
Compute minutesRunner×minuteInfrastructure cash/capacity
Human setup effortperson-hourOperational cost
Review/triage effortperson-hourFailure demand
Waiting blocked timeperson-hour یا queue-hourفقط با Evidence و overlap rule
Elapsed release lead timecalendar durationOutcome؛ خودکار Cash benefit نیست

Maintenance را Driver-based برآورد کنید

درصد ثابت «مثلاً ۲۰٪ ساخت» برای همهٔ Suiteها قابل‌دفاع نیست. Drivers را ثبت کنید: Product change rate، UI/API coupling، Test-data churn، Environment instability، Dependency/tool upgrades، Flake، skill mix و retirement. Range را از Pilot و Historical analogues بسازید و Actual maintenance را جدا از feature expansion نگه دارید.

Failure demand هزینهٔ پنهان اصلی است

Failed Check یک Defect نیست. Triage، rerun، quarantine، investigation، environment recovery و alert fatigue منابع مصرف می‌کنند. Cost model باید Accepted signal، false alert، product failure، test defect، environment failure و unknown را جدا کند. Suite پرسرعت با Signal ضعیف ممکن است TCO را بیشتر کند.

Sunk cost در تصمیم آینده

Green Book ۲۰۲۶ دولت بریتانیا می‌گوید هزینهٔ غیرقابل‌بازگشتِ رخ‌داده نباید تصمیم آینده را منحرف کند، اما Opportunity cost منابع موجود مهم است. برای تصمیم Continue/Stop، هزینهٔ سال قبل Sunk است؛ نگهداری آینده، ارزش جایگزین Runner و Exit cost Incremental‌اند. این راهنمای Appraisal دولتی، قالب اجباری شرکت یا نرخ تنزیل ایران نیست.

Cost Estimate باید Audit trail داشته باشد

راهنمای Cost Estimating سازمان GAO آمریکا بر purpose/scope/schedule، Technical baseline، Work breakdown، assumptions، data، method، sensitivity/risk، documentation و به‌روزرسانی با Actual costs تأکید می‌کند. این منبع عمدتاً برنامه‌های بزرگ را هدف دارد؛ ما فقط اصول Auditability را متناسب و محدود اقتباس می‌کنیم.

cost_item_id: COST-AUTO-042-17
option_id: O1_SELECTIVE_AUTOMATION
work_package: failure-demand/triage
quantity: 18..42 person-hours/month
unit_cost: fictional IRR/person-hour; finance-approved source
timing: months 2..12
method: three-point estimate from shadow pilot
assumptions: [run-frequency-v2, failure-mix-v1]
dependencies: [runner-stability, product-change-rate]
owner_role: ROLE-COST-OWNER
source_refs: [PILOT-SYN-042, RATE-CARD-SYN-v3]
double_count_group: HUMAN_OPS
actuals_source: TIMESHEET-AGGREGATE-v2
confidence_basis: limited synthetic pilot; low
not_claimed: market rate or future certainty

Benefit taxonomy: همهٔ منفعت‌ها پول نقد نیستند

نوع Benefitتعریفورود به Cash ROI
Cashable savingکاهش واقعی پرداخت/بودجه با Action مشخصبله، پس از Finance validation
Cost avoidanceهزینهٔ آیندهٔ محتمل که واقعاً اجتناب می‌شودبا Counterfactual و probability؛ جدا از Cash saving
Released capacityنفر-ساعت آزاد برای کار دیگرخودکار نه؛ ابتدا Capacity
Throughput/serviceFeedback/Lead time/frequency/availability بهترفقط با Mechanism مالی جدا
Risk reductionکاهش Exposure یا probability/consequenceExpected value با شواهد و عدم‌قطعیت
Non-monetized outcomeEvidence، accessibility، learning، experienceجدا در Scorecard؛ نه پول ساختگی

زمان آزادشده چه زمانی Cash saving است؟

کاهش ۱۰۰ person-hour با Salary ثابت، پرداخت سازمان را ۱۰۰ ساعت کم نمی‌کند. Cashable می‌شود اگر Overtime/Vendor spend حذف، استخدام برنامه‌ریزی‌شده واقعاً اجتناب، Contract کاهش یا بودجه آزاد و ثبت شود. در غیر این صورت Released capacity است؛ Benefit مهمی که باید Owner و redeployment plan داشته باشد.

capacity_benefit_id: BEN-CAP-042
baseline_effort: comparable accepted manual evidence/person-hours
future_counterfactual_effort: range by run and month
automated_human_effort: setup + review + triage + maintenance
released_capacity: counterfactual - automated effort
redeployment_action: "risk-based exploratory sessions for uncovered paths"
owner_role: ROLE-CAPACITY-OWNER
cashable: false
cash_conversion_trigger: none approved
double_count_rule: do not also book as salary saving or new revenue
evidence_due: monthly actuals

صرفه‌جویی اجرای دستی را درست محاسبه کنید

فرمول خام (manual time − automation runtime) × runs × hourly rate سه خطا دارد: Runtime ماشین را effort انسان می‌گیرد، همهٔ Runهای Forecast را قطعی می‌داند و Scope/quality را همسان فرض می‌کند. مدل بهتر، Manual human effort را با Automation setup/review/triage/maintenance human effort مقایسه و Compute/License را جدا می‌کند؛ فقط Runهای واجدشرایط و احتمال تحقق را می‌گیرد.

Frequency Benefit را باد نکنید

اگر Suite خودکار روزی ۲۰ بار اجرا شود، نمی‌توان ادعا کرد ۲۰ اجرای دستی کامل «صرفه‌جویی» شده؛ تیم احتمالاً هرگز ۲۰ Run دستی انجام نمی‌داد. Counterfactual واقع‌بینانه را مدل کنید. Runهای افزوده می‌توانند Evidence/feedback Benefit باشند، نه avoided manual cash.

Cost avoidance با Savings فرق دارد

«در آینده پنج نفر لازم داشتیم، حالا نداریم» Forecast هزینهٔ اجتناب‌شده است، نه Cash outturn. Hiring plan، trigger، probability، timing، wage basis و جایگزین‌ها را ثبت کنید. وقتی برنامهٔ استخدام هرگز تصویب نشده، اجتناب آن Benefit قطعی نیست.

ادعای «رفع باگ در Production صد برابر گران‌تر است» را حذف کنید

Multiplier جهانی ۱۰۰× بدون Dataset، Defect class، Phase، Cost boundary و روش قابل‌انتقال نیست. هزینهٔ یک Typo، Data corruption و Security incident یکسان نیست. از دادهٔ داخلی Incident/Defect cohort با Work breakdown استفاده کنید و Range بدهید. اگر داده ندارید، Benefit را Hypothesis یا Scenario نگه دارید، نه درآمد قطعی.

Expected avoided loss چگونه مدل می‌شود؟

Expected incremental avoided loss =
  Σ scenarios [
    (P_loss_without_option - P_loss_with_option)
    × consequence_if_loss
    × eligible_exposure
  ]

Required boundaries:
- scenario and asset/journey
- probability method and uncertainty
- consequence components and caps
- automation detection/control mechanism
- existing controls and overlap
- attribution/contribution assumption
- no double count with defect-cost or revenue benefit
- specialist and decision-authority review

این فرمول Cause را ثابت نمی‌کند. Probability delta باید از Pilot، Historical comparison، Experiment یا expert elicitation شفاف بیاید و Scenario analysis آن را stress-test کند. Catastrophic hypothetical را با احتمال ۱ و خسارت دلخواه ضرب نکنید. Risk acceptance و Release همچنان تصمیم‌های جدا هستند.

Time-to-market فقط با مسیر درآمدی Benefit مالی است

کوتاه‌شدن Runtime تضمین نمی‌کند Release جلو بیفتد؛ Bottleneck شاید Product approval، Deployment یا Compliance باشد. حتی Release زودتر نیز خودکار Revenue نمی‌سازد. Critical path، release-date delta، eligible demand، incremental margin، cannibalization، adoption و سایر Constraints لازم‌اند. در نبود آن‌ها، Lead time یک Operational outcome است.

Coverage و تعداد Script Benefit مالی نیستند

Script count، Execution count و Code coverage Activity/Output هستند. Benefit باید به Decision/Outcome متصل شود و Guardrail داشته باشد. هزار Check کم‌ارزش ممکن است Triage را زیاد کند. Risk-evidence obligations accepted، actionable feedback و avoided rework کاندیدهای دقیق‌تری‌اند؛ باز هم Attribution جدا می‌خواهند.

اعتماد، رضایت، روحیه و برند را پول‌سازی نکنید

Automation→باگ کمتر→رضایت/وفاداری/برند→درآمد یک زنجیرهٔ بلند با عوامل مشترک است. بدون Theory، Measure، Baseline، valuation method و Attribution، آن را Non-monetized hypothesis نگه دارید. ادعای اعتماد باید طبق مرزهای شواهد اعتماد مشتری بررسی شود؛ «روحیه بهتر» نیز نیازمند سنجش داوطلبانه و حریم خصوصی است.

Double counting را با Benefit Registry بگیرید

ادعاهای هم‌پوشانخطرقاعده
زمان آزادشده + Salary savingیک effort دو BenefitCapacity یا Cash؛ فقط با conversion ثبت‌شده
Defect avoided + Incident avoidedیک Scenario دوبارCanonical scenario/benefit group
Lead time + Revenue earlierOperational outcome و مالی تکراریفقط Revenue delta در Cash، Lead time در Scorecard
Coverage + Quality + TrustOutput به سه Outcome تبدیل می‌شودCoverage non-monetized؛ Outcome مستقل
Hiring avoided + Vendor avoidedدو Alternative برای یک DemandCounterfactual option-specific
benefit_id: BEN-AUTO-042-08
option_id: O1_SELECTIVE_AUTOMATION
type: RELEASED_CAPACITY
subject_outcome: accepted comparable regression evidence
baseline_ref: BASE-SYN-042
counterfactual_ref: CF-O0-v2
mechanism: stable checks replace named repeatable manual steps
measure_contract: M-CAPACITY-v3
quantity_range: 70..110 person-hours/month
monetization: NONE
owner_role: ROLE-BENEFIT-OWNER
evidence_refs: [RUN-REGISTRY-v2, EFFORT-SNAPSHOT-v3]
dependencies: [run-volume, scope-equivalence, signal-quality]
double_count_group: REGRESSION_CAPACITY
not_claimed: cash-saving, revenue, quality, people-reduction
realization_due: monthly

Nominal، Real و Inflation را مخلوط نکنید

Cash flowهای Nominal شامل Inflation forecast‌اند و باید با نرخ Nominal سازگار Discount شوند؛ Real cash flowها با قیمت ثابت و نرخ Real. نرخ تورم را دوباره به Discount rate اضافه نکنید. Salary، Cloud، License و FX ممکن است Escalation متفاوت داشته باشند. Finance باید Source/as-of/scenario را تأیید کند.

ریال، تومان و نرخ ارز در پروندهٔ ایرانی

واحد Canonical را IRR یا واحد رسمی موردتوافق Finance نگه دارید؛ تومان فقط View صریحاً برچسب‌دار باشد. مبلغ «۵۰ میلیون» بدون واحد ممنوع است. هزینهٔ License ارزی باید Currency، quantity، FX source، as-of، settlement assumptions، fees و low/base/high scenario داشته باشد. این مقاله توصیهٔ ارزی، تحریمی، مالیاتی، حقوقی یا حسابداری نیست.

money_contract: MONEY-SYN-v2
canonical_currency: fictional IRR
display_toman: presentation-only; explicitly labelled; divide by 10
price_basis: nominal
base_date: 2026-08-01
foreign_item_currency: fictional USD
fx_source: FINANCE-APPROVED-SYN-v1
fx_as_of: 2026-08-01T09:00:00Z
fx_scenarios: [LOW, BASE, HIGH]
fees_and_tax: finance review required; not assumed zero
rounding: store integer IRR; round only presentation
legal_sanctions_accounting_claim: none

Discount rate را از اینترنت قرض نگیرید

Green Book برای ارزیابی اجتماعی دولت بریتانیا نرخ‌های خاص خودش را دارد؛ استفاده از آن برای Cash flow تجاری ایران بی‌دلیل است. Finance باید نرخ و Convention متناسب با Perspective، Currency، inflation basis و Risk treatment را تصویب کند. Risk را هم در Cash-flow scenario و هم در Discount rate دوبار اعمال نکنید.

NPV، ROI، Payback و Break-even چه می‌گویند؟

Measureمزیتمحدودیت
NPVزمان و اندازهٔ Net cash flow را می‌بیندبه نرخ/Forecast حساس است؛ non-cash outcome را پنهان می‌کند
ROIRatio قابل‌فهم در Convention ثابتScale و timing را پنهان و با تعریف‌های مختلف تغییر می‌کند
Paybackزمان بازیابی را نشان می‌دهدپس از Payback و value/risk را نادیده می‌گیرد
Break-even runsبرای یک Scenario ساده مفید استRunها و maintenance را ثابت فرض می‌کند
Cost-effectivenessهزینه به ازای Outcome غیرپولیارزش مالی خالص نمی‌دهد

Break-even اجراها را فقط برای مدل محدود استفاده کنید

If and only if scope/evidence are equivalent and per-run values are stable:

Break-even runs ≈
  incremental setup cost
  ─────────────────────────────────────────────────
  manual human cost/run - automated variable cost/run

Automated variable cost/run must include:
human setup + review + triage + expected maintenance allocation
+ compute/device/license variable cost

If denominator ≤ 0: no finite break-even under this model.
Report a range, not a universal 9–18 month promise.

چرا Break-even عمومی ۹ تا ۱۸ ماه معتبر نیست؟

Setup، Run frequency، Manual effort، Change rate، Flake، Tool/FX و عمر Suite متفاوت‌اند. بعضی Checkها در چند Run و بعضی هرگز Break-even نمی‌شوند؛ بعضی برای Risk evidence ساخته می‌شوند نه صرفه‌جویی. فقط Distribution محلی و Scenario-specific گزارش دهید و شرط Invalidation را بنویسید.

عدم‌قطعیت را از ورودی تا خروجی حفظ کنید

یک Point estimate حس دقت کاذب می‌دهد. برای Setup، maintenance، run volume، accepted-signal rate، capacity conversion، FX و discount rate مقدار Low/Base/High یا Distribution مستند بسازید. Range باید از Data یا expert method بیاید، نه ±۲۰٪ دلخواه.

Optimism bias را با خطای Forecast تاریخی تنظیم کنید

Green Book ۲۰۲۶ Optimism bias را تمایل نظام‌مند به کم‌برآوردکردن Cost/Duration و بیش‌برآوردکردن Benefit می‌داند و توصیه می‌کند Adjustment از خطاهای تاریخی طرح‌های مشابه بیاید. برای Automation، Forecast-versus-actual Setup، maintenance، adoption و Benefit را نگه دارید. درصد دولتی/صنعتی را بدون تناسب کپی نکنید.

Sensitivity analysis و Switching value

بپرسید NPV به کدام فرض حساس است: Run volume؟ Maintenance؟ Cash conversion؟ FX؟ Switching value نشان می‌دهد متغیر تا چه سطحی تغییر کند که Recommendation عوض شود. اگر فقط با Forecast خوش‌بینانه O1 برنده است، Decision brief باید Fragility را آشکار کند.

DriverLowBaseHighInvalidate when
Runهای واجدشرایط/ماه۲۶۱۰Scope equivalence شکست بخورد
Maintenance h/month۱۸۳۰۴۲Product architecture تغییر کند
Accepted-signal rateساختگی ۰٫۵۵۰٫۷۵۰٫۹۰Oracle/Environment عوض شود
Capacity cash conversion۰٪۰٪فقط با Action مصوبBudget action لغو شود
FX indexFIN-LOWFIN-BASEFIN-HIGHSource/as-of منقضی شود

همهٔ اعداد جدول ساختگی و صرفاً برای نشان‌دادن Structure هستند؛ نرخ بازار، Benchmarks اتوماسیون یا Forecast واقعی ایران نیستند.

Scenario analysis به‌جای یک آیندهٔ قطعی

Scenarioفرض‌های سازگارخروجی مجاز
LowRun کم، maintenance/FX بالا، conversion صفرNPV/ROI/Payback range
BasePilot median و Finance baseمرکز Forecast، نه «محتمل قطعی»
HighRun بالا، maintenance پایین، signal خوبUpside مشروط
StressVendor exit، architecture change، Suite retirementDownside/stop/contingency

Monte Carlo همیشه لازم نیست

برای Pilot کم‌هزینه، Low/Base/High و Sensitivity شفاف ممکن است کافی باشد. شبیه‌سازی پیچیده با Distributionهای حدسی فقط دقت کاذب می‌سازد. روش باید متناسب با Cost، Risk، Reversibility و کیفیت داده باشد و Reproducible code/seed/assumptions داشته باشد.

Attribution: Automation تنها تغییر سیستم نیست

هم‌زمان ممکن است Requirement، Architecture، Observability، Team، Release cadence و Traffic تغییر کنند. کاهش Defect یا Lead time را کامل به Automation نسبت ندهید. Theory of Change، contribution evidence، alternatives و Countermetric لازم‌اند؛ روش جامع در Contribution Evaluation QA آمده است.

Pilot برای خرید Evidence، نه اثبات قبلی

Pilot باید Unknownهای Decision را هدف بگیرد: Setup effort، Run eligibility، maintenance drivers، signal quality، triage burden، Scope equivalence و adoption. Exit criteria را پیش از اجرا بنویسید. اگر Pilot فقط بهترین Scenario را انتخاب کند، Selection bias تولید می‌کند. برای Intervention test از Experiment در بهبود مستمر QA استفاده کنید.

Benefits realization بعد از تصویب آغاز می‌شود

Business case Forecast است؛ Benefit فقط با Action و Evidence محقق می‌شود. Magenta Book دولت بریتانیا از جمله می‌پرسد Cost/Benefit واقعی چگونه با Appraisal/Business case مقایسه شد. این راهنمای Evaluation سیاست عمومی، استاندارد Automation نیست؛ اصل قابل‌انتقال آن Forecast→Actual→Learning است.

benefit_realization_record: BR-AUTO-042-M03
benefit_ref: BEN-AUTO-042-08
forecast_range: 70..110 person-hours released
actual: 46 person-hours released
measurement_contract: M-CAPACITY-v3
counterfactual_version: CF-O0-v2
variance: below range
drivers: [fewer-eligible-runs, higher-triage]
cash_realized: fictional IRR 0
operational_action: redesign flake/data isolation
owner_role: ROLE-BENEFIT-OWNER
decision_impact: continue-shadow; do-not-scale
correction_ref: COR-AUTO-042-03

Forecast accuracy یک Countermetric است

اگر Business caseها همیشه Benefits بالا و Cost پایین پیش‌بینی می‌کنند، Portfolio یاد نمی‌گیرد. Error/Bias را برای Setup، Run volume، maintenance، cash conversion، NPV و Payback نگه دارید؛ نه برای تنبیه افراد، بلکه برای Calibration روش. تغییر فرض پس از مشاهده باید نسخه و rationale داشته باشد.

Stage Gate و Stop rule

GateEvidenceگزینه‌ها
G0 ExploreDecision/Options/Baseline/Data readinessReject/Design Pilot
G1 PilotSetup/TCO/signal/Scope equivalenceStop/Redesign/Extend
G2 Limited activeForecast range و operating controlsLimit/Scale conditionally
G3 RealizationActual cost/benefit/varianceContinue/Correct/Retire
G4 ExitResidual obligations/data/vendor/knowledgeArchive/Migrate/Decommission

Stop شکست نیست؛ جلوگیری از هزینهٔ بیشتر با Evidence تازه است. Scale نباید فقط چون Setup قبلاً خرج شده رخ دهد. Sunk-cost fallacy را با Decisionهای افزایشی و گزینهٔ Retirement مهار کنید.

Recommendation باید مشروط و قابل‌انقضا باشد

recommendation_id: REC-AUTO-042-v1
recommend: O1_SELECTIVE_AUTOMATION / SHADOW_PILOT_ONLY
basis: [TCO-v2, BENEFIT-REG-v2, SCENARIO-v1, PILOT-DESIGN-v3]
conditions: [scope-equivalence, data-fitness, finance-convention-approved]
unknowns: [maintenance-tail, eligible-run-volume, capacity-realization]
confidence_basis: low; pre-pilot estimates
stop_triggers: [signal-acceptance<0.55, maintenance>42h/month, data-breach]
scale_triggers: [two mature review periods, base-NPV non-negative, controls-pass]
authority_role: ROLE-INVESTMENT-DECISION
expires_at: 2026-11-01T09:00:00Z
not_claimed: ROI guaranteed, quality, revenue, release, headcount reduction

گزارش مدیریتی بدون پنهان‌کردن عدم‌قطعیت

Decision brief باید گزینه‌ها، Incremental TCO، Benefit classification، NPV/ROI/Payback range، top sensitivities، non-monetized outcomes، Unknowns، Reversibility، Stop/Scale و Authority را در یک صفحه نشان دهد و Technical trace داشته باشد. برای قرارداد Claim/Option/Decision از Quality Decision Brief استفاده کنید.

Dashboard ROI چه ستون‌هایی دارد؟

  • Investment-case ID/revision/as-of/expiry و Decision/Authority
  • Option و Counterfactual version، Scope و Horizon
  • Cost/Benefit Registry با Cash/Capacity/Risk/Non-monetized labels
  • Nominal/Real/Currency/FX/Discount Convention
  • Low/Base/High/Stress: NPV، ROI و Payback
  • Top sensitivities، switching values و assumptions
  • Forecast/Actual/Variance و Benefits owner/action
  • Data fitness، Attribution limits و double-count flags
  • Stop/Scale triggers، status و Correction history

نقش‌ها و اختیارها

نقش قابلیت‌محورمسئولیتاختیار پیش‌فرض ندارد
Investment sponsorObjective، option، resource و Benefit ownershipتغییر Evidence مالی
Automation ownerScope، technical baseline، TCO driversتأیید مستقل ROI خودش
Benefit ownerAction، realization، Actual/varianceClaim بدون Measure
Finance reviewerCurrency، rate، Cash/Capacity، tax/accounting conventionتصمیم فنی Test coverage
Independent analystCounterfactual، double count، sensitivity، reproducibilityInvestment authority
Decision authorityApprove/Limit/Stop/Scale و Risk trade-offبازنویسی Dataset
Security/privacy ownerVendor/data/access/retention controlsBenefit monetization

AI و ابزارهای ROI چه مرزی دارند؟

  • Spreadsheet/code می‌تواند Cash flow، NPV، ROI، Payback، scenario و double-count rules را Reproducible اجرا کند.
  • Pipeline باید Currency/basis/time/unit mismatch و Missing owner/source را HOLD کند.
  • AI می‌تواند Cost/Benefit candidate و Sensitivity question پیشنهاد کند؛ مبلغ، probability، Cause یا Market data را اختراع نکند.
  • LLM نباید Trust/brand/defect loss را بدون Evidence Monetize یا Investment decision صادر کند.
  • هر مدل/ابزار باید Version، formula، inputs، rounding، test cases، access و human review داشته باشد.

امنیت، Vendor و داده

Tool trial ممکن است Test data، Source، Screenshots، Logs، Tokens و Usage telemetry را خارج کند. Data classification، residency، DPA/contract، access، secrets، retention/deletion، export، incident، subcontractor، model-training opt-out، sanctions/export constraints و exit plan را با مسئولان مربوط بررسی کنید. هزینهٔ Controls و Exit بخشی از TCO است؛ این مقاله مشاورهٔ حقوقی، امنیتی یا تحریمی نیست.

Correction و Supersession

correction_id: COR-AUTO-042-03
corrects: AUTO-INV-SYN-042-v1 / SCENARIO-v1
reason: manual effort counted machine runtime as human effort
affected_inputs: [BEN-CAP-042, COST-RUN-042]
old_claim: base ROI positive
new_claim: ROI under review; capacity only, cash conversion zero
affected_decisions: [DEC-AUTO-042]
issued_at: 2026-10-01T09:00:00Z
superseding_artifacts: [AUTO-INV-SYN-042-v2, SCENARIO-v2]
owner_role: ROLE-INVESTMENT-ANALYST
silent_edit: false

آزمایش اجرایی: ROI مثبت روی Spreadsheet ناقص

Fixture زیر کاملاً ساختگی، آفلاین و غیرقابل‌تعمیم است. Checker سطحی، ۸۰ ساعت دستی منهای ۴ ساعت Runtime را دو بار در ماه ضرب و با Setup مقایسه می‌کند و `APPROVE_AUTOMATION` می‌گوید. ممیزی قرارداد ۶۴ Rule دارد؛ Rule آخر People-reduction را منع می‌کند و چون false است، نسخهٔ خام دقیقاً ۶۳ Finding می‌گیرد. این تعداد Benchmark بلوغ یا صنعت نیست.

const draft = {
  manual_hours_per_run: 80,
  automation_runtime_hours: 4,
  runs_per_month: 2,
  horizon_months: 12,
  hourly_rate_fictional_irr: 5_000_000,
  setup_cost_fictional_irr: 600_000_000,
  declared_status: "APPROVE_AUTOMATION",
  people_reduction: false
};

const present = (v) =>
  v !== undefined && v !== null &&
  !(typeof v === "string" && v.trim() === "") &&
  !(Array.isArray(v) && v.length === 0);

const rules = [
  ["ROI-01 case_id", x => present(x.case_id)],
  ["ROI-02 revision", x => present(x.revision)],
  ["ROI-03 supersedes", x => present(x.supersedes)],
  ["ROI-04 as_of", x => present(x.as_of)],
  ["ROI-05 decision_question", x => present(x.decision_question)],
  ["ROI-06 options", x => present(x.options)],
  ["ROI-07 authority", x => present(x.authority)],
  ["ROI-08 decision_due", x => present(x.decision_due)],
  ["ROI-09 perspective", x => present(x.perspective)],
  ["ROI-10 scope", x => present(x.scope)],
  ["ROI-11 out_of_scope", x => present(x.out_of_scope)],
  ["ROI-12 horizon", x => present(x.horizon)],
  ["ROI-13 baseline_ref", x => present(x.baseline_ref)],
  ["ROI-14 counterfactual_ref", x => present(x.counterfactual_ref)],
  ["ROI-15 scope_equivalence", x => present(x.scope_equivalence)],
  ["ROI-16 evidence_equivalence", x => present(x.evidence_equivalence)],
  ["ROI-17 cost_registry", x => present(x.cost_registry)],
  ["ROI-18 technical_baseline", x => present(x.technical_baseline)],
  ["ROI-19 work_breakdown", x => present(x.work_breakdown)],
  ["ROI-20 setup_cost", x => present(x.setup_cost)],
  ["ROI-21 build_cost", x => present(x.build_cost)],
  ["ROI-22 tool_license_cost", x => present(x.tool_license_cost)],
  ["ROI-23 infrastructure_cost", x => present(x.infrastructure_cost)],
  ["ROI-24 human_operation_cost", x => present(x.human_operation_cost)],
  ["ROI-25 compute_runtime_cost", x => present(x.compute_runtime_cost)],
  ["ROI-26 maintenance_cost", x => present(x.maintenance_cost)],
  ["ROI-27 triage_failure_demand", x => present(x.triage_failure_demand)],
  ["ROI-28 training_governance", x => present(x.training_governance)],
  ["ROI-29 transition_exit_cost", x => present(x.transition_exit_cost)],
  ["ROI-30 opportunity_cost", x => present(x.opportunity_cost)],
  ["ROI-31 benefit_registry", x => present(x.benefit_registry)],
  ["ROI-32 benefit_types", x => present(x.benefit_types)],
  ["ROI-33 benefit_owners", x => present(x.benefit_owners)],
  ["ROI-34 benefit_mechanisms", x => present(x.benefit_mechanisms)],
  ["ROI-35 benefit_measures", x => present(x.benefit_measures)],
  ["ROI-36 capacity_redeployment", x => present(x.capacity_redeployment)],
  ["ROI-37 cash_conversion_rule", x => present(x.cash_conversion_rule)],
  ["ROI-38 cost_avoidance_rule", x => present(x.cost_avoidance_rule)],
  ["ROI-39 risk_benefit_method", x => present(x.risk_benefit_method)],
  ["ROI-40 non_monetized_outcomes", x => present(x.non_monetized_outcomes)],
  ["ROI-41 double_count_groups", x => present(x.double_count_groups)],
  ["ROI-42 attribution_limits", x => present(x.attribution_limits)],
  ["ROI-43 money_contract", x => present(x.money_contract)],
  ["ROI-44 currency", x => present(x.currency)],
  ["ROI-45 real_nominal_basis", x => present(x.real_nominal_basis)],
  ["ROI-46 inflation_assumptions", x => present(x.inflation_assumptions)],
  ["ROI-47 fx_assumptions", x => present(x.fx_assumptions)],
  ["ROI-48 discount_rate", x => present(x.discount_rate)],
  ["ROI-49 discount_rate_source", x => present(x.discount_rate_source)],
  ["ROI-50 tax_accounting_review", x => present(x.tax_accounting_review)],
  ["ROI-51 cash_flow_timing", x => present(x.cash_flow_timing)],
  ["ROI-52 roi_convention", x => present(x.roi_convention)],
  ["ROI-53 npv", x => present(x.npv)],
  ["ROI-54 roi", x => present(x.roi)],
  ["ROI-55 payback_range", x => present(x.payback_range)],
  ["ROI-56 scenarios", x => present(x.scenarios)],
  ["ROI-57 sensitivity", x => present(x.sensitivity)],
  ["ROI-58 optimism_bias", x => present(x.optimism_bias)],
  ["ROI-59 assumptions_invalidation", x => present(x.assumptions_invalidation)],
  ["ROI-60 realization_plan", x => present(x.realization_plan)],
  ["ROI-61 stop_scale_rules", x => present(x.stop_scale_rules)],
  ["ROI-62 not_claimed", x => present(x.not_claimed)],
  ["ROI-63 correction_policy", x => present(x.correction_policy)],
  ["ROI-64 people_reduction_prohibited", x => x.people_reduction !== true]
];

const naiveSaved =
  (draft.manual_hours_per_run - draft.automation_runtime_hours) *
  draft.runs_per_month * draft.horizon_months * draft.hourly_rate_fictional_irr;
const naiveRoi =
  ((naiveSaved - draft.setup_cost_fictional_irr) / draft.setup_cost_fictional_irr) * 100;
const findings = (x) => rules.filter(([, ok]) => !ok(x)).map(([id]) => id);

console.log("SUPERFICIAL", draft.declared_status, Math.round(naiveRoi) + "%");
console.log("CONTRACT", findings(draft).length ? "HOLD" : "READY", findings(draft).length);

const corrected = {
  case_id: "SYN-AUTO-INV-042", revision: "v1", supersedes: "none:first-revision",
  as_of: "2026-08-01T09:00:00Z", decision_question: "which option enters shadow pilot",
  options: ["O0_MANUAL_IMPROVEMENT", "O1_SELECTIVE_AUTOMATION", "O2_BROAD_AUTOMATION"],
  authority: "ROLE-INVESTMENT-DECISION", decision_due: "2026-09-15T09:00:00Z",
  perspective: "internal incremental cash plus separate capacity scorecard",
  scope: "20 fictional stable Checkout regression scenarios", out_of_scope: ["release", "production", "people"],
  horizon: "12 months", baseline_ref: "BASE-SYN-042", counterfactual_ref: "CF-O0-v2",
  scope_equivalence: "same risk obligations/population", evidence_equivalence: "same accepted evidence profile",
  cost_registry: "COST-REG-v2", technical_baseline: "TECH-SYN-C42", work_breakdown: "WBS-AUTO-v2",
  setup_cost: "three-point estimate", build_cost: "framework+checks+data+oracle",
  tool_license_cost: "finance quote scenario", infrastructure_cost: "runner/device/storage",
  human_operation_cost: "setup+review", compute_runtime_cost: "runner-minutes",
  maintenance_cost: "change-driver range", triage_failure_demand: "failure-mix range",
  training_governance: "enablement+security+review", transition_exit_cost: "migration+decommission",
  opportunity_cost: "best alternative capacity use", benefit_registry: "BEN-REG-v2",
  benefit_types: ["CASHABLE", "COST_AVOIDANCE", "CAPACITY", "RISK", "NON_MONETIZED"],
  benefit_owners: ["ROLE-CAPACITY-OWNER", "ROLE-FINANCE-OWNER"],
  benefit_mechanisms: "versioned per benefit", benefit_measures: "versioned per benefit",
  capacity_redeployment: "risk-based exploratory sessions", cash_conversion_rule: "zero unless approved action",
  cost_avoidance_rule: "approved counterfactual+probability", risk_benefit_method: "scenario expected-value range",
  non_monetized_outcomes: ["feedback-time", "evidence-repeatability"],
  double_count_groups: ["REGRESSION_CAPACITY", "DEFECT_RISK"],
  attribution_limits: ["architecture", "testability", "release-process"],
  money_contract: "MONEY-SYN-v2", currency: "fictional IRR",
  real_nominal_basis: "nominal", inflation_assumptions: "FIN-INF-SYN-v1",
  fx_assumptions: "FIN-FX-SYN-v1 low/base/high", discount_rate: "finance-approved fictional nominal rate",
  discount_rate_source: "FIN-RATE-SYN-v1", tax_accounting_review: "required; not assumed",
  cash_flow_timing: "monthly end-of-period", roi_convention: "PV benefits minus PV costs / PV costs",
  npv: "range by scenario; fictional", roi: "range by scenario; fictional",
  payback_range: "no universal point; scenario range", scenarios: ["LOW", "BASE", "HIGH", "STRESS"],
  sensitivity: ["run-volume", "maintenance", "cash-conversion", "fx"],
  optimism_bias: "calibrate from historical forecast error", assumptions_invalidation: "ASSUME-REG-v2",
  realization_plan: "monthly forecast-to-actual with owners", stop_scale_rules: "GATE-AUTO-v2",
  not_claimed: ["guaranteed-ROI", "quality", "revenue", "brand", "release", "headcount-reduction"],
  correction_policy: "supersede; no silent edit", people_reduction: false
};

const correctedFindings = findings(corrected);
console.log("CORRECTED", correctedFindings.length ? "HOLD" : "READY_FOR_INVESTMENT_REVIEW", correctedFindings.length);

خروجی مستقل Fixture و تفسیر

SUPERFICIAL APPROVE_AUTOMATION 1420%
CONTRACT HOLD 63
CORRECTED READY_FOR_INVESTMENT_REVIEW 0

Spreadsheet خام ۱۴۲۰٪ می‌سازد چون تمام فاصلهٔ Manual hours و Machine runtime را Cash saving، همهٔ Runها را قطعی و Setup را تنها Cost می‌گیرد. ۶۳ فیلد ساختاری ندارد؛ Rule منع People reduction تنها Rule پاس‌شده است. نسخهٔ اصلاح‌شده صفر Finding ساختاری دارد اما صحت Cost/Benefit، اعتبار Counterfactual، کفایت Pilot، مناسب‌بودن نرخ، NPV مثبت، ROI واقعی، Payback، کیفیت، درآمد، Risk یا درستی تصمیم را ثابت نمی‌کند. نام خروجی عمداً `READY_FOR_INVESTMENT_REVIEW` است.

آزمایشگاه آفلاین Checkout ایرانی

Lab کاملاً جدا از Production بسازید: Order، PaymentAttempt، PSP Stub جعلی، Callback، Ledger، Reconciliation و اعلان ساختگی. سناریوهای timeout پیش/پس از Fake commit، retry، duplicate/late/out-of-order callback، Collector outage، Flake و Runner failure را اجرا کنید. Manual و Automated path باید Risk obligation، Data، Oracle و Evidence یکسان داشته باشند.

lab_id: SYN-IR-CHECKOUT-AUTO-ROI-01
network: disabled
production_data: forbidden
identities: [Option, Cost, Benefit, Run, Build, Evidence, Snapshot, Decision]
canonical_currency: fictional IRR
toman_view: presentation-only and explicitly labelled
foreign_currency: fictional scenario only; no market rate
digits: [Persian, Arabic, Latin]
unicode_pairs: [ی/ي, ک/ك]
event_time: ISO-8601 UTC
display_timezone: Asia/Tehran
jalali_date: presentation-only
forbidden: [real company, vendor quote, market FX, user, order, payment, PSP,
            bank, PAN, CVV2, OTP, account, mobile, email, IP, cookie, token,
            credential, production log, screenshot]
claims: synthetic, non-representative, no financial/legal/tax/security advice

تمام مبالغ، نرخ‌ها و ۱۴۲۰٪ Fixture ساختگی‌اند. IRR را Canonical و تومان را View برچسب‌دار نگه دارید؛ FX واقعی وارد Lab نکنید. UTC زمان Canonical، Asia/Tehran نمایش و جلالی فقط Presentation است. هیچ شرکت، Vendor، بازار، حقوق، Salary، نرخ ارز یا زمان Break-even واقعی ایران از Lab نتیجه نمی‌شود.

Pilot سی‌روزهٔ Investment Case

  1. روز ۱ تا ۵: Decision، Options، Perspective، Scope/Horizon و Baseline/Counterfactual را Review کنید.
  2. روز ۶ تا ۱۰: Technical baseline/WBS، Cost/Benefit/Money contract و Double-count groups را Freeze کنید.
  3. روز ۱۱ تا ۲۰: Shadow automation را روی Scenarioهای هم‌Scope اجرا و Setup/Run/Triage/Maintenance/Signal Actuals را بگیرید.
  4. روز ۲۱ تا ۲۵: Low/Base/High/Stress، NPV/ROI/Payback، Sensitivity و Switching values را Recompute کنید.
  5. روز ۲۶ تا ۳۰: Independent/Finance/Security review؛ سپس REJECT، REDESIGN، EXTEND_PILOT یا LIMITED_ACTIVE را ثبت کنید.

سی روز وعدهٔ Break-even نیست؛ فقط دورهٔ جمع‌آوری Evidence اولیه است. اگر Maintenance tail یا Benefit maturity طولانی‌تر است، تصمیم Scale را به تعویق بیندازید. Unknown و Stop خروجی‌های سالم‌اند.

ضدالگوهای ROI اتوماسیون تست

  • مقایسهٔ Manual person-hours با Machine runtime
  • تبدیل تمام Capacity آزادشده به Salary/Cash saving
  • فرض اینکه هر اجرای خودکار جای یک Run دستی کامل را گرفته
  • حذف Triage، Flake، Maintenance، Governance و Exit از TCO
  • Counterfactual مصنوعی بدون بهبود دستی یا تغییر Scope
  • Scope/Oracle/Evidence نامساوی میان گزینه‌ها
  • Multiplier بی‌منبع ۱۰۰× برای Defect cost
  • Automation→Time-to-market→Revenue بدون Critical path
  • Coverage/Script count به‌عنوان Benefit پولی
  • Monetize کردن Trust، brand، morale و satisfaction بدون روش
  • Double count زمان، Defect، Incident و Revenue
  • مخلوط‌کردن Real/Nominal و IRR/toman/FX
  • قرض‌گرفتن نرخ تنزیل خارجی بدون Finance convention
  • ROI نقطه‌ای بدون Range/Sensitivity/Invalidation
  • Break-even عمومی ۹ تا ۱۸ ماه
  • Scale به‌خاطر Sunk cost
  • Business case بدون Benefit owner و realization action
  • Silent edit Forecast پس از دیدن Actuals
  • استفاده از ROI برای حذف/رتبه‌بندی افراد
  • اعلام ROI مثبت به‌عنوان کیفیت یا Release readiness

چک‌لیست Owner پیش از ارائه Business Case

  1. Decision، Options، Authority، Due و not-deciding ثبت‌اند.
  2. Perspective، Scope، Out-of-scope و Horizon ثابت‌اند.
  3. Baseline مشاهده‌شده و Counterfactual آینده جدا هستند.
  4. Scope/Oracle/Evidence بین گزینه‌ها هم‌ارز است.
  5. Technical baseline و WBS نسخه دارند.
  6. Setup/Build/Tool/Infra/Operation/Maintenance/Triage کامل‌اند.
  7. Training/Governance/Security/Transition/Exit/Opportunity cost آمده‌اند.
  8. Quantity×Unit cost×Timing×Source×Owner برای هر Cost وجود دارد.
  9. Cash saving، avoidance، capacity، risk و non-monetized جدا هستند.
  10. Capacity فقط با Action مصوب Cash می‌شود.
  11. Benefit mechanism/measure/owner/evidence/realization due ثبت‌اند.
  12. Double-count groups و Attribution limits مرور شده‌اند.
  13. Money contract، IRR/toman، Real/Nominal، Inflation/FX سازگارند.
  14. Discount/tax/accounting Convention توسط Finance بررسی شده است.
  15. Cash-flow timing و ROI convention کنار خروجی دیده می‌شوند.
  16. NPV/ROI/Payback با Low/Base/High/Stress گزارش شده‌اند.
  17. Sensitivity، switching value، optimism bias و invalidation روشن‌اند.
  18. Stop/Scale/Expiry و Reversibility تعریف شده‌اند.
  19. Forecast→Actual→Variance→Correction owner دارد.
  20. هیچ Guarantee، ۱۰۰×، ۹–۱۸ ماه یا people-reduction claim باقی نمانده است.

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

فرمول ROI اتوماسیون تست چیست؟

یک Convention رایج برابر است با (PV منافع افزایشی قابل‌انتساب − PV هزینه‌های افزایشی) ÷ PV هزینه‌ها × ۱۰۰. اما Perspective، Counterfactual، Horizon، Currency، Real/Nominal، Discount rate، Cash timing و Tax/accounting treatment باید کنار عدد ثبت شوند. NPV و Payback range را نیز نشان دهید.

آیا زمان آزادشدهٔ تستر مستقیماً صرفه‌جویی مالی است؟

خیر. با Salary ثابت، معمولاً Released capacity است. فقط وقتی پرداخت واقعی مانند Overtime/Vendor/Contract کم یا استخدام مصوب واقعاً اجتناب شود و Finance آن را تأیید کند Cashable/Cost avoidance می‌شود. همان زمان را دوباره به‌عنوان Salary saving و Revenue نشمارید.

اتوماسیون تست چه زمانی به نقطه سربه‌سر می‌رسد؟

عدد عمومی ۹ تا ۱۸ ماه وجود ندارد. Setup، Run volume، Scope equivalence، human review/triage، maintenance، Tool/compute/FX و عمر Suite تعیین‌کننده‌اند. Payback را برای Low/Base/High گزارش کنید؛ اگر منفعت متغیر هر Run از هزینهٔ متغیر بیشتر نیست، مدل ساده Break-even محدود ندارد.

آیا کاهش باگ یا Time-to-market را می‌توان Benefit مالی گرفت؟

فقط با Scenario/Mechanism، Counterfactual، probability/attribution، Cost boundary و Evidence. «۱۰۰× هزینهٔ باگ» یا Automation→Revenue قابل‌قبول نیست. در نبود داده، کاهش Defect/Lead time را Operational یا Risk hypothesis نگه دارید و با Benefit پولی جمع نکنید.

اگر ROI منفی شد باید اتوماسیون را متوقف کنیم؟

نه خودکار. Data/Convention، گزینه‌ها، non-monetized obligations، Risk، Reversibility و Switching values را بررسی کنید. ممکن است Cost-effectiveness یا Compliance/Evidence need توجیه محدود داشته باشد؛ یا Stop بهترین تصمیم باشد. Authority باید Incremental future costs/benefits را ببیند، نه Sunk cost را.

جمع‌بندی: ROI را اندازه‌گیری نکنید؛ پروندهٔ تصمیم را بسازید

ROI اتوماسیون تست از کم‌کردن چهار ساعت Runtime از ۸۰ ساعت Manual به‌دست نمی‌آید. گزینه و Counterfactual واقعی، Scope/Evidence همسان، TCO کامل، Benefit taxonomy، Money convention، Cash-flow timing، عدم‌قطعیت و Attribution لازم‌اند. Cash، Capacity، Service و Risk را در یک سبد بی‌نام مخلوط نکنید.

Business case را Forecast نسخه‌دار بدانید. با Pilot Unknownها را کم کنید، NPV/ROI/Payback range و Sensitivity را شفاف ارائه دهید، Benefit owner و Stop rule بگذارید و Actuals را به فرض‌ها برگردانید. تحلیل خوب Automation را از پیش «سرمایه‌گذاری هوشمند» اعلام نمی‌کند؛ به تصمیم‌گیر نشان می‌دهد تحت کدام شرایط، با چه Evidence و چه Downside محدود، کدام گزینه ارزش آزمودن دارد.

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