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