رفتن به محتوای اصلی

تست Low-Code و No-Code؛ ریسک‌ها، راهبرد و نقش QA

راهنمای تست اپلیکیشن‌های Low-Code/No-Code: ریسک پیکربندی، Connector، مجوز، ALM، امنیت، عملکرد و نقش QA با مثال فرایند ایرانی.

محمد عسکری ۲۰ دقیقه مطالعه به‌روزرسانی
فهرست مطالب
  1. Low-Code و No-Code دقیقاً چه معنایی دارند؟
  2. چه چیزی را Platform تست می‌کند و چه چیزی با شماست؟
  3. گام صفر: Inventory و مالک را پیدا کنید
  4. ریسک‌سنجی: هر App مسیر یکسان نمی‌خواهد
  5. کارت App؛ Test Basis مشترک
  6. سطح تغییر را فراتر از «کد» ببینید
  7. سبد شواهد برای اپلیکیشن LCNC
  8. بازبینی پیکربندی و Formula
  9. Workflow را به State machine تبدیل کنید
  10. Retry و اثر جانبی
  11. Approval و Delegation
  12. Connector؛ مرز پرریسک پشت Drag-and-drop
  13. API و داده را پشت UI پنهان نکنید
  14. امنیت: اعتماد کور به Platform کافی نیست
  15. Data policy یک Guardrail است، نه اثبات حریم خصوصی
  16. ALM؛ اپلیکیشن بصری هم نسخه و Artifact می‌خواهد
  17. Pipeline انتشار و Gateهای شواهد
  18. Rollback و Restore را یکی نگیرید
  19. تست UI، RTL و دسترس‌پذیری
  20. عملکرد، Capacity، License و Quota
  21. ابزار Native تست چه چیزی را پوشش می‌دهد؟
  22. امنیت را از چند زاویه ارزیابی کنید
  23. Runtime evidence و بازاعتبارسنجی
  24. نمونهٔ ایرانی: فرایند بازپرداخت هزینه
  25. قرارداد داده و نقش
  26. سناریوهای حیاتی
  27. شواهد تصمیم انتشار
  28. نقش QA در LCNC؛ نه حذف، نه پیشگویی
  29. مدل عملیاتی Citizen Development
  30. متریک‌هایی که تصمیم می‌سازند
  31. دام‌های رایج
  32. برنامهٔ ۳۰روزه
  33. هفتهٔ اول: Inventory و Tier
  34. هفتهٔ دوم: Guardrail و App card
  35. هفتهٔ سوم: Evidence portfolio
  36. هفتهٔ چهارم: ALM و Recovery
  37. چک‌لیست انتشار LCNC
  38. پرسش‌های متداول
  39. آیا اپلیکیشن No-Code واقعاً به تست نیاز دارد؟
  40. آیا تستر برای LCNC باید برنامه‌نویسی بلد باشد؟
  41. آیا ابزار تست داخلی Platform کافی است؟
  42. مهم‌ترین تست امنیتی برای Low-Code چیست؟
  43. چگونه Vendor lock-in را در تست مدیریت کنیم؟
  44. جمع‌بندی: سطح انتزاع عوض شده، مسئولیت شواهد نه
تست Low-Code و No-Code؛ ریسک‌ها، راهبرد و نقش QA

یک تحلیلگر مالی با ابزار No-Code فرایند بازپرداخت هزینه را در دو روز ساخته است. فرم زیباست، Demo موفق است و Approval ایمیلی هم می‌رسد؛ اما مدیرِ جایگزین می‌تواند درخواست واحد دیگری را تأیید کند، Connector حسابداری پس از Timeout همان سند را دوباره می‌سازد و تغییر دستی Environment تولید در هیچ Repository ثبت نشده است. «کد کمی نوشته‌ایم» دربارهٔ این ریسک‌ها چه می‌گوید؟ تقریباً هیچ.

تست Low-Code و No-Code همان تست نرم‌افزار است، با سطح انتزاع و مرز مسئولیت متفاوت. Test Basis فقط Source code نیست؛ پیکربندی، Formula، Workflow، Role، Data policy، Connector، Environment، Artifact و رفتار متغیر Platform نیز بخشی از محصول‌اند. این راهنما نشان می‌دهد QA چگونه بدون تبدیل‌شدن به Gatekeeper، برای این سطح تغییرپذیر شواهد قابل‌تصمیم بسازد.

Low-Code و No-Code دقیقاً چه معنایی دارند؟

این دو واژه یک استاندارد کیفیت یا دو دستهٔ کاملاً جدا نیستند. آن‌ها طیفی از Abstraction را توصیف می‌کنند: بخشی از منطق با مدل بصری، Metadata، Expression، Template و Connector ساخته می‌شود و ممکن است Extension یا کد سفارشی نیز وجود داشته باشد. یک ابزار «No-Code» برای Maker می‌تواند در Runtime، Integration و Administration به تخصص فنی جدی نیاز داشته باشد.

  • No-Code: مسیر اصلی ساخت برای کاربر هدف بدون نوشتن کد متنی طراحی شده، نه اینکه نرم‌افزار یا منطق اجرایی وجود ندارد؛
  • Low-Code: مدل‌سازی بصری با امکان Expression، Script، Component یا Extension ترکیب می‌شود؛
  • Citizen development: نرم‌افزاری که بخشی از آن را کاربران خارج از تیم توسعهٔ سنتی می‌سازند؛ این عنوان دربارهٔ مسئولیت و صلاحیت فرد به‌تنهایی حکم نمی‌دهد؛
  • Platform-generated artifact: Package، Metadata یا Runtimeای که Vendor می‌سازد یا اجرا می‌کند؛ همچنان Version، Dependency و رفتار قابل‌آزمون دارد.

بنابراین «کم‌کد» مساوی «کم‌ریسک»، «ساده»، «امن» یا «سریع در کل چرخهٔ عمر» نیست. سرعت Prototype ممکن است بالا باشد، ولی Integration، Governance، Migration، Support و Exit هزینهٔ خود را دارند.

چه چیزی را Platform تست می‌کند و چه چیزی با شماست؟

گواهی، SLA یا Test داخلی Vendor می‌تواند دربارهٔ بخشی از Platform شاهد بدهد؛ اما صحت قانون کسب‌وکار، مجوز کاربران، ترکیب Connectorها و نتیجهٔ Workflow شما را اثبات نمی‌کند. یک قرارداد مسئولیت بنویسید:

سطحنمونه مسئولیت Platform/Vendorنمونه مسئولیت تیم محصول
Runtimeزیرساخت سرویس و Patchهای اعلام‌شدهرفتار App روی نسخه/Region/License انتخاب‌شده
BuilderParser/Designer و قابلیت‌های مستندFormula، Config، Component و محدودیت استفاده
Identityمکانیزم Authentication موجودRole، Scope، Sharing، Service account و Recertification
DataStorage/API قابلیت‌دارSchema، Classification، Retention، Authorization و Reconciliation
ConnectorAdapter و Operationهای مستندانتخاب Scope، Mapping، Retry، Idempotency و Data egress
ALMEnvironment/Package/Pipeline capabilityBranch، Review، Promotion، Secret، Rollback و Owner
Quality evidenceStatus/SLA/Release noteRisk coverage، Test result، residual risk و release decision

مدل رهبری کیفیت با مالکیت روشن کمک می‌کند Whole-team quality به «همه مسئول‌اند، پس هیچ‌کس پاسخ‌گو نیست» تبدیل نشود. نام Vendor یا QA جای Owner ریسک کسب‌وکاری را نمی‌گیرد.

گام صفر: Inventory و مالک را پیدا کنید

اپلیکیشنی که سازمان از وجودش خبر ندارد، Test plan و Incident owner هم ندارد. Inventory حداقل باید App/Flow/Agent، Environment، Business owner، Technical owner، Maker، User population، Data classification، Connectorها، Identityها، Criticality، Last use/change، Platform/License و End-of-Life را ثبت کند.

برای نمونه، Power Platform Inventory امکان دیدن App، Flow، Environment، Owner و برخی استفاده‌های Connector را فراهم می‌کند و یافتن منابع متعلق به افراد درحال‌خروج را جزو کاربردهایش می‌داند. این یک قابلیت محصولی است؛ در هر Platform باید Coverage، Freshness و منابع خارج از Inventory را جدا بررسی کنید.

ریسک‌سنجی: هر App مسیر یکسان نمی‌خواهد

Tierنمونهحداقل کنترل
T0 — آزمایش شخصیPrototype با دادهٔ ساختگی و بدون کاربر دیگرمالک، Expiry، ممنوعیت داده حساس و حذف امن
T1 — ابزار تیمییادآوری یا فرم داخلی برگشت‌پذیرPeer review، Role check، Test data، Backup/export و Support
T2 — Business-criticalApproval مالی یا عملیات مشتریEnvironment جدا، Versioned artifact، layered tests، recovery و On-call
T3 — حساس/تنظیم‌شدهPII، پول، سلامت یا تصمیم پراثرSecurity/privacy/legal review، separation of duties، evidence retention و risk acceptance

Tier را فقط از تعداد کاربر نسازید. Impact محرمانگی، تمامیت، Availability، اثر مالی/حقوقی، برگشت‌پذیری، وابستگی و Detectability را بسنجید. Prototype به‌محض ورود دادهٔ واقعی یا اتکای تیم می‌تواند Tier عوض کند.

کارت App؛ Test Basis مشترک

قبل از سناریوها، این کارت یک‌صفحه‌ای را تکمیل کنید:

App / Flow / version / risk tier:
Purpose, users and prohibited uses:
Business owner / technical owner / support owner:
Data classes, residency, retention and deletion:
Roles, service identities and approval authority:
Tables, formulas, workflows and custom components:
Connectors, APIs, scopes, quotas and sandboxes:
Platform, environment, region and license assumptions:
SLI/SLO, audit and alert routes:
Deployment, rollback, restore and exit path:
Known gaps, residual risk, review date:

اگر Maker نتواند نتیجهٔ مورد انتظار، State، Failure و Evidence را توضیح دهد، Recorder بیشتر مشکل را حل نمی‌کند. برای طراحی Clock، Dependency، Fault، Reset و Oracle از قرارداد تست‌پذیری نرم‌افزار استفاده کنید.

سطح تغییر را فراتر از «کد» ببینید

Regression selection باید هر تغییری را که رفتار را عوض می‌کند ببیند:

  • Screen، Control، Formula، Validation و Default value؛
  • Workflow step، Branch، Timeout، Retry و Trigger؛
  • Table/column/type/constraint، Migration و Seed/reference data؛
  • Role، Sharing، Group، Service account و OAuth scope؛
  • Connector operation، endpoint، schema، mapping و version؛
  • Environment variable، connection reference، Secret و policy؛
  • Custom code/component/library و transitive dependency؛
  • Platform release، regional rollout، deprecation، license و quota؛
  • Browser/device/locale/accessibility setting.

برای هر Release یک Change Manifest بسازید: Baseline، Diff، Artifact hash/version، Environment، Dependencies، Migration، Test selection، Approver و Rollback target. Screenshot Designer منبع حقیقت مناسبی برای Diff نیست.

سبد شواهد برای اپلیکیشن LCNC

لایهپرسش اصلینمونه Evidence
Static/config reviewآیا Formula/Policy/Role/Secret الگوی خطرناک دارد؟Diff، rule output، peer decision
Logic/modelقانون و Transition درست است؟Decision table، property/invariant، formula test
Workflow/componentBranch/Retry/Error/Compensation چگونه عمل می‌کند؟state/event trace و side-effect oracle
Connector/integrationمرز واقعی و Failure protocol چیست؟contract، virtual service، sandbox، provider evidence
API/dataSchema، Authorization و State درست‌اند؟request/response + database/audit oracle
UI/journeyکاربر مجاز کار کامل را انجام می‌دهد؟role-specific E2E، accessibility/manual review
Non-functionalCapacity، security، privacy و recovery کافی است؟profile، threat evidence، restore drill
Production feedbackOutcome واقعی و Drift دیده می‌شود؟SLI، failed run، audit gap، support signal

هیچ نسبت ثابتی میان این لایه‌ها وجود ندارد. کوچک‌ترین Boundary را انتخاب کنید که failure mechanism را حفظ می‌کند. UI recorder برای Retry یک Connector یا رکوردی که پس از Timeout دو بار ساخته می‌شود، Oracle کامل نیست.

بازبینی پیکربندی و Formula

Visual بودن منطق، نیاز به Review را حذف نمی‌کند. در Diff یا Export قابل‌خواندن این موارد را بررسی کنید:

  • Default و implicit conversion، Blank/Null/Empty و Locale parsing؛
  • Branch دست‌نیافتنی، شرط معکوس و مقایسهٔ String به‌جای مقدار canonical؛
  • Hard-coded ID، URL، Email، Secret، Environment یا Role؛
  • Query/Filter بدون Scope کاربر یا بدون حد؛
  • Expression تکراری و Ruleهای ناسازگار در Screen/Flow/Data layer؛
  • Error پنهان‌شده، Fail-open و Success message پیش از Commit؛
  • Trigger بازگشتی، Loop ناخواسته و Fan-out بی‌حد؛
  • وابستگی به Control name یا ترتیب بصری بدون قرارداد.

Static checker یک Signal است. False positive/negative، Version rule و Suppression با Owner/Expiry را ثبت کنید؛ «بدون Warning» معادل رفتار درست نیست.

Workflow را به State machine تبدیل کنید

Flow موفق فقط مسیر سبز نیست. Stateهای Draft، Submitted، Pending-Manager، Pending-Finance، Approved، Rejected، Cancelled، Posted و Reconciliation-Failed را بنویسید. Event، Guard، Authority، Side effect و invariant هر Transition را مشخص کنید.

Retry و اثر جانبی

Timeout معلوم نمی‌کند درخواست در Provider Commit شده یا نه. این حالت‌ها را جدا کنید:

  • Fail پیش از ارسال؛
  • Fail پس از ارسال و پیش از Commit؛
  • Commit موفق و Ack گم‌شده؛
  • Response نامعتبر پس از اثر؛
  • Retry هم‌زمان توسط کاربر و Platform؛
  • Callback دیر، تکراری یا خارج از ترتیب.

Idempotency key، deduplication scope، Retry budget، backoff، cancellation و Compensation را در Contract بیاورید. Success را در منبع مستقل مثل Ledger/Accounting record بسنجید، نه فقط رنگ Run.

Approval و Delegation

ماتریس Role را با Requester، Manager، Delegate، Finance، Admin، Service identity و Suspended/Departed user بسازید. Self-approval، تغییر Approver پس از Submission، delegation expiry، approval از لینک Forwardشده، double click، concurrent decision و cancellation-after-approval را بررسی کنید.

Connector؛ مرز پرریسک پشت Drag-and-drop

هر Connector یک Dependency و مسیر خروج داده است. Contract آن حداقل این فیلدها را دارد:

  • Service/operation/owner و Environment؛
  • Authentication identity، OAuth scope و Secret rotation؛
  • Endpoint، protocol، schema و version/deprecation؛
  • Data classification، direction، residency و allowed egress؛
  • Timeout، rate/concurrency limit و pagination؛
  • Retry، idempotency و partial-side-effect semantics؛
  • Error taxonomy و user/support message؛
  • Sandbox/virtualization fidelity و Production probe؛
  • Monitoring، SLA assumption، fallback و exit owner.

برای Contract، Sandbox و Failure testing از راهنمای تست یکپارچه‌سازی استفاده کنید. Mock «همیشه ۲۰۰» فقط Mapping ساده را می‌سنجد؛ Rate limit، Expired token، schema drift، timeout-after-commit و provider outage را حفظ نمی‌کند.

API و داده را پشت UI پنهان نکنید

حتی اگر Maker API را مستقیم ندیده باشد، Connector و Runtime معمولاً Request می‌فرستند. Test این سطح شامل موارد زیر است:

  • Schema و type/required/additional field؛
  • Authentication و object/record-level authorization؛
  • Boundary، Unicode، Persian/Arabic digits و canonical money/time؛
  • Pagination، filtering، sorting و large dataset؛
  • Optimistic concurrency/version conflict؛
  • Duplicate create، idempotent update و delete/restore؛
  • Audit، retention و reconciliation.

راهنمای تست API طراحی Assertionهای HTTP، Contract، State، مجوز و CI را با جزئیات پوشش می‌دهد. UI success را با State یا Event مستقل تکمیل کنید.

امنیت: اعتماد کور به Platform کافی نیست

OWASP Citizen Development Top 10 در نسخهٔ فعلی خطرهایی مانند Blind Trust، Account impersonation، Authorization misuse، Sensitive-data leakage، component نامطمئن، Security misconfiguration، Asset-management failure و Logging/monitoring failure را برجسته می‌کند. این فهرست Risk catalog است، نه چک‌لیست اثبات امنیت.

Threat model را روی App، Data، Identity، Connector، Admin plane و Supply chain بسازید:

  • آیا Maker یا Service account بیش از نیاز دسترسی دارد؟
  • آیا پنهان‌کردن Control به‌اشتباه Authorization تلقی شده است؟
  • آیا کاربر با URL/API مستقیم رکورد دیگری را می‌خواند یا تغییر می‌دهد؟
  • آیا Connector دادهٔ حساس را به گروه/سرویس نامجاز می‌فرستد؟
  • آیا Secret در Formula، Export، Log یا Screenshot دیده می‌شود؟
  • آیا Component/Template سفارشی Publisher، Version، provenance و EOL دارد؟
  • آیا Audit قابل‌حذف/دست‌کاری یا بدون Correlation است؟

NIST SSDF 1.1 واژگان و Practiceهای امن را مستقل از مدل SDLC ارائه می‌کند؛ آن را برای Requirement، حفاظت Artifact، بررسی Component، پاسخ به Vulnerability و Supplier conversation به LCNC نگاشت کنید. Export و Metadata هم Artifact نرم‌افزاری‌اند.

تست فعال امنیتی نیازمند مجوز، Environment امن و مهارت مربوط است. فرایند Threat→Requirement→Evidence→Finding→Retest در راهنمای تست امنیت آمده است.

Data policy یک Guardrail است، نه اثبات حریم خصوصی

در نمونهٔ Power Platform، Data policies مایکروسافت Connectorها را در گروه‌های Business، Non-business یا Blocked دسته‌بندی و ترکیب بعضی گروه‌ها را محدود می‌کنند. این کنترل به کاهش مسیرهای ناخواسته کمک می‌کند، اما Purpose limitation، حداقل‌سازی Field، محتوای Attachment، دسترسی Record، Retention یا Export انسانی را اثبات نمی‌کند.

سناریوهای تست Policy شامل Connector جدید، Custom connector، Environment خارج Scope، Policy precedence، تغییر گروه، App قدیمی، Export/import، Service account و Failure message است. Default برای Connector تازه باید آگاهانه انتخاب شود؛ «فعلاً طبقه‌بندی نشده» را معادل امن نگیرید.

ALM؛ اپلیکیشن بصری هم نسخه و Artifact می‌خواهد

راهنمای ALM مایکروسافت برای Power Platform Environmentهای Development/Test/Production، Solution برای انتقال Componentها، Source control و CI/CD را جدا می‌کند و Managed solution را برای محیط‌های غیرتوسعه مطرح می‌کند. جزئیات در Vendorهای دیگر فرق دارد، اما سؤال‌های اصلی ثابت‌اند:

  • منبع حقیقت Repository است یا Production builder؟
  • چه چیزهایی Export می‌شوند و چه چیزهایی بیرون Package می‌مانند؟
  • Connection، Environment variable، Secret و Reference data چگونه Map می‌شوند؟
  • Build Artifact چگونه Version/Hash و Sign/Provenance می‌گیرد؟
  • چه کسی Promote می‌کند و آیا Maker دسترسی ویرایش مستقیم Production دارد؟
  • Merge conflict در Form/Flow/Canvas چگونه حل و بازبینی می‌شود؟
  • Platform release و deprecation چگونه Regression را Trigger می‌کند؟

برای هر Environment یک Manifest واقعی از Platform/Region، Solution/App/Flow version، schema، connection references، variables، policies، identities، license/capacity و external endpoints نگه دارید. الگوی کنترل Drift و Test data در راهنمای مدیریت محیط تست قابل‌استفاده است.

Pipeline انتشار و Gateهای شواهد

  1. Export/unpack/validate و ثبت Artifact immutable؛
  2. Static/config/security rules با Suppression نسخه‌دار؛
  3. Formula/model و workflow component tests؛
  4. Connector contract/API/data migration tests؛
  5. Deploy به Test با Connection/variable mapping کنترل‌شده؛
  6. Role matrix، journey، accessibility و performance؛
  7. UAT روی Acceptanceهای مشخص، نه Demo آزاد؛
  8. Release memo، residual risk و تصمیم مالک؛
  9. Promotion همان Artifact، smoke و canary محدود؛
  10. SLI/alert، rollback/roll-forward و post-deploy verification.

معماری Laneهای سریع/کند و Failure policy در راهنمای Continuous Testing آمده است. اگر Platform قابلیت Source یا Pipeline کامل ندارد، محدودیت را ثبت و کنترل جبرانی—Export نسخه‌دار، Approval، Change freeze یا Snapshot—طراحی کنید.

Rollback و Restore را یکی نگیرید

  • Rollback app/config: بازگشت Artifact و تنظیمات؛
  • Schema rollback: ممکن است destructive یا ناممکن باشد؛ Migration رو‌به‌جلو لازم شود؛
  • Data restore: بازگرداندن Dataset به Point زمانی، با اثر روی تغییرهای معتبر بعدی؛
  • Connector recovery: Reconcile اثرهای خارجی که Restore محلی حذفشان نمی‌کند؛
  • Credential recovery: Rotation/Reauthorization پس از رخداد یا جابه‌جایی Owner.

برای نمونه، مستند Backup و Restore محیط Power Platform نوع Environment، Retention و محدودیت‌های Restore را مشخص می‌کند. وجود Backup کافی نیست؛ RTO/RPO، مجوز، زمان Restore، Connectionهای خارجی، Audit و Reconciliation را با Drill ایمن اثبات کنید.

تست UI، RTL و دسترس‌پذیری

Component آماده می‌تواند در ترکیب شما نام، نقش، Focus order یا Error semantics نادرست داشته باشد. Responsive preview نیز دستگاه، Zoom، Keyboard، Screen reader و browser واقعی نیست.

  • Keyboard-only، visible focus، focus trap و ترتیب منطقی RTL؛
  • Name/Role/Value، Label، Error association و Status message؛
  • Zoom/Reflow، Contrast و Touch target؛
  • Persian text، ZWNJ، mixed-direction ID/Email/IBAN و Copy/Paste؛
  • رقم فارسی/عربی/لاتین با Parser صریح و Storage canonical؛
  • تقویم نمایشی شمسی در برابر Instant/UTC و timezone Asia/Tehran؛
  • IRR canonical در برابر نمایش تومان و جلوگیری از تبدیل دوباره؛
  • PDF/Email/Notification/Export به‌عنوان Channelهای مستقل.

WCAG 2.2 معیارهای آزمون‌پذیر و Technology-neutral ارائه می‌کند و خودش نیز تأکید دارد که ابزار خودکار همهٔ نیازها را پوشش نمی‌دهد. مسیر اجرایی فارسی و ترکیب تست دستی/خودکار در راهنمای تست دسترس‌پذیری آمده است.

عملکرد، Capacity، License و Quota

Response time تنها ریسک نیست. Query delegation، تعداد Row، Attachment، Connector fan-out، concurrent Flow، Pagination، Retry، Background job، License assignment و Request quota می‌توانند Outcome را تغییر دهند.

برای نمونه، مستند Power Platform Request limits نشان می‌دهد درخواست‌های Connector، Actionهای موفق/ناموفق، Retry و Pagination می‌توانند در Allocation شمارش شوند. عدد و License ممکن است تغییر کند؛ در Release، Documentation version و Entitlement واقعی Tenant خود را ثبت کنید، نه عدد حفظ‌شده از مقاله.

Workload model باید Journey mix، Arrival، Dataset size، Role، Connector latency و Background traffic را داشته باشد. p95/p99، Error/throttle ratio، Goodput، Queue age، retry amplification و Cost/license consumption را کنار Outcome بسنجید. از تست مخرب روی Tenant/Provider تولید بدون مجوز خودداری کنید.

ابزار Native تست چه چیزی را پوشش می‌دهد؟

قابلیت‌های داخلی Platform برای Feedback سریع ارزشمندند، اما Scope آن‌ها را دقیق بخوانید. در یک نمونهٔ مشخص، Power Apps Test Studio از Expression یا Recorder برای تست Canvas app استفاده می‌کند و State را میان Test caseهای یک Suite حفظ می‌کند؛ خود مستند نیز اتکای کامل به Automation را توصیه نمی‌کند.

سبد ابزار ممکن است ترکیبی باشد:

  • Native formula/workflow/UI tests برای Feedback نزدیک Builder؛
  • Static/config/solution checker برای Patternهای شناخته‌شده؛
  • API/contract tests خارج UI برای مرزهای پایدارتر؛
  • Service virtualization و Sandbox برای Failureهای Dependency؛
  • External browser/mobile automation برای Journey و Accessibility؛
  • Performance/security/data tooling برای پرسش‌های تخصصی؛
  • Production monitoring و audit برای Drift/Outcome واقعی.

Record-and-playback Maintainability یا Oracle قوی را تضمین نمی‌کند. Control rename، layout، state مشترک، test data، async wait و role context را مدیریت کنید. هر تست باید معلوم کند چه ریسکی را می‌سنجد و چه چیزی خارج Scope است.

امنیت را از چند زاویه ارزیابی کنید

راهنمای Security testing برای Power Platform workload ترکیب دید Inside-out و Outside-in، محیط جدا، فرایند تکرارپذیر و تست دستی در کنار Automation را پیشنهاد می‌کند. از این اصل عمومی استفاده کنید، اما ابزار و مجوز را با Platform خود تطبیق دهید.

زاویهپرسش
Maker/AdminConfig، Role، Secret، Policy و Artifact چگونه تغییر می‌کند؟
User/attackerآیا UI/API/Link/Connector اجازهٔ عمل غیرمجاز می‌دهد؟
Dataچه کسی کدام Record/Field/Attachment را می‌بیند و خارج می‌کند؟
OperationsMisuse/Leakage/Config drift چگونه Detect و پاسخ داده می‌شود؟
SupplierPlatform/Template/Component incident، update و EOL چه قراردادی دارد؟

Runtime evidence و بازاعتبارسنجی

SaaS Platform بدون Deploy شما هم تغییر می‌کند. Release note، regional rollout، connector deprecation، policy، browser و identity provider می‌تواند Assumption را عوض کند. Triggerهای Retest/Recertification را تعریف کنید:

  • App/Flow/Schema/Role/Policy/Connector change؛
  • Platform wave یا Runtime version؛
  • Quota/license/pricing یا geography change؛
  • Security advisory یا Secret/certificate rotation؛
  • Owner departure، support gap یا orphan detection؛
  • Incident، error-rate/latency shift یا complaint pattern؛
  • Data classification/retention/regulatory change؛
  • Vendor deprecation یا Exit decision.

Telemetry شامل App/Flow/Operation/Correlation ID، version/environment، role cohort، connector outcome، retry/throttle، latency، business result و audit status باشد؛ PII و Secret را حذف کنید. نبود Log یا gap در Audit «موفقیت» نیست، Unknown است.

نمونهٔ ایرانی: فرایند بازپرداخت هزینه

این مثال ساختگی است و نتیجهٔ یک پروژهٔ واقعی را ادعا نمی‌کند. کارمند مبلغ، شرح و تصویر رسید را ثبت می‌کند؛ مدیر مستقیم و سپس مالی تأیید می‌کنند؛ Connector سند را در سیستم حسابداری می‌سازد و کارمند Notification می‌گیرد.

قرارداد داده و نقش

  • مبلغ در Storage/API به IRR canonical و در UI با Label روشن به ریال یا تومان؛
  • ورودی رقم فارسی/عربی/لاتین طبق Rule، بدون تغییر شناسه یا شماره حساب؛
  • Event time به UTC و نمایش/Deadline با Asia/Tehran و تقویم اعلام‌شده؛
  • Attachment با type/size/malware/privacy policy و دسترسی محدود؛
  • Requester فقط رکورد خود، Manager فقط محدودهٔ سازمانی، Finance محدودهٔ مصوب؛
  • Delegate دارای Scope و Expiry؛ Admin حق Business approval ندارد مگر Requirement صریح؛
  • Service account حداقل Scope لازم و Rotation/Owner مستقل.

سناریوهای حیاتی

سناریوOracle
کاربر «۱۵۰٬۰۰۰ تومان» را با رقم فارسی وارد می‌کندیک تبدیل به IRR canonical؛ نمایش و Export واحددار
Manager لینک Approval را Forward می‌کندIdentity/record authorization مستقل از داشتن لینک
Delegate پس از Expiry پاسخ می‌دهدرد تصمیم و Audit بدون تغییر State
Connector پس از ساخت سند Timeout می‌شودRetry با Idempotency؛ دقیقاً یک سند حسابداری
دو Approver هم‌زمان Approve/Reject می‌کنندVersion conflict و یک Transition معتبر
Schema حسابداری Field تازه می‌خواهدContract gate یا Quarantine؛ نه Drop خاموش
Quota در پایان ماه نزدیک سقف استThrottle/backpressure، alert و عدم گم‌شدن درخواست
App rollback می‌شودSchema/data سازگار و اثرهای خارجی Reconcile شوند

شواهد تصمیم انتشار

Release memo باید Artifact/Environment، Role matrix، ۱۲ Rule مالی منتخب، Connector contract، Test data، Workflow transitions، Security/privacy evidence، p95/p99 و throttle profile، accessibility/RTL، restore/reconcile drill، Unknownها و residual risk را ثبت کند. Owner مالی—not QA—Authority و ریسک باقی‌ماندهٔ فرایند را می‌پذیرد.

نقش QA در LCNC؛ نه حذف، نه پیشگویی

هیچ نتیجهٔ عمومی دربارهٔ حذف شغل، افزایش تقاضا یا «آیندهٔ قطعی» از نوع ابزار به دست نمی‌آید. نقش به Criticality، ساختار تیم، Platform، Regulation و قابلیت Maker بستگی دارد. QA می‌تواند در چهار سطح ارزش بسازد:

  • Enablement: Template، مثال، Training و Self-check برای Maker؛
  • Coaching: Risk، Acceptance، State/Oracle و Testability؛
  • Engineering: Contract/API automation، data/environment، CI و observability؛
  • Independent assurance: برای Riskهای حساس، بدون گرفتن تصمیم کسب‌وکار.

مهارت مفید شامل تحلیل دامنه، Data model/query، Workflow/state، Identity/authorization، API/Connector، ALM، Security/privacy، Accessibility، Observability و ارتباط است. Coding literacy برای Debug، Extension و Automation مفید است، اما سطح لازم باید از Job و Risk بیاید؛ نه از برچسب «تستر مدرن».

مدل عملیاتی Citizen Development

نقشمسئولیت
MakerApp card، logic/config، self-test، evidence و runbook
Business ownerPurpose، Tier، Rule، authority، funding و risk decision
Platform admin/CoEInventory، environment، policy، capacity، ownership و lifecycle
Data owner/privacyClassification، access، retention، egress و deletion
SecurityThreat model، guardrail، active-test authority و incident path
QA/quality engineerRisk/evidence design، coaching، independent checks و gaps
Integration ownerConnector/API contract، sandbox، failure/reconciliation
Operations/supportSLI/alert، incident، recovery و user communication
Release/risk ownerGo/No-go/limited rollout و residual-risk acceptance

Tier بالا Peer review و Independent evidence بیشتری می‌خواهد؛ T0 را با تشریفات T3 خفه نکنید. Guardrail خوب مسیر امن را آسان و استثنا را قابل‌ردیابی می‌کند.

متریک‌هایی که تصمیم می‌سازند

  • درصد Appهای فعال با Business/Technical owner و Review date؛
  • Risk-tier coverage و تعداد T2/T3 ناشناخته؛
  • درصد Releaseها با immutable artifact و environment manifest؛
  • Role/connector/risk-evidence coverage، نه تعداد Test خام؛
  • Change failure/rollback و restore/reconciliation success؛
  • Connector error/throttle/retry amplification و outcome loss/duplicate؛
  • Lead time تفکیک‌شده از waiting/rework، با Guardrail امنیت و Incident؛
  • Orphaned apps، expired exceptions و unsupported dependencies؛
  • Audit/telemetry gaps و Mean time to ownership؛
  • Customer/task success برای Journeyهای مهم.

تعداد App، Automation percentage، Maker activity یا Pass rate به‌تنهایی کیفیت نیست. Definition، denominator، source، freshness، cohort و gaming risk هر Metric را ثبت کنید.

دام‌های رایج

  • فرض اینکه No-Code یعنی بدون منطق، Dependency یا ریسک؛
  • اعتماد به Platform certification به‌عنوان گواهی App؛
  • پیش‌بینی بازار/شغل با یک آمار تاریخ‌دار و بی‌منبع؛
  • فرستادن Prototype با دادهٔ واقعی به Production؛
  • نداشتن Inventory، Owner، Tier، Support یا EOL؛
  • ویرایش مستقیم Production و Screenshot به‌جای Source/Diff؛
  • اتکا به UI recorder برای Workflow/Connector/State؛
  • Mock همیشه‌موفق و ندیدن Timeout-after-commit؛
  • Authentication بدون record-level authorization؛
  • Service account شخصی یا Scope بیش‌ازحد؛
  • Data policy به‌عنوان اثبات Privacy؛
  • Default connector group بدون Review؛
  • Retry بدون Idempotency/Compensation؛
  • Rollback App بدون Schema/Data/External effects؛
  • Backup بدون Restore/Reconciliation drill؛
  • تست فقط با Admin یا بهترین License/Network؛
  • Hard-code ریال/تومان، تاریخ یا Environment؛
  • فرض دسترس‌پذیری از روی Component آماده؛
  • تفسیر missing Audit/Telemetry به‌عنوان Success؛
  • Gate سنگین یکسان برای Prototype و فرایند مالی؛
  • تبدیل QA به مالک همهٔ Riskها.

برنامهٔ ۳۰روزه

هفتهٔ اول: Inventory و Tier

App/Flowهای فعال را از Admin API و گفت‌وگو با واحدها جمع کنید. Owner، Purpose، Data، Connector، User و Last change را ثبت؛ منابع یتیم و T2/T3 ناشناخته را اولویت‌بندی کنید.

هفتهٔ دوم: Guardrail و App card

یک App critical را انتخاب کنید. مسئولیت Platform/App، Role/Service identity، Data policy، Environment، Change manifest و Support/Expiry را روشن کنید. مسیر Exception را Ownerدار و زمان‌دار سازید.

هفتهٔ سوم: Evidence portfolio

Workflow را State model کنید؛ یک timeout-after-commit، یک negative authorization، یک schema drift و یک quota scenario اجرا کنید. Oracle مستقل، limitation و cleanup را ذخیره کنید.

هفتهٔ چهارم: ALM و Recovery

همان Artifact را از Test به Production-like منتقل و mappingها را Verify کنید. Rollback/restore/reconciliation را Drill، سپس SLI، Alert، Release memo و ۹۰-day recertification را فعال کنید.

چک‌لیست انتشار LCNC

  1. App در Inventory، دارای Owner، Tier و Review date است.
  2. Purpose، Users، prohibited use و Data classification روشن‌اند.
  3. مرز مسئولیت Platform، App، Connector و Business ثبت شده است.
  4. Change manifest همهٔ Config/Role/Policy/Dependencyها را می‌بیند.
  5. Artifact نسخه‌دار از مسیر کنترل‌شده Promote می‌شود.
  6. Workflow state، retry، concurrency و compensation آزموده‌اند.
  7. Connector contract شامل Scope، Limit، Failure و Egress است.
  8. Role matrix با تست منفی UI/API/Record تکمیل شده است.
  9. Secret/Service identity حداقل دسترسی، Rotation و Owner دارد.
  10. Data policy، retention، audit و deletion جدا ارزیابی شده‌اند.
  11. Dataset/Quota/Throttle/License profile نماینده است.
  12. RTL، Persian/Arabic digits، IRR/toman و UTC/Tehran کنترل شده‌اند.
  13. Keyboard/Screen reader/Zoom و خطاهای فرم بررسی شده‌اند.
  14. Rollback، restore و external reconciliation تمرین شده‌اند.
  15. SLI/Alert/Support و telemetry-gap semantics آماده‌اند.
  16. Unknown و residual risk به مالک تصمیم نام‌برده رسیده‌اند.

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

آیا اپلیکیشن No-Code واقعاً به تست نیاز دارد؟

بله، اگر Outcome آن اهمیت دارد. No-Code فقط شیوهٔ Authoring را تغییر می‌دهد؛ Rule، Data، Identity، Workflow، Connector و Runtime همچنان می‌توانند شکست بخورند. عمق تست باید از Risk tier بیاید؛ Prototype شخصی با فرایند مالی یک Gate ندارد.

آیا تستر برای LCNC باید برنامه‌نویسی بلد باشد؟

نیاز ثابت و عمومی وجود ندارد. تحلیل دامنه، Workflow، Data، Authorization و Evidence پایه‌اند. Coding literacy برای API/contract automation، Debug و Extension مفید یا در بعضی نقش‌ها لازم است؛ اما Requirement شغل باید بر Platform و Risk واقعی نوشته شود، نه شعار.

آیا ابزار تست داخلی Platform کافی است؟

معمولاً فقط بخشی از شواهد را می‌سازد. ابزار Native برای Formula/UI/Feedback سریع خوب است، ولی ممکن است Connector failure، API authorization، performance، accessibility، recovery یا Production drift را کامل نبیند. Scope و limitation هر ابزار را با Risk map تطبیق دهید.

مهم‌ترین تست امنیتی برای Low-Code چیست؟

یک پاسخ ثابت وجود ندارد، اما Authorization منفی، Service identity/OAuth scope، Data egress از Connector، Secret exposure، Config/policy و Audit معمولاً نقاط مهم‌اند. از Threat model و Data flow شروع کنید؛ OWASP Top 10 یک ورودی است، نه مدرک کامل امنیت.

چگونه Vendor lock-in را در تست مدیریت کنیم؟

Export format، Data portability، API/Connector contract، Artifact/version history، observability access، backup/restore، EOL و هزینه/زمان مهاجرت را پیش از Critical شدن App آزمایش کنید. یک Exit drill کوچک اجرا و Gapها را با Owner و تاریخ انقضا ثبت کنید؛ ادعای Portability را از بروشور نپذیرید.

جمع‌بندی: سطح انتزاع عوض شده، مسئولیت شواهد نه

Low-Code/No-Code می‌تواند ساخت برخی راه‌حل‌ها را برای برخی تیم‌ها ساده‌تر کند، اما کیفیت از Drag-and-drop تولید نمی‌شود. سازمان باید بداند چه Appهایی دارد، هرکدام چه ریسکی دارند، کدام کنترل با Platform است و کدام Outcome را خودش باید اثبات کند.

از یک App فعال شروع کنید: Owner و Tier را ثبت، Workflow را به State تبدیل، Connector را Contract‌دار و یک Timeout-after-commit را با Oracle مستقل اجرا کنید. اگر Artifact، Role matrix یا Recovery path ندارید، همان Gap از انتخاب ابزار تست تازه مهم‌تر است.

این مقاله را با دیگران به اشتراک بگذارید

نویسنده

محمد عسکری

محمد هستم، توسعه‌دهنده وب با بیش از ده سال تجربه در برنامه‌نویسی سمت سرور و کاربر. به یادگیری و اشتراک‌گذاری دانش علاقه‌مندم و اخیراً تمرکزم را روی حوزه تست نرم‌افزار گذاشته‌ام تا تجربیاتم را در این زمینه نیز به اشتراک بگذارم و به درک بهتر کیفیت نرم‌افزار کمک کنم.

همه مقاله‌ها

ادامه مطالعه

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

ایستگاه بعدی شما

TestRail را همین حالا در محیط دمو ببینید.

محیط تست آماده

دسترسی به دمو TestRail

قبل از ورود، مشخصات زیر را در صفحه ورود محیط دمو وارد کنید.

آدرس دمو

https://demo.testrail.ir

ایمیل ورود

demo@testrail.ir

رمز عبور

demo_user