نقشه راه مهندس تست نرم افزار
سلام. خیلی خوش اومدین! بهتون تبریک میگم! چون وقتی این پست رو میخونید یعنی یا تصمیم گرفتین وارد حوزه تست نرم افزار بشید یا اینکه میخواین دانش خودتون رو در این زمینه گسترش بدین! در هر دو حالت جای درستی اومدین. قراره کلی چیز اینجا با هم یاد بگیریم.
تو این پست میخوام مهارت های لازم در پروژه های واقعی که برای تبدیل شدن به مهندس تست نرم افزار (منوآل) نیاز دارید رو بهتون توضیح بدم. وقتی بدونین چیا رو باید بلد باشید بقیه ش میشه سرچ و همت خودتون و تمرین و تکرار. تمام تلاشم رو هم دارم میکنم که خود اتومیشن کمپ هم بتونه رفرنس خوبی برای یادگیری باشه. در آینده پست مشابهی هم برای اتومیشن ایجاد می کنم.
مرحله بعدی خوندن این داکیومنت، داشتن یه برنامه هدفمند و تلاش جدی برای تحقق اون هست. برای رسیدن به نتیجه باید:
- گپ ها رو آنالیز کنین یعنی ببینین چیا رو بلدین و چیا رو باید یاد بگیرین.
- لیستی از ریسورس هایی که برای یادگیری هر موضوع و بولت پونیت لازم دارین تهیه کنین
- یه اکشن پلن برای خودتون ایجاد کنین به همراه ددلاین برای هر موضوع. برای تکمیل هر قسمت هم یه سری تمرین پیدا یا برای خودتون تعریف کنین و اون بشه Expected result از هر قسمت!
- باید این مسیر رو مثل یه پروژه ببینین. یه رودمپ اصلی که خرد شده به تسک های ریز و اسپرینت های دو هفته ای! یه برد Kanban ساده مثل Trello یا YouTrack به این کار اختصاص بدین با چهار تا ستون Backlog, Todo, In-Prgress, Done. با خودتون جلسات روزانه و سرمونی های مختلف Sprint برگزار کنین!
یه خورده راجع به من
من محمد منفرد هستم. از سال ۱۳۹۰ تو حوزه IT مشغول هستم و از سال ۱۳۹۴ وارد حوزه تست نرم افزار شدم. شروعش با تست منوآل بود و بعدش ادامه با اتومیشن به خاطر بک گراند برنامه نویسیم. با شرکت های بزرگی مثل اسنپ همکاری کردم. چند بار تیم و واحد تست تشکیل دادم. افراد زیادی رو استخدام کردم (یا برای شرکتی که خودم توش بودم یا به عنوان مشاور). تیم لید بودم. مربی و مشاور بودم و چند سالی هم هست مهاجرت کردم و در حال حاضر تو شرکت آمریکایی بزرگی با عنوان آرشیتکت و تیم لید اتومیشن مشغول به کار هستم. لینکداین من و monfared.io (رزومه من)
داستان اتومیشن کمپ
از بچگی دوست داشتم هرچی بلدم به بقیه یاد بدم. اصلا یادم نمیاد چیزی یاد گرفته باشم و حداقل یه بار برای کسی توضیحش نداده باشم! تو لینکدینم می نوشتم معمولا ولی کافی نبود. دیگه نتونستم طاقت بیارم و سال ۱۴۰۰ بود که شروع کردم به ایجاد آموزش های تست اتومیشن و تو یوتیوب منتشر کردم. اسم این رفیقمون شد AutomationCamp و بعدش بهش هویت بیشتری دادم و کانال تلگرام و آپارات و ... هم اضافه کردم.
خوب از اونجایی که همیشه تو لینکداین و کامیونیتی های مختلف داخلی و خارجی مشغول به نوشتن پست و مشارکت تو بحث ها هستم یا اینکه پاسخ سوال ها رو میدم احساس کردم احتیاج به جایی دارم که همه این نوشته ها رو متمرکز کنم. گزینه زیاد داشتم. از پلتفرم هایی مثل ویرگول تابلاگ های ساده. به این فکر کردم خوب حالا که میخوام این کارو بکنم چرا جایی نباشه که آموزش های اتومیشن کمپ هم توش جمع بشه؟ و امکان توسعه سایت هم داشته باشیم؟ این شد که رسیدم به سایت فعلی.
تست نرم افزار چرا مهمه و این همه آگهی استخدامی داره؟
خوب فکر کنم اهمیت تست نرم افزار دیگه باید واضح باشه و قرار نیست دوباره داستان سقوط هواپیما یا سهام فلان شرکت رو به خاطر ایراد نرم افزاری توضیح بدیم. شاید بعدا بلاگ پست دیگه ای رو در این ارتباط نوشتم. الان اجازه بدین بریم سر اصل مطلب که به خاطرش این پست رو دارید میخونید یعنی مسیری که باید طی کنیم تا تو این حوزه حرفه ای بشیم!
نحوه ایجاد این مطلب
خوب من الان بیشتر از یک دهه هست که تو زمینه تست نرم افزار مشغول هستم. تو این سال ها با شرکت ها، پروژه ها و افراد متفاوتی کار کردم و نیازمندی های فعلی رو میدونم. تمام شرکت های بزرگ IT من جمله اونایی که خودم باهاشون همکاری داشتم یا همکارام و دوستام مشغول کار توشون هستن چیزایی به اسم Roadmap, Career Ladder, Qualification Matrix و... دارن که مشخص میکنه در هر سطحی چه انتظاری از اون شخص هست. چندین بار تو ایجاد این مدل داکیومنت مهم برای شرکت ها نقش داشتم و حالا همه اینا رو گذاشتم کنار تجربه ها و نظرات خودم و حاصلش شد این مطلب که فکر میکنم خیلی به درد بخوره!
کاربرد این مطلب
- دنبال یه مسیر دقیق و مشخص برای کار به عنوان کارشناس QA و رسیدن به سطوح بالا در این حوزه هستید
- قصد دارید از طریق پیدا کردن Job تو حوزه QA مهاجرت کنید
- قراره نیروی QA استخدام کنید و میخواین بدونین هر سطحی چیا باید بدونه (اکیدا البته توصیه کنم که اگر قراره مصاحبه گر باشید لطفا (!) خودتون در سطح سنیور یا حداقل میدلول که جلوتر تعریف کردم باشید، در غیر اینصورت از کسی در این سطح از خارج از سازمان تون کمک بگیرید)
سطوح تخصص
خوب قبل از اینکه بریم سراغ مسیر یادگیری، باید به این نکته اشاره کنم که شرکت های بزرگ تمام کارمندها رو با هر نوع تخصصی به چند سطح تقسیم بندی می کنند. یعنی مهم نیست شما چه کاری داری انجام میدی، تو همون پوزیشن سطحت میتونه بره بالاتر و حتی درآمدت از مدیرهای (غیر C level) هم بالاتر بشه! بدون اینکه کار مدیریتی یا لیدری انجام بدی. بعضی هاشون مثل گوگل شماره گذاری میکنن مثلا SWE 2 یا SWE 1 و بعضی ها هم میرن سراغ همون تقسیم بندی اصلی که ما در ادامه انجام میدیم. البته اینم در رابطه با گوگل بگم که سطح ۵ ش معادل Senior میشه و بعد از اون هم Staff و Senior Staff و Principal داریم.
خوب طبق دسته بندی متداول بین شرکت های IT این سطوح رو داریم:
- Intern - کارآموز
- Junior - جونیور
- Strong Junior
- Mid-level - متوسط
- Strong Mid-level
- Senior - سنیور
- Expert - متخصص
من قبلا هم برای تست منوآل و اتومیشن یه رودمپ نوشتم که تو این پست لینکداین منتشر کردم و خوندن اون هم خالی از لطف نیست.
چند تا نکته:
- این لیستی از تمام مهارت های لازم هست. بعضی هاشون رو فرد باید حتما داشته باشه که مشخص هستن ولی بقیه ش تفاوتش رو از بقیه مشخص میکنه. برای همین اگر این لیست رو دارین میخونین و یه سری مهارت ها رو ندارید و حتی شاید گوشتون هم بهش نخورده نگران نشین. با خیال راحت بهتون بگم هیچ کسی نیست که تو همه اینا ماهر باشه ولی خوبه که گپ هامون رو تشخیص بدیم و روشون وقت بزاریم.
- تو این پست ما از سطح کارآموز صرف نظر میکنیم و اینجوری درنظر میگیرم که فقط دانش تئوری مختصری از دانشگاه به همراه خودش داره.
- سطح Expert هم فعلا راجع بهش صحبت نمیکنم چون خودش یه پست جداگونه میخواد و بعدا بهش می پردازم. البته سعی میکنم چیزایی که از این سطح برای Senior هم صدق میکنه پوشش بدم اینجا.
- اون Strong ها هم یه چیزی بین سطح قبلی و بعدی هستن و اتفاقا رنج زیادی از افراد رو شامل میشن ولی برای اینکه شلوغ و پیچیده ش نکنیم، هر سطح و Strong ش رو اینجا با هم توضیح میدم. چه جوری میشه اونوقت؟ یعنی کسی که تمام موارد لازم تا اونجا رو بلد باشه میشه Strong. حالا اگر تو اصلیا مهارت داشته باشه و یه چیزایی رو تجربه نداشته باشه با توجه به سابقه و مهارت ش تو چیزای دیگه همچنان همون سطح ممکنه حساب بشه. همونطور که گفتم قرار نیست همه چیز رو همه بدونن ولی وزن مهارت های مختلف و تجربه فرد توی اونا سطحش رو مشخص میکنه و برای یه سازمانی ۶۰ درصد هر سلول این جدول هم شاید کافی باشه ولی جای دیگه ۹۰ درصدش رو بخواد.
- رفتن به سطح بعد لزوما به معنای یادگیری چیزای جدید نیست. بلکه در ابتدا به معنی عمیق شدن دانش و تجربه ما تو همون مهارت های قبلی هست. تسلط کامل و تشخیص اشتباه های گذشته نشونه این پیشرفت هست. ولی مهارت های جدید ما رو متمایز میکنه.
- همچنین واضحه که هر سطح باید مهارت های سطح قبلی رو داشته باشه.