انتخاب زبان

نحوه تست محصولات و خدمات نرم افزار در شرکت گوگل

شرکت گوگل برای تست نرم افزار، سه نقش زیر را درنظر گرفته است:

  1. Software Engineer
  2. Software Engineer in Test
  3. Software Tester

مهندس نرم افزار، در کنار تولید قابلیت های سیستم یعنی Feature development وظیفه تست قابلیت های تولید شده در سطح برنامه را نیز برعهده دارد یعنی Test development نیز انجام می دهد.

در هر صورت برای تولید تستها، از آنجاییکه نیاز به دانش آزمون و خصوصا زیرساخت آزمون می باشد، مهندس تست نرم افزار (دومین نقش)، وارد کار می شود که فعالیت های اصلی آن عبارت است از: کمک به برنامه نویس (مهندس نرم افزار) برای تولید آزمون واحد، آماده سازی زیرساخت آزمون شامل چارچوب آزمون و ماک-آبجکت ها، و نهایتا آزمون یکپارچه سازی قابلیت ها.

آزمونگر نرم افزار (نقش سوم)، وظیفه آزمون های سطح کاربری و پذیرش را برعهده دارد و به اصطلاح کارUser development را انجام می دهد که شامل تهیه سناریوهای آزمون در سطح کاربری می باشد.

تست نرم افزار

برخی از اصولی که در تولید نرم افزار در شرکت گوگل بکار گرفته می شود، عبارت است از:

استفاده از روش تولید مبتنی بر آزمون یا همان Test Driven Development

ارائه پایه ای ترین (ولی در عوض، موردنیازترین) قابلیت های یک محصول و ارائه آن به مصرف کننده و سپس گرفتن فیدبک کاربرنهایی. البته قبل از تحویل همین نسخه ساده، تست های مورد نیاز در سطح تولید و کاربری برروی آن انجام می شود و بعد از پاس شدن تمام تستهای مورد نیاز، محصول اولیه به کاربر داده می شود.

استفاده از تکنیک تحلیل ایستا و مرور دستی در کنار آزمون (پویا) + اجرای مجدد تست ها (آزمون رگراسیون) بعد از برطرف سازی مشکلات شناسایی شده در تحلیل و مرور کد.

استفاده از یک ریپازیتوری مشترک بین تولیدکنندگان با ارائه دسترسی و قرار دادن ماژولهای پایه ای در آن. تولیدکنندگان تا حد امکان باید از ماژولهای پایه‌ای موجود که قبلا تولید و تست شده است، استفاده نمایند.

استفاده از مکانیزم های تشویقی برای برنامه نویسانی که کد تمیز می نویسند.

انجام تست ها در سه سطح Small, Medium, Large که تقریبا معادل آزمونهای زیراست Unit, Integration, System

نکته قابل توجه آن است که قابلیتی که توسط یک برنامه نویس (مهندس نرم افزار) تولید می شود، همان برنامه نویس وظیفه تست آن قابلیت در سطح برنامه نویسی را نیز برعهده دارد؛ هرچند از خدمات مهندس تست نرم افزار برای آماده سازی تستها استفاده می نماید. در واقع اولین تستهای نرم افزار که باید پاس شود تا وارد مراحل بعدی تست (آزمونهای یکپارچه سازی و سیستمی) شد، همین آزمونهای برنامه نویسی یعنی یونیت-تست ها می باشند.

در شرکت گوگل، چندین اصل و مکانیزم برای رسیدن به Testabilityبالا، لحاظ می شود. اولی Test Driven Developmentاست. وقتی توسعه به صورت مبتنی بر آزمون پیش می رود، طبیعتا آزمون پذیری بالاتری وجود خواهد داشت. در همین رویکرد، وقتی کد یا طراحی سیستم پیچیده می شود، مکانیزم Refactoring برای افزایش خوانایی کد و طراحی مشروح صورت می گیرد. همچنین در شرکت گوگل، اصل بر سادگی یعنی Simplicity است و بکارگیری همین اصل باعث می شود آزمون پذیری کد و سیستم افزوده شود. همچنین تاکید زیاد برروی آزمونهای واحد (برنامه نویسی)، طبیعتا تست-ابیلیتی را افزایش می دهد.

تضمین Testability در وحله اول با معمار سیستم است. در واقع معماری سیستم باید طوری چیده شود که سیستم تولید شده آزمون پذیر باشد. در وحله بعدی، وظیفه برنامه نویسان سیستم است که طوری کد نویسی انجام دهند که امکان تست به راحتی فراهم باشد. گاهی اوقات (خصوصا در سیستم های لگسی) لازم است ریفکتورینگ های لازم برای آزمون پذیر کردن صورت گیرد یا یک نفر (تیم) خاص برای افزودن قابلیتهای لازم برای تست سیستم (ماک-آبجکت ها) لحاظ شود. نهایتا اینکه با تکنیک Code Inspection/Review می توان میزان پیچیدگی و آزمون پذیری را سنجید و متناسب با آن اقدامات لازم را انجام داد.


نویسنده : شرکت مهندس پیشگان آزمون افزار یاس


مراجع

نوشتن دیدگاه

تصویر امنیتی
تصویر امنیتی جدید