یک تیم برای انتخاب ابزار مدیریت داده تست سه پلتفرم را مقایسه کرد. نامزد ۴۱قابلیتی روی کاغذ برنده بود؛ اما در PoC، ایمیل و موبایل واقعی داخل متن آزاد باقی ماند، Dataset پرداخت ناقص تحویل شد و Export کامل هم نداشت. نامزد دیگری روابط داده را شکست و خروجی تکرارپذیر نبود. فقط نامزدی پذیرفته شد که Privacy، Referential integrity، Scenario closure، Determinism، Export و تداوم دسترسی را با Evidence نشان داد.
این تفاوت میان خرید Feature و Qualification یک TDM Platform است. پلتفرم باید از Source discovery تا Masking/Generation، Subsetting، Provision، Reset، CI، Audit، Retention و Exit یک زنجیره قابلاعتماد بسازد. اگر فقط Portal زیبا یا فهرست Connector را بسنجید، ممکن است داده سریعتر برسد اما نادرست، ناقص، نشتدار یا غیرقابلبازتولید باشد.
پاسخ کوتاه: ابزار TDM را چگونه انتخاب کنیم؟
ابتدا مشکل قابلاندازهگیری، Landscape داده و Risk را ثبت کنید؛ سپس Hard gateهای Privacy، Data integrity، Automation، Iran access و Export را قبل از امتیازدهی ببندید. همه نامزدها باید یک Dataset یکسان را Discover، Subset، Mask، Provision، Reset و Delete کنند. نتیجه را با Query و Leak scan مستقل بسنجید، نه Dashboard خود ابزار. در پایان، سهسال TCO، عملیات خرابی و Exit را نیز آزمایش کنید.
مرز این راهنما با مقالههای دیگر
برای تعریف چرخه، انواع داده و مدل عملیاتی ابتدا راهنمای مدیریت داده تست (TDM) را بخوانید. انتخاب بین Production-derived و Synthetic موضوع مقایسه داده تست واقعی یا مصنوعی است و ساخت Generator در راهنمای تولید داده تست پوشش داده شده است.
این مقاله فقط مالک Qualification یک Offering مشخص است: آیا Edition/Version انتخابی میتواند داده درست، ایمن و بهموقع را در معماری شما تحویل دهد و Evidence لازم برای پذیرش، عملیات و خروج را بسازد؟
TDM Platform دقیقاً چه مسئلهای را حل میکند؟
TDM Platform الزاماً یک محصول واحد نیست. ممکن است ترکیبی از Catalog/Discovery، Policy engine، Masking، Synthetic generation، Subsetting، Data virtualization، Workflow orchestration، Secret manager و Portal/API باشد. ارزش آن نیز «داشتن داده بیشتر» نیست؛ ارزش، کاهش زمان و ریسک رسیدن به یک Dataset مناسبِ سؤال تست است.
Signal مسئله واقعی را پیدا کنید
- تیم چند روز منتظر DBA یا Snapshot میماند؛
- Testها بهدلیل Shared state یا داده تاریخگذشته Flaky هستند؛
- PII در Dev، Log، Export یا Backup مشاهده میشود؛
- Subset روابط Parent/Child یا جریان کسبوکار را از دست میدهد؛
- CI به Seed دستی، Credential شخصی یا Ticket وابسته است؛
- Reset قابلاعتماد نیست و Run بعدی از اثر Run قبلی آسیب میبیند؛
- نسخه Dataset، Policy و Source snapshot قابلردیابی نیست؛
- هزینه Clone/Storage/DBA/Masking نامعلوم است.
چه زمانی محصول TDM لازم نیست؟
اگر یک سرویس کوچک با Schema محدود دارید، Factoryهای deterministic، migration، Seed و containerized database ممکن است کافی باشند. خرید Platform زمانی توجیه دارد که چند Source/Team/Environment، داده Production-derived، Privacy policy، Self-service، حجم، Legacy یا هماهنگی چند Store هزینهای تکرارشونده ساخته باشد. پیچیدگی ابزار را از پیچیدگی واقعی مسئله بیشتر نکنید.
Problem Brief را پیش از Demo بنویسید
Outcome: کاهش زمان درخواست تا Dataset معتبر، نه صرفاً زمان Copy
Users: developer, tester, DBA, privacy, security, platform
Scope: source/target/store/schema/volume/environment
Journeys: critical, boundary, negative, performance, recovery
Risks: PII leakage, broken relations, stale data, collision, outage
Baseline: lead time, manual hours, invalid runs, storage, incidents
Hard gates: privacy, closure, determinism, API/CI, audit, export, Iran access
Evidence window: repeated PoC runs on fixed source snapshot
Owner / budget / decision date / review trigger
Baseline را با Timestamp و Denominator ثبت کنید. «تهیه داده خیلی کند است» قابلداوری نیست؛ «از درخواست تأییدشده تا Dataset معتبر، median چهار روز و p95 هفت روز در ۲۸ درخواست فصل اخیر» قابلمقایسه است.
Offering Map؛ اسم Vendor کافی نیست
نام Product ممکن است چند Edition، SaaS، Appliance، Managed service، Connector pack یا Add-on جدا داشته باشد. قابلیت Masking یا API شاید در Tier دیگری فروخته شود. نسخه، EOL و Migration path نیز تصمیم را تغییر میدهند.
Vendor / product / edition / version / deployment model
control plane region / data plane region / tenant model
licensed modules: discovery, masking, subset, synthetic, virtual data
supported source-target pairs + exact connector versions
agent/runtime/driver/database prerequisites
API/CLI/SDK versions + rate/concurrency limits
SSO/RBAC/audit/export/backup/DR boundaries
support channel/SLA + Iran commercial/network constraints
release/EOL/deprecation policy + tested upgrade path
این حساسیت نظری نیست. مستند رسمی Delphix نشان میدهد Self‑Service/JetStream در شاخههای جدید حذف و مسیر مهاجرت توصیه شده است؛ بنابراین Release note و EOL همان نسخه بخشی از Evidence خرید است، نه یادداشت بعد از قرارداد.
Landscape داده را پیش از Shortlist مدل کنید
یک جدول Source→Target بسازید: DB engine/version، Schema count، حجم/رشد، Change rate، FKهای فیزیکی و منطقی، Stored procedure، Sequence، Trigger، JSON/XML، فایل/Blob، Search index، Cache، Queue، SaaS، Mainframe و Owner. یک Connector که فقط جدول رابطهای را میبیند، Journey چندسیستمی شما را کامل نمیکند.
Dataset واحد با چند Store
در Checkout ممکن است Customer در PostgreSQL، Session در Redis، Search document در Elasticsearch، Payment event در Kafka و Receipt در Object storage باشد. «Clone موفق Database» بهتنهایی Dataset معتبر نیست. نقطه زمانی، Correlation ID و سازگاری Schema/Event باید در همه Storeها مشخص باشد.
رابطه منطقی را جدا از Foreign Key پیدا کنید
بسیاری از رابطهها در Code، JSON، composite key، business ID یا پیام Queue قرار دارند. Discovery خودکار را با Truth set از رابطههای شناختهشده بسنجید: چند رابطه Critical پیدا شد، چند False match داشت و چه چیزی نیاز به Rule دستی داشت؟ تعداد Tableهای Scanشده معیار پوشش نیست.
Hard Gateها را بیرون Scorecard نگه دارید
میانگین عالی نباید نشت PII یا Dataset خراب را جبران کند. Gateها برای هر سازمان متفاوتاند، اما معمولاً این موارد قابلمذاکره نیستند:
- هیچ مقدار حساس Seedشده در Target، Log، Report، Cache یا Temp artifact باقی نماند؛
- Scenario closure و Referential/domain integrity برای Journeyهای بحرانی پاس شود؛
- Policy و Dataset با Version/identity قابل Replay باشند؛
- Source production هرگز توسط Workflow تست تغییر نکند؛
- API/CLI بدون UI و Credential شخصی در CI اجرا شود؛
- RBAC، separation of duties و Audit غیرقابلحذف اثبات شوند؛
- Cleanup/retention/deletion Evidence وجود داشته باشد؛
- Export کامل Policy، mapping، workflow، metadata و history ممکن باشد؛
- Download، activation، support و fallback از ایران در Offering واقعی معتبر باشد؛
- Restore/DR و Exit rehearsal قابلاجرا باشد.
قابلیت اول: Discovery و Classification قابلسنجش
Scanner باید Column name، value pattern، Metadata، JSON/XML field، free text و در صورت نیاز فایل/Blob را ببیند. اما Discovery یک Oracle انسانی/Policy دارد: چه Classهایی مهماند، Recall روی Seedها چقدر است و False Positive چه هزینهای میسازد؟
یک Corpus کوچک با National ID، موبایل، ایمیل، IBAN، کارت Token، نام فارسی، آدرس، Note آزاد، Attachment metadata و مقادیر شبیهنما بسازید. TP/FN/FP را برای هر Class بگیرید. «پیدا کردن میلیونها مقدار» بدون Denominator و Critical FN بیمعناست.
قابلیت دوم: Subsetting با Scenario Closure
Subset خوب فقط کوچک نیست؛ برای سؤال تست بسته است. اگر Order را بردارید، Customer، Payment، Ledger، Refund، Shipment، Feature entitlement، Outbox و Audit موردنیاز باید طبق Scope همراه آن بیایند. در مقابل، داده نامرتبط نباید صرفاً بهخاطر یک Join گسترده وارد شود.
مستند رسمی IBM، Subsetting را استخراج Dataset سازگار و right-sized معرفی میکند؛ این یک Claim همان Offering است که باید با Query مستقل شما تأیید شود. راهنمای Subsetting در IBM Optim نشان میدهد چرا Access definition و رابطهها جزء Scope ارزیابیاند.
Closure را با Graph و Invariant بسنجید
seed = paid_order_o1
required_nodes = customer, order, payment, ledger, receipt, outbox
for every required edge:
child.parent_id must resolve inside dataset
for every business invariant:
order.total_irr = sum(lines) - discount + fee
one successful charge => one ledger debit and one issued ticket
forbidden:
unrelated tenant, real destination, unmasked free text
Row count و FK check کافی نیست؛ Business closure ممکن است روی رابطهای باشد که Constraint پایگاه داده ندارد.
قابلیت سوم: Masking با Privacy و Utility قابلاثبات
Masking یک نام واحد برای رفتارهای متفاوت است. Static masking داده Target را تبدیل میکند؛ Dynamic masking ممکن است فقط نتیجه Query را برای Role خاص بپوشاند و مقدار اصلی در Store بماند؛ Tokenization میتواند برگشتپذیر باشد؛ Hash بدون Salt/Context مناسب ممکن است قابل حدس باشد؛ Nulling نیز میتواند Constraint یا رفتار App را بشکند.
مستند Microsoft صریحاً توضیح میدهد Dynamic Data Masking در SQL Server مقدار ذخیرهشده را تغییر نمیدهد، جایگزین Access control نیست و در برابر کاربر دارای Query دلخواه میتواند با Inference دور زده شود. پس داشتن گزینه «Masking» در Feature list، Gate حفاظت Non-production را پاس نمیکند.
Masking policy باید Property موردنیاز را حفظ کند
| Field | Privacy risk | Property لازم برای تست | آزمون پذیرش |
|---|---|---|---|
| کد ملی | شناسه مستقیم | ۱۰ رقم، checksum در سناریوی لازم، uniqueness | Leak=۰، format/domain valid، collision=۰ |
| موبایل | تماس/هویت | فرمت +۹۸/۰، mapping ثابت بین Storeها | همان شخص→همان مقدار؛ مقصد واقعی ممنوع |
| نام فارسی | هویت/ترکیبپذیری | Unicode، RTL، طول، ی/ی و ک/ک | App render/search بدون مقدار واقعی |
| ایمیل | هویت/ارسال ناخواسته | Syntax معتبر و Domain رزروشده/کنترلشده | هیچ پیام بیرونی؛ denylist مقصد واقعی |
| مبلغ | رفتار مالی/Outlier | توزیع، boundary، رابطه با Order | Invariant ریالی و rare-case coverage |
| تاریخ | Timeline/بازشناسایی | ترتیب و فاصله معنادار | created≤paid≤refunded پس از shift |
| Note/JSON/Blob | PII پنهان | ساختار و Keyword لازم | Seed leak scan در nested/free text |
Consistency و Collision را جدا بسنجید
یک Customer ممکن است در CRM، Order DB، Data warehouse و فایل Export تکرار شود. Mapping متفاوت Join را میشکند؛ Mapping collision دو شخص را یکی میکند. مستند الگوریتمهای Delphix نیز تفاوت رفتار Lookup/Mapping، Key، Collision و Multi-column را نشان میدهد. در PoC، همان Input را بین Job، Source و زمان تکرار کنید و uniqueness/consistency را مستقل Query بزنید.
Free text و Attachment دام متداولاند
Classifier ستونی ممکن است `customer_phone` را پیدا کند اما «با ۰۹۱۲… تماس بگیرید» در Note، OCR تصویر، CSV attachment، JSON nested، Log و Audit payload باقی بماند. Seedهای Canary را در همه مسیرها بگذارید و پس از Provision، Backup و Export جستوجوی سراسری انجام دهید.
De-identification ریسک را کاهش میدهد، صفر نمیکند
NISTIR ۸۰۵۳ درباره De-identification توضیح میدهد دادههای De-identified در برخی شرایط قابل بازشناساییاند. بنابراین «نام و کد ملی Mask شد» معادل Anonymous یا مجوز آزاد استفاده نیست. Quasi-identifierهایی مانند سن، شهر، زمان، مبلغ نادر و مسیر درمان/خرید ممکن است با هم فرد را متمایز کنند.
Threat model شامل Insider، Developer با Query دلخواه، مهاجم Target، Export اشتباه، Support bundle و اتصال به Dataset بیرونی باشد. Privacy/Legal باید Intended use، Access، Retention و Residual risk را بپذیرند؛ ابزار نمیتواند بهتنهایی انطباق حقوقی را تضمین کند.
Utility نیز Oracle میخواهد
Mask امن اما بیاستفاده نیز PoC را رد میکند. Referential، uniqueness، distribution، temporal order، domain rules، null ratio، boundary cases، encoding و query planهای مرتبط را با Baseline مقایسه کنید. شباهت ظاهری Screenshot معیار Utility نیست.
Privacy requirement را به Test تبدیل کنید
اصل Purpose limitation، Data minimisation و Storage limitation در ماده ۵ GDPR نمونهای از Requirementهای قابلردیابی است، اما applicability و مبنای حقوقی را Counsel/Privacy owner تعیین میکند. تیم QA باید Evidence اجرای کنترل مصوب را بسازد، نه تفسیر حقوقی مستقل.
NIST Privacy Framework نیز یک چارچوب داوطلبانه برای مدیریت Privacy risk است، نه گواهی خودکار Compliance. برای طراحی Applicability، Data flow، Retention، DSAR و Evidence به راهنمای تست حریم خصوصی داده مراجعه کنید.
Privacy Acceptance Pack
- مصوبه Classification و Scope Source/Target؛
- Seeded sensitive Truth set و نتیجه Recall/FN؛
- Policy version، Algorithm/key identity و Approval؛
- Pre/post scan با Leak=۰ برای Critical classها؛
- Utility/integrity validation و Exceptionها؛
- RBAC/privileged path و effective-permission test؛
- Audit trail، export recipients و retention؛
- Delete/expiry evidence و Residual risk owner.
قابلیت چهارم: Synthetic generation با Contract
Generator باید Schema، Constraint، relation، state history، distribution و rare case را از Specification تولید کند. «AI synthetic» یا «realistic» بدون Provenance، leakage test و Domain Oracle یک ادعاست. Seed، Generator version، Locale، Rule pack و Dependency version باید جزو Dataset identity باشند.
نامزد را مجبور کنید داده Valid، Invalid، Boundary، Pairwise/t-way، Stateful sequence و حجم Performance بسازد. سپس Shrink/diagnosis، determinism، uniqueness، cross-field invariants و مقصدهای امن را بسنجید. تکنیکها و نمونههای اجرایی تولید داده در راهنمای مرتبط آمدهاند؛ در اینجا فقط توان Platform برای اجرای قابلحاکمیت آنها ارزیابی میشود.
قابلیت پنجم: Clone و Data Virtualization
Virtual copy میتواند Provision را سریع و Storage را کم کند، اما Data lineage، Source snapshot، Copy-on-write capacity، noisy neighbor، Target host، Engine outage، backup، refresh conflict و cleanup را حذف نمیکند. هر Clone باید Owner، TTL، quota، parent snapshot و isolation boundary داشته باشد.
مستند فعلی IBM Optim TDM Discovery، Subsetting، Masking، Workflow و چند Source را در Offering خود توصیف میکند. اینها نقطه شروع Use-case هستند؛ Throughput، Connector fidelity و هزینه در Scale محیط شما باید اندازهگیری شود.
آزمون Crash و Refresh
- Snapshot ثابت را Provision و checksum/manifest بگیرید؛
- دو Clone موازی بسازید و در هر یک داده متفاوت تغییر دهید؛
- Engine/agent یا Network را وسط Refresh قطع کنید؛
- وضعیت partial، rollback/retry و Source safety را بررسی کنید؛
- Clone را Reset، Restore و Delete کنید؛
- Storage reclaim و Audit evidence را تأیید کنید.
قابلیت ششم: Provisioning و Reset اتمیک
Workflow باید Dataset را یا کامل Ready کند یا Failure صریح بدهد. Target نیمهپر نباید با Status سبز تحویل CI شود. Stageهای معمول: authorize→snapshot→extract/generate→mask→load→migrate→validate→publish→lease→cleanup.
برای نمونه، مستند رسمی Informatica TDM Entity/Group/Template، Masking rule، Subset plan و Workflow را جدا مدل میکند. این ساختار فقط Capability همان نسخه است؛ شما باید Atomicity، Failure semantics و Target validity آن را روی Connectorهای واقعی خود اثبات کنید.
dataset_state:
requested -> approved -> preparing -> validating -> ready
preparing|validating -> failed|quarantined
ready -> leased -> resetting -> ready
ready|leased -> expired -> deleting -> deleted
ready only if:
source_identity + policy_identity + schema_identity are known
privacy_gate + closure_gate + migration_gate + health_gate pass
Environment، Schema و Data باید با هم سازگار باشند. راهنمای مدیریت محیط تست Manifest، Drift و Health gate را پوشش میدهد؛ TDM نباید Build جدید را روی Dataset ناسازگار «Ready» اعلام کند.
Isolation و Lease
Shared pool فقط با Reservation/Lease، Owner، TTL و conflict policy قابلاعتماد است. برای Parallel automation، Dataset per Run یا namespace per Worker معمولاً تشخیصپذیرتر است. Reset باید idempotent باشد و اثر DB، Cache، Queue، Object store و Simulator را جمع کند.
قابلیت هفتم: API و CI contract
UI Self-service مفید است، اما مسیر ماشینی باید Auth غیرشخصی، idempotency key، async job ID، status/error taxonomy، timeout، cancel، retry، rate limit، webhook/poll، artifact و cleanup داشته باشد. Exit code صفر بدون Dataset manifest یا validation report نباید موفقیت محسوب شود.
request: source_snapshot, scenario, policy_version, schema_version,
target_env, run_id, ttl, idempotency_key
response: job_id, accepted_scope, estimated_budget
ready artifact: dataset_id, manifest_uri, validation_uri, expiry
failure: class, stage, retryable, owner, evidence_uri
cleanup: deleted_at, target_scan, storage_reclaimed
در معماری Continuous Testing در CI/CD، Dataset health باید Gate پیش از Test باشد. Failure در Provisioning را Product failure گزارش نکنید؛ Verdict باید Data/Environment/Infrastructure را جدا نگه دارد.
قابلیت هشتم: Audit، Security و Separation of Duties
Source credential، Masking key، Token vault و Production access را از Developer/Test role جدا کنید. Least privilege را با effective access بسنجید، نه Screenshot تنظیمات. عملیات Discover، View sample، Export، Policy edit، Unmask، Provision، Share و Delete باید Actor/Time/Scope/Reason/Outcome داشته باشند.
OWASP هشدار میدهد منابع Non-production میتوانند Endpoint ضعیف، Debug config، Test data یا Secret آسیبزا داشته باشند. TDM محیط تست را به منطقه بدون کنترل تبدیل نمیکند؛ Network segmentation، patching، encryption، secret rotation و monitoring همچنان لازماند.
Negative authorization suite
- Tester نباید Source raw یا Unmask path را ببیند؛
- Policy author نباید Policy خودش را بدون Approval منتشر کند؛
- Tenant A نباید Catalog، Dataset یا Artifact تیم B را enumerate کند؛
- Expired lease نباید با URL قدیمی قابل Download باشد؛
- Service account CI نباید Production write داشته باشد؛
- Export بزرگ/غیرعادی باید Alert و Audit بسازد.
قابلیت نهم: Data lineage و Dataset Manifest
بدون Lineage نمیدانید Failure از App است یا Snapshot/Policy/Schema. Manifest باید Source identity، extraction time، schema/migration، subset rule، mask/generator version، seed/key identity، validation، Target، Owner، TTL و parent dataset را ثبت کند. Raw secret یا Masking key نباید داخل Artifact عمومی قرار گیرد.
{
"dataset_id": "checkout-paid-v7-run-8821",
"source": {"snapshot": "prodlike-2026-08-01T00:00Z", "read_only": true},
"schema": {"orders": "migration-184", "events": "2.3"},
"policy": {"subset": "paid-order-4", "mask": "iran-pii-9"},
"generator": {"version": "3.2.1", "seed": "run-8821", "locale": "fa_IR"},
"validation": {"privacy": "pass", "closure": "pass", "utility": "pass"},
"lease": {"owner": "ci/refund", "expires_at": "2026-08-12T12:00:00Z"}
}
قابلیت دهم: Retention، Delete و Restore safety
TTL بدون Enforcement تزئینی است. Expiry باید Lease را ببندد، Credential/URL را باطل کند، Target و Temp/Export را پاک کند، Storage را reclaim و Evidence بسازد. Backup نیز باید در Policy دیده شود: آیا داده Raw وارد Backup شده، عمر آن چیست و پس از Restore، Tombstone/Masking policy دوباره اعمال میشود؟
Canary deletion test
یک Canary یکتا در DB، Cache، Search، Queue، file و log قرار دهید. Workflow حذف را اجرا و هر Store را مستقل Scan کنید. «Job succeeded» Oracle نیست؛ absence proof و فهرست exceptionهای زماندار لازم است.
PoC دوهفتهای انتخاب TDM Platform
همه نامزدها باید روی Source snapshot، Target، Dataset، Policy، حجم و Budget یکسان کار کنند. Vendor میتواند نصب را توضیح دهد، اما تیم خریدار باید Run و Evidence را کنترل کند.
روز صفر: قرارداد آزمایش
- دو Journey بحرانی و یک Dataset منفی/مرزی؛
- سه Store شامل حداقل یک رابطه منطقی و یک Free-text/JSON؛
- Seeded PII Truth set و Privacy/Utility Oracle؛
- حجم کوچک Functionality و حجم نماینده Performance؛
- Hard gate، Weight، Budget و Failure policy امضاشده؛
- Offering/Edition/version و مسئول هر Evidence.
روزهای ۱ تا ۳: اتصال، Discovery و Baseline
نصب Agent/Connector، Permission، TLS، Network و Source-read-only را ثبت کنید. Discovery را روی Seedها اجرا و TP/FN/FP بگیرید. زمان Setup، Skill و Ticketهای پشتیبانی را از Demo time جدا کنید.
روزهای ۴ تا ۶: Subset، Mask و Generation
یک Journey را با relationهای فیزیکی و منطقی ببندید؛ PII ستونی، nested و متن آزاد را تبدیل کنید؛ Dataset synthetic مرزی بسازید. سپس Closure، Leak، consistency، collision، distribution و domain invariants را با Script مستقل اجرا کنید.
روزهای ۷ تا ۸: Provision، Parallel و Reset
چند Run موازی با همان درخواست و idempotency key بسازید. Lease collision، quota، partial load، migration failure، cancel، retry، reset و delete را آزمایش کنید. First-attempt result را نگه دارید؛ Retry نباید Failure را پنهان کند.
روز ۹: Security، outage و ایران
Unauthorized access، cross-team enumeration، expired URL، service-account permission و audit tampering را منفی تست کنید. سپس SaaS/network/license/package registry را قطع و Critical data path را روی fallback اجرا کنید. زمان Recovery و مقدار Manual work را ثبت کنید.
روز ۱۰: Scale، Upgrade و Exit
حجم نماینده را اجرا، Throughput/queue/storage را بگیرید، یک Connector یا Schema را Upgrade کنید و Policy/Workflow/Metadata/History را کامل Export کنید. Reviewer دوم باید بدون کمک سازنده یک Dataset بسازد و Failure را تشخیص دهد.
سناریوی ایرانی PoC: رزرو بلیت و پرداخت
Source شامل Customer، Trip، Seat inventory، Order، Discount، Payment، Ledger، Outbox، Notification، Note پشتیبانی و Receipt است. هدف: Dataset یک سفارش پرداختشده تهران–شیراز برای Refund و یک سفارش Timeout-after-commit برای Recovery، بدون هیچ هویت یا مقصد واقعی.
ریسکهای داده
- کد ملی، موبایل، ایمیل و نام فارسی در DB/JSON/Note/Receipt؛
- مبلغ canonical بر حسب ریال و نمایش UI به تومان؛
- ی/ی، ک/ک، نیمفاصله و ارقام فارسی/عربی/لاتین؛
- UTC در Backend و نمایش Asia/Tehran؛
- Order→Payment→Ledger→Ticket→Outbox closure؛
- Tenant/Agency isolation؛
- PSP callback و مقصد Notification که باید Sandbox باشد؛
- Seat/discount state که Reset ناقص آن Run بعد را خراب میکند.
Oracle مستقل سناریو
privacy:
no seeded nationalId/phone/email/name in any target or artifact
utility:
Persian rendering + digit normalization + valid domain rules
closure:
every selected order has required customer/payment/ledger/ticket/outbox
money:
ledger_irr = order_total_irr; UI_toman = display policy only
isolation:
no other tenant; unique run namespace; safe notification destination
replay:
same manifest => same logical dataset and verdict
cleanup:
no canary in DB/cache/search/queue/object/log after expiry
آزمایش قطعی سه پلتفرم ساختگی
یک برنامه مستقل Node.js ۲۴.۱۸.۰ سه نامزد کاملاً ساختگی را روی Dataset کوچک Customer/Order/Payment/Note/Outbox اجرا کرد. Sensitive seedها، Closure پنج Table، Orphan، Determinism، Export و Iran access gate سنجیده شدند.
naive_feature_winner=CaspianDataHub features=41
ArvandFlow score=5.00/5 leaks=0 orphans=0 closure=5/5 deterministic=true gates=pass
CaspianDataHub score=3.20/5 leaks=2 orphans=0 closure=3/5 deterministic=true gates=fail(privacy_leak,scenario_closure,complete_export)
ZagrosClone score=3.30/5 leaks=0 orphans=1 closure=5/5 deterministic=false gates=fail(referential_integrity,determinism,iran_access_continuity)
decision=ArvandFlow
decision_note=validate_with_real_connectors_volume_security_and_operations_before_adoption
تفسیر نتیجه
Caspian با ۴۱ Feature برنده ساده بود؛ ولی Note آزاد دو مقدار حساس را نگه داشت، Payment/Outbox حذف شدند و Export کامل نبود. Zagros نشت نداشت و پنج Table را تحویل داد، اما یک Payment یتیم ساخت، Run دوم متفاوت شد و تداوم ایران را رد کرد. Arvand همه Gateهای همین آزمایش را پاس کرد.
نتیجه نمیگوید Arvand واقعی وجود دارد یا معماری خاصی بهترین است. نامها و اعداد ساختگیاند؛ Volume، Performance، Security، Connector، Restore و عملیات Production-like واقعی آزمایش نشدهاند. این فقط Demonstration روش تصمیم است و Adoption باید مشروط به PoC محیط خودتان باشد.
Scorecard شواهد برای نامزدهای عبورکرده
| معیار | وزن نمونه | Evidence |
|---|---|---|
| Privacy discovery/masking | ۱۵٪ | seed recall، leak scan، residual risk |
| Scenario closure/integrity | ۱۴٪ | graph، FK/domain invariants |
| Connector/landscape fit | ۱۰٪ | real source-target workflow |
| Provision/reset/reliability | ۱۲٪ | parallel، partial failure، recovery |
| Synthetic/utility | ۸٪ | contract، boundary، distribution |
| API/CI/diagnosis | ۱۰٪ | machine path، artifact، reviewer |
| Security/audit/governance | ۱۰٪ | negative authorization، immutable trail |
| Scale/operations | ۸٪ | representative load، SLO، DR |
| TCO/team fit | ۷٪ | measured workload and labor |
| Exit/change resilience | ۶٪ | upgrade and full export rehearsal |
امتیاز صفر تا پنج را به سطح Evidence ببندید: Unknown، claim، demo، controlled PoC، failure/change proven، production cycles. Confidence و uncertainty را کنار Score نشان دهید. Hard gateهای Privacy، Source safety، integrity، export و access را وارد میانگین نکنید.
TCO سهساله ابزار TDM
TCO = license/subscription + connector/module/agent
+ compute/storage/snapshot/egress/backup/DR
+ database/source/target licenses
+ discovery/classification/policy engineering
+ masking/synthetic/subset rule maintenance
+ integration/CI/security/privacy/legal/audit
+ DBA/platform/support/training/on-call
+ upgrade/migration/outage + exit/rebuild
Workload را با Source count، TB، refresh frequency، concurrent copies، mask volume، retention و environments مدل کنید. ابزار متنباز یا تجاری را با License label قضاوت نکنید؛ راهنمای انتخاب ابزار متنباز یا تجاری ظرفیت داخلی، SBOM، Support، Fork و Exit را پوشش میدهد.
اقتصاد را با Cost per valid dataset بسنجید
هزینه کل را بر Datasetهای واقعاً Ready و مصرفشده تقسیم کنید؛ Cloneهای ساختهشده، Job count یا TB processed میتوانند Vanity metric باشند. زمان انتظار، Invalid dataset، Manual repair، privacy exception و idle storage را نیز وارد هزینه کنید.
دسترسی ایران و مسیر آفلاین
در تاریخ ارزیابی و برای همان Offering بررسی کنید: Signup، payment، license activation، IP/region، appliance/image/package download، support، telemetry، control/data plane، encryption key، data transfer، sanctions/legal review و contract. نتیجه یک Vendor یا یک روز را تعمیم ندهید.
- Agent، Connector و image در Registry داخلی Mirror میشوند؟
- License expiry و offline grace چیست؟
- اگر Control plane قطع شد، Dataset critical قابل Provision/Reset/Delete است؟
- Raw/Masked data از مرز یا منطقه سازمان خارج میشود؟
- Support bundle چه دادهای حمل میکند و Redaction آن چیست؟
- Policy/Workflow/Metadata/History آخرین Run Export محلی دارد؟
- Fallback چه RTO/RPO و چه مالک عملیاتی دارد؟
Testability داده و برنامه را با هم ببینید
TDM نمیتواند نبودن reset endpoint، Clock کنترلپذیر، idempotency، correlation ID یا sandbox dependency را جبران کند. گاهی یک seam کوچک در محصول، از Rule پیچیده ابزار ارزانتر و مطمئنتر است. راهنمای طراحی تستپذیری نرمافزار این Control/Observe/Oracle/Reset contract را دقیق میکند.
Operating model؛ ابزار بدون مالک کار نمیکند
| دارایی/تصمیم | مالک پاسخگو | تعهد |
|---|---|---|
| Data classification/purpose | Data owner + Privacy | Scope، legal/policy basis، residual risk |
| Source connection/snapshot | DBA/Data platform | read-only، consistency، backup، load budget |
| Masking policy/key | Security/Privacy | approval، separation، rotation، leak gate |
| Scenario/utility contract | Product + QA/SDET | closure، invariant، rare cases، Oracle |
| Workflow/API/CI | Test/Data platform | reliability، version، evidence، support |
| Environment/lease | Platform/DevOps | capacity، isolation، TTL، cleanup |
| Access/audit/incident | Security operations | effective access، monitoring، response |
| Cost/vendor/exit | Engineering owner + Procurement | TCO، SLA، continuity، contract، migration |
یک تیم مرکزی میتواند Platform و Guardrail بسازد، اما Scenario و Utility باید نزدیک Domain بماند. اگر فقط DBA مالک TDM باشد، داده فنی ممکن است سالم اما برای Journey بیمعنا باشد؛ اگر هر تیم Policy خودش را بسازد، Privacy و consistency پراکنده میشوند.
Run health و Failure taxonomy
Job ناموفق همیشه یک نوع Failure نیست. دستکم Source، Connector، Policy/Masking، Subset/Closure، Target/Schema، Environment/Capacity، Security/Approval، CI/Consumer و Unknown را جدا کنید. Dataset نیمهمعتبر نباید به Test runner برسد.
valid:
all required stages and independent gates passed
degraded:
usable only for declared scope; missing evidence is explicit
inconclusive:
run completed but privacy/utility/closure verdict is unavailable
invalid:
partial/stale/wrong identity/leak/orphan/schema mismatch
never convert invalid or inconclusive to valid by blind retry
Runbook هر Failure
- Stage و first divergence چیست؟
- Source/Target/Policy/Dataset identity کدام است؟
- آیا Source یا Target ممکن است در وضعیت خطرناک باشد؟
- چه Evidence و Query مستقل لازم است؟
- Retry امن/idempotent است یا ابتدا rollback/cleanup لازم دارد؟
- مالک، Severity، communication و data-incident trigger چیست؟
- Datasetهای مشتقشده و Consumerهای متاثر چگونه Quarantine میشوند؟
تغییر Schema، Policy و Connector را تست کنید
Schema drift میتواند Field حساس تازه را از Masking جا بیندازد یا relation جدید را از Subset حذف کند. Policy change ممکن است output متفاوت و Test goldenها را بشکند. Connector upgrade نیز type mapping، timestamp، encoding یا consistency semantics را تغییر میدهد.
Expand–Migrate–Contract برای TDM
- Schema/field/relationship جدید را Discover و Classify کنید؛
- Policy و Closure rule جدید را در Shadow اجرا کنید؛
- Old/New manifest و validation را مقایسه کنید؛
- Consumerها را با Dataset version تازه Migration دهید؛
- Exception و old policy را پس از Evidence و expiry حذف کنید.
هر Release مهم App/DB، تغییر Classification، Algorithm/key، Connector، Region، حجم یا Contract باید Requalification trigger داشته باشد.
معیارهای سلامت پس از Adoption
- Request-to-valid-ready: median/p95 از درخواست مجاز تا Dataset معتبر؛
- First-attempt valid rate: بدون Retry یا تعمیر دستی؛
- Critical discovery recall: بر اساس Seeded Truth set؛
- Leak/near-miss rate: با Severity و Surface، نه فقط Count؛
- Closure/integrity failure rate: FK و Business relation جدا؛
- Dataset-related invalid tests: سهم Verdictهای نامعتبر بهعلت داده؛
- Reset/cleanup success: شامل Canary absence و storage reclaim؛
- Reuse hit rate: فقط Datasetهای سالم و مصرفشده، نه Cache count؛
- Manual touch/repair hours: بهازای Dataset معتبر؛
- Cost per valid consumed dataset: هزینه واقعی تقسیم بر Signal مفید؛
- Policy/connector drift age: زمان از تغییر تا validation؛
- Expired asset residue: Dataset/Export/credential پس از TTL.
Dashboard را با Denominator و Scope نمایش دهید
«۹۹٪ Job موفق» بدون تعداد Dataset معتبر، Leak scan، Scope و مصرف واقعی ممکن است گمراهکننده باشد. Failed-before-validation، Quarantined، Inconclusive و Cancelled را از Success جدا کنید. Datasetهای سخت حذفشده از Scope نباید نرخ موفقیت را بالا ببرند.
Exit rehearsal و مهاجرت
Export یک CSV از نتیجه کافی نیست. Policy، Classification، Relation model، Subset rule، Generator، Workflow، Connector config، RBAC mapping، Dataset manifest، validation evidence، audit history و API consumer باید قابل انتقال یا بازسازی باشند.
- فرمتها مستند و ماشینخواناند یا Proprietary binary؟
- Masking algorithm/key semantics بدون افشای Secret قابل بازسازی است؟
- Lineage و Dataset identity پس از Migration حفظ میشود؟
- Virtual copyها چگونه materialize یا جایگزین میشوند؟
- Source/target connector و Agent lock-in چقدر است؟
- History/Audit برای مدت لازم Export میشود؟
- پس از termination، حذف داده/backup/control-plane قابلاثبات است؟
- Critical pipeline چند ساعت/روز بدون Vendor ادامه میدهد؟
یک Dataset بحرانی را به مسیر دوم منتقل و همان Privacy/Closure/Utility Oracle را اجرا کنید. درصد Ruleهای Exportشده معیار کافی نیست؛ زمان بازسازی Signal معتبر و Residual risk مهم است.
قرارداد و SLA چه چیزی را روشن کند؟
- Offering، module، connector، version و capacity خریداریشده؛
- Control/data plane، residency، subprocessors و data-use/training؛
- Encryption/key ownership، backup، retention و deletion attestation؛
- Availability جدا برای Provision/Reset/Delete/API؛
- Security incident، notification و forensics cooperation؛
- API/format/connector deprecation notice و support window؛
- Support escalation و severity response؛
- Full export، read-only period، termination assistance و verified delete؛
- قیمت رشد TB/connector/concurrency/egress و سقف افزایش؛
- تعهدات قانونی/تحریمی و مسیر تغییر شرایط با بازبینی حقوقی.
۱۵ ضدالگوی انتخاب ابزار مدیریت داده تست
- Feature-count winner: Privacy و Integrity به قابلیتهای قابلجبران تبدیل میشوند.
- Demo با یک Table تمیز: relation، free text و multi-store پنهان میماند.
- Vendor-operated PoC: Skill، Manual work و شکستهای واقعی دیده نمیشوند.
- Masking مساوی Compliance: applicability، access و re-identification نادیده میروند.
- Dynamic masking برای Clone آزاد: مقدار Raw و مسیر Unmask همچنان وجود دارد.
- Subset با Row count: Scenario closure و business invariant گم میشود.
- Realistic با نگاه: Utility، distribution و domain rule اندازهگیری نمیشوند.
- Connector checkbox: نسخه، type، load، failure و source-target pair واقعی آزموده نمیشود.
- Self-service بدون Guardrail: داده، هزینه و Access بیمالک تکثیر میشود.
- Job green مساوی Dataset ready: validation مستقل و Manifest وجود ندارد.
- Shared mutable pool: Parallel runها state یکدیگر را خراب میکنند.
- TTL بدون Delete evidence: Dataset و Export منقضی همچنان باقیاند.
- نادیدهگرفتن Schema/Policy drift: Field حساس یا relation جدید از کنترل خارج میشود.
- ROI با تعداد Clone: Signal معتبر، Manual repair و idle storage حذف میشوند.
- قرارداد بدون Exit rehearsal: Lock-in هنگام outage یا پایان همکاری آشکار میشود.
چکلیست ۲۰مرحلهای انتخاب TDM Platform
- Problem Brief و Baseline عددی نوشته شده است.
- زمانی که محصول TDM لازم نیست بررسی شده است.
- Offering/edition/version/module دقیق ثبت شده است.
- Source→Target landscape و relationهای منطقی مدل شدهاند.
- Journey و Dataset نماینده، منفی و مرزی انتخاب شدهاند.
- Hard gateها پیش از Demo تصویب شدهاند.
- Discovery روی Seeded Truth set با TP/FN/FP سنجیده شده است.
- Subset با Scenario closure و domain invariants پاس شده است.
- Masking ستونی، nested، free text، file و artifact را پوشش میدهد.
- Consistency، collision، uniqueness و determinism آزموده شدهاند.
- Privacy risk و Utility هر دو Owner و Oracle مستقل دارند.
- Synthetic data به Contract/seed/version متصل است.
- Provision/Reset/Delete اتمیک و idempotent آزمایش شدهاند.
- Parallelism، lease، quota، partial failure و recovery اجرا شدهاند.
- API/CLI/CI بدون Credential شخصی Evidence ساخته است.
- RBAC، separation، audit و negative authorization پاس شدهاند.
- Manifest/lineage، retention و canary deletion کاملاند.
- Scale، upgrade، schema/policy drift و DR تمرین شدهاند.
- Iran access، offline fallback و TCO سهساله تأیید شدهاند.
- Reviewer دوم و Exit rehearsal تصمیم مشروط را بازتولید کردهاند.
سؤالات متداول انتخاب ابزار مدیریت داده تست
بهترین ابزار مدیریت داده تست کدام است؟
برنده عمومی وجود ندارد. Source/Targetها، Privacy requirement، حجم، Journey، CI، مهارت، مدل استقرار، بودجه و دسترسی ایران نتیجه را تغییر میدهند. Shortlist را با Hard gate و PoC برابر روی Dataset خودتان ارزیابی کنید؛ نام مشهور یا Feature list Evidence نیست.
آیا Data Masking برای امنشدن داده تست کافی است؟
خیر. نوع Masking، داده Raw باقیمانده، Role/Unmask path، متن آزاد، فایل، Log، رابطه و re-identification اهمیت دارند. Masking باید همراه Discovery، access control، leak scan، utility/integrity validation، retention و delete evidence باشد. Dynamic masking نیز لزوماً مقدار ذخیرهشده را تغییر نمیدهد.
برای تیم کوچک هم TDM Platform لازم است؟
نه همیشه. اگر Schema و تیم محدودند، Factory/Generator deterministic، migration، isolated database و Scriptهای Seed/Reset ممکن است سادهتر باشند. وقتی چند Store/Team، Production-derived data، privacy governance، self-service یا هزینه عملیاتی تکراری دارید، Platform را PoC کنید.
PoC انتخاب TDM چقدر طول بکشد؟
دو هفته برای Scope محدود نقطه شروع عملی است، نه قانون. PoC باید Discovery، Subset، Masking/Generation، Provision/Reset/Delete، Parallel/failure، Security، Scale، Iran outage، Upgrade و Exit را Evidence کند. اگر اینها در ده روز جا نمیشوند، Scope یا زمان را شفاف افزایش دهید.
ROI ابزار TDM را چگونه حساب کنیم؟
License را از صرفهجویی فرضی کم نکنید. سهسال هزینه Connector، Agent، compute/storage/egress، DBA، Policy، Privacy/Security، CI، Support، Upgrade، Incident و Exit را بگیرید؛ سپس Lead time، Manual hours، Invalid dataset، Leak risk و Cost per valid consumed dataset را با Baseline مقایسه کنید.
جمعبندی؛ Dataset معتبر بخرید، نه قابلیت بیشتر
انتخاب ابزار مدیریت داده تست زمانی قابلدفاع است که یک Offering دقیق بتواند Dataset مناسب سؤال را با Privacy، Closure، Utility، Reproducibility و Lineage معلوم تحویل دهد؛ سپس در CI، Failure، Scale، تغییر، قطع سرویس و خروج نیز همان Evidence را حفظ کند.
از یک Dataset کوچک اما سخت شروع کنید: relation منطقی، متن آزاد، PII فارسی، چند Store، ریال/تومان و Reset. Seed نشت، Orphan، تغییر Schema و outage را عمداً وارد کنید. نامزدی که این مسیر را با کمترین Risk و هزینه قابلپیشبینی پاس میکند، ارزش بررسی برای Adoption مشروط دارد؛ حتی اگر کوتاهترین Feature list را داشته باشد.

