چرا به تست نیاز داریم؟

اوایل شروع کرده بودم به برنامه نویسی نمیدونستم تست چیه، بعدها که پروژه هارو از گیت کلون میکردم با تست آشنا شدم و با کار تو یه استارت آپ به اهمیت تست پی بردم، اون روزا کسی نبود به من بگه چرا باید برای کدها تست بنویسم، یا اصلاْ چرا توسعه دهندها این همه وقت صرف تست نوشتن میکنن، چرا یه دفعه اجراش نمیکنن که مطمئن بشن درست کار میکنه، گفتم بد نیست برای اولین مطلبم از تجربه خودم در این مورد بگم و نظر شمارم بودنم.

تو این سناریو یه ایده به ذهن کار آفرین میرسه و میخواد اجراش کنه، همه جا شنیده باید محصول بصورت MVP بزنه و سریع وارد بازار کنه چون تموم دنیا منظر محصولش هستند. قهرمان داستان ما شروع میکنه به کد زدن، بعد چند روز کد زدن احساس میکنه داره کند پیش میره، با خودش میگیه چیکار کنم بتونم سریع تر محصول ارائه بدم؟ و ناگهان به ذهنش میرسه بیخیال تست نوشتن بشم اینجوری CI هم حذف کنم اتفاق خاصی نمیفته، قهرمان داستان ما طی مدت کوتاهی پلتفرم آماده میکنه و به بازار ارائه میده، طبق معمول یه سری باگ وجود داره که خب، باگ نمک برنامه نویسیه :) کار بصورت بگیر نگیر ادامه پیدا میکنه و خورده سودی برای قهرمان داره، هر فیچری که اضافه میکنه چندتا باگ ناشناخته به سیستم اضافه میکنه و بعد ریلیز بعضی از کاربرهای ناراضی گزارش میکنن، اوضاع وقتی بدتر میشه که تیم دولوپ بزرگتر میشه، دولوپر جدید با سیستم آشنایی نداره و چیز عجیبی نیست که گاهی اشتباه کد بزنه، ایشون استخدام شده بود برای توسعه سریعتر پلتفرم ولی تو کار دولوپر اول اختلال ایجاد میکنه، عملاْ وقت دولوپر اول صرف خوندن کدهای دولوپر دوم میشه تا یه وقت اشتباه نزنه و...

خب میبینیم هرچی سیستم بزرگتر میشه پرفورمنس قهرمان ما کند و بی کیفیت تر میشه، این قهرمان ممکنه براش سوالاتی پیش بیاد، اون چیزایی که خیلی شنیدم مطرح میکنم:

- تست نوشتن خیلی وقت گیره.

+ اگه بار اولتونه تست مینویسید، صد البته مثل هرکار جدیدی که شروع میکنید توش کند هستید ولی بعد مدت کوتاهی این کار بیشتر از یک دقیقه برای هر ماژول طول نمیکشه.

ـ من کدهام قبل کامیت تست میکنم، نیازی به تست ندارم.

+ ممکنه شما خسته باشی، زیر فشار کار باشی، مست یا... بلخره باگ اجتناب ناپدیزه، اگر هم سینتکس باگ نداشته باشه گاهی ماژول جدید حالت خاصی تو سیستم ایجاد میکنه که شما بهش فکر نکرده بودید.

- تیم من کوچیکه به این چیزا نیاز نداره.

+ آیا قرار نیست تیمتون هیچوقت بزرگ بشه؟


پی نوشت یک: این نوشته اولم بودم، میدونم میشد بهتر نوشت، ولی خب قرار نبود یه پست عالی باشه، قرار بود نوشتن شروع کنم و بعد کم کم بهترش کنم، اگه انتقادی هست خوشحال میشم برام کامنت کنید.