یک تیم می‌گوید «برای یافتن تست‌کیس‌های بهینه، Quantum PoC بسازیم»؛ تیم امنیت هم‌زمان باید کل موجودی RSA/ECC و مسیر مهاجرت Post-Quantum را پیدا کند؛ پژوهشگر نیز یک مدار hybrid را روی simulator و hardware بررسی می‌کند. هر سه واژهٔ «کوانتوم» دارند، اما Test object، Oracle، هزینه و تصمیمشان یکی نیست. اگر آن‌ها را زیر عنوان «انقلاب تست» جمع کنیم، احتمالاً hype را تست می‌کنیم، نه سامانه را.

این راهنما سه Track را جدا می‌کند: A) تست نرم‌افزار کوانتومی و hybrid، B) ارزیابی ادعای استفاده از Quantum برای تست نرم‌افزار کلاسیک، C) تست آمادگی و مهاجرت Post-Quantum Cryptography. جریان مشترک چنین است: Claim/Decision → Stack/Boundary → Program/Circuit identity → Oracle portfolio → Simulator evidence → Noise/Hardware evidence → Resource/Cost → Decision/Regression.

پاسخ کوتاه: تست نرم‌افزار کوانتومی چیست؟

  • ابتدا مشخص کنید Test object برنامهٔ quantum/hybrid، SDK/compiler/provider، یک Quantum-assisted PoC یا مهاجرت PQC است.
  • Shell کلاسیک—ورودی، mapping، serialization، orchestration، retry، billing و reporting—را جداگانه تست کنید.
  • مدار/برنامه را با SDK، version، backend، basis ordering، qubit mapping، shots، seed و transpilation identity ثبت کنید.
  • روی simulator، exact state/operation/property را وقتی ممکن است بررسی کنید؛ sampling را بی‌دلیل جای آن نگذارید.
  • روی hardware معمولاً از نمونه‌ها/measurement و metadata محدود استفاده می‌کنید؛ state داخلی را مثل simulator فرض نکنید.
  • Oracle را لایه‌ای بسازید: specification، invariant/property، metamorphic، differential، statistical و resource.
  • Noise، compiler/transpiler، mapping، queue/calibration و provider drift را از bug برنامه جدا کنید.
  • Pass/Fail دودویی همیشه کافی نیست؛ Inconclusive و Evidence gap را با sample/threshold/stop rule ثبت کنید.
  • ادعای Quantum speedup برای تست کلاسیک را با baseline کلاسیک، end-to-end cost و held-out workload بسنجید.
  • برای بیشتر تیم‌های QA امروز، PQC inventory/crypto-agility/interoperability migration کار عملی‌تری از اجرای «حملهٔ Shor» است.

Intent جست‌وجو و کلیدواژه‌ها

Intent اصلی آموزشی و آینده‌نگر اما عملی است: «محاسبات کوانتومی چه اثری بر تست نرم‌افزار دارد و تست برنامهٔ کوانتومی چگونه انجام می‌شود؟» کلیدواژهٔ اصلی تست نرم‌افزار کوانتومی است. عبارت‌های مکمل شامل محاسبات کوانتومی و تست نرم‌افزار، Quantum Software Testing، تست برنامه کوانتومی، تست مدار کوانتومی، تست Qiskit، تست Q#، تست Cirq، Oracle در برنامه کوانتومی، تست آماری خروجی کوانتومی، simulator و hardware quantum، تست سیستم hybrid quantum-classical، Metamorphic testing کوانتومی، تست مهاجرت PQC، Post-Quantum Cryptography Testing، تست ML-KEM و ML-DSA، Crypto agility و آینده شغلی تستر کوانتومی هستند.

این صفحه مبانی عمومی اوراکل تست، تست سیستم غیرقطعی یا تست مبتنی بر ریسک را تکرار نمی‌کند؛ آن‌ها قراردادهای Oracle، Trial/Statistical verdict و Risk treatment را مالک‌اند. اینجا همان اصول در Quantum stack و PQC migration تطبیق داده می‌شوند.

سه Track را از هم جدا کنید

TrackTest objectسؤال تصمیمیEvidence محتملخطای رایج
A: Quantum softwareprogram/circuit/compiler/runtime/hybrid appآیا رفتار/رابط/منبع در Scope درست است؟exact simulation، properties، samples، hardware metadataهر تفاوت را noise یا quantum magic نامیدن
B: Quantum-assisted classical testingoptimizer/generator/search PoCآیا نسبت به baseline برای workload مشخص ارزش افزوده دارد؟solution quality، faults found، total cost، repeatabilityنام Grover/QAOA را معادل speedup گرفتن
C: PQC migrationcrypto inventory/protocol/library/key/cert/workflowکجا الگوریتم آسیب‌پذیر است و migration interoperable/operable است؟inventory، FIPS vectors، handshake/signature/KEM، rollback/telemetryمنتظر hardware مهاجم ماندن یا «quantum pentest» نمایشی

این سه Track تیم و Authority یکسان ندارند. Track A ممکن است پژوهش/محصول Quantum باشد؛ Track B یک experiment سرمایه‌گذاری است؛ Track C برنامهٔ امنیت/معماری/عملیات و Vendor migration. ترکیب بودجه یا KPI آن‌ها، readiness کاذب می‌سازد.

مبانی دقیق و کوتاه: کیوبیت «هم‌زمان صفر و یک» نیست

یک pure qubit را می‌توان با state برداری مانند α|0⟩ + β|1⟩ توصیف کرد که amplitudeهای مختلط آن شرط نرمال‌سازی دارند. Measurement در basis مشخص outcome کلاسیک می‌دهد و احتمال‌ها از اندازهٔ مربع amplitudeها به‌دست می‌آیند. Global phase قابل مشاهده نیست، اما relative phase می‌تواند با interference بر نتیجه اثر بگذارد. تشبیه سکهٔ درحال‌چرخش این ساختار، phase و basis را منتقل نمی‌کند.

مفهوممعنای مفید برای تستسوءبرداشت
Qubit/statestate در فضای برداری، نه Boolean پنهانهم‌زمان یک ۰ و ۱ کلاسیک
Superpositionترکیب amplitudeها با phaseخواندن همهٔ جواب‌ها در پایان
Entanglementstate مشترک غیرقابل‌تجزیهٔ سادهارسال پیام فوری یا dependency عادی
Measurementoutcome وابسته به state/basis؛ state را عموماً تغییر می‌دهد«Observer انسانی» علت است
Shotیک اجرای sampling طبق تعریف runtimeتکرار مستقل تضمین‌شده در هر backend
Noiseمدل/فرایندهای خطا و محدودیت دستگاهتوضیح آماده برای هر failure
Interferenceترکیب amplitudeها و relative phaseparallelism رایگان

Shor و Grover وجود الگوریتم با مزیت در مدل/مسئلهٔ خاص را نشان می‌دهند، نه اینکه Quantum computer همهٔ مسئله‌ها یا همهٔ test inputها را سریع‌تر می‌گردد. مستند IBM دربارهٔ Grover آن را speedup درجه‌دوم برای unstructured search با Oracle معرفی می‌کند؛ ساخت Oracle، encoding، gate/resource cost، noise، I/O و baseline بخشی از ادعای end-to-end هستند.

Test object را در Quantum stack مشخص کنید

User/Domain decision
Classical UI/API/input validation
Pre/post-processing and data encoding
Hybrid orchestration / optimizer / convergence / retry
Quantum program / circuit / parameters / measurement
SDK / compiler / transpiler / optimizer passes
Intermediate representation / QIR/OpenQASM when applicable
Provider runtime / job / queue / shots / result mapping
Backend topology / native gates / calibration / noise
Classical result interpretation / persistence / billing / audit

«خروجی Quantum غلط است» ممکن است از endian/basis ordering، bitstring mapping، unit conversion، parameter binding، transpilation، provider API، stale calibration، shot aggregation یا business interpretation آمده باشد. قبل از Quantum-specific diagnosis، contractهای کلاسیک را با Unit/Contract/Property test بررسی کنید.

Quantum Test Contract: هویت اجرا را قابل‌بازتولید کنید

Decision / claim / non-goal
Program, repository, commit and test-basis version
SDK/language/compiler/transpiler/runtime/provider versions
Circuit source + normalized/compiled/transpiled artifacts and hashes
Logical qubits / classical bits / basis/endian ordering
Parameters / input encoding / observable / measurement basis
Backend/simulator / target/profile / topology / native gates
Optimization/transpilation settings / layout / random seed
Shots / batches / job IDs / timestamps / queue/retry policy
Calibration/noise-model snapshot / mitigation settings
Oracle portfolio / tolerance / sample plan / stop rule
Pass / Fail / Inconclusive / Environment-invalid rules
Resource estimates / quotas / monetary and capacity costs
Raw/redacted evidence / privacy / access / retention
Owner / reviewer / expiry / rerun and comparison conditions

Seed ممکن است classical randomness در simulator/transpiler/harness را کنترل کند؛ device noise، queue، calibration drift و همهٔ provider behavior را deterministic نمی‌کند. «همان circuit» نیز پس از compiler/optimization/layout یا backend update الزاماً همان physical operations نیست. Artifact پیش و پس از transform را نگه دارید.

Verification ladder: از Shell کلاسیک تا Hardware evidence

لایههدفOracle/Evidenceمحدودیت
L0 Classical shellvalidation/mapping/orchestration/reportingexact unit/contract/propertyQuantum core را اثبات نمی‌کند
L1 Static/circuit contractqubit count، allowed gates، reset، measurement، targetlint/type/compiler/device validationbehavior/runtime را اثبات نمی‌کند
L2 Exact ideal simulationstate/unitary/expectation کوچکstatevector/matrix/propertyclassical scale و noiseless fidelity
L3 Sampled ideal simulationmeasurement interface/distributionset/invariant/statisticalsampling uncertainty
L4 Metamorphic/differentialOracle gap/transform/compilersemantics-preserving relations/referencescommon-mode و MR weakness
L5 Noisy simulation/QVMsensitivity و pipeline نزدیک‌ترnoise model/guardrailsmodel ≠ device
L6 Hardware samplingbackend-specific observed behaviorjob/calibration/sample/resource evidencelimited observability/drift/cost
L7 Hybrid/domain outcomeend-to-end decision usefulnessbusiness/scientific independent oraclecausality/ground-truth/context

Cirq basics به‌روشنی simulate() با دسترسی state در شبیه‌ساز را از run() و sampling شبیه دستگاه جدا می‌کند و حدود simulator را بیان می‌کند. این مستند Cirq است، نه ادعای fidelity برای همهٔ providers یا circuitها. Simulator و hardware دو lane مکمل‌اند، نه اینکه یکی «واقعی» و دیگری بی‌ارزش باشد.

ابزار تست و Debug وجود دارد؛ مرز آن را بدانید

متن قدیم می‌گفت breakpoint و مشاهدهٔ state ناممکن و ابزارها تقریباً موجود نیستند. در عمل، مستند فعلی Microsoft QDK Unit test، Test Explorer، breakpoint، step و dump/check operation را برای Q#/OpenQASM در محیط توسعه شرح می‌دهد و خودش بعضی Diagnostics را simulator-only می‌داند. قابلیت دقیق به نسخه/target/profile وابسته است.

محیطچه می‌توان دید؟چه ادعایی نکنیم؟
Classical hostvariables، control flow، API، serialization، errorsQuantum state از host log کامل معلوم است
Ideal simulatorstatevector/operation/expectation بسته به ابزارهمان observability روی hardware وجود دارد
Noisy simulatorنتیجه زیر noise model تعریف‌شدهمدل دقیقاً device/زمان آینده است
Compiler/transpilerIR/circuit/layout/pass outputsemantic preservation بدون Oracle
Hardware/runtimejobs، samples/counts و metadata ارائه‌شدهsingle-shot state یا root cause مستقیم

Oracle portfolio برای برنامهٔ کوانتومی

ماهیت sampling باعث نمی‌شود Pass/Fail «معنای خود را از دست بدهد». بعضی contractها دقیق‌اند: qubit count، circuit structure، allowed operations، reversible inverse، output schema یا invariantی مثل ممنوع‌بودن odd parity در Bell ideal. بعضی verdictها آماری یا Inconclusive هستند. Oracle را با هدف و لایه انتخاب کنید.

Oracleنمونهتوانخطر
Specification/exactstate کوچک، unitary، known basis resultقوی در simulator کوچکspec/stale/common implementation
Structural/staticqubits، measurements، reset، target gatesسریع و deterministicرفتار معنایی را نمی‌گیرد
Invariant/propertynormalization، parity، conserved quantityبدون خروجی کاملضعیف/ناقابل‌کشتن mutant
Metamorphiccircuit + inverse، qubit rename، equivalent transformOracle problem را کاهش می‌دهدrelation/implementation مشترک
Differentialدو simulator/compiler/backendاختلاف را آشکار می‌کنداکثریت حقیقت نیست؛ noise/config
Statisticaldistribution/expectation/intervalsampling outcomeindependence/multiplicity/stop bias
Resourcedepth، ۲-qubit gates، qubits، runtime/costfeasibility/regressionproxy ≠ utility/correctness
Domain/referenceenergy bound، optimization score، scientific checkdecision meaningground truth/model uncertainty

مرور پژوهشی A Survey on Testing and Analysis of Quantum Software تکنیک‌های testing، analysis، optimization و benchmark را در حوزه‌ای پراکنده/درحال‌رشد جمع‌بندی می‌کند؛ preprint survey است، نه استاندارد صنعتی یا اثبات بلوغ ابزار. پژوهش MorphQ نیز از generation و روابط Metamorphic برای آزمودن Qiskit platform استفاده کرده است؛ نتیجهٔ آن به نسخه، transformها و platform scope خودش محدود است و جای Oracle portfolio پروژه را نمی‌گیرد.

Sample plan و Verdict آماری را پیشاپیش تعریف کنید

Quantum Sampling Contract
Decision and outcome/observable
Circuit/backend/artifact identity
Trial/shot/batch/job unit
Expected set/distribution/value under which model
Null/alternative or property and practical tolerance
Shots/batches/backends and rationale
Independence/correlation assumptions
Calibration/noise/mitigation and drift windows
Multiplicity/segments/peeking/stop rule
Pass / Fail / Inconclusive / Invalid thresholds
Raw counts + estimates + uncertainty
Seed limits / rerun / correction / expiry

Shot count بزرگ به‌تنهایی correctness نمی‌سازد. systematic bias، readout error، wrong circuit، mapping bug یا common-mode Oracle با sample بیشتر رفع نمی‌شوند. چند backend یا چند زمان نیز مستقل‌بودن را تضمین نمی‌کنند. Trial contract عمومی، confidence و Inconclusive را در راهنمای سیستم‌های غیرقطعی ببینید.

آزمایش بازتولیدپذیر: Bell circuit و mutant بدون CNOT

برای نشان‌دادن تفاوت exact simulator oracle و shot evidence، یک شبیه‌ساز آموزشی دوکیوبیتی با JavaScript استاندارد ساختم. از |00⟩ شروع می‌کند، H روی q0 و سپس CNOT(q0→q1) می‌زند. Mutant، CNOT را حذف می‌کند. state/probability دقیق محاسبه و ۲۰۰۰ shot با PRNG نویسنده‌ساخته و seed ثابت نمونه‌گیری شدند.

IDEAL {"name":"BELL_H_CNOT","amplitudes":[0.707107,0,0,0.707107],"probabilities":[0.5,0,0,0.5],"exactEvenSupport":true,"exactBalancedEndpoints":true,"shots":2000,"seed":"0x51a7e","counts":[["00",1002],["01",0],["10",0],["11",998]],"oddParity":0}
MUTANT {"name":"MISSING_CNOT","amplitudes":[0.707107,0,0.707107,0],"probabilities":[0.5,0,0.5,0],"exactEvenSupport":false,"exactBalancedEndpoints":false,"shots":2000,"seed":"0x51a7e","counts":[["00",1002],["01",0],["10",998],["11",0]],"oddParity":998}

تفسیر: exact property، sample و mutation sensitivity

Ideal exact state فقط روی 00/11 support دارد و دو endpoint متوازن‌اند؛ Mutant بدون CNOT روی 00/10 است و هر دو property را می‌شکند. در sample seeded نیز Ideal هیچ odd-parity outcome نداشت، درحالی‌که Mutant ۹۹۸ مورد 10 ساخت. در این مدل ساده، parity Oracle mutant را می‌کشد؛ این اثبات قدرت آن برای circuitهای دیگر نیست.

خطای Harness که پیش از خروجی نهایی پیدا شد

نسخهٔ اول Harness از Object.keys روی labelهای "00"، "01"، "10" و "11" استفاده کرد. JavaScript کلیدهای شبیه index عددی را پیش از بقیه مرتب کرد و mapping احتمال به label را جابه‌جا نشان داد. خروجی کنار گذاشته شد، آرایهٔ basis صریح شد و آزمایش دوباره اجرا شد. این bug کوانتومی نبود؛ classical reporting/mapping bug بود—همان دلیلی که L0 باید پیش از تفسیر مدار تست شود.

محدودیت سخت‌گیرانه

Simulator، gate math، basis convention، mutant، seed، PRNG، shots و propertyها همه توسط نویسنده ساخته شده‌اند. مدل complex phase عمومی، density matrix، mid-circuit measurement، reset، entanglement verification عمومی، transpilation، device topology، noise/readout error، mitigation، calibration، queue، provider، correlation، statistical interval یا hardware را مدل نمی‌کند. Seed فقط sample همین PRNG را تکرار می‌کند. خروجی Benchmark، proof of quantum advantage، ابزار certification، یا معیار Hiring/Performance/Promotion/Pay نیست.

Noise، bug و Environment-invalid را تفکیک کنید

مشاهدهفرضیه‌هاEvidence بعدی
Simulator exact Failprogram/spec/mapping/compiler bugsmall reduction، invariant، differential، IR
Ideal Pass، noisy simulator Failnoise sensitivity/model/confignoise sweep، circuit depth/gates، model version
Simulator Pass، hardware driftdevice/calibration/layout/readout/queuejob/calibration/time/backend/control circuit
دو simulator اختلافconvention/version/compiler/common input bugnormalized circuit، endian/basis، third oracle
hardware sample ناپایدارnoise/correlation/drift/low shots/programbatches/time strata/controls؛ Inconclusive
job failurequota/provider/network/unsupported targetruntime status/request/target contract
domain score بدencoding/optimizer/objective/core/noiseclassical baseline/ablation/held-out cases

Fail را به «کوانتوم ذاتاً احتمالی است» نرم نکنید و Noise را Defect قطعی ننامید. Verdictهای Fail، Inconclusive، Environment-invalid، Unsupported و Evidence-gap با owner و rerun condition از هم جدا باشند. ابتدا evidence خام را حفظ کنید؛ Retry بدون ثبت first attempt، failure mode را پاک می‌کند.

Metamorphic، Differential و Mutation را محدود استفاده کنید

  • Inverse relation: circuit و inverse باید state/behavior تعریف‌شده را برگردانند؛ measurement/noise/unsupported operations مرز دارند.
  • Identity insertion: افزودن operation خنثی باید semantics را حفظ کند؛ compiler/resource می‌تواند فرق کند.
  • Qubit permutation: با remap درست، outcome متناظر باشد؛ topology/layout هزینه را عوض می‌کند.
  • Equivalent decomposition: circuitهای معادل در model تعریف‌شده؛ noise sensitivity ممکن است متفاوت باشد.
  • Global phase: measurement probability تغییر نکند؛ relative phase را global جا نزنید.
  • Differential: simulator/compiler/backend اختلاف را signal بدانید؛ رأی اکثریت truth نیست.
  • Mutation: gate deletion/replacement/parameter/measurement mutants برای sensitivity؛ real-bug representativeness را ادعا نکنید.
  • Reduction: failure را به circuit کوچک‌تر کاهش دهید؛ reduction باید failure property را حفظ کند.

Metamorphic relation خودش Oracle contract است و می‌تواند ضعیف یا غلط باشد. Relationها را review، version و با mutant/known cases محک بزنید. برای generation تصادفی/ساختاری نیز اصول Harness، Corpus و Crash triage در راهنمای Fuzz Testing مفید است، اما Fuzz classical را بدون تطبیق به circuit semantics منتقل نکنید.

سیستم Hybrid را end-to-end تست کنید

محصول واقعی اغلب فقط یک circuit نیست: دادهٔ domain encode می‌شود، classical optimizer پارامتر می‌دهد، job به provider می‌رود، samples برمی‌گردند و post-processing تصمیم می‌سازد. بیشترین defect ممکن است در boundary و orchestration باشد، نه gate.

Hybrid Run Contract
Domain input and canonical units
Encoding/scaling/normalization and reversible mapping checks
Classical optimizer/version/init/seed/convergence/stop
Circuit template/parameters/observable/backend identity
Job idempotency / retry / timeout / cancellation / quota
Shot batches / partial results / late response / duplicate callback
Result schema / bit order / aggregation / uncertainty
Fallback classical path / feature flag / provider exit
Domain oracle / guardrails / action authority
Cost / latency / queue / availability / privacy / audit
Failure modeتستOracle
wrong encodingboundaries/unit/permutation/round-tripindependent classical mapping
timeout after job acceptanceretry same business/job keyone logical outcome، no duplicate billing/action
partial/late batchmissing/out-of-order/duplicate resultclosed accounting + Inconclusive
optimizer stagnationinit/seeds/budget/stop variantsconvergence contract + baseline
provider changeschema/target/capability contractcompatibility + fallback
feature actionbad/uncertain scorehuman/guardrail authority
cost blowoutqueue/shots/reruns/quotabudget/stop threshold

ادعای Quantum برای تست کلاسیک را چگونه ارزیابی کنیم؟

«Grover فضای تست را می‌گردد» هنوز Candidate architecture نیست. باید test-input encoding، Oracleی که حالت مطلوب را mark می‌کند، output extraction، feasibility روی backend، و baselineهای کلاسیک قوی مشخص شوند. مزیت query-level ممکن است با ساخت مدار، transpilation، shots، queue، error mitigation و post-processing از بین برود.

Quantum-Assisted Test PoC
Testing decision/problem and why current method is insufficient
Quantum algorithm/subroutine and theoretical assumptions
Input encoding / oracle construction / output decoding
Classical baselines: random, heuristic, search, PBT/fuzz/optimizer
Train/tune workload versus held-out representative workload
Seeded faults or real defect corpus and representativeness limits
Measures: unique faults, solution quality, coverage evidence
End-to-end elapsed/queue/setup/compute/post-process/rerun cost
Uncertainty/repetitions/failures/availability/vendor constraints
Security/privacy/IP/licensing and data transfer
Kill/stop/scale criteria and classical fallback
ادعاEvidence لازمچیزی که کافی نیست
تست‌کیس بهترheld-out faults/coverage/risk evidence برابر budgetتعداد case یا novelty
سریع‌ترend-to-end distribution با queue/setupcircuit runtime یا query count تنها
ارزان‌ترTCO شامل access/shots/rerun/engineeringcredit آزمایشی
باگ نادر پیدا می‌کندdefect identity، reproducibility، unique causal pathmutantهای cherry-picked
مقیاس‌پذیرworkload/resource curve و failure boundarydemo کوچک
مزیت کوانتومیتعریف مزیت، baseline/assumptions و independent reviewاستفاده از hardware یا واژهٔ Quantum

PoC را innovation experiment بدانید، نه تعهد Roadmap. اگر classical PBT، search، Fuzz یا constraint solver همان outcome را ارزان‌تر و قابل‌توضیح‌تر می‌دهد، Stop نتیجهٔ سالم است. ساعت Quantum یا qubit count KPI نوآوری نیست.

PQC چیست و چرا برای QA امروز عملی‌تر است؟

Post-Quantum Cryptography الگوریتم‌های رمزنگاری کلاسیکی است که برای مقاومت در برابر حملات رایانهٔ کلاسیک و کوانتومی طراحی می‌شوند؛ برای اجرای آن‌ها Quantum computer لازم نیست. پروژهٔ PQC مؤسسه NIST سه استاندارد اصلی FIPS ۲۰۳ (ML-KEM)، FIPS ۲۰۴ (ML-DSA) و FIPS ۲۰۵ (SLH-DSA) را در ۲۰۲۴ منتشر کرده و بر آغاز migration تأکید دارد. Applicability و الزامات سازمان ایرانی را مرجع امنیت/حقوق/رگولاتوری محلی و Vendor contracts تعیین می‌کنند؛ FIPS خودکار قانون ایران نیست.

توضیح NIST دربارهٔ PQC می‌گوید CRQC مناسب شکستن رمزنگاری هنوز وجود ندارد و زمان ساخت آن نامعلوم است، اما مهاجرت سال‌ها طول می‌کشد و دادهٔ امروز ممکن است برای decrypt آینده جمع‌آوری شود. پس برنامهٔ QA واقعی inventory و crypto-agility است، نه ادعای «اکنون RSA را با Quantum شکستیم».

PQC migration را به برنامهٔ تست تبدیل کنید

PQC Migration Test Contract
System/data/secret lifetime and risk owner
Crypto inventory: algorithm, purpose, protocol, library, key/cert
Hidden/vendor/firmware/mobile/browser/HSM/dependency boundaries
Applicable standard/profile/version and source
Current → target → hybrid/intermediate state
Key generation/encapsulation/decapsulation/sign/verify workflows
Known-answer/negative/malformed/corruption test sources
Protocol negotiation/interoperability/downgrade/fallback policy
Key/cert lifecycle: create/store/rotate/revoke/expire/recover/audit
Message/key/signature/ciphertext size and buffer limits
Latency/CPU/memory/network/storage/handshake/load/failure workload
Mixed-version rollout/rollback/data compatibility/observability
Secret/PII/test-key separation/evidence retention
Decision owner / exception / expiry / vendor exit
لایهنمونه تستخطر مهم
Inventorysource/binary/config/cert/protocol/vendor discoverycrypto ناشناخته یا hard-coded
Primitive/APIKAT، invalid key/ciphertext/signature، deterministic boundariesimplementation misuse/error handling
Protocolnegotiation، hybrid، downgrade، fragmentationsilent fallback/interoperability
Lifecyclerotation/revocation/expiry/backup/restoreorphan key/cert و recovery failure
Performancesizes/latency/CPU/memory/throughput under mixMTU/buffer/DoS/capacity
Deploymentmixed clients/servers، canary، rollbacklockout/data unreadable
Operationstelemetry/alert/audit/incident/runbookalgorithm visibility gap
Supply chainlibrary/provider/HSM/version/FIPS claim evidenceunsupported or vulnerable dependency

Known-answer test صحت محدود implementation/interface را برای vectorهای مشخص بررسی می‌کند؛ امنیت کامل، absence side-channel یا protocol correctness را تضمین نمی‌کند. Fuzzing inputهای malformed و تحلیل استاتیک نیز مکمل‌اند؛ برای governance هشدارهای ابزار از راهنمای تحلیل استاتیک QA استفاده کنید. تست امنیت عمومی وب و OAuth/OIDC همچنان لازم‌اند و با PQC حذف نمی‌شوند: OWASP Top 10 و تست OAuth/OIDC.

سناریوی ایرانی: مهاجرت پرداخت به Crypto-agile architecture

سناریو ساختگی است. Marketplace ایرانی Checkout، پنل فروشنده، API موبایل، Worker تسویه و اتصال PSP دارد. بررسی اولیه نشان می‌دهد TLS termination در CDN/Vendor، mTLS سرویس‌ها، امضای Callback داخلی، JWT/OIDC، certificate pinning موبایل، backupهای رمز‌شده و libraryهای Java/Go/Android/iOS نقاط رمزنگاری متفاوت‌اند. «تغییر RSA به PQC» یک patch واحد نیست.

Inventory و اولویت مبتنی بر Risk

Asset/flowCrypto purposeSecret lifetime/impactOwner/dependencyقدم بعدی
PSP callbacktransport + message authenticityتراکنش/کوتاه؛ integrity بالاPSP contract + Backendinventory/algorithm agility، نه تغییر یک‌جانبه
Seller documentsstorage/transportچندساله/PIIData/Security/KMSHNDL risk + key lifecycle
Mobile APITLS/pinning/tokenنسخه‌های client بلندعمرMobile/CDN/IdPcompatibility matrix
Service mTLSidentity/channelعملیاتیPlatform/meshhybrid lab/cert rotation
Settlement exportfile signature/encryptionمالی/retention بالاFinance/Bank/Vendorstandard/format/interoperability
Backupsencryption at restبلندمدتStorage/KMSrestore and re-encryption plan

Compatibility، Failure و Rollback

  • Old/new/hybrid client-server matrix با version/OS/library واقعی، نه فقط happy path.
  • Unsupported algorithm، malformed key/ciphertext/signature، truncated/oversized message و corrupt certificate.
  • Negotiation policy و downgrade detection؛ fallback فقط با owner، telemetry و expiry.
  • Certificate/key rotation در میانهٔ session، clock skew، expiry، revoke و recovery.
  • Size افزایش‌یافته در header/message/QR/file/MTU/proxy/log/database column.
  • Load/latency/CPU/memory/connection churn و اثر بر queue، timeout و retry.
  • Mixed rollout، canary، dependency outage، HSM/KMS failure و rollback بدون از‌دست‌رفتن decryptability.
  • IRR مرجع/تومان نمایشی، Order/Attempt/PSP identity و idempotency مستقل از crypto migration باقی بمانند.
  • Persian/Arabic/Latin digits، Unicode/RTL، UTC/Asia-Tehran/Jalali در certificate UI/audit/report.
  • Synthetic test keys و records؛ هیچ private key، PAN، OTP، token یا production secret در Ticket/AI/Artifact.

PSP، CDN، HSM، Cloud و app store ممکن است به‌دلیل تحریم، دسترسی، قرارداد یا زمان‌بندی Vendor قابلیت یکسان نداشته باشند. تیم محلی نمی‌تواند protocol بیرونی را یک‌طرفه تغییر دهد؛ Interface contract، version negotiation، fallback/exit و residual risk باید با صاحب اختیار ثبت شوند. «PQC enabled» بدون interoperability و rollback readiness کافی نیست.

CI/CD و Evidence lanes برای Quantum software

LaneاجراGate/Evidence
Commitclassical unit، lint/type، circuit contract، tiny exact simfast deterministic failures
PRproperties/metamorphic/mutation subset، IR diffreviewed semantic/resource changes
Nightlybroader simulation/noise sweep/differentialtrend + Inconclusive handling
Provider contractAPI/schema/capability/quota/job lifecyclecompatibility/fallback
Hardware scheduledsmall representative/control circuits/batchesbackend/calibration/job evidence
Releasehybrid E2E/domain/guardrails/resource budgetnamed decision/rollback
PQC migrationKAT/interoperability/load/mixed rollout/restoreinventory closure + exceptions

Hardware job را به هر PR وابسته نکنید مگر availability/cost/value آن اثبات شود. بیشتر feedback را روی لایهٔ کلاسیک و simulator بگیرید؛ hardware lane را نماینده، budgeted و versioned کنید. Cache فقط با identity کامل؛ result یک backend/calibration را به دیگری تعمیم ندهید.

Evidence Pack برای Bug و Regression کوانتومی

Quantum Failure Packet
Observed claim / expected property / verdict
First failing layer and last passing layer
Program/circuit source + normalized/transpiled hashes
SDK/compiler/runtime/provider/backend versions
Basis/endian/qubit/classical-bit/layout mappings
Parameters/input/observable/measurement/shots/seed/batches
Noise/calibration/mitigation/job/time/queue metadata
Raw ordered counts/estimates/uncertainty
Classical shell logs and mapping checks
Minimal reduced circuit / metamorphic relation / reference
Retry/differential history without overwriting first attempt
Resource/cost/privacy/redaction/access
Owner / suspected hypotheses / next discriminator / expiry

Screenshot histogram کافی نیست. basis order، labels، raw counts و source artifact را نگه دارید. اگر گزارش bug به provider است، minimal reproducible circuit، target، version و job ID لازم‌اند؛ اگر data محرمانه است، synthetic reduction بسازید. Root cause را پیش از evidence «noise» یا «compiler» ننویسید.

مسیر یادگیری تستر کوانتومی: انتخاب Taskمحور، نه اجبار

همهٔ تسترها لازم نیست جبر خطی پیشرفته، Qiskit، Cirq و Q# را هم‌زمان بیاموزند. نیاز Role ممکن است فقط PQC inventory، protocol compatibility یا Vendor evaluation باشد؛ پژوهشگر مدار به state/linear algebra/statistics/compiler نیاز بیشتری دارد. برنامه را با سیستم یادگیری Taskمحور تستر ببندید، نه با ترس از آیندهٔ شغلی.

Role/Taskیادگیری Minimum viableEvidence انتقال
PQC migration QAcrypto inventory، KEM/signature concepts، interoperability، lifecyclelab matrix + rollback/restore evidence
Hybrid app testerjob lifecycle، encoding/mapping، sampling، provider contractsfailure-injection E2E packet
Quantum SDK/compiler testercircuit semantics، IR/transforms، metamorphic/differential/fuzzreduced reproducible platform bug
Algorithm/application verifierlinear algebra، observables، statistics، domain oracleexact→sample→hardware verification case
Security architect/testerinventory، standards/applicability، crypto agility، threat/lifecycleversioned migration risk/evidence map
General QAawareness + know when to refercorrect routing، no hype claim

یک SDK را بر اساس stack/mentor/task انتخاب کنید؛ نام «بهترین» جهانی ندارد. Simulator رایگان/محلی می‌تواند برای slice اولیه کافی باشد؛ hardware account، پرداخت ارزی، تحریم، quota، latency و data policy ممکن است مانع باشد. دوره/گواهی/تعداد qubit یا notebook اجراشده، job readiness را تضمین نمی‌کند.

محدودیت‌های ایران، دسترسی و حریم داده

  • قبل از وابستگی به provider، دسترسی منطقه‌ای، تحریم/VPN، account suspension، payment/credit، quota و export را بررسی کنید.
  • SDK/compiler/simulator را pin و source/package/digest را از کانال معتبر تهیه کنید؛ mirror ناشناس supply-chain risk دارد.
  • دادهٔ مشتری/مالی/سلامت/دولتی را برای Quantum cloud بی‌مجوز encode یا upload نکنید؛ حتی پارامتر مشتق‌شده ممکن است حساس باشد.
  • Data residency، retention، training use، log، support access، deletion و incident terms را با Legal/Security محلی بررسی کنید.
  • Fallback محلی/classical، provider exit، export artifacts و قابل‌خواندن‌بودن نتایج را پیش از PoC بسازید.
  • هزینه را با نرخ ارز، queue، rerun، engineering و فرصت از‌دست‌رفته versioned کنید.
  • Timestamp را با offset/UTC و نمایش Asia/Tehran ثبت کنید؛ drift calibration را با نمایش شمسی مخلوط نکنید.
  • واژگان فارسی/انگلیسی، basis labels و نمودار را RTL-accessible نگه دارید؛ رقم و bitstring را ناخواسته بومی‌سازی نکنید.
  • NIST، Vendor docs و مقالهٔ پژوهشی قانون/استاندارد اجباری ایران نیستند؛ applicability owner لازم است.
  • Secret/private key/job token را در notebook، screenshot، prompt یا Ticket عمومی قرار ندهید.

AI-generated quantum code را چگونه تست کنیم؟

AI می‌تواند circuit/code/test draft بسازد، اما phase، basis order، unsupported gate، uncompute/reset، parameter، target، resource و API version را اشتباه کند و Citation یا speedup بسازد. همان Verification ladder لازم است؛ «کد اجرا شد» correctness یا advantage نیست.

  • Prompt/input را از Secret، PII، private key، proprietary algorithm و contract پاک کنید.
  • SDK/API/version و target profile را از مستند رسمی کنترل کنید.
  • Classical wrapper و circuit را جدا review کنید.
  • Small exact cases، properties، inverse/metamorphic و mutants را پیش از hardware اجرا کنید.
  • Resource estimate، gate/depth/qubit growth و provider support را بررسی کنید.
  • Hallucinated theorem، speedup، FIPS claim و URL را با منبع اصلی ردگیری کنید.
  • Output AI را Oracle همان code نکنید؛ laundering common-mode error است.
  • AI را برای رتبه‌بندی researcher/tester، تشخیص competence یا Risk acceptance به‌کار نبرید.

معیارهای سالم و Countermetricها

Signalتعریف عملیCountermetric/خطر
Layer localizationfailureهای دارای first-failing/last-passing layerforce کردن cause زودرس
Oracle sensitivityknown/representative mutants killed by portfoliomutant count و غیرواقعی‌بودن
Reproduction completenesspacketهای rerunشدنی در lane تعریف‌شدهseed-only illusion
Inconclusive closureevidence gapهای resolve/accept/stopشدهcoerce to Pass/Fail
Simulator-hardware gapdistribution of bounded comparable differencesیک score بی‌Context
Resource regressiondepth/gates/qubits/time/cost per workloadکمینه‌سازی هزینه با افت utility
Classical shell qualitymapping/job/result contract escapesپنهان‌کردن با label Quantum
PQC inventory closureflows با algorithm/purpose/owner/plancoverage خوداظهاری
Migration interoperabilitysupported matrix + failures/rollbackhappy-path pass rate
PoC decision qualitybaseline/held-out/cost/stop completedemo success/quantum hours

Qubit count، shot count، hardware jobs، circuit count، SDK count، Quantum coverage مبهم، course/certificate، novelty، press mention یا «quantum advantage score» بی‌قرارداد KPI فرد/تیم نیستند. آن‌ها قابل‌بازی و وابسته به مسئله/backend هستند. Metric باید Decision، formula، denominator، uncertainty و non-use داشته باشد.

Pilot سی‌روزه بدون خریدن آینده

بازهاقدامخروجی
روز ۱–۵انتخاب Track و Decision؛ inventory stack/riskClaim/Non-goal/owner
روز ۶–۱۰Quantum Test Contract + classical baselineversioned artifacts/criteria
روز ۱۱–۱۵small exact simulator + properties/mutantsOracle sensitivity/evidence
روز ۱۶–۲۰noise/provider/PQC interoperability slicegap/failure/resource packet
روز ۲۱–۲۵held-out workload یا mixed-version migrationunbiased comparison/rollback
روز ۲۶–۳۰Evidence reviewAdopt/Adapt/Defer/Stop + expiry

Track A/B را فقط اگر مسئله/Role واقعی دارید اجرا کنید. برای Track C ممکن است خروجی ماه اول صرفاً inventory و Vendor dependency باشد؛ این شکست نیست. Hardware access یا press-ready demo شرط Pilot نیست. اگر Evidence نشان داد PoC ارزش ندارد، Stop و بازگشت به baseline خروجی معتبر است.

۲۰ ضدالگوی تست کوانتومی

  • نامیدن هر تغییر Quantum به‌عنوان انقلاب حتمی تست.
  • کیوبیت به‌عنوان سکه یا ۰/۱ هم‌زمان کلاسیک.
  • Superposition مساوی اجرای رایگان همهٔ test caseها.
  • Grover مساوی یافتن باگ نادر بدون Oracle/encoding/cost.
  • Shor روی سخت‌افزار فعلی به‌عنوان quantum penetration test.
  • پیش‌بینی قطعی ۵–۱۰ ساله برای شغل/CRQC.
  • مخلوط‌کردن Quantum software، Quantum-assisted testing و PQC.
  • نادیده‌گرفتن Classical shell و bit/basis mapping.
  • ذخیره‌نکردن SDK/compiler/backend/calibration identity.
  • Seed به‌عنوان تضمین hardware reproducibility.
  • Sampling وقتی exact simulator oracle در دسترس است.
  • Shot بیشتر به‌عنوان درمان systematic error.
  • Noise به‌عنوان excuse همهٔ Failها.
  • رأی اکثریت simulator/provider به‌عنوان truth.
  • Metamorphic relation بدون review و mutation sensitivity.
  • تعداد qubit/depth کم به‌عنوان correctness/utility.
  • PoC بدون baseline کلاسیک و held-out workload.
  • PQC enabled بدون inventory/interoperability/lifecycle/rollback.
  • ارسال secret/private key/data به cloud یا AI.
  • نقشهٔ یادگیری Qiskit+Cirq+Q# برای همهٔ تسترها.

چک‌لیست ۲۰‌نقطه‌ای

  1. Track A/B/C و Decision صریح‌اند.
  2. Test object/stack/boundary و non-goal ثبت شده‌اند.
  3. Shell کلاسیک جدا تست شده است.
  4. Program/circuit/SDK/compiler/backend identity کامل است.
  5. Basis/endian/qubit/classical-bit mapping صریح است.
  6. Input/parameter/observable/measurement basis ثبت است.
  7. Simulator exact versus sampled versus hardware جدا هستند.
  8. Oracle portfolio و provenance/limits روشن‌اند.
  9. Sample/shot/batch/stop/Inconclusive contract وجود دارد.
  10. Noise/calibration/mitigation زمان‌دار هستند.
  11. First attempt و raw ordered counts حفظ شده‌اند.
  12. Metamorphic/differential disagreement triage دارد.
  13. Mutantها و محدودیت representativeness ثبت‌اند.
  14. Hybrid retry/idempotency/timeout/partial result تست شده‌اند.
  15. Resource/time/queue/cost/quota اندازه‌گیری شده‌اند.
  16. PoC baseline کلاسیک و held-out workload دارد.
  17. PQC inventory/standard/applicability owner مشخص است.
  18. Interoperability/downgrade/lifecycle/rollback تست شده‌اند.
  19. Privacy/secret/provider/Iran-access/exit کنترل شده‌اند.
  20. Decision/owner/expiry/regression/correction ثبت شده‌اند.

جمع‌بندی: از Hype به Evidence

محاسبات کوانتومی نه تمام روش‌های تست را منسوخ کرده و نه هنوز ابزار عمومی یافتن همهٔ باگ‌های کلاسیک است. اما Quantum software stack یک Test object واقعی با مسائل خاص state، sampling، compiler، noise، observability، resource و hybrid boundaries است؛ هم‌زمان PQC migration یک کار امنیتی واقعی و فعلی است.

از کوچک‌ترین گام شروع کنید: Track را بنویسید، Shell کلاسیک را تست کنید، یک circuit کوچک را با exact property و mutant بررسی کنید، سپس فقط در صورت نیاز به noisy/hardware lane بروید. برای PQC، inventory و crypto agility را پیش از تعویض الگوریتم بسازید. آینده را وعده ندهید؛ Evidence، محدودیت و شرط بازبینی تولید کنید.

پرسش‌های متداول دربارهٔ تست نرم‌افزار کوانتومی

تفاوت تست نرم‌افزار کلاسیک و کوانتومی چیست؟

مرز مطلق «قطعی در برابر احتمالی» درست نیست؛ سیستم کلاسیک هم می‌تواند غیرقطعی باشد و برنامهٔ کوانتومی هم contract دقیق داشته باشد. تفاوت مهم در state/measurement، observability hardware، sampling/noise، compiler/backend و resource model است. Shell کلاسیک با روش‌های معمول تست می‌شود و Quantum core به Oracleهای exact/property/metamorphic/statistical نیاز پیدا می‌کند.

آیا محاسبات کوانتومی تست‌کیس‌ها را سریع‌تر تولید می‌کند؟

به‌صورت عمومی خیر. برخی الگوریتم‌ها تحت فرض‌های خاص speedup دارند، اما باید encoding، Oracle، circuit/resource، noise، queue و decoding را همراه baseline کلاسیک سنجید. PoC فقط وقتی ارزش دارد که روی workload نماینده و held-out، کیفیت/خطایابی بهتر یا هزینهٔ end-to-end قابل‌قبولی نشان دهد.

آیا اکنون می‌توان RSA و ECC را با Quantum computer شکست؟

NIST می‌گوید cryptographically relevant quantum computer هنوز وجود ندارد و زمانش نامعلوم است. خطر بلندمدت و harvest-now-decrypt-later دلیل آغاز migration است، نه ادعای حملهٔ عملی امروز. QA باید inventory، PQC interoperability، lifecycle، performance، rollout و rollback را تست کند و Applicability را با مسئول امنیت/قانون تعیین کند.

برای تست برنامهٔ کوانتومی Simulator کافی است؟

برای Unit، state/property کوچک، compiler pipeline و feedback سریع بسیار مفید است؛ گاهی observability دقیق‌تری از hardware دارد. اما device noise، calibration، topology، queue و provider behavior را کامل ثابت نمی‌کند. Ladder بسازید: exact/sampled/noisy simulation و hardware evidence فقط در Scope/هزینهٔ لازم.

آیا هر تستر باید Qiskit، Cirq یا Q# یاد بگیرد؟

خیر. Task و Role تعیین می‌کند: General QA شاید فقط awareness و referral بخواهد؛ PQC QA به inventory/protocol/lifecycle نیاز دارد؛ tester پلتفرم به circuit/compiler/metamorphic و verifier الگوریتم به ریاضی/آمار/domain Oracle. یک stack را برای Work sample انتخاب کنید؛ چند SDK یا گواهی، آیندهٔ شغلی را تضمین نمی‌کند.

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