۱۰۰۰ خطا، یک Google Sheet و پنج ساعتی که هرگز پس نخواهم گرفت
هر باگی داستانی دارد. بیشتر آنها با این جمله شروع میشوند: «روی سیستم من که کار میکند.»
ما در حال تست قابلیت وارد کردن دادهها (data import) برای یک شرکت تولید لید (lead generation) بودیم. این قابلیت ساده به نظر میرسید. روی دکمه وارد کردن کلیک میکنید، یک فایل اکسل آپلود میکنید و سیستم مخاطبین را بارگذاری میکند. همه تصور میکردند که کار میکند.
این تصور، یک تله است.
تستکنندهها وجود دارند تا آن تصور را از بین ببرند. «مسیر خوشبینانه» (happy path) همیشه به شما دروغ میگوید.
اگر از یک فایل Excel تمیز استفاده میکردیم، فرآیند وارد کردن دادهها با موفقیت انجام میشد. میتوانستیم به ناهار برویم. میتوانستیم قابلیت را عرضه کنیم. اما یک مشتری، آن باگ را یک صبح دوشنبه در محیط عملیاتی (production) پیدا میکرد.
مشکل یک Google Sheet بود.
کاربران واقعی از فایلهای Excel تمیز استفاده نمیکنند. آنها از Google Sheetهای نامنظم استفاده میکنند. آنها انتظار دارند سیستمها آشفتگی آنها را مدیریت کنند.
وقتی دادههای Google Sheet را آپلود کردیم، سیستم از کار افتاد. بیش از ۱۰۰۰ خطا دیدیم. صفحه پر از خطا شد. همان دکمه و همان نوع داده، فقط به این دلیل که فرمت منبع تغییر کرده بود، باعث فروپاشی کامل سیستم شد.
برای تست بیشتر، دوباره به سراغ Excel رفتیم. ترکیبی از ردیفهای معتبر و نامعتبر را امتحان کردیم. سیستم به خوبی از پس آن برآمد؛ ردیفهای خراب را نادیده گرفت و به کار خود ادامه داد.
سپس آشفتگی دنیای واقعی را امتحان کردیم. یک فایل حجیم شامل صدها ردیف را آپلود کردیم. بیشتر آنها زباله بودند و فقط تعداد کمی درست بودند.
سیستم کاملاً از کار افتاد. منطق اعتبارسنجی (validation logic) برای چند ردیف خراب کار میکرد، اما زیر کوهی از دادههای بد از پا درآمد.
پنج ساعت را صرف پیدا کردن علت اصلی (root cause) کردیم. به صفحهها خیره شدیم، تستها را دوباره اجرا کردیم و فایلها، مرورگر و حتی قهوه را مقصر دانستیم.
آن پنج ساعت بسیار ارزان تمام شد. جایگزین آن، از دست رفتن وقت مشتری در یک بعدازظهر و از دست رفتن اعتماد او به محصول ما بود. شما هزینه باگها در مرحله تست را با «زمان» میپردازید، اما هزینه باگها در محیط عملیاتی را با «مشتریان» پرداخت میکنید.
من هر بار همان پنج ساعت را انتخاب میکنم.
یک تستکننده خوب نمیپرسد که آیا یک قابلیت کار میکند یا نه؛ بلکه میپرسد چگونه میتوان آن را از کار انداخت.
مثل یک توسعهدهنده فکر کردن را متوقف کنید. شروع کنید به فکر کردن مثل این افراد:
- کاربر تنبلی که فرمت فایل اشتباه را آپلود میکند.
- کاربر پرآشوبی با سلولهای ادغامشده و ردیفهای خالی.
- کاربر حجمی که به جای ۱۰ رکورد تمیز، ۴۰۰۰ رکورد کثیف دارد.
- دردسرسازی که دقیقاً همان کاری را انجام میدهد که نباید انجام دهد.
نرمافزار با ورودیهایی از کار میافتد که انتظارشان را نداشتید.
«سادهترین» قابلیتها اغلب خطرناکترین هستند. دکمه وارد کردن، کادر جستجو و فرم تماس بیخطر به نظر میرسند، اما نیستند.
اگر یک قابلیت از مسیر خوشبینانه عبور کرد، متوقف نشوید. همان کسی باشید که میپرسد: «اگر بدترین فایل قابل تصور را آپلود کنم چه میشود؟»
سپس بروید و انجامش دهید.
Optional learning community: https://t.me/GyaanSetuAi
