نشتی حافظه درتست نرم افزار موضوعی است که هم یک مشکل کارایی (به دلیل اتلاف حافظه) و هم یک مشکل امنیتی محسوب میگردد (به دلیل مصرف بیرویه حافظه که نهایتا منجر به پرشدن حافظه و پایین آمدن سرور میشود و این معضل در تست نرم افزار بطور مستمر مشخص شود). بررسی این مشکل در برنامهنویسی سیستمهای سطح پایین (تولید شده با زبانهایی همچون C و ++C) از اهمیت خاصی برخوردار است و یکی از مهم ترین مراحل بشمار می آید. چرا که به دلایلی همچون عدم وجود virtual machine در زبانهای سطح پایین و امکان استفاده مستقیم از اشاره گرها (pointer)، تشخیص این مشکل بسیار پیچیده است.
البته مشکل نشتی حافطه در زبانهای سطح بالایی همچون Java و #C نیز که در یک محیط sandbox اجرا میشوند، به دلیل برنامهنویسی نامطلوب میتواند رخ دهد و لذا برنامهنویسان باید دقت کافی در این زمینه را بنمایند.
شرکت گوگل برای تست نرم افزار، سه نقش زیر را درنظر گرفته است:
Software Engineer
Software Engineer in Test
Software Tester
مهندس نرم افزار در تست نرم افزار، در کنار تولید قابلیت های سیستم یعنی Feature development وظیفه تست قابلیت های تولید شده در سطح برنامه را نیز برعهده دارد یعنی Test development نیز انجام می دهد. در تست نرم افزار در هر صورت برای تولید تستها، از آنجاییکه نیاز به دانش آزمون و خصوصا زیرساخت آزمون می باشد، مهندس تست نرم افزارر (دومین نقش)، وارد کار می شود که فعالیت های اصلی آن در تست نرم افزار عبارت است از: کمک به برنامه نویس (مهندس نرم افزار) برای تولید آزمون واحد، آماده سازی زیرساخت آزمون شامل چارچوب آزمون و ماک-آبجکت ها، و نهایتا آزمون یکپارچه سازی قابلیت ها. تست نرم افزار، وظیفه آزمون های سطح کاربری و پذیرش را برعهده دارد و به اصطلاح کارUser development را انجام می دهد که شامل تهیه سناریوهای آزمون در سطح کاربری می باشد.
برخی از اصولی که در تولید نرم افزار در شرکت گوگل بکار گرفته می شود، عبارت است از:
استفاده از روش تولید مبتنی بر آزمون یا همان Test Driven Development
ارائه پایه ای ترین (ولی در عوض، موردنیازترین) قابلیت های یک محصول و ارائه آن به مصرف کننده و سپس گرفتن فیدبک کاربرنهایی. البته قبل از تحویل همین نسخه ساده، تست های مورد نیاز در تست نرم افزار در سطح تولید و کاربری برروی آن انجام می شود و بعد از پاس شدن تمام تستهای مورد نیاز، محصول اولیه به کاربر داده می شود.
استفاده از تکنیک تحلیل ایستا و مرور دستی در کنار آزمون (پویا) + اجرای مجدد تست ها (آزمون رگراسیون) بعد از برطرف سازی مشکلات شناسایی شده در تحلیل و مرور کد.
استفاده از یک ریپازیتوری مشترک بین تولیدکنندگان با ارائه دسترسی و قرار دادن ماژولهای پایه ای در آن. تولیدکنندگان تا حد امکان باید از ماژولهای پایهای موجود که قبلا تولید و تست شده است، استفاده نمایند.
استفاده از مکانیزم های تشویقی برای برنامه نویسانی که کد تمیز می نویسند.
تست نرم افزار در سه سطح Small, Medium, Large که تقریبا معادل آزمونهای زیراست Unit, Integration, System