تست نرمافزار سرمایهگذاری روی اعتماد است؛ اما همهٔ تستها ارزش یکسانی ندارند و توزیع نادرست آنها میتواند منابع را هدر دهد. هرم تست یک راهنمای ذهنی است که میگوید چه نوع تستی و به چه نسبتی باید نوشته شود تا هم پوشش کافی داشته باشیم و هم خط لولهٔ توسعه سریع بماند.
پایهٔ هرم، تستهای واحد است و باید پرتعدادترین باشد. این تستها یک تابع یا یک واحد کوچک منطق را جدا از بقیه میسنجند، در چند میلیثانیه اجرا میشوند و وقتی شکست میخورند، دقیقاً جای خطا را نشان میدهند. سرعت و دقت بالای آنها، تست واحد را بهترین ابزار بازخورد لحظهای برای توسعهدهنده میکند.
لایهٔ میانی، تستهای یکپارچگی است که بررسی میکند بخشهای مختلف — مثلاً کد و پایگاه داده، یا چند سرویس — درست با هم کار میکنند. این تستها کندتر از تست واحدند اما خطاهایی را میگیرند که در مرز میان اجزا پنهان میشوند و هیچ تست واحدی آنها را نمیبیند. تعداد آنها باید معتدل باشد.
نوک هرم، تستهای سرتاسری است که کل اپلیکیشن را مثل یک کاربر واقعی از رابط کاربری میآزماید. این تستها بیشترین اطمینان را میدهند اما کند و شکنندهاند، پس باید کم و فقط برای مهمترین مسیرهای کاربری نوشته شوند. وارونه کردن هرم — یعنی تکیه بر تستهای سرتاسری زیاد — به خط لولهٔ کند و بیثبات منجر میشود.