صابر طباطبائی یزدی
صابر طباطبائی یزدی
خواندن ۳ دقیقه·۹ ماه پیش

تست نویسی در لاراول یا اسپرینگ بوت جاوا

من در این نوشته راجع به چند مساله مهم صحبت میکنم. و سرنخ میدم. ۱- تست نویسی ۲- یادگیری انواع تست ۳- از همه مهم تر چطوری یک روز برنامه نویسی مون رو تبدیل کنیم به یک ماه برنامه نویسی؟

تست نویسی سناریو میخواهد.

شما برای یک تیکه کد یک تابع یک کلاس یک متد تست مینویسید. که چی که کامل باشه.

وقتی کامل شد...

مگه چیزی کامل میشه در نرم افزار.؟

اگر کامل تر بشه تست های قبلی به درد تون میخوره

اگر تغییر کنه باید همه چیز رو از اول بنویسید.

این منطق تست نویسی رو زیر سوال نمیبره. هر تغییری مستلزم هزینه است.


اما تست نویسی در لاراول لذت بخش است. همونطور که در اسپرینگ بوت لذت بخش است. به شرط اینکه به صورت دقیق سناریوی تحویلی مشخص باشد.

اگر تحقیق و توسعه باشد و مشخص نباشد بارها و بارها باید با تغییر معماری یا تغییر سناریو کل کد های تست دور ریخته شود

اما راه حل چیست؟

راه حل ساده است. تست های کوچک سریع. که هم سریع نوشته میشود و هم سریع تغییر کند.

مگه میشه؟

بله. هم میشه

خیر و هم نمیشه.


انواع تست ها

تست های یونیت

تست های یونیت و کوچک در حد تست ساده دو سه حالت از یک متد از یک کلاس

https://laravel.com/docs/10.x/http-tests

تست هایی که روی وب سرویس ها هستند تا ساده هستند و rest و کوچک سریع هستند از یک جایی بعضی سناریو ها میتواند پیچیده تر شود و میتواند تست هم ندداشته باشد. یا داشته باشد به خودتان بستگی دارد.

تست های فیچر:

تست های به هم پیوسته برای تست یک سناریوی کامل در یک فیچر که ارایه شده است


تست های دیتابیس:

سیدر بنویس و فکتوری که بره ی چیزهایی رو در دیتابیس بریزه. بعدش یونیت متد ها رو تست کن بعدش با فیچر کامل ترش کن. بعدش ببین منطق دیتابیس برای نوشتن و خواندن داره همه جا درست عمل میکنه


توابع assertion؛

دونستن کاربرد هر یک از موارد بالا کمک میکنه بتونید تست های کامل تری طراحی کنید.

چطوری در تست نویسی قهار بشیم؟

خواندن تست های دیگران در گیت هاب

github.com/search

این فیچر جستجوی گیت هاب رو دست کم نگیرید.

من همیشه بعد از نوشتن کد هام. حتما تیکه تیکه کد که نوشتم رو جستجو میکنم ببینم ایده های بهتر چیست؟

این کار میتونه هم قبل کد نوییسی هم بعد کدنویسی انجام بشه

برای مثال:

من وقتی یک پکیج نصب میکنم حتما ایده های برنامه نویسان دیگر رو رصد میکنم

مثلا پکیج الستیکس که نصب میشه چی میشه؟

معلومه دیگه

"require": {
"php": "^8.1",
"barryvdh/laravel-debugbar": "^3.12",
"barryvdh/laravel-ide-helper": "^3.0",
"elasticsearch/elasticsearch": "^8.12",



یک همچین چیزی میره در فایل composer.json پروژه لاراول


خب با امکانات جستجویی که در سایت گیت هاب داریم خیلی راحت میتونیم جستجو رو تارگت گذاری کنیم و به کد هایی برسیم قوی خوانا با معماری خوب که ما رو یک هفته شاید یک ماه جلو میاندازه.

چطوری یک روز برنامه نویسی مون رو تبدیل کنیم به یک ماه برنامه نویسی؟

با جستجو و خواندن و مرور کد های دیگران.

هر فیچر و بخش و کلاس و متد که مینویسید جستجو کنید کد های دیگران ی نگاه بندازید


یک مقاله خوب

https://geshan.com.np/blog/2021/01/phpunit-assertions/

موفق باشید.

برنامه نویسیتست نویسیتستگیت هاببرنامه نویس
برنامه نویس.42ساله. از مدرک MCSD دات نت سال 2002 شروع کردم البته بعد از لیسانس و تمام عمرم رو در مدیریت با ابزار های شیرپوینت و MSPS و CRM و غیره گذراندم.https://zil.ink/sabert
شاید از این پست‌ها خوشتان بیاید