پنج دلیل اصلی (اشتباه) که شما تست کننده نرمافزار ندارید
دلیل اشتباه اول: باگها توسط برنامهنویسان تنبل ایجاد میشوند
دید اشتباه این است که "اگر تستکننده نرمافزار استخدام کنیم" آنگاه "برنامهنویسها، تنبل میشوند و کدهای باگدار تولید میکنند. با استخدام نکردن تستکننده نرمافزار، برنامهنویسان مجبور میشوند که از همان اول کد خوب و بیباگ ایجاد کنند"
واقعیت این است که باگها، به این خاطر ایجاد میشوند که برنامهنویس آنها در کد خودش ندیده است و برای دیدن باگها در اغلب اوقات به یک جفت چشم دیگر هم نیاز هست. جوئل به خاطراتی از خودش اشاره میکند که زمانی که برنامهنویسی میکرده، از عادتهای خودش برای تست نرمافزارها استفاده میکرده و مثلاً خیلی با Mouse کار میکرده است. بخش تست اما بیشتر با keyboard کار میکردند. نتیجه این شده که بخشهای از برنامه وقتی با keyboard با آنها کار میشده اصلاً کار نمیکرده است!
دلیل اشتباه دوم. برنامه من تحت وب است و هر باگی را در چند ثانیه میتوانم حل کنم
این اشاره درستی هست که کار رفع باگها (bug fix) در نرمافزارهای تحت وب سریعتر از نرمافزارهای دسکتاپی است اما باید به نکات جانبی رفع باگ نیز توجه داشت. چه اتفاقی میافتد اگر رفع باگی که انجام دادید باعث ایجاد چند باگ دیگر شود؟ اگر به دقت به روال رفع باگ در برنامههای تحت وب نگاه کنید، شاید به این نتیجه برسید که این کار خیلی پرهزینهتر از آن است که در ابتدا تصور میشود و این تازه صرفنظر از تاثیر بدی است که بر دید مشتریان میتواند داشته باشد.
به عنوان یک مثال که اخیراً اتفاق افتاده، میشود به ماجرای تغییر سایت بانک سامان هم اشاره کرد. هر چند این مساله رفع باگ نبوده، اما نشان میدهد تغییر نرمافزارهای تحت وب به همان سادگی که تصور میشود نیست. برای آشنایی با مشکل پیشآمده در بانک سامان این نوشته را بخوانید.

دلیل اشتباه سوم: مشتریان، نرمافزار را برای من تست خواهند کرد
جوئل در توضیح اشتباه بودن این دلیل، متدولوژی مسخره netscape برای تست نرمافزارهایش (که به قول جوئل به شکل ماورا الطبیعی به اعتبار شرکت صدمه وارد کرد) را توضیح میدهد:
- وقتی برنامهنویسان، هنوز نیمی از کار را انجام دادند، نرمافزار را بدون تست در وب منتشر کن
- وقتی برنامهنویسان میگویند که کار تمام شده، نرمافزار را بدون تست در وب منتشر کن
- این کار را شش هفت بار تکرار کن
- یکی از نسخههایی که با این روش منتشر کردی را "نسخه نهایی" نامگذاری کن
- هر دفعه که به یک باگ که باعث شرمساری میشود در سایت cnet اشاره شد، نسخههای 0.1,0.2,0.3 را منتشر کن!
نتیجه این روش این شد که مشتریان بسیار زیادی در دنیا، همیشه و همیشه با نرمافزارهای باگدار netscape کار کردند و این باعث شد حتی وقتی که نسخه نسبتاً بیباگی از نرمافزار release میشد، باز هم دید عمومی به آن به شکل یک نرمافزار باگدار باشد.
مشکل بدتر در این مثال این بود که کل ایده اینکه باگها توسط مشتریان کشف و اعلام شوند، برای این بود که بعد از اعلام مشتری، شرکت بتواند باگها را رفع کند. اما متاسفانه نه netscape و نه هیچ شرکتی در دنیا، امکانات و نیروی انسانی و توان فنی برای بررسی اولویتها و رفع باگهای اعلامی بیش از 2 میلیون مشتری را نداشت. در نتیجه باگها و ایرادات مهم در میان انبوه درخواستهای رسیده دفن میشدند.
احتمالاً میتوانید تصور کنید که چه صدمهای به اعتبار شرکت زده شد و امروز هم netscape تبدیل شده به مثالی برای درسها و عبرتهای این چنینی.
دلیل اشتباه چهارم: کسانی که شایستگی لازم برای تست کردن نرمافزار را دارند نمیخواهند تست کننده نرمافزار باشند
این یک واقعیت هست که پیدا کردن تستکننده خوب نرمافزار مثل برنامهنویس خوب مشکل است. جوئل اشاره میکند که در شرکت Juno که کار میکرده، یکی از تستکنندههای نرمافزار به تنهایی سه برابر مجموع همه باگهایی که 4 تست کننده دیگر نرمافزار گزارش کرده بودند را کشف و گزارش کرده.
جوئل اشاره میکند که اغلب تستکنندههای نرمافزار خوب بعد از مدتی حوصلهشان از کار روتین تست نرمافزار به صورت روزانه سر میرود. این مشکلی هست که وجود دارد و باید آن را پذیرفت. پیشنهادهای جوئل برای این مساله اینها هستند:
- تست نرمافزار را به عنوان یک ارتقاء شغلی از بخش پشتیبانی مشتریان در نظر بگیرید
- به تستکنندههای خوب و باهوش اجازه بدهید که تا حدی برنامهنویسی کار کنند و unit test با استفاده از ابزارهای برنامهنویسی ایجاد کنند. این کار خیلی جذابتر از تست دوباره و دوباره و دوباره و دوباره یک پنجره دیالوگ در نرمافزار هست.
- بپذیرید که بعد از مدتی تستکنندههای خوب شما را ترک خواهند کرد. همیشه در پی استخدام تستکننده باشید و روند استخدام آنها را به خاطر اینکه موقتاً ظرفیت شما تکمیل شده را متوقف نکنید.
- به صورت موقت استخدام کنید. اگر به عنوان مثال 10 نفر را به صورت موقت و چند روزه برای تست نرمافزاری استخدام کنید، خواهید دید که دهها باگ پیدا میشود. بعضی از این افراد موقت، ممکن است توانمندیهای لازم برای تبدیل شدن به یک تستکننده نرمافزار را داشته باشند که در این صورت میتوانید آنها را به صورت تمام وقت استخدام کنید.
دلیل اشتباه پنجم: من توان مالی برای استخدام تستکننده نرمافزار را ندارم!
این احمقانهترین دلیل برای استخدام نکردن تستکننده نرمافزار است. مهم نیست که چقدر پیدا کردن تستکننده نرمافزار سخت باشد، به هر حال آنها ارزانتر از برنامهنویسها هستند. خیلی ارزانتر.
اگر شما از تستکننده نرمافزار استفاده نکنید، برنامهنویس شما باید کار تست را انجام دهد و علاوه بر هزینهای که این کار به شما تحمیل میکند، باید صبر کنید و منتظر لحظهای باشید که برنامهنویس ارشد شما از اینکه بارها به وی گفته شده که "چند هفته بیشتر روی تست نرمافزار وقت بگذار قبل از اینکه منتشرش کنی" خسته میشود و میرود تا در شرکتی حرفهایتر کار کند.
شما میتوانید 3 تستکننده نرمافزار را برای یک سال استخدام کنید و هنوز ارزانتر از هزینه جایگزینی یک برنامهنویس ارشد هست.