در توسعه نرمافزار، تست از اهمیت بالایی برخوردار میباشد. برای درک بیشتر این موضوع و همچنین یادگیری مبحث Unit Testing پیشنهاد میکنم از دوره رایگان آموزش Unit Testing سکان آکادمی استفاده نمایید.
تصور کنید درتستهایی که مینویسید، تست شما وابسته به یکی از ماژولها، فانکشنها و یا بخشی از برنامه باشد، که آن بخش هنوز توسعه داده نشده، و به هر طریق، آن بخش در لحظه فعلی برای شما قابل استفاده نیست.
در این شرایط از چه امکانی در تستنویسی میتوان استفاده کرد ؟
Stubs
اِستابها در واقع شبیهسازیای از قطعه کد، فانکشن، ماژول و یا هر بخشی از برنامه شما هستند که تستی که مینویسید به آن وابسته است، و این ماژول واقعا برنامهنویسی نشده و کار شما را متوقف کرده است.
برای نمونه تصور کنید دو ماژول در برنامه شما وجود دارد. ماژول اول Login و ماژول دوم Dashboard نام دارد و منطق برنامه به این صورت است که پس از لاگین شدن کاربر، باید به صفحه Dashboard هدایت شود.
حال فرض کنید توسعهی ماژول Login تمام شده و برای تست شدن به وجود ماژول Dashboard نیاز دارد؛ اما ماژول Dashboard هنوز توسعه داده نشده و آماده استفاده نمیباشد.
در این شرایط برنامهنویس با نوشتن قطعه کدی، وجود صفحه Dashboard را شبیهسازی میکند تا بتواند ماژول Login را تست کند.
<?php
class DashboardTest {
public function show() {
return 'dashboard is ready';
}
}
class UserTest {
public function testIfLoginWorksFine() {
$userData = [
'username' => 'mehrad',
'password' => 'secret'
];
$response = $this->post('login', $userData);
$response->assertSee('dashboard is ready');
}
}
در این سناریو، Dashboard نوشته شده در واقع یک Stub است.
Stub ها در واقع در تستهای به اصطلاح بالا به پایین استفاده میشوند.
تستهای بالا به پایین به تستهایی گفته میشود که در آنها ماژولهای سطح پایینتر که هنوز توسعه داده نشدهاند را شبیهسازی میکنیم، در حالیکه توسعهی ماژولهای سطح بالا تمام شده است.
Drivers
درایوِرها شباهت زیادی به استابها دارند؛ به این معنی که درایورها نیز در واقع شبیهسازیای از قطعه کد، فانکشن، ماژول و یا هر بخشی از برنامه شما هستند که تستی که مینویسید به آن وابسته است، و این ماژول واقعا برنامهنویسی نشده و کار شما را متوقف کرده است.
اما تفاوت آن با استاب در این است که در تستهای به اصطلاح پایین به بالا مورد استفاده قرار میگیرند.
تستهای پایین به بالا به تستهایی گفته میشود که در آنها ماژولهای سطح بالاتر که هنوز توسعه داده نشدهاند را شبیه سازی میکنیم، در حالیکه توسعهی ماژولهای سطح پایین تمام شده است.