🐊 چرا تست نمی‌کنیم؟ آنچه در کتاب‌های آموزش تست گفته نمی‌شود!

Post Image

🐊 چرا تست نمی‌کنیم؟ آنچه در کتاب‌های آموزش تست گفته نمی‌شود!


شاید هر کسی که توسعه‌ نرم‌افزار رو به عنوان شغلش عنوان می‌کنه، در مورد تست‌نویسی شنیده باشه، و خونده باشه، تمریناتی رو نوشته باشه و حتی بارها با خودش تصمیم یا آرزو کرده باشه که دیگه تست خواهم نوشت یا خدا کنه شرکتمون به تست‌نویسی رو بیاره! یا این کد رو بنویسیم، دیگه از کد بعدی فقط تست، تست، تست...


ولی در عمل چی می‌شه؟

عهد کردم که دگر می نخورم در همه عمر


بجز از امشب و فردا شب و شبهای دگر


من سال‌ها چه در قالب تدریس یا مشاوره یا تک‌لید یا توسعه‌دهنده تلاش کردم تست رو توی تیم‌های نرم‌افزاری شرکت‌های مختلف جا بندازم... اون سال‌هایی مو داشتم و جوان بودم، فکر می‌کردم موضوع اصلی بلد نبودنه، و سعی می‌کردم با آموزش و مثال و... موضوع رو پیش ببرم... بعدتر که یه خورده بیشتر تجربه کسب کردم و موهام شروع کردن به کم شدن، یاد گرفتم که:


✨ «تست، مقدم بر تکنیک، یه فرهنگه...»


این رو دقیقا از زمانیکه ALM رو شروع به تدریس کردم هم به عنوان اولین جمله هر بار صحبت در موردش ذکر کردم...


یعنی چی که تست یک فرهنگه؟

با مثال می‌گم: تا حالا شده یه مکانیک یا لوله‌کش یا برقکار، کاری رو براتون انجام بدن ولی بعد از رفتنشون ببینید مشکل حل نشده؟ تا حالا دیدید بعضی از همین مشاغل، قبل از اینکه کار رو بهتون تحویل بدن ده جور وارسی و تستش می‌کنن؟ (که احتمالا از این دست استادکارها کم دیدیم و همیشه از دیگران در مورد چنین افرادی پرس‌وجو می‌کنیم)


تا حالا چقدر در مورد ساختمان، خودرو، پروژه سدسازی! ریلی، جاده و... دیدیم و شنیدیم و خوندیم که بدون تست کامل و بر اساس اینکه ظاهر اون چیز به گمانشون درست بوده، رونمایی یا عرضه کردن و بعد داد همه دراومده یا حتی مصیبت به وجود آورده؟


نرم‌افزار هم فراتر از این‌ها نیست! ما هم بخشی از همین جامعه هستیم... بنا به «هر» دلیلی، امروز ما ایرانی‌ها، کمتر به کنترل کیفیت بها می‌دیم... چون برامون پیش‌فرض شده که عقوبتی نداره که... فوقش باگ پیدا می‌شه میریم حلش می‌کنیم... همین نگاه همه جا هست و فقط به خودمون نگیریم. مثلا فوقش این سیاست مالی در سطح کشور موجب دلار ۹۴ هزار تومنی می‌شه! فوقش این پراید کلی آدم رو به کشتن می‌ده... اساسا در فرهنگ ما بازبینی و تست کردن طرح، تست کردن اجرا، خالی از اهمیته.


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


اولین باری که جرقه «فرهنگ» توی ذهنم شکل گرفت، سال ۲۰۰۹ بود که برای یک دوره آموزشی و امتحاناتش مدتی رفتم تایوان، روز اول، قبل از شروع دوره‌ها یه بازدید از فرایند توسعه توی بخش‌های مختلف کارخونه دیدیم، یعنی از تیم‌های نرم‌افزار و فرم‌ور تا خط تولید محصول و شگفت‌انگیزترینش برای من دقت و وسواس روی تست بود... با چیزی که ما در ایران انجام می‌دادیم زمین تا آسمون فرق داشت، کد رو از صد جور تست رد می‌کردن، تازه وقتی نرم‌افزار روی سخت‌افزار پیاده می‌شد، «هر قطعه» دونه به دونه، ساعت‌ها در شرایط مختلف تست می‌شد... و نهایتا فرایند tracing به طرز تحسین‌برانگیزی انجام می‌شد. اون مدت حضور بین جماعت تایوانی که خیلی تکیه داشتن چینی نیستن، به من فهموند این دقت فراتر از اون شرکت خاصه. بیشتر چیزیه که در فرهنگ مردم تایوان نهادینه شده...


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


*️⃣ این‌هایی که عرض کردم به معنی صفر و صد نیست، به معنی برتری نژادی نیست، بین همه ملیت‌ها آدم دقیق و آدم غیردقیق وجود داره، صحبتم سر شاخص بودن و زیاد دیده شدن یک سری عادات و فرهنگ‌ها بین ملیت‌های متفاوته و «تجربه شخصی من است و کاملا محتمل به خطا».


این‌ها رو گفتم تا به عنوان بخش نخست چند پستی که در مورد تست خواهم نوشت، متذکر شم، عادات و فرهنگی ما در زندگی روزمره، در جامعه خیلی روی رفتارهای کاری و تخصصی ما اثرگذاره. من تلاش خواهم کرد پیشنهاداتم رو قبل از اینکه در مورد Fact و Theory نویسی و E2E و Cucumber در BDD بنویسم، در مورد چگونگی ایجاد فرهنگ و عادت‌سازی تست بنویسم... اگر با این رویه موافق بودید: ⚙️ و مثل همیشه از نظرات و پیشنهاداتتون یاد می‌گیرم 😊


عکس هم مربوط به سال ۲۰۰۹ و در میان تایوانی‌هاست...