اگر در دنیای برنامهنویسی حرفهای وارد شدید و میخواهید به سطح بالاتری برسید، سایت Refactoring.Guru میتونه یکی از بهترین منابعی باشه که میتونید برای یادگیری Design Patterns استفاده کنید. این سایت به زبان ساده و با مثالهای کاربردی، به شما توضیح میده که چرا و چطور از این الگوها برای نوشتن کدهایی تمیزتر، منعطفتر و قابل نگهداری استفاده کنید.
الگوهای طراحی، به طور کلی، به شما کمک میکنن تا مشکلات پیچیده رو با استفاده از راهحلهای اثباتشده و استاندارد، در قالب ساختارهایی خاص و قابلاستفاده در پروژههای مختلف، حل کنید. این یعنی دیگه مجبور نیستید هر بار از صفر شروع کنید.
یکی از ویژگیهای مهم این سایت اینه که شما نه تنها با هر الگو آشنا میشید، بلکه میفهمید کجا و چرا باید از اون استفاده کنید. به همین دلیل، Refactoring.Guru یه مرجع عالی برای هر برنامهنویسیه که میخواد در کدنویسی حرفهای و بهینهتر بشه.
@DevTwitter | <Reza Annabestani/>
الگوهای طراحی، به طور کلی، به شما کمک میکنن تا مشکلات پیچیده رو با استفاده از راهحلهای اثباتشده و استاندارد، در قالب ساختارهایی خاص و قابلاستفاده در پروژههای مختلف، حل کنید. این یعنی دیگه مجبور نیستید هر بار از صفر شروع کنید.
یکی از ویژگیهای مهم این سایت اینه که شما نه تنها با هر الگو آشنا میشید، بلکه میفهمید کجا و چرا باید از اون استفاده کنید. به همین دلیل، Refactoring.Guru یه مرجع عالی برای هر برنامهنویسیه که میخواد در کدنویسی حرفهای و بهینهتر بشه.
@DevTwitter | <Reza Annabestani/>
👍46❤5🔥4
اصل single responsibility چرته
کلمه responsibility خودش خیلی کلمه نامفهومیه، اصلا responsibility ینی چی؟ شما وظیفه رو دقیقا چی تعریف میکنی؟ به چی میگی وظیفه؟
آقای uncle Bob در تعریف single responsibility میگه:
A class should have one and only one reason to change
ینی چی only one؟
در همین ابتدا میشه دو تا دلیل آورد که یه کلاس میتونه تغییر بکنه، یکی باگ فیکس و دومی فیچر اضافه کردن
الان تکلیف ما چیه؟ این تعریف رفت زیر سوال، ینی دیگه من single responsibility رو رعایت نکردم؟
حالا فرض کنید یه نفر یک کلاسی نوشته که دو تا متد داره، یکی کاربر رو ایجاد میکنه و یه متد دیگه داره به اون کاربر notification خوش آمد گویی ارسال میکنه.
آیا طبق معیاری به اسم single responsibility میشه گفت این کلاسی که تعریف کردم single responsibile هست؟
به نظرم من خیر نمیشه گفت
حالا معیار درست چی میتونه باشه؟
Cohesion
به نظرم معیار درست تر Cohesionهه، چرا؟
احتمالا وقتی که من کلاس بالارو براتون تعریف کردم به خودتون گفتید ارسال notification چه ربطی به ایجاد کاربر داره، دقیقا درست گفتید
معیار Cohesion بهتره چون شما میتونید ببینید متدهای که چیدید کنار هم چقدر به هم دیگه مرتبط هستند
با این معیار حالا میشه تصمیم گرفت که متد ارسال notification باید یک کلاس مستقل برای خودش بشه
@DevTwitter | <Amir Salehi/>
کلمه responsibility خودش خیلی کلمه نامفهومیه، اصلا responsibility ینی چی؟ شما وظیفه رو دقیقا چی تعریف میکنی؟ به چی میگی وظیفه؟
آقای uncle Bob در تعریف single responsibility میگه:
A class should have one and only one reason to change
ینی چی only one؟
در همین ابتدا میشه دو تا دلیل آورد که یه کلاس میتونه تغییر بکنه، یکی باگ فیکس و دومی فیچر اضافه کردن
الان تکلیف ما چیه؟ این تعریف رفت زیر سوال، ینی دیگه من single responsibility رو رعایت نکردم؟
حالا فرض کنید یه نفر یک کلاسی نوشته که دو تا متد داره، یکی کاربر رو ایجاد میکنه و یه متد دیگه داره به اون کاربر notification خوش آمد گویی ارسال میکنه.
آیا طبق معیاری به اسم single responsibility میشه گفت این کلاسی که تعریف کردم single responsibile هست؟
به نظرم من خیر نمیشه گفت
حالا معیار درست چی میتونه باشه؟
Cohesion
به نظرم معیار درست تر Cohesionهه، چرا؟
احتمالا وقتی که من کلاس بالارو براتون تعریف کردم به خودتون گفتید ارسال notification چه ربطی به ایجاد کاربر داره، دقیقا درست گفتید
معیار Cohesion بهتره چون شما میتونید ببینید متدهای که چیدید کنار هم چقدر به هم دیگه مرتبط هستند
با این معیار حالا میشه تصمیم گرفت که متد ارسال notification باید یک کلاس مستقل برای خودش بشه
@DevTwitter | <Amir Salehi/>
👎88👍28❤5🤣3
وردپرس 6.7 داره میاد!
و قراره کلی تغییرات باحال رو بیاره که میتونه تجربهمون با سایتهای وردپرسی رو کلی بهتر کنه. از یه تم جدید گرفته تا بهبودهای خفن تو ویرایشگر و کار با عکسها، این نسخه حسابی هیجانانگیزه!
چه خبرای جدیدیه؟
تم جدید: Twenty Twenty-Five – مناسب برای بلاگنویسها و کسایی که دنبال طراحی ساده و شیکن!
ویرایش راحتتر با قابلیت نمایش تمامصفحه – دیگه لازم نیست واسه صفحات طولانی هی بالا پایین کنی!
پشتیبانی از عکسهای HEIC – راحت عکسهای آیفون و آیپد رو آپلود کن، بدون افت کیفیت!
تایپوگرافی انعطافپذیر – متنت همیشه روی همه دستگاهها درست نمایش داده میشه!
با API پیشنمایش جدید – قبل از اینکه محتوای سایتت رو منتشر کنی، دقیقاً ببین چه شکلی میشه!
وردپرس 6.7 با کلی بهبود (بیش از 500 تا!) و رفع 200 تا باگ، قراره کار کردن با سایتهای وردپرسی رو راحتتر و سریعتر کنه. دیگه وقتشه سایتت رو آپدیت کنی و از این امکانات خفن استفاده کنی!
این نسخه جدید همهچیز رو برات آسونتر میکنه!
@DevTwitter | <Sajjad EhsanFar/>
و قراره کلی تغییرات باحال رو بیاره که میتونه تجربهمون با سایتهای وردپرسی رو کلی بهتر کنه. از یه تم جدید گرفته تا بهبودهای خفن تو ویرایشگر و کار با عکسها، این نسخه حسابی هیجانانگیزه!
چه خبرای جدیدیه؟
تم جدید: Twenty Twenty-Five – مناسب برای بلاگنویسها و کسایی که دنبال طراحی ساده و شیکن!
ویرایش راحتتر با قابلیت نمایش تمامصفحه – دیگه لازم نیست واسه صفحات طولانی هی بالا پایین کنی!
پشتیبانی از عکسهای HEIC – راحت عکسهای آیفون و آیپد رو آپلود کن، بدون افت کیفیت!
تایپوگرافی انعطافپذیر – متنت همیشه روی همه دستگاهها درست نمایش داده میشه!
با API پیشنمایش جدید – قبل از اینکه محتوای سایتت رو منتشر کنی، دقیقاً ببین چه شکلی میشه!
وردپرس 6.7 با کلی بهبود (بیش از 500 تا!) و رفع 200 تا باگ، قراره کار کردن با سایتهای وردپرسی رو راحتتر و سریعتر کنه. دیگه وقتشه سایتت رو آپدیت کنی و از این امکانات خفن استفاده کنی!
این نسخه جدید همهچیز رو برات آسونتر میکنه!
@DevTwitter | <Sajjad EhsanFar/>
🤣72👍46👎1
با استفاده از AI LLM با یک کلیک ویدیوهای کوتاه ایجاد کنید.
https://github.com/harry0703/MoneyPrinterTurbo
@DevTwitter | <homayoun/>
https://github.com/harry0703/MoneyPrinterTurbo
@DevTwitter | <homayoun/>
👍12👎6🤣5
برای توسعه برنامه دسکتاپ کراس پلتفرم با دات نت
- MAUI : لینوکس ساپورت نمیکنه
- Uno: بازم لینوکس ساپورت نمیکنه و با وب اسمبلی می تونی برنامه دسکتاپ بنویسی که بازم با الکترون فرقی نداره
- GtkSharp: برای لینوکس خوبه ولی برای مک و ویندوز مناسب نیست
- Avalonia: بهترین انتخاب همینه
@DevTwitter | <imun/>
- MAUI : لینوکس ساپورت نمیکنه
- Uno: بازم لینوکس ساپورت نمیکنه و با وب اسمبلی می تونی برنامه دسکتاپ بنویسی که بازم با الکترون فرقی نداره
- GtkSharp: برای لینوکس خوبه ولی برای مک و ویندوز مناسب نیست
- Avalonia: بهترین انتخاب همینه
@DevTwitter | <imun/>
🤣31👍13🔥7👎4
اگر شماهم با anydesk مشکل دارید بیاید از rustDesk استفاده کنید.
https://github.com/rustdesk/rustdesk
@DevTwitter | <milad/>
https://github.com/rustdesk/rustdesk
@DevTwitter | <milad/>
👍43🤣12🔥8
جذابیت این پروژه کوچیک برام بیشتر به خاطر استفاده از کتابخانه streamlit بود که ببینم چطور کار میکنه
یه پروژهی پیشبینی آب و هوا که با پایتون توسعه داده شده.
https://github.com/sobhanSadeghi/weather-prediction
@DevTwitter | <SobhanSadeghi/>
یه پروژهی پیشبینی آب و هوا که با پایتون توسعه داده شده.
https://github.com/sobhanSadeghi/weather-prediction
@DevTwitter | <SobhanSadeghi/>
👍22❤5
جدیدا شروع کردم به یادگیری زبان Rust. باید اعتراف کنم شگفت زده شدم از ویژگی ها و کاربرد های این زبان، بعد از اینکه داکیومنت رو مطالعه کردم برای تثبیت دانش خودم یه پروژه تمرینی تعریف کردم برای استایل دهی متون داخل ترمینال.
اگه دوست داشتید با استار دادن حمایت کنید
https://github.com/Syaw0/term_tools
@DevTwitter | <Siavash Mohebbi/>
اگه دوست داشتید با استار دادن حمایت کنید
https://github.com/Syaw0/term_tools
@DevTwitter | <Siavash Mohebbi/>
👍45🔥8🤣6👎3
دانلود کردن از یوتوب، اینستا، توییتر همیشه دردسر بوده و سایت هایی که خدماتش رو ارائه میدن محدود و پر از تبلیغ هستن.
به همین دلیل اپ Python ای با استفاده از tkinter نوشتم که میتونه از yt, Instagram, twitter & Pinterest دانلود بکنه و قابلیت انتخاب کیفیت ویدیو یوتوب، دانلود کامل پلی لیست، دانلود فایل صدا به تنهایی رو داره.
میتونید محل دانلود رو انتخاب کنید که به صورت دیفالت پوشه ی Downloads رو انتخاب میکنه.
چنتا نکته:
۱- مطمئن بشید که ffmpeg روی سیستم شما نصب هست از پیش نیاز های اصلی برنامه است.
۲- نیاز به وی پی ان برای دانلود هست و پروکسی کار نمیکنه.
۳- برای اینستاگرام نیاز به لاگ این هست که کردنشال شما جایی ذخیره نمیشه و امن هست ولی بهتره اکانت فیک جدیدی بسازید و از اون استفاده کنید. متا علاقه ای به اسکرپ نداره و استفاده ی زیاد میتونه مشکل ایجاد بکنه برای اون اکانت.
نسخه ی اولیه برنامه است و کار زیاد داره، خوشحال میشم فیدبک بدید و به قول خارجیها contributions are more than welcome
لینک ریپو:
https://github.com/MSC72m/media_downloader
@DevTwitter | <MSC/>
به همین دلیل اپ Python ای با استفاده از tkinter نوشتم که میتونه از yt, Instagram, twitter & Pinterest دانلود بکنه و قابلیت انتخاب کیفیت ویدیو یوتوب، دانلود کامل پلی لیست، دانلود فایل صدا به تنهایی رو داره.
میتونید محل دانلود رو انتخاب کنید که به صورت دیفالت پوشه ی Downloads رو انتخاب میکنه.
چنتا نکته:
۱- مطمئن بشید که ffmpeg روی سیستم شما نصب هست از پیش نیاز های اصلی برنامه است.
۲- نیاز به وی پی ان برای دانلود هست و پروکسی کار نمیکنه.
۳- برای اینستاگرام نیاز به لاگ این هست که کردنشال شما جایی ذخیره نمیشه و امن هست ولی بهتره اکانت فیک جدیدی بسازید و از اون استفاده کنید. متا علاقه ای به اسکرپ نداره و استفاده ی زیاد میتونه مشکل ایجاد بکنه برای اون اکانت.
نسخه ی اولیه برنامه است و کار زیاد داره، خوشحال میشم فیدبک بدید و به قول خارجیها contributions are more than welcome
لینک ریپو:
https://github.com/MSC72m/media_downloader
@DevTwitter | <MSC/>
👍79👎19❤9🤣1
نسخه ویندوزی ChatGPT برای همه کاربران در دسترس قرار گرفت.
دکمههای Alt + Space هم چت جدید شروع میکنه.
https://openai.com/chatgpt/desktop/
@DevTwitter | <Soroush Ahmadi/>
دکمههای Alt + Space هم چت جدید شروع میکنه.
https://openai.com/chatgpt/desktop/
@DevTwitter | <Soroush Ahmadi/>
❤33👍12👎1
به سرعت لاراول خود را آپدیت کنید.
تمام نسخههای بالاتر از ورژن 6 لاراول در معرض آسیبپذیریای قرار دارند که به مهاجمان اجازه میدهد environment برنامه را با استفاده از query string تغییر دهند. این میتواند منجر به دسترسی غیرمجاز، نشت اطلاعات حساس، و یا حتی آسیبدیدگی شدید در تنظیمات برنامه شود.
این آسیبپذیری زمانی رخ میدهد که directive register_argc_argv در تنظیمات PHP فعال باشد و امکان تغییر environment بهوسیلهی argv و argc از طریق query string فراهم شود. در این حالت، اگر کاربران با دستکاری URL وارد محیطهای خاصی شوند (مثلاً APP_ENV=production? یا APP_DEBUG=true?
، میتواند منجر به تغییر environment در زمان اجرای برنامه شود!
https://github.com/laravel/framework/security/advisories/GHSA-gv7v-rgg6-548h
@DevTwitter | <Ali Salehi/>
تمام نسخههای بالاتر از ورژن 6 لاراول در معرض آسیبپذیریای قرار دارند که به مهاجمان اجازه میدهد environment برنامه را با استفاده از query string تغییر دهند. این میتواند منجر به دسترسی غیرمجاز، نشت اطلاعات حساس، و یا حتی آسیبدیدگی شدید در تنظیمات برنامه شود.
این آسیبپذیری زمانی رخ میدهد که directive register_argc_argv در تنظیمات PHP فعال باشد و امکان تغییر environment بهوسیلهی argv و argc از طریق query string فراهم شود. در این حالت، اگر کاربران با دستکاری URL وارد محیطهای خاصی شوند (مثلاً APP_ENV=production? یا APP_DEBUG=true?
، میتواند منجر به تغییر environment در زمان اجرای برنامه شود!
https://github.com/laravel/framework/security/advisories/GHSA-gv7v-rgg6-548h
@DevTwitter | <Ali Salehi/>
🤣35👍19❤4👎1
This media is not supported in your browser
VIEW IN TELEGRAM
اگه یه AI میخواید که دستیار نوشتن مخصوصا برای ایمیل یا پر کردن فیلد داخل سایتها، تماس و ... باشه الان میتونید مرورگر کروم رو آپدیت و رایگان استفاده کنید.
کافیه تو هر سایتی که متن مینویسید اون متن رو انتخاب و بعد کلیک راست بزنید و Help me write رو انتخاب کنید.
@DevTwitter | <Soroush Ahmadi/>
کافیه تو هر سایتی که متن مینویسید اون متن رو انتخاب و بعد کلیک راست بزنید و Help me write رو انتخاب کنید.
@DevTwitter | <Soroush Ahmadi/>
👍27🔥12👎3❤1
بنظرم وقتی Rust Foundation چنین Statementی منتشر میکنه، خوب یا بد، هیاهوی اینکه همه چیزو باید مجدد در Rust بنویسیم سراومده و سلطه کنونی C++ در قلمرو System Programming رو پذیرفتن، به همان دلایلی که قبلا گفتم بنظرم هنوز اینتگره کردن راست در Legacy Code سخته
https://github.com/rustfoundation/interop-initiative/blob/main/problem-statement.md
@DevTwitter | <Mamadou On GameDev/>
https://github.com/rustfoundation/interop-initiative/blob/main/problem-statement.md
@DevTwitter | <Mamadou On GameDev/>
👍29👎5
چند ماه پیش یکی از دوستان نیاز داشت که از مودم MN6200D مبین نت دسترسی SSH بگیره من هم فریمور مودم رو بررسی کردم متوجه شدم یک فایل باینری مسئول ساخت رمز وایفای از روی مک هست الگوریتمی که برای محاسبه رمز استفاده میشه رو تو گیتهاب براتون گذاشتم
https://github.com/Hamid-1920/LT643-SSH-Password-Calculator
@DevTwitter | <Hamid Ajami/>
https://github.com/Hamid-1920/LT643-SSH-Password-Calculator
@DevTwitter | <Hamid Ajami/>
🤣46❤12👍10🔥3
یه پروژهی اپن سورس که فکر کنم به کار دیگران هم بیاد.
دلیل ساختش هم این بود که با بخش Password Generator اپهایی مثل Microsoft Authenticator یا Bitwarden و غیره… حال نمیکردم و خودم این Password Generator رو نوشتم.
https://4n0nymou3.github.io/PassForgeMatrix
@DevTwitter | <Ananymous/>
دلیل ساختش هم این بود که با بخش Password Generator اپهایی مثل Microsoft Authenticator یا Bitwarden و غیره… حال نمیکردم و خودم این Password Generator رو نوشتم.
https://4n0nymou3.github.io/PassForgeMatrix
@DevTwitter | <Ananymous/>
🤣38👍13👎11❤2
DevTwitter | توییت برنامه نویسی
یه فرصت خیلی خوب برای علاقمندان به یادگیری دیتابیس PostgreSQL اِرِن فرَنسِز (Aaron Francis) که تجربه ای نزدیک به 20 سال، با پستگرس داره و از مدرسین فعال حوزه ی لاراول هم هست، دوره Mastering Postgres رو منتشر کرده که نزدیک به 11 ساعت آموزش هست. 25 ویدیو…
از اون جایی که استقبال خیلی خوبی از معرفی دوره ی PostgreSQL شد توسعه دهنده هایی که با MySQL کار میکردن گفتن پس ما چی؟!
خب نگران نباشید چون اِرن جون نمیزاره دستتون تو حنا بمونه و هوا تونو داره!
ارن جون دوره MySQL for Developers رو پارسال منتشر کرده ولی یادش رفته بوده به بچه های ایران بگه که من تذکر دادم و قول داد دیگه تکرار نشه.
راستی دوره ش هم رایگانه! میتونید استفاده کنید و حالشو ببرید.
https://planetscale.com/learn/courses/mysql-for-developers
@DevTwitter | <Ali Salehi/>
خب نگران نباشید چون اِرن جون نمیزاره دستتون تو حنا بمونه و هوا تونو داره!
ارن جون دوره MySQL for Developers رو پارسال منتشر کرده ولی یادش رفته بوده به بچه های ایران بگه که من تذکر دادم و قول داد دیگه تکرار نشه.
راستی دوره ش هم رایگانه! میتونید استفاده کنید و حالشو ببرید.
https://planetscale.com/learn/courses/mysql-for-developers
@DevTwitter | <Ali Salehi/>
👍26❤5👎4🤣4
تو لاراول، ORM کدنویسی رو راحتتر و خواناتر میکنه و واسه بیشتر پروژهها گزینه خوبیه.
اما وقتی نیاز به کوئریهای پیچیده و بهینه داریم یا سرعت و عملکرد اولویت داره،
بهتره بریم سراغ Query Builder یا حتی raw SQL.
ORM واسه ساختارهای پیچیده و توسعه سریع عالیه، ولی اگه بخوایم کوئریهای خاص و سنگین بزنیم که با ORM کند میشن،
استفاده از Query Builder یا raw SQL باعث میشه سرعت و بهرهوری بالاتر بره.
@DevTwitter | <Saber Qadimi/>
اما وقتی نیاز به کوئریهای پیچیده و بهینه داریم یا سرعت و عملکرد اولویت داره،
بهتره بریم سراغ Query Builder یا حتی raw SQL.
ORM واسه ساختارهای پیچیده و توسعه سریع عالیه، ولی اگه بخوایم کوئریهای خاص و سنگین بزنیم که با ORM کند میشن،
استفاده از Query Builder یا raw SQL باعث میشه سرعت و بهرهوری بالاتر بره.
@DevTwitter | <Saber Qadimi/>
👍40🤣16❤6🔥2
اگه میخواستید از چت های تلگرام یا کانالتون یک ابر کلمه درست کنید این ریپازیتوری رو قراردادم توی گیت هابم ، خیلی ساده و باحاله :)
https://github.com/alipyth/telegram-channel_post_word_cloud
@DevTwitter | <Mr.J/>
https://github.com/alipyth/telegram-channel_post_word_cloud
@DevTwitter | <Mr.J/>
🔥37👎10👍9
شرکت های بزرگی مثل Microsoft مخازن جالبی در GitHub دارند مثل Security-101 که مخصوص آموزش امنیت برای کاربرانی است که قصد دارند نکات اولیه امنیتی را یاد بگیرند!
https://github.com/microsoft/Security-101
@DevTwitter | <Vahid Nameni/>
https://github.com/microsoft/Security-101
@DevTwitter | <Vahid Nameni/>
👍31❤6
تستهای API واقعاً مهم و فوقالعاده تأثیرگذارند! یعنی نسبت به حجمشون، تأثیرشون تو رصد وضعیت سیستم خیلی زیاده. حالا برای طرفداران مارتین فاولر (فالور بازها! ) بزارید یه نقل قول ازش بگم: “تستهای API بخشی حیاتی از استراتژی تست شما هستند. آنها کمک میکنند تا اطمینان حاصل کنید که سرویسهای شما به درستی ارتباط برقرار میکنند و برنامه شما مطابق انتظار عمل میکند.”
اما من نکتهای که مایک کوهن (نویسنده و متخصص Agile) میگه رو خیلی مهمتر میدونم:
“وقتی درباره تست فکر میکنیم، معمولاً به unit_test ها فکر میکنیم. اما تستهای API میتوانند مشکلاتی را شناسایی کنند که تستهای واحد از دست میدهند، به ویژه آنهایی که مربوط به یکپارچگی و جریان دادهها هستند.”
حالا بریم سراغ ۹ مدل تست در APIها:
تست دودی (Smoke_Testing)
این تست بعد از اینکه توسعه API به پایان رسید، انجام میشه. هدفش اینه که ببینیم آیا APIها کار میکنند و چیزی خراب نشده.
چه چیزی باید در Smoke Testing تست بشه:
- - عملکرد اصلی: بررسی عملکردهای کلیدی مثل ورود به سیستم، ثبتنام و دسترسی به صفحات مهم.
- - پاسخگویی API: اطمینان از اینکه APIها به درستی پاسخ میدهند و وضعیتهای HTTP مناسب (مثل 200، 404، 500) رو برمیگردونند.
- - یکپارچگی سیستم: تأیید اینکه اجزای مختلف سیستم به درستی با هم کار میکنند.
- - نصب و راهاندازی: بررسی اینکه نرمافزار به درستی نصب و راهاندازی شده.
چه چیزی نباید در Smoke Testing تست بشه:
- - جزئیات داخلی: تست منطق داخلی و جزئیات پیادهسازی (مثل تستهای واحد).
- - سناریوهای پیچیده: تست سناریوهای پیچیده و خاص که نیاز به تستهای عمیقتر دارند.
- - عملکرد: تست بار و عملکرد (مثل Load Testing) که نیاز به آزمایشهای جداگانه دارند.
- - امنیت: تستهای امنیتی که نیاز به بررسیهای تخصصی دارند.
تست عملکردی (Functional_Testing)
در این نوع تست، یک برنامه تست بر اساس نیازهای عملکردی تهیه میشه و نتایج با آنچه انتظار میرفت مقایسه میشه.
تست یکپارچگی (Integration_Testing)
این تست چندین فراخوانی API رو با هم ترکیب میکنه تا تستهای انتها به انتها انجام بشه. ارتباطات بین سرویسها و انتقال دادهها مورد آزمایش قرار میگیره.
تست رگرسیون (Regression_Testing)
هدف این تست اینه که اطمینان حاصل کنیم که رفع اشکالات یا اضافه کردن ویژگیهای جدید، رفتارهای موجود APIها رو خراب نمیکنه.
تست بار (Load_Testing)
این تست عملکرد برنامهها رو با شبیهسازی بارهای مختلف ارزیابی میکنه. بعد از این تست، میتونیم ظرفیت برنامه رو محاسبه کنیم.
تست استرس (Stress_Test)
در این تست، به عمد بارهای سنگین به APIها وارد میکنیم و بررسی میکنیم که آیا APIها میتونند به طور عادی کار کنند یا نه.
تست امنیت (Security_Test)
این تست APIها رو در برابر همه تهدیدات خارجی ممکن آزمایش میکنه.
تست رابط کاربری (UI_Test)
این تست تعاملات رابط کاربری با APIها رو بررسی میکنه تا مطمئن بشیم که دادهها به درستی نمایش داده میشوند.
تست فاز (Fuzz_Test)
در این تست، دادههای نامعتبر یا غیرمنتظره به API وارد میشه و سعی میکنیم API رو خراب کنیم. به این ترتیب، نقاط ضعف API شناسایی میشن.
حالا که همه چیز رو میدونید، وقتشه که با قدرت به سمت تستهای API برید!
@DevTwitter | <Hossein Dadkhah/>
اما من نکتهای که مایک کوهن (نویسنده و متخصص Agile) میگه رو خیلی مهمتر میدونم:
“وقتی درباره تست فکر میکنیم، معمولاً به unit_test ها فکر میکنیم. اما تستهای API میتوانند مشکلاتی را شناسایی کنند که تستهای واحد از دست میدهند، به ویژه آنهایی که مربوط به یکپارچگی و جریان دادهها هستند.”
حالا بریم سراغ ۹ مدل تست در APIها:
تست دودی (Smoke_Testing)
این تست بعد از اینکه توسعه API به پایان رسید، انجام میشه. هدفش اینه که ببینیم آیا APIها کار میکنند و چیزی خراب نشده.
چه چیزی باید در Smoke Testing تست بشه:
- - عملکرد اصلی: بررسی عملکردهای کلیدی مثل ورود به سیستم، ثبتنام و دسترسی به صفحات مهم.
- - پاسخگویی API: اطمینان از اینکه APIها به درستی پاسخ میدهند و وضعیتهای HTTP مناسب (مثل 200، 404، 500) رو برمیگردونند.
- - یکپارچگی سیستم: تأیید اینکه اجزای مختلف سیستم به درستی با هم کار میکنند.
- - نصب و راهاندازی: بررسی اینکه نرمافزار به درستی نصب و راهاندازی شده.
چه چیزی نباید در Smoke Testing تست بشه:
- - جزئیات داخلی: تست منطق داخلی و جزئیات پیادهسازی (مثل تستهای واحد).
- - سناریوهای پیچیده: تست سناریوهای پیچیده و خاص که نیاز به تستهای عمیقتر دارند.
- - عملکرد: تست بار و عملکرد (مثل Load Testing) که نیاز به آزمایشهای جداگانه دارند.
- - امنیت: تستهای امنیتی که نیاز به بررسیهای تخصصی دارند.
تست عملکردی (Functional_Testing)
در این نوع تست، یک برنامه تست بر اساس نیازهای عملکردی تهیه میشه و نتایج با آنچه انتظار میرفت مقایسه میشه.
تست یکپارچگی (Integration_Testing)
این تست چندین فراخوانی API رو با هم ترکیب میکنه تا تستهای انتها به انتها انجام بشه. ارتباطات بین سرویسها و انتقال دادهها مورد آزمایش قرار میگیره.
تست رگرسیون (Regression_Testing)
هدف این تست اینه که اطمینان حاصل کنیم که رفع اشکالات یا اضافه کردن ویژگیهای جدید، رفتارهای موجود APIها رو خراب نمیکنه.
تست بار (Load_Testing)
این تست عملکرد برنامهها رو با شبیهسازی بارهای مختلف ارزیابی میکنه. بعد از این تست، میتونیم ظرفیت برنامه رو محاسبه کنیم.
تست استرس (Stress_Test)
در این تست، به عمد بارهای سنگین به APIها وارد میکنیم و بررسی میکنیم که آیا APIها میتونند به طور عادی کار کنند یا نه.
تست امنیت (Security_Test)
این تست APIها رو در برابر همه تهدیدات خارجی ممکن آزمایش میکنه.
تست رابط کاربری (UI_Test)
این تست تعاملات رابط کاربری با APIها رو بررسی میکنه تا مطمئن بشیم که دادهها به درستی نمایش داده میشوند.
تست فاز (Fuzz_Test)
در این تست، دادههای نامعتبر یا غیرمنتظره به API وارد میشه و سعی میکنیم API رو خراب کنیم. به این ترتیب، نقاط ضعف API شناسایی میشن.
حالا که همه چیز رو میدونید، وقتشه که با قدرت به سمت تستهای API برید!
@DevTwitter | <Hossein Dadkhah/>
👍35🔥6❤3👎2