بهروز
بهروز
خواندن ۳ دقیقه·۵ سال پیش

یک مهندس تست چقدر برنامه نویسی باید بداند؟

تاریخ انتشار نسخه اصلی 20 فوریه, 2017
عنوان این پست، سوالی است که هم مهندسان تست میپرسند و هم شرکتهایی که میخواهد آنها را استخدام کنند. اینکه  برای تست نرم افزار آیا لازم است که فرد به زبان برنامه نویسی نرم افزار تسلط داشته باشد یا اینکه اگر تنها محصول نرم افزاری را به عنوان یک کاربر پیشرفته بشناسد کافیست؟ در این یاداشت کوتاه سعی میکنم با توجه به مشاهدات خود در شرکتهای مختلف، آگهی های کاریابی و فرآیندهای مصاحبه تا حد توان به این سوال پاسخ دهم.

Grace Brewster Murray Hopper seated at the input console for the UNIVAC I
Grace Brewster Murray Hopper seated at the input console for the UNIVAC I

پیشتر نوشته بودم زمانی که کیفیت و سرعت رساندن محصول به بازار (time to market) در بازار رقابتی امروز اهمیت پیدا کرد، شرکتهای کوچک و متوسط سعی کردند تا با استخدام نیروهای تست یا استفاده از کارکنانی که در استفاده از محصول نرم افزاری وارد بودند، عیب ها را به همراه بازخوردهای مناسب هر چه سریعتر و پیش از گزارش آن توسط مشتری، به تیم نرم افزاری منتقل کنند. این گونه تست ها اغلب به صورت غیرخودکار بود و بازخوردهای تست کننده نیز غیرفنی. به این صورت که برنامه نویسان میبایست بعداً با صرف زمان و آزمون و خطا موضوع گزارش شده را مورد بررسی قرار میدادند. با گسترش و محبوبیت شیوه Agile، موضوع تست و بازخورد سریع، از این هم مهمتر شد. تیمهای نرم افزاری کوچک شدند، continuous integration امکان کار تیمی بهتر و کوچکتر شدن چرخه انتشار (release cycle)  را فراهم کرد و بسیاری از تستها به صورت خودکار درآمدند. در این تغییر و تحول تست کنندگان هم باید مهارتها تازه یاد میگرفتند. سال 2010 بررسی بر روی آگهی های کاریابی برای مهندس تست در امریکا صورت گرفت که نشان میداد 80 درصد شرکتها به دنبال کسانی هستند که «حتماً» یا «بهتر است»برنامه نویسی بدانند. اما چرا درخواست برای مهندس تستی که برنامه نویسی میداند افزایش پیدا کرده است؟

خودکار سازی تست: امروزه خودکار کردن تستهایی که برای کد کامپایل شده (تست جعبه سیاه و خاکستری) صورت میگیرد اغلب توسط مهندس تست نوشته میشود. در شرکتهایی نیز نوشتن unit test بر روی کد نیز به تست کنندها سپرده میشود. این موضوع باعث شده است که تست کننده حتی اگر مسلط به مهندسی نرم افزار و یا زبانهایی مانند Java یا C نیست ولی حداقل بتواند با Python یا مثلا Powershell اسکریپت نویسی کند و از ابزارهای خودکاری سازی مانند Selenium بهره بگیرد.

منهدس تست به عنوان عضوی از گروه برنامه نویسی: با گسترش شیوه Agile، مهندس تست عضوی از گروه 3 تا 5 نفری است. به این معنا که هر روز در ارتباط دائم با آنهاست. این موضوع مستلزم آن است که سطح زبان فنی همه اعضا از جمله تست کننده نزدیک به یکدیگر باشد تا بتواند ارتباط موثرتری برقرار کرده و اصطلاحات فنی روزمره را متوجه شوند. همچنین  تست کننده باید بتواند به طور مثال با بررسی log ها، مانیتور کردن سرویسها و ترافیک شبکه اطلاعات دقیقتری از وضعیت سیستم در حالتها متفاوت ارائه دهد. این سطح از ارتباط فنی مسلماً برای افرادی که برنامه نویسی میدانند ساده تر است.

هرچند داشتن مهارت فنی بالاتر و دانستن برنامه نویسی در بازار کار امروز فرصتهای بیشتری را پیش روی مهندسان تست قرار میدهد. ولی مسلماً شرط کافی نیست. از نظر من وظیفه بخش کنترل کیفی نرم افزار یا همان QA دادن بازخوردهای سریع و دقیق به تیم نرم افزارست. برای این منظور تست کنند میباید فردی باشد با تفکری منتقد و تحلیلی که بتواند مسائل مختلف سیستم را با موشکافی بررسی کند. داشتن دانش فنی و برنامه نویسی تنها کمکی است در این راستا.

تست نرم افزاراتوماسیون تستخودکارسازی تست
مهندس تست و امنیت نرم افزار https://www.linkedin.com/in/behroozaghakhanian
شاید از این پست‌ها خوشتان بیاید