اشتباهات رایج طراحی سایت؛ تشخیص، اصلاح و تست

طراحی بد همیشه زشت نیست. ممکن است صفحه چشم‌نواز باشد، اما کاربر نداند این خدمت برای اوست یا نه؛ دکمه خرید زیر نوار چسبان پنهان شود؛ فرم پس از خطا همه داده‌ها را پاک کند؛ یا سفارش موفق باشد و پیام نتیجه برای Screen reader اعلام نشود. این‌ها اختلاف سلیقه نیستند؛ شکست Task هستند.

اشتباهات رایج طراحی سایت را باید با سفر واقعی، شواهد و معیار پذیرش پیدا کرد. «کاربر گیج می‌شود» یک Observation قابل‌اقدام نیست؛ «۴ نفر از ۶ نفر در موبایل دکمه ادامه را ندیدند چون Keyboard و Sticky bar آن را پوشاند» هم علت محتمل دارد و هم Test اصلاح.

پاسخ کوتاه: رایج‌ترین اشتباهات طراحی سایت چیست؟

  1. طراحی بدون مخاطب، Job و Outcome روشن؛
  2. شروع از ظاهر پیش از محتوا و جریان؛
  3. پیام و ارزش پیشنهادی مبهم یا اغراق‌آمیز؛
  4. سلسله‌مراتب دیداری ضعیف و CTAهای هم‌وزن؛
  5. Homepage شلوغ و Navigation براساس چارت سازمانی؛
  6. طراحی Mobile به‌عنوان نسخه کوچک‌شده Desktop؛
  7. دسترس‌پذیری به‌عنوان مرحله آخر؛
  8. فرم طولانی، Label و Error message ضعیف؛
  9. اعتمادسازی با Badge، آمار یا رضایت‌نامه بی‌مدرک؛
  10. استفاده از Dark pattern برای Conversion؛
  11. ندیدن Loading، Empty، Error، Offline و Permission state؛
  12. تصمیم بر Click و سلیقه، بدون Task success و Outcome؛
  13. Redesign بزرگ بدون Baseline، Pilot و Rollback؛
  14. نداشتن مالک، QA و نگهداری پس از انتشار.

اشتباه طراحی را با Failure قابل مشاهده تعریف کنید

لایهپرسششاهد
Outcomeکاربر و کسب‌وکار چه نتیجه‌ای می‌خواهند؟Task/Business metric
Journeyاز کجا وارد و به کجا باید برسد؟Path/step map
Frictionکجا کند، متوقف یا اشتباه می‌کند؟Observation/error/event
Causeچه فرضیه‌ای Failure را توضیح می‌دهد؟Evidence triangle
Fixکوچک‌ترین تغییر مؤثر چیست؟Prototype/Pilot
Acceptanceاز کجا می‌فهمیم اصلاح شد؟Outcome + guardrail

ظاهر، فقط یکی از ورودی‌هاست. یک UI می‌تواند از نظر Brand دقیق باشد و هنوز برای Keyboard، شبکه کند، خطای پرداخت یا کاربر کم‌بینا شکست بخورد.

Opinion را از Evidence جدا کنید

جمله ضعیفصورت قابل بررسی
منو شلوغ است۴۰٪ Taskها مسیر اشتباه رفتند؛ پنج Label هم‌پوشان بود
رنگ دکمه بد استContrast/State ناقص و عنصر شبیه متن غیرقابل کلیک است
فرم طولانی استDrop در مرحله کدپستی و ۳ فیلد بدون نیاز عملیاتی است
سایت کند استLCP موبایل ایران P75 برابر X و خروج در همان Template بالاست
کاربر اعتماد ندارددر مصاحبه درباره قیمت، بازگشت یا هویت سؤال تکرار شد

واحد ممیزی «Task در Context» است

صفحه را جدا از سفر بررسی نکنید. Task «خرید» ممکن است از تبلیغ و صفحه محصول آغاز شود، با انتخاب Variant و آدرس ادامه یابد، به درگاه خارج از سایت برود و با Callback یا پیگیری سفارش تمام شود. شکست هر مرحله می‌تواند به‌اشتباه «طراحی Checkout» یا «کیفیت ترافیک» نام بگیرد.

Contextنمونهریسک پنهان
Userتازه‌کار، برگشتی، کم‌بینامدل ذهنی/نیاز متفاوت
Goalیادگیری، مقایسه، خرید، پشتیبانیCTA نامتناسب
Device/inputموبایل، Keyboard، VoiceFocus/Target/keyboard
Networkکند یا ناپایدارTimeout/partial load
Localeفارسی، RTL، عدد/کد لاتینBidi و Validation
Stateمهمان، واردشده، خطا، موجودی صفرمسیر بدون طراحی
Riskمالی، پزشکی، حقوقی، داده شخصینیاز به تأیید و Trust

Service Standard دولت بریتانیا از شناخت کاربر و نیاز، حل کل مسئله، تجربه پیوسته میان کانال‌ها، استفاده ساده برای همه، امنیت/حریم خصوصی، تعریف موفقیت و عملیات قابل‌اعتماد شروع می‌کند. این ترتیب یادآوری می‌کند که «صفحه زیبا» معادل «خدمت سالم» نیست.

شدت را پیش از زیبایی اولویت دهید

یک مدل ترتیبی برای Ranking—نه فرمول علمی دقیق:

Priority = (Task criticality × Severity × Frequency × Evidence confidence) ÷ (Effort × Change risk)

Severityتعریفنمونهواکنش
CriticalTask یا داده/پول از دست می‌رودپرداخت موفق و سفارش ثبت‌نشدهIncident/stop rollout
Highبخش بزرگی متوقف می‌شودفرم با Keyboard ارسال نمی‌شودرفع فوری/Pilot
MediumTask سخت یا کند می‌شودفیلتر وضعیتش را نشان نمی‌دهدBacklog نزدیک
Lowاصطکاک محدود یا ظاهریSpacing ناهماهنگ بدون اثر TaskDesign-system maintenance

قانون، امنیت، Accessibility blocker و از دست‌رفتن داده را صرفاً با حجم کم عقب نیندازید. Frequency پایین می‌تواند ناشی از این باشد که کاربر پیش از رسیدن به مانع، مسیر را ترک کرده است.

اشتباه ۱: طراحی بدون کاربر، Job و نتیجه

Persona فقط «مرد ۳۰ تا ۴۰ ساله علاقه‌مند به تکنولوژی» تصمیم طراحی نمی‌سازد. تیم باید بداند کاربر در چه موقعیت، با چه محرک و محدودیتی، چه نتیجه‌ای می‌خواهد و موفقیت را چگونه تشخیص می‌دهد.

فیلدنمونه فروشگاه ایرانی
Triggerگوشی فعلی خراب شده
Jobتا سقف بودجه، مدل قابل‌اعتماد انتخاب کند
Constraintموجودی/قیمت نوسانی، تحویل شهرستان
Evidence needگارانتی، موجودی واقعی، مقایسه
Successانتخاب درست و Promise تحویل روشن
Business outcomeسفارش تحویل‌شده و نگه‌داشته‌شده

Task را با مصاحبه، Ticket پشتیبانی، Search داخلی، داده فروش و مشاهده واقعی بسازید. خواسته Stakeholder یک Input است، نه نماینده قطعی کاربر.

اشتباه ۲: شروع از رنگ و Component پیش از محتوا

وقتی Message، Object، Action و State مشخص نیست، Wireframe به ظرف Lorem ipsum تبدیل می‌شود. ابتدا Content model و جریان تصمیم را بسازید:

  • کاربر چه Entity یا گزینه‌هایی می‌بیند؟
  • برای تصمیم چه Attribute و Evidence لازم است؟
  • Primary action و Secondary action چیست؟
  • در Empty، Error، Loading، Permission و Success چه می‌شود؟
  • مالک به‌روزرسانی داده چه کسی است؟

Design system پس از این قرارداد، Componentهای تکرارپذیر می‌دهد؛ قرار نیست مسئله محصول را به‌جای تیم حل کند.

اشتباه ۳: پیام مبهم یا وعده اغراق‌آمیز

تیترهایی مانند «آینده کسب‌وکار شما را می‌سازیم» یا «بهترین تجربه دیجیتال» مخاطب، مسئله، خروجی و مرز خدمت را پنهان می‌کنند.

عنصرسؤالضدالگو
Audienceبرای چه کسی؟همه کسب‌وکارها
Problem/jobچه نیاز مشخصی؟رشد و موفقیت
Outcomeچه خروجی قابل فهمی؟تحول بی‌نظیر
Mechanismچطور/با چه Scope؟راهکار جامع
Evidenceچرا باورپذیر؟Badge یا عدد بی‌منبع
Next stepاکنون چه کند؟CTA عمومی «بیشتر»

صفحه اصلی محل شرح همه جزئیات نیست؛ باید Orientation، مسیر و Evidence کافی بدهد. چارچوب Message، Navigation و Conversion در راهنمای طراحی صفحه اصلی کامل شده است.

اشتباه ۴: سلسله‌مراتب دیداری بدون سلسله‌مراتب تصمیم

فونت بزرگ‌تر الزاماً عنصر مهم‌تر برای Task نیست. Contrast، اندازه، Position، Whitespace، Grouping و ترتیب DOM باید به سؤال‌های کاربر پاسخ دهند: کجا هستم؟ چه چیزی مهم است؟ وضعیت چیست؟ چه اقدامی ممکن است؟

علامتFailureاصلاح
سه CTA هم‌رنگ و هم‌اندازهPrimary action نامعلومAction hierarchy
Cardهای شبیه تبلیغBanner blindnessContent/label واقعی
Text خاکستری کم‌رنگخوانایی/ContrastToken و WCAG test
Spacing نامنظمرابطه گروه‌ها مبهمLayout/spacing scale
Status فقط با رنگمعنا برای همه منتقل نمی‌شودText/icon/semantics

اشتباه ۵: CTA بیشتر را معادل Conversion بیشتر دانستن

تعداد ثابت «یک CTA» یا «سه CTA» نداریم. یک Primary action می‌تواند در طول صفحه تکرار شود و Secondary action برای کاربر ناآماده وجود داشته باشد؛ مشکل وقتی است که Actionها هدف متفاوت، پیام ناسازگار یا وزن یکسان دارند.

قرارداد CTA

  • Label نتیجه را بگوید: «دریافت پیش‌فاکتور»، نه «ارسال».
  • پس از کلیک، Destination و Commitment مطابق انتظار باشد.
  • Disabled state علت و راه رفع داشته باشد؛ کنترل لازم بی‌دلیل غیرفعال نشود.
  • Loading از Double submit جلوگیری و Progress را اعلام کند.
  • Success نتیجه، Reference و قدم بعدی را نشان دهد.
  • Cancel/Back داده را ناخواسته نابود نکند.

اشتباه ۶: صفحه اصلی را انبار همه درخواست‌ها کردن

Carousel چندپیامی، Logo wall طولانی، همه خدمت‌ها، آخرین خبر، همه آمار و چند فرم می‌توانند Orientation را از بین ببرند. هر Module باید Job، Audience، Owner و Metric داشته باشد. چیزی که فقط به‌دلیل فشار داخلی اضافه شده، باید از Task test عبور کند.

اشتباه ۷: Navigation براساس ساختار سازمانی

کاربر نام واحدهای داخلی، Product line تاریخی یا اصطلاحات فروش را لزوماً نمی‌شناسد. Label باید به زبان مخاطب و مقصد قابل پیش‌بینی باشد.

کنترلآزمونAcceptance
LabelFirst-click/Tree testمسیر درست و Confidence
KeyboardTab/Shift+Tab/Enter/EscapeOrder، focus، close سالم
Mobile menuTouch/zoom/orientationTarget و state روشن
Current locationBreadcrumb/active stateOrientation
Deep linkورود مستقیمContext بدون Homepage
Failure404/no resultRecovery path

اشتباه ۸: Search و Filter بدون State و Recovery

Search فقط Input و آیکن ذره‌بین نیست. Query normalization، Typo، Synonym، فارسی/عربی «ی/ک»، نیم‌فاصله، رقم، Finglish برند، Loading، Zero result، Facet، Sort، URL state و Back navigation بخشی از تجربه‌اند.

Stateباید نشان دهدنباید
LoadingProgress و حفظ Contextصفحه سفید
ResultsQuery، count و Active filterنتیجه بدون علت
Zeroاصلاح Query/حذف Filter/مسیر جایگزین«یافت نشد» بن‌بست
Errorمشکل Service و Retry امنسرزنش Query
No inventoryوضعیت واقعی و alternativeمحصول ناموجود شبیه موجود

اشتباه ۹: موبایل را نسخه کوچک‌شده Desktop دانستن

Responsive بودن Layout به‌تنهایی Task را Mobile-friendly نمی‌کند. صفحه‌کلید مجازی، ورودی لمسی، شبکه، Orientation، Safe area، Sticky element، Zoom، دوربین/آپلود و انتقال به درگاه باید در Context واقعی تست شوند.

Failure موبایلنشانهاصلاح
Target کوچک/فشردهTap اشتباهاندازه و فاصله کافی
Keyboard نامناسبتغییر مداوم صفحه‌کلیدInput type/mode درست
Sticky overlapCTA/Focus/Error پنهانViewport/scroll test
Table overflowستون ضروری خارج دیدResponsive table/priority
Modal تمام‌صفحهBack/close نامعلومFocus/escape/history contract
Upload سنگینTimeout یا مصرف دادهLimit/compress/progress/retry

WCAG ۲.۲ معیار AA حداقل Target را با قاعده ۲۴×۲۴ CSS pixel و استثناهای مشخص تعریف می‌کند؛ این عدد را با توصیه‌های بزرگ‌تر Touch target در Design system خود اشتباه نگیرید. مسیر کامل Device/Viewport/Input/Content/Performance/SEO در راهنمای طراحی و تست Mobile-friendly آمده است.

اشتباه ۱۰: دسترس‌پذیری را افزونه یا Audit آخر کار دانستن

WCAG 2.2 چهار اصل Perceivable، Operable، Understandable و Robust و معیارهای آزمون‌پذیر A/AA/AAA دارد. انطباق فقط Contrast نیست؛ Structure، Keyboard، Focus، Text alternative، Reflow، Label، Error، Status message و سازگاری Assistive technology را شامل می‌شود.

اصلخطای رایجنمونه Acceptance
Perceivableتصویر/ویدئو بدون جایگزینAlt/Caption متناسب با هدف
Operableمنو/Modal فقط MouseKeyboard order، focus و close
UnderstandableLabel/Error مبهمنام، Hint و Recovery مشخص
RobustCustom control بدون Name/Role/ValueSemantic/AT test

از معیارهای افزوده WCAG ۲.۲ می‌توان به Focus Not Obscured، Dragging alternatives، Target Size Minimum، Consistent Help، Redundant Entry و Accessible Authentication اشاره کرد. برای نمونه، Focus keyboard نباید کاملاً زیر Header/Popup پنهان شود و داده قبلاً واردشده در همان Process باید—جز استثناها—Auto-populate یا قابل انتخاب باشد.

ابزار خودکار کافی نیست

W3C در راهنمای ارزیابی Accessibility می‌گوید هیچ ابزار منفردی نمی‌تواند انطباق سایت را تعیین کند و ارزیابی انسانی آگاه لازم است. ترکیب کنید:

  • Lint/automated scan در CI برای Failureهای قابل‌تشخیص؛
  • Keyboard-only و Zoom/Reflow دستی؛
  • Screen reader روی Flowهای نماینده؛
  • Contrast و Focus state در همه Stateها؛
  • تست با کاربران دارای معلولیت و فناوری کمکی؛
  • Template sampling و Retest پس از اصلاح.

Scope، نمونه‌گیری، WCAG-EM، Severity و Remediation در راهنمای ممیزی دسترس‌پذیری وب پوشش داده شده است.

اشتباه ۱۱: فرم را مجموعه‌ای از Inputها دیدن

فرم یک مکالمه و Transaction state machine است: شروع، ورود داده، Validation، Review، Submit، Processing، Success، Failure، Retry و Resume.

جزءقراردادخطا
Questionچرا لازم و چگونه پاسخ داده شود؟فیلد بدون دلیل
Labelدائمی و ProgrammaticPlaceholder به‌جای Label
Formatمثال و Input modeحدس‌زدن فرمت
Requiredپیش از Submit روشنستاره بدون توضیح
Validationزمان مناسب، Client+Serverخطا فقط پس از پایان
Reviewاطلاعات حساس/مالی قابل بررسیSubmit غیرقابل بازگشت
StatusProcessing/Success programmaticSpinner بی‌پایان
Recoveryداده حفظ، retry امنپاک‌شدن یا Double submit

آموزش Form در W3C WAI بر کوتاهی، پرسیدن فقط داده لازم، Label، Fieldset/Legend، Instruction، Validation، Undo/Confirm، Notification و Progress در فرم چندمرحله‌ای تأکید می‌کند.

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

  • نام فارسی، فاصله و نیم‌فاصله را بی‌دلیل رد نکنید.
  • موبایل و کدپستی با رقم فارسی/لاتین را Normalization کنید؛ Raw value و معنای تبدیل را مدیریت کنید.
  • شماره تلفن را با Country/format policy روشن بگیرید، نه Regex شکننده عمومی.
  • آدرس را بر نیاز تحویل ساخت‌یافته کنید؛ نقطه نقشه جای نشانی پستی را نمی‌گیرد.
  • Amount تومان/ریال، Separator و واحد را کنار مقدار صریح کنید.
  • OTP، CAPTCHA، درگاه و بازگشت به سایت را با Keyboard، Screen reader و Network failure تست کنید.

اشتباه ۱۲: Error message کاربر را سرزنش می‌کند

«مقدار نامعتبر است» نمی‌گوید کدام مقدار، چرا و چگونه اصلاح شود. خطا باید نزدیک Field، در Summary، با زبان Label و راه رفع نوشته شود؛ Color تنها حامل معنا نباشد.

بدبهترچرا
خطا ۴۲۲شماره موبایل را با ۱۱ رقم وارد کنیدField و Action روشن
مقدار اشتباهتاریخ پایان باید بعد از تاریخ شروع باشدRule روشن
پرداخت ناموفقمبلغ کسر نشد/وضعیت در حال بررسی؛ دوباره پرداخت نکنیدState و Recovery
دسترسی نداریدبرای این درخواست نقش X لازم است؛ با Y تماس بگیریدProblem service نه input

GOV.UK Design System توصیه می‌کند Error کنار Field و در Summary نمایش داده شود، پاسخ‌های درست و غلط حفظ شوند و برای مشکل Service که کاربر قادر به اصلاحش نیست از Error field استفاده نشود؛ صفحه باید مسئله و اقدام بعدی را توضیح دهد.

تراکنش حساس، مرحله Review می‌خواهد

برای سفارش، پرداخت، درخواست رسمی یا حذف داده، خلاصه قابل بررسی، امکان اصلاح و Confirmation روشن لازم است. الگوی Check answers در GOV.UK پیش از Submit، بازبینی پاسخ‌ها را پیشنهاد می‌کند؛ پیاده‌سازی دقیق باید متناسب با ریسک و Process شما باشد.

Message، Form، Event، A/B test و کیفیت Lead در راهنمای طراحی Landing page و فرم با جزئیات بیشتری آمده است.

اشتباه ۱۳: Dark pattern را «بهینه‌سازی تبدیل» نامیدن

الگونمونهآسیب
False urgencyTimer یا موجودی ساختگیتصمیم فریب‌خورده
Preselectionخدمت/رضایت از پیش فعالConsent نامعتبر/هزینه
Confirmshaming«نه، من رشد نمی‌خواهم»فشار و بی‌اعتمادی
Hidden costهزینه در آخرین مرحلهشکست انتظار
Obstructionثبت‌نام آسان، لغو سختحبس کاربر
Roach motelخروج/حذف پنهانکنترل از دست‌رفته

Conversion محلی ممکن است بالا برود و هم‌زمان Complaint، Refund، Unsubscribe، RTO یا اعتماد افت کند. Guardrail و مرزهای Ethical UX در راهنمای طراحی اخلاقی و دارک‌پترن آمده است.

اشتباه ۱۴: اعتمادسازی با تزئین به‌جای Evidence

لوگو، Badge امنیت، شمارنده مشتری و Testimonial وقتی بدون منبع، اجازه، Scope یا تاریخ‌اند می‌توانند ضداعتماد شوند. Evidence باید نزدیک Decision و قابل بررسی باشد.

ریسک/سؤالEvidencePlacement
این شرکت کیست؟هویت، مالکیت، تماس، آدرسHeader/Footer/About/Checkout
چه چیزی می‌خرم؟Scope، قیمت، محدودیتOffer/Product
اگر مشکل شد؟Support/return/cancel/complaintپیش از تعهد
آیا ادعا واقعی است؟Method، case، source، تاریخکنار ادعا
داده‌ام چه می‌شود؟Purpose، retention، controlزمان جمع‌آوری
وضعیت تراکنش چیست؟Reference، state، reconciliationSuccess/pending/error

Trust با نبود خطا، پاسخ‌گویی، شفافیت و جبران ساخته می‌شود؛ نه فقط Seal. الگوی شواهد و Promise/Proof/Policy در راهنمای اعتماد کاربران به سایت تکمیل شده است.

اشتباه ۱۵: Performance را بعد از طراحی حل کردن

Hero video، Font متعدد، Slider، Animation، Tag و Library هرکدام هزینه شبکه، CPU و Layout دارند. Performance budget باید در Brief و Design review وجود داشته باشد.

Metric/شاهدچه می‌گوید؟نمی‌گوید
LCPنمایش عنصر بزرگ اصلیکل Task سریع است
INPپاسخ‌گویی تعامل‌هاعلت دقیق بدون trace
CLSپایداری دیداریهمه مشکلات Layout
RUMتجربه کاربران واقعیدلیل فنی به‌تنهایی
Lab/traceتشخیص تکرارپذیرتوزیع کاربران واقعی
Task metricاثر بر نتیجهRoot cause فنی

راهنمای Web Vitals معیارهای جاری LCP، INP و CLS را Field metric می‌داند، RUM اختصاصی را برای تشخیص دقیق‌تر توصیه می‌کند و Lab را جایگزین Field نمی‌داند. برای مخاطب ایرانی، P75 را با Device/Network/Template و Route واقعی ببینید.

چارچوب Outcome، بودجه عملکرد، Field/Lab و اولویت فنی در راهنمای سرعت سایت، UX و تبدیل آمده است.

اشتباه ۱۶: امتیاز Page experience را هدف نهایی گرفتن

Google درباره Page experience می‌گوید یک سیگنال واحد وجود ندارد و تمرکز بر یک یا دو Aspect کافی نیست. Core Web Vitals خوب یا امتیاز ابزار، رتبه یا Conversion را تضمین نمی‌کند؛ طراحی باید دسترسی امن، موبایل، محتوای اصلی متمایز، تبلیغ و Interstitial غیرمزاحم و تجربه کلی را هم بسنجد.

اشتباه ۱۷: فقط Happy path را طراحی کردن

Stateسؤال طراحیEvidence
Loadingکار ادامه دارد؟ چقدر؟ Cancel؟Progress/status
Empty first-useچگونه شروع کند؟Example/CTA
Empty no-resultچگونه Query/Filter را اصلاح کند؟Recovery
Error validationکدام ورودی و چگونه اصلاح؟Inline+summary
Error serviceRetry امن است؟ داده حفظ است؟Reference/owner
Offline/timeoutResume یا retry چه می‌شود؟Persist/idempotency
Permissionچرا و از چه کسی دسترسی؟Role/request path
Partial successچه بخش انجام/انجام‌نشده؟Item-level state
SuccessReference و قدم بعدی چیست؟Receipt/history

Stateها باید در Design، API contract، Analytics و Support vocabulary نام یکسان داشته باشند. «خطای نامشخص» مسئولیت تیم را به کاربر منتقل می‌کند.

اشتباه ۱۸: فارسی و RTL را فقط Text-align دیدن

رابط فارسی دائماً متن RTL را با URL، Email، شماره کارت، کد رهگیری، SKU، نسخه نرم‌افزار و عبارت انگلیسی LTR ترکیب می‌کند. بدون Bidi isolation، ترتیب رقم، پرانتز و علائم می‌تواند عوض یا مبهم شود.

دادهDirection محتملکنترل
پاراگراف فارسیRTLdir="rtl" lang="fa" در ساختار
Email/URL/codeLTRWrap با dir="ltr"
User-generated nameنامعلومdir="auto" یا bdi
عدد/مبلغترکیبیواحد، separator و reading test
Icon جهت‌داروابسته به معناMirror بر معنا، نه خودکار همه Iconها

راهنمای Bidi در W3C برای عبارت با جهت معلوم، Wrap دقیق و dir؛ و برای متن Runtime با جهت نامعلوم، dir="auto" یا bdi را توضیح می‌دهد. اسکرین‌شات فارسی سالم، جای تست داده ترکیبی و Copy/paste را نمی‌گیرد.

اشتباه ۱۹: Component سفارشی بدون قرارداد تعامل

Dropdown، Date picker، Combobox، Tabs، Modal و Toast سفارشی اغلب ظاهر خوبی دارند اما Name/Role/Value، Keyboard، Focus، Escape، Live region یا Touch behavior آن‌ها ناقص است.

ComponentContract حداقلیFailure
ModalInitial focus، trap مناسب، Escape، restoreFocus پشت Overlay
ComboboxLabel، expanded، active option، keyboardفقط Mouse
TabsSelected/controls و arrow behaviorLinkهای بی‌معنا
Toast/statusProgrammatic announcement، timeout کافیفقط Flash بصری
Date pickerText fallback و format hintتقویم اجباری غیرقابل تایپ

تا وقتی Native HTML Task را حل می‌کند، Component سفارشی هزینه تست و نگهداری اضافه دارد. Design system باید Interaction contract، State، Accessibility annotation، Example و Test را کنار Visual token نگه دارد.

اشتباه ۲۰: امنیت و حریم خصوصی را خلاف UX دانستن

امنیت ضعیف تجربه را نابود می‌کند، اما کنترل امنیتی نامتناسب نیز کاربر را قفل می‌کند. تیم Design، Product و Security باید Threat/Abuse case را با Task و Risk هم‌زمان ببینند.

نقطهUX امنضدالگو
LoginPassword manager/paste، MFA قابل بازیابیمنع Paste و CAPTCHA همه‌جا
Errorراهنمای مفید بدون افشای حساسStack trace یا Enumeration
SessionWarning/extend/save متناسبTimeout ناگهانی و از دست‌رفتن فرم
ConsentChoice هم‌وزن و purpose روشنAccept برجسته/Reject پنهان
Data collectionMinimum، purpose، retentionفیلد «شاید بعداً لازم شود»
Sensitive actionRe-auth/confirm/review بر RiskFriction یکسان برای همه

راهنمای Authentication در OWASP کنترل قدرت گذرواژه، بازیابی امن، TLS، Re-authentication رویدادهای حساس، پاسخ خطا، محافظت از حمله خودکار، MFA و Logging را در یک چرخه می‌بیند. نسخه اجرا باید با Risk و معماری سامانه بررسی امنیتی شود.

اشتباه ۲۱: Validation سمت کاربر را کنترل امنیتی دانستن

Client-side validation بازخورد سریع UX می‌دهد، اما قابل دورزدن است. Server باید مستقل Validation، Authorization و Business rule را اعمال کند. OWASP Input Validation Allowlist و Validation زودهنگام در جریان داده را توصیه می‌کند؛ Sanitize یا Encoding جای Validation و Contextual output protection نیست.

اشتباه ۲۲: اندازه‌گیری را به Pageview و Click محدود کردن

سطحMetricGuardrail
DiscoverFindability/first clickWrong path
UnderstandComprehension/confidenceMisinterpretation
CompleteTask success/time/errorAssisted completion
BusinessQualified lead/order keptRefund/RTO/complaint
AccessibilityBlocker by flow/templateRegression
ReliabilityError/latency/retryDuplicate/lost transaction

Click روی CTA فقط Intent اولیه را نشان می‌دهد. اگر Form error، Lead نامرتبط، Cancel یا پرداخت تکراری را نبینید، طراحی ممکن است در Dashboard موفق و در واقعیت شکست‌خورده باشد.

Event dictionary بسازید

فیلدمثال
Eventform_submit_succeeded
Triggerپاسخ موفق Server، نه Click button
Propertiesform_id، step، error_count، experiment
PII policyعدم ارسال نام/موبایل/متن آزاد
OwnerProduct analytics
ReconciliationLead ID یا Order backend با روش امن

اشتباه ۲۳: بازطراحی همه‌چیز بدون Baseline

Redesign بزرگ هم‌زمان Message، IA، UI، URL، Performance، Tracking و Technology را تغییر می‌دهد. اگر همه متغیرها یک‌جا عوض شوند، علت نتیجه و مسیر Rollback معلوم نیست.

قبل از Rolloutخروجی
InventoryPage/template/component/state
BaselineTask، business، accessibility، performance
DependencyCMS/API/auth/payment/analytics
PilotFlow/segment نماینده
AcceptanceFunctional+content+AT+performance
MigrationURL/redirect/canonical/tracking
RollbackTrigger، owner، data compatibility

اشتباه ۲۴: تحویل Design بدون State، Content و Acceptance

فایل Figma فقط تصویر State منتخب است. Hand-off باید Behavior و مرزها را مشخص کند:

  • Responsive rule، min/max و overflow؛
  • Default/hover/focus/active/disabled/loading/error/success؛
  • Content constraint، truncation، empty و localization؛
  • Keyboard، Screen reader و motion/reduced-motion؛
  • API state، timeout، retry و duplicate prevention؛
  • Analytics event و PII rule؛
  • Acceptance test با نمونه داده فارسی/لاتین و Extremes.

اشتباه ۲۵: QA را فقط تطبیق Pixel دانستن

QA laneنمونه تست
FunctionalSubmit/retry/back/deep-link
Contentواقعی، طولانی، خالی، منقضی
ResponsiveViewport/orientation/zoom/keyboard
AccessibilityKeyboard/focus/name-role-value/status
LocalizationRTL/Bidi/date/number/currency
PerformanceBudget/trace/RUM guardrail
Security/privacypermission/session/PII/log
Analyticsevent once، property و consent
Resiliencetimeout/offline/partial/API error

از سه نوع Evidence استفاده کنید

نوعمنبعقوتمحدودیت
Behavioral quantitativeEvent، funnel، search، RUMScale/patternچرایی را کامل نمی‌گوید
Behavioral qualitativeUsability، field observationFailure و mental modelنمونه کوچک
AttitudinalInterview، survey، supportنیاز/نگرانی/زبانگفته با رفتار فرق دارد
TechnicalLog، trace، audit، accessibilityRoot cause سیستمOutcome را تنها نمی‌سنجد

Session replay و Heatmap نیز Sample و instrumentation هستند، نه ذهن‌خوانی. Masking، Consent، Retention، access و حذف داده حساس را پیش از ضبط طراحی کنید.

تست کاربردپذیری را با Task و Success criterion بسازید

«این صفحه را دوست دارید؟» Task test نیست. سناریو باید Goal بدهد، نه مسیر. رفتار، Success، Critical error، Time/effort، Confidence و Quote را ثبت کنید. روش Moderated/unmoderated، Sample، Facilitation و تحلیل در راهنمای تست کاربردپذیری آمده است.

فیلد Testنمونه
Scenarioبرای تحویل هفته آینده یک محصول مناسب پیدا کنید
SuccessVariant/price/promise درست انتخاب و توضیح داده شود
Critical errorانتخاب کالای ناموجود یا قیمت اشتباه
Observationمسیر، backtrack، hesitation، error
Probeپس از اقدام: انتظار داشتید چه شود؟
Severitytask blocked/assisted/minor

سه سناریوی ایرانی

۱. شرکت B2B با Homepage زیبا و پیام نامعلوم

Hero می‌گوید «تحول هوشمند برای آینده»، پنج CTA دارد و نام سه محصول داخلی را نمایش می‌دهد. مدیر مالی نمی‌فهمد محصول چه مسئله‌ای را برای چه اندازه شرکت حل می‌کند. اصلاح: مصاحبه با Leadهای برده/باخته، Message براساس Job و Constraint، یک Primary path به Demo، Secondary path به Guide و Case واقعی با Method. معیار: Comprehension و Qualified demo، نه Click خام.

۲. فروشگاه پوشاک در Checkout موبایل

انتخاب استان، شهر و آدرس با Keyboard پوشانده می‌شود؛ Error قرمز بدون متن است؛ بازگشت از درگاه سبد را خالی نشان می‌دهد. اصلاح: Input mode/label، Error summary+inline، Sticky safe، ذخیره state، Payment pending/reconciliation و جلوگیری از Double submit. معیار: Completion، field error، duplicate payment، RTO/kept order.

۳. سامانه نوبت با داده فارسی و LTR

کد پیگیری و شماره تماس داخل متن RTL به‌هم می‌ریزند؛ Time-out پاسخ‌ها را پاک و Status فقط با Toast دیداری اعلام می‌شود. اصلاح: Bidi markup، Timeout warning/extend، Draft امن، Status message programmatic و Receipt قابل بازیابی. معیار: Task success با Keyboard/Screen reader و کاهش تماس «نوبت ثبت شد؟».

برنامه ۳۰، ۶۰ و ۹۰ روزه

بازهخروجیAcceptance
روز ۱–۳۰Top task، journey/state inventory، baseline، severity backlogEvidence و owner برای Top ۱۰
روز ۳۱–۶۰Prototype/Pilot برای پیام، ناوبری، فرم و blockerهاTask/AT/functional test پاس
روز ۶۱–۹۰Rollout تدریجی، design-system contract، monitoring/runbookOutcome بهتر و guardrail سالم

روزهای ۱ تا ۳۰: مشاهده و Baseline

  • سه تا پنج Top task و Flow کامل را تعریف کنید.
  • Analytics، Support، Error log، Accessibility و RUM را مثلث کنید.
  • با ۵ تا ۸ کاربر نماینده برای هر موج، Test کیفی آغاز کنید؛ عدد نسخه ثابت نیست.
  • Stateهای Happy/error/empty/offline/permission را Inventory کنید.
  • مسائل Critical و High را با Owner و Acceptance جدا کنید.

روزهای ۳۱ تا ۶۰: اصلاح کوچک و قابل‌سنجش

  • Message و Primary path را روی یک Page/Segment Pilot کنید.
  • Accessibility blocker و از دست‌رفتن داده را پیش از Polish رفع کنید.
  • Form و Error contract را با داده ایران و Failure واقعی تست کنید.
  • Performance budget و Component state را وارد Definition of Done کنید.
  • Event dictionary و Guardrail را پیش از انتشار اصلاح کنید.

روزهای ۶۱ تا ۹۰: مقیاس و جلوگیری از بازگشت خطا

  • Patternهای تأییدشده را به Design system منتقل کنید.
  • Automated check را در CI و Manual regression را در Release gate بگذارید.
  • Template/Cohort را مرحله‌ای Rollout و Drift را پایش کنید.
  • Support/complaint و Business outcome را با Task metric Reconcile کنید.
  • Owner، cadence و runbook نگهداری محتوا/Component را ثبت کنید.

چک‌لیست ممیزی اشتباهات طراحی سایت

  • Top task، کاربر، Context و Outcome روشن است.
  • Message مخاطب، مسئله، خروجی، Scope، Evidence و Next step دارد.
  • سلسله‌مراتب دیداری با سلسله‌مراتب تصمیم همسو است.
  • Navigation، Search، Filter و Deep link Recovery دارند.
  • Mobile با Touch، Keyboard، Zoom، Network و Sticky element تست شده است.
  • WCAG ۲.۲، Keyboard، Focus، Screen reader و Human evaluation در Scope‌اند.
  • Form فقط داده لازم، Label دائمی، Hint، Error و حفظ داده دارد.
  • Loading، Empty، Error، Offline، Permission، Partial و Success طراحی شده‌اند.
  • RTL/Bidi، رقم، Email، URL، مبلغ و User-generated text تست شده‌اند.
  • Trust evidence واقعی، تاریخ‌دار و نزدیک تصمیم است.
  • Consent، Privacy، Authentication و Security با Risk هم‌ترازند.
  • RUM، Lab، Task success، Business outcome و Guardrail تعریف شده‌اند.
  • Hand-off شامل State، Content constraint، Accessibility و Acceptance است.
  • Redesign دارای Baseline، Pilot، Release gate و Rollback است.
  • هر مشکل Owner، Severity، Evidence و Retest دارد.

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

۱. بزرگ‌ترین اشتباه طراحی سایت چیست؟

طراحی بدون Task و Outcome روشن. این خطا باعث می‌شود Message، Navigation، Content و Metric بر سلیقه یا درخواست داخلی ساخته شوند. در هر سایت، بزرگ‌ترین خطای اجرایی همان مانعی است که Critical task یا حق کاربر را بیشتر مسدود می‌کند.

۲. آیا اسلایدر صفحه اصلی همیشه بد است؟

خیر؛ حکم مطلق نداریم. اگر چند پیام را پنهان کند، کنترل Keyboard/Touch ناقص باشد، حرکت مزاحم بسازد یا Performance را خراب کند، استفاده‌اش باید رد شود. هدف، Evidence و Alternative ساده‌تر را با Task test مقایسه کنید.

۳. چند CTA در یک صفحه مناسب است؟

عدد ثابت وجود ندارد. Primary action باید مشخص باشد و Secondary action با مرحله تصمیم کاربر تناسب داشته باشد. تکرار همان CTA در صفحه طولانی می‌تواند مفید باشد؛ چند Action متضاد و هم‌وزن معمولاً Decision را مبهم می‌کنند.

۴. آیا ابزار Accessibility برای تست کافی است؟

خیر. ابزار بخشی از Failureهای ماشینی را می‌یابد؛ Keyboard، Screen reader، معنی Alt/Label، Focus، جریان و تجربه واقعی به ارزیابی انسانی و تست با کاربران دارای معلولیت نیاز دارند.

۵. اول کدام مشکل طراحی را اصلاح کنیم؟

ابتدا Incident، از دست‌رفتن پول/داده، Security/Privacy و Accessibility blocker؛ سپس مشکلات Critical task با Severity، Frequency و Evidence بالا. Cosmetic inconsistency بدون اثر Task معمولاً پس از این‌هاست، مگر اینکه بخشی از الگوی بزرگ‌تر باشد.

جمع‌بندی

اشتباه طراحی سایت را با «دوست ندارم» پیدا نمی‌کنیم. باید Task، Context و State را ببینیم؛ Failure را با رفتار، داده، تست و Log اثبات کنیم؛ کوچک‌ترین اصلاح را بسازیم؛ و Outcome را همراه Guardrail دوباره بسنجیم.

سایت خوب فقط در Screenshot خوب نیست. در موبایل و Keyboard، با شبکه ناپایدار و داده فارسی، هنگام خطا و بازگشت از درگاه، برای کاربر دارای معلولیت و پس از ماه‌ها نگهداری نیز باید قابل فهم، قابل استفاده، قابل اعتماد و قابل بازیابی بماند.