یک تیم میگوید «برای یافتن تستکیسهای بهینه، 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 را از هم جدا کنید
| Track | Test object | سؤال تصمیمی | Evidence محتمل | خطای رایج |
|---|---|---|---|---|
| A: Quantum software | program/circuit/compiler/runtime/hybrid app | آیا رفتار/رابط/منبع در Scope درست است؟ | exact simulation، properties، samples، hardware metadata | هر تفاوت را noise یا quantum magic نامیدن |
| B: Quantum-assisted classical testing | optimizer/generator/search PoC | آیا نسبت به baseline برای workload مشخص ارزش افزوده دارد؟ | solution quality، faults found، total cost، repeatability | نام Grover/QAOA را معادل speedup گرفتن |
| C: PQC migration | crypto 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/state | state در فضای برداری، نه Boolean پنهان | همزمان یک ۰ و ۱ کلاسیک |
| Superposition | ترکیب amplitudeها با phase | خواندن همهٔ جوابها در پایان |
| Entanglement | state مشترک غیرقابلتجزیهٔ ساده | ارسال پیام فوری یا dependency عادی |
| Measurement | outcome وابسته به state/basis؛ state را عموماً تغییر میدهد | «Observer انسانی» علت است |
| Shot | یک اجرای sampling طبق تعریف runtime | تکرار مستقل تضمینشده در هر backend |
| Noise | مدل/فرایندهای خطا و محدودیت دستگاه | توضیح آماده برای هر failure |
| Interference | ترکیب amplitudeها و relative phase | parallelism رایگان |
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 shell | validation/mapping/orchestration/reporting | exact unit/contract/property | Quantum core را اثبات نمیکند |
| L1 Static/circuit contract | qubit count، allowed gates، reset، measurement، target | lint/type/compiler/device validation | behavior/runtime را اثبات نمیکند |
| L2 Exact ideal simulation | state/unitary/expectation کوچک | statevector/matrix/property | classical scale و noiseless fidelity |
| L3 Sampled ideal simulation | measurement interface/distribution | set/invariant/statistical | sampling uncertainty |
| L4 Metamorphic/differential | Oracle gap/transform/compiler | semantics-preserving relations/references | common-mode و MR weakness |
| L5 Noisy simulation/QVM | sensitivity و pipeline نزدیکتر | noise model/guardrails | model ≠ device |
| L6 Hardware sampling | backend-specific observed behavior | job/calibration/sample/resource evidence | limited observability/drift/cost |
| L7 Hybrid/domain outcome | end-to-end decision usefulness | business/scientific independent oracle | causality/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 host | variables، control flow، API، serialization، errors | Quantum state از host log کامل معلوم است |
| Ideal simulator | statevector/operation/expectation بسته به ابزار | همان observability روی hardware وجود دارد |
| Noisy simulator | نتیجه زیر noise model تعریفشده | مدل دقیقاً device/زمان آینده است |
| Compiler/transpiler | IR/circuit/layout/pass output | semantic preservation بدون Oracle |
| Hardware/runtime | jobs، 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/exact | state کوچک، unitary، known basis result | قوی در simulator کوچک | spec/stale/common implementation |
| Structural/static | qubits، measurements، reset، target gates | سریع و deterministic | رفتار معنایی را نمیگیرد |
| Invariant/property | normalization، parity، conserved quantity | بدون خروجی کامل | ضعیف/ناقابلکشتن mutant |
| Metamorphic | circuit + inverse، qubit rename، equivalent transform | Oracle problem را کاهش میدهد | relation/implementation مشترک |
| Differential | دو simulator/compiler/backend | اختلاف را آشکار میکند | اکثریت حقیقت نیست؛ noise/config |
| Statistical | distribution/expectation/interval | sampling outcome | independence/multiplicity/stop bias |
| Resource | depth، ۲-qubit gates، qubits، runtime/cost | feasibility/regression | proxy ≠ utility/correctness |
| Domain/reference | energy bound، optimization score، scientific check | decision meaning | ground 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 Fail | program/spec/mapping/compiler bug | small reduction، invariant، differential، IR |
| Ideal Pass، noisy simulator Fail | noise sensitivity/model/config | noise sweep، circuit depth/gates، model version |
| Simulator Pass، hardware drift | device/calibration/layout/readout/queue | job/calibration/time/backend/control circuit |
| دو simulator اختلاف | convention/version/compiler/common input bug | normalized circuit، endian/basis، third oracle |
| hardware sample ناپایدار | noise/correlation/drift/low shots/program | batches/time strata/controls؛ Inconclusive |
| job failure | quota/provider/network/unsupported target | runtime status/request/target contract |
| domain score بد | encoding/optimizer/objective/core/noise | classical 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 encoding | boundaries/unit/permutation/round-trip | independent classical mapping |
| timeout after job acceptance | retry same business/job key | one logical outcome، no duplicate billing/action |
| partial/late batch | missing/out-of-order/duplicate result | closed accounting + Inconclusive |
| optimizer stagnation | init/seeds/budget/stop variants | convergence contract + baseline |
| provider change | schema/target/capability contract | compatibility + fallback |
| feature action | bad/uncertain score | human/guardrail authority |
| cost blowout | queue/shots/reruns/quota | budget/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/setup | circuit runtime یا query count تنها |
| ارزانتر | TCO شامل access/shots/rerun/engineering | credit آزمایشی |
| باگ نادر پیدا میکند | defect identity، reproducibility، unique causal path | mutantهای cherry-picked |
| مقیاسپذیر | workload/resource curve و failure boundary | demo کوچک |
| مزیت کوانتومی | تعریف مزیت، 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
| لایه | نمونه تست | خطر مهم |
|---|---|---|
| Inventory | source/binary/config/cert/protocol/vendor discovery | crypto ناشناخته یا hard-coded |
| Primitive/API | KAT، invalid key/ciphertext/signature، deterministic boundaries | implementation misuse/error handling |
| Protocol | negotiation، hybrid، downgrade، fragmentation | silent fallback/interoperability |
| Lifecycle | rotation/revocation/expiry/backup/restore | orphan key/cert و recovery failure |
| Performance | sizes/latency/CPU/memory/throughput under mix | MTU/buffer/DoS/capacity |
| Deployment | mixed clients/servers، canary، rollback | lockout/data unreadable |
| Operations | telemetry/alert/audit/incident/runbook | algorithm visibility gap |
| Supply chain | library/provider/HSM/version/FIPS claim evidence | unsupported 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/flow | Crypto purpose | Secret lifetime/impact | Owner/dependency | قدم بعدی |
|---|---|---|---|---|
| PSP callback | transport + message authenticity | تراکنش/کوتاه؛ integrity بالا | PSP contract + Backend | inventory/algorithm agility، نه تغییر یکجانبه |
| Seller documents | storage/transport | چندساله/PII | Data/Security/KMS | HNDL risk + key lifecycle |
| Mobile API | TLS/pinning/token | نسخههای client بلندعمر | Mobile/CDN/IdP | compatibility matrix |
| Service mTLS | identity/channel | عملیاتی | Platform/mesh | hybrid lab/cert rotation |
| Settlement export | file signature/encryption | مالی/retention بالا | Finance/Bank/Vendor | standard/format/interoperability |
| Backups | encryption at rest | بلندمدت | Storage/KMS | restore 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 |
|---|---|---|
| Commit | classical unit، lint/type، circuit contract، tiny exact sim | fast deterministic failures |
| PR | properties/metamorphic/mutation subset، IR diff | reviewed semantic/resource changes |
| Nightly | broader simulation/noise sweep/differential | trend + Inconclusive handling |
| Provider contract | API/schema/capability/quota/job lifecycle | compatibility/fallback |
| Hardware scheduled | small representative/control circuits/batches | backend/calibration/job evidence |
| Release | hybrid E2E/domain/guardrails/resource budget | named decision/rollback |
| PQC migration | KAT/interoperability/load/mixed rollout/restore | inventory 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 viable | Evidence انتقال |
|---|---|---|
| PQC migration QA | crypto inventory، KEM/signature concepts، interoperability، lifecycle | lab matrix + rollback/restore evidence |
| Hybrid app tester | job lifecycle، encoding/mapping، sampling، provider contracts | failure-injection E2E packet |
| Quantum SDK/compiler tester | circuit semantics، IR/transforms، metamorphic/differential/fuzz | reduced reproducible platform bug |
| Algorithm/application verifier | linear algebra، observables، statistics، domain oracle | exact→sample→hardware verification case |
| Security architect/tester | inventory، standards/applicability، crypto agility، threat/lifecycle | versioned migration risk/evidence map |
| General QA | awareness + know when to refer | correct 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 localization | failureهای دارای first-failing/last-passing layer | force کردن cause زودرس |
| Oracle sensitivity | known/representative mutants killed by portfolio | mutant count و غیرواقعیبودن |
| Reproduction completeness | packetهای rerunشدنی در lane تعریفشده | seed-only illusion |
| Inconclusive closure | evidence gapهای resolve/accept/stopشده | coerce to Pass/Fail |
| Simulator-hardware gap | distribution of bounded comparable differences | یک score بیContext |
| Resource regression | depth/gates/qubits/time/cost per workload | کمینهسازی هزینه با افت utility |
| Classical shell quality | mapping/job/result contract escapes | پنهانکردن با label Quantum |
| PQC inventory closure | flows با algorithm/purpose/owner/plan | coverage خوداظهاری |
| Migration interoperability | supported matrix + failures/rollback | happy-path pass rate |
| PoC decision quality | baseline/held-out/cost/stop complete | demo 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/risk | Claim/Non-goal/owner |
| روز ۶–۱۰ | Quantum Test Contract + classical baseline | versioned artifacts/criteria |
| روز ۱۱–۱۵ | small exact simulator + properties/mutants | Oracle sensitivity/evidence |
| روز ۱۶–۲۰ | noise/provider/PQC interoperability slice | gap/failure/resource packet |
| روز ۲۱–۲۵ | held-out workload یا mixed-version migration | unbiased comparison/rollback |
| روز ۲۶–۳۰ | Evidence review | Adopt/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# برای همهٔ تسترها.
چکلیست ۲۰نقطهای
- Track A/B/C و Decision صریحاند.
- Test object/stack/boundary و non-goal ثبت شدهاند.
- Shell کلاسیک جدا تست شده است.
- Program/circuit/SDK/compiler/backend identity کامل است.
- Basis/endian/qubit/classical-bit mapping صریح است.
- Input/parameter/observable/measurement basis ثبت است.
- Simulator exact versus sampled versus hardware جدا هستند.
- Oracle portfolio و provenance/limits روشناند.
- Sample/shot/batch/stop/Inconclusive contract وجود دارد.
- Noise/calibration/mitigation زماندار هستند.
- First attempt و raw ordered counts حفظ شدهاند.
- Metamorphic/differential disagreement triage دارد.
- Mutantها و محدودیت representativeness ثبتاند.
- Hybrid retry/idempotency/timeout/partial result تست شدهاند.
- Resource/time/queue/cost/quota اندازهگیری شدهاند.
- PoC baseline کلاسیک و held-out workload دارد.
- PQC inventory/standard/applicability owner مشخص است.
- Interoperability/downgrade/lifecycle/rollback تست شدهاند.
- Privacy/secret/provider/Iran-access/exit کنترل شدهاند.
- 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 یا گواهی، آیندهٔ شغلی را تضمین نمیکند.

