کیفیت نرم افزار و 7 افسانه تست اتوماتیک

– مدیر : “چرا این نرم افزار اینقدر باگ داره ؟ این چه وضع کار کردنه؟” – برنامه نویس: “این ماهیت نرم افزاره، نمیشه کاریش کرد، فقط اگر ما بشینیم و تست بنویسیم باگ نخواهیم داشت” همیشه آرزوی ما توسعه دهندگان نرم افزار این است که محصول تولیدی ما دقیقا مثل یک هواپیما باشه، یک داشبورد داشته باشیم با کلی آلارم و کنتور … . و دقیقا به ما بگه کاپیتان موتور سمت چپ از کار افتاده یا کاپیتان سیستم سوخت رسانی با مشکل مواجه شده و ما هم سریع عکس العمل نشان بدهیم. برای رسیدن به چنین منظوری ما نیاز...
Continue reading...

تست محصول در Agile

همیشه به خاطر می آورم , زمانی که برنامه نویس بودم و یا به عنوان رهبر تیم توسعه نرم افزار فعالیت می کردم با مقوله تست برنامه مشکل داشتیم . نرم افزار که توسعه می دادیم یا اصلا تست نمی شد و یا اگر هم می شد به صورت دستی توسط خود برنامه نویس ها یا یک سری افراد متفرقه مانند اسپانسر پروژه تست می گردید که چندان روش با اعتباری نبود. معمولا برنامه ای که پر از باگ باشد مستعد از دست دادن مشتری هست و از دست دادن مشتری مصادف با عصبانیت مدیران شرکت خواهد شد . برنامه...
Continue reading...

آیا TDD در عمل امکان پذیر می باشد؟

آیا TDD در عمل امکان پذیر می باشد ؟ این سوالی بود که یکی از عزیزان از بنده پرسیده بود . ایشون فرموده بودند : “شما که می گید اول تست بنویسیم و بعد کد نویسی , مگر چنین چیزی ممکن است ؟ مگر برای کد نانوشته می شود تست نوشت؟ ” و ایشون TDD را به یک افسانه تشبیه کرده بودند . من همین سوال را از شما می پرسم , آیا در عمل و یا اصطلاحا در Real World امکان دارد که TDD عملی شود ؟ در مقاله قبلی گفته شد که : TDD عبارتست از ترکیب TFD...
Continue reading...

کد تمیز بهتر از کد کثیف

قبلا پستی در مورد نحوه نوشتن کدهای تمیز داشته ام ولی هرچه قدر ما به صورت یک پست خلاصه بنویسیم ثواب یک کتاب جامعه در این مورد را نخواهد داد . بدلیل اهمیت این قضیه بر این شدم که کتاب خوبی در این مورد معرفی نمایم . برادر گرامی Robert Martin کتاب بسیار جالبی با عنوان Clean Code: A Handbook of Agile Software Craftsmanship دارد که خواندن آن خالی از لطف نمی باشد . در این کتاب خواهید خواند : چگونه کد خوب را از کد بد بشناسیم چگونه کدهای خوب بنویسسیم و چگونه کدهای بد را به خوب تبدیل...
Continue reading...

تست نرم‌افزار در Agile Software Development

همان‌طور که می‌دانید Unit Testing به معنای تست کردن قسمت کوچکی از برنامه است که ماجول یا یونیت برنامه نام دارد و می‌تواند در پیدا کردن اشکالات برنامه بسیار مؤثر واقع شود، اما در حقیقت نوشتن یک Unit Test بیشتر عملی است که در قسمت طراحی نرم‌افزار به کار می‌رود تا در قسمت Verification یا اشکال‌یابی، و می‌تواند نظرات کاربران را بگیرد.  به این معنا که وقتی کاربری در مورد سیستم نظر داد که مشکلی در Unit وجود دارد و آن مشکل در Unit Testing حل شد، در قسمت‌های بعدی نمی‌توان از او برای آن قسمت از برنامه نظرخواهی کرد. علاوه بر...
Continue reading...