🔵 عنوان مقاله
Subtest Grouping in Go
🟢 خلاصه مقاله:
این مقاله از Golang Weekly توضیح میدهد چگونه با استفاده از T.Run در بسته testing میتوان زیرآزمونها را گروهبندی کرد تا تستهای بزرگ و Table-Driven خواناتر، قابل نگهداریتر و قابل فیلترشدن شوند. با نامگذاری سلسلهمراتبی مثل "Parser/Valid" یا "Auth/Admin/Permissions" میتوان با go test -run فقط یک گروه یا یک مورد خاص را اجرا کرد و همان الگو برای Benchmarks با B.Run نیز کاربرد دارد. مزیت دیگر این الگو، مدیریت سادهتر Setup/Teardown با تکیه بر Closure و t.Cleanup و همچنین امکان موازیسازی امن با t.Parallel است. مقاله بر نامهای شفاف، پرهیز از وضعیت مشترک قابل تغییر، گروههای منسجم، و استفاده از t.Helper برای سادهسازی تأکید میکند؛ ضمن اینکه خروجی ساختیافته تستها با -json و ابزارها/IDEها بهخوبی یکپارچه میشود و عیبیابی و سرعت توسعه را بهبود میدهد.
#Go #Golang #Testing #Subtests #GoTesting #GolangWeekly #SoftwareTesting
🟣لینک مقاله:
https://golangweekly.com/link/175983/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Subtest Grouping in Go
🟢 خلاصه مقاله:
این مقاله از Golang Weekly توضیح میدهد چگونه با استفاده از T.Run در بسته testing میتوان زیرآزمونها را گروهبندی کرد تا تستهای بزرگ و Table-Driven خواناتر، قابل نگهداریتر و قابل فیلترشدن شوند. با نامگذاری سلسلهمراتبی مثل "Parser/Valid" یا "Auth/Admin/Permissions" میتوان با go test -run فقط یک گروه یا یک مورد خاص را اجرا کرد و همان الگو برای Benchmarks با B.Run نیز کاربرد دارد. مزیت دیگر این الگو، مدیریت سادهتر Setup/Teardown با تکیه بر Closure و t.Cleanup و همچنین امکان موازیسازی امن با t.Parallel است. مقاله بر نامهای شفاف، پرهیز از وضعیت مشترک قابل تغییر، گروههای منسجم، و استفاده از t.Helper برای سادهسازی تأکید میکند؛ ضمن اینکه خروجی ساختیافته تستها با -json و ابزارها/IDEها بهخوبی یکپارچه میشود و عیبیابی و سرعت توسعه را بهبود میدهد.
#Go #Golang #Testing #Subtests #GoTesting #GolangWeekly #SoftwareTesting
🟣لینک مقاله:
https://golangweekly.com/link/175983/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Redowan's Reflections
Subtest grouping in Go
Go has support for subtests starting from version 1.7. With t.Run, you can nest tests,
assign names to cases, and let the runner execute work in parallel by calling t.Parallel
from subtests if needed.
For small suites, a flat set of t.Run calls is usually…
assign names to cases, and let the runner execute work in parallel by calling t.Parallel
from subtests if needed.
For small suites, a flat set of t.Run calls is usually…
👍1
🔵 عنوان مقاله
Durable Background Execution with Go and SQLite
🟢 خلاصه مقاله:
این مقاله نشان میدهد چگونه میتوان با ترکیب Go و SQLite یک سیستم اجرای پسزمینهای ساخت که در برابر کرش و راهاندازی مجدد مقاوم است، بدون نیاز به سرویسهای خارجی. الگوی اصلی شامل صف کاری مبتنی بر SQLite با ستونهایی برای وضعیت، شمارش تلاشها و زمان اجاره (lease) است؛ کارگرها کار را در تراکنش میگیرند، با زمان اجاره کوتاه اجرا میکنند، و نتیجه را ثبت میکنند تا در صورت کرش، کار دوباره قابل بازیابی باشد. با فعالسازی WAL، شاخصگذاری درست، backoff نمایی و الزام به idempotency، معمولاً به تضمین at-least-once میرسیم. کنترل همزمانی با worker pool، خاموشسازی تمیز با سیگنالها و context، و رصد شاخصهایی مانند نرخ خطا و زمان پردازش از ملزومات عملیاتی است. برای آزمودن این رفتارها، استفاده از Subtest Grouping in Go (با ایدههایی از Dima Kotik و Redowan Delowar) کمک میکند سناریوها بهصورت گروهی، خوانا و قابل موازیسازی بررسی شوند.
#Go #SQLite #BackgroundJobs #Durability #GoTesting #Subtests #Concurrency #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175982/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Durable Background Execution with Go and SQLite
🟢 خلاصه مقاله:
این مقاله نشان میدهد چگونه میتوان با ترکیب Go و SQLite یک سیستم اجرای پسزمینهای ساخت که در برابر کرش و راهاندازی مجدد مقاوم است، بدون نیاز به سرویسهای خارجی. الگوی اصلی شامل صف کاری مبتنی بر SQLite با ستونهایی برای وضعیت، شمارش تلاشها و زمان اجاره (lease) است؛ کارگرها کار را در تراکنش میگیرند، با زمان اجاره کوتاه اجرا میکنند، و نتیجه را ثبت میکنند تا در صورت کرش، کار دوباره قابل بازیابی باشد. با فعالسازی WAL، شاخصگذاری درست، backoff نمایی و الزام به idempotency، معمولاً به تضمین at-least-once میرسیم. کنترل همزمانی با worker pool، خاموشسازی تمیز با سیگنالها و context، و رصد شاخصهایی مانند نرخ خطا و زمان پردازش از ملزومات عملیاتی است. برای آزمودن این رفتارها، استفاده از Subtest Grouping in Go (با ایدههایی از Dima Kotik و Redowan Delowar) کمک میکند سناریوها بهصورت گروهی، خوانا و قابل موازیسازی بررسی شوند.
#Go #SQLite #BackgroundJobs #Durability #GoTesting #Subtests #Concurrency #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175982/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
threedots.tech
Durable Background Execution with Go and SQLite
A DNS outage is like a flash flood. It hits you and disappears as if it were never there. “It was probably the DNS” became a meme. But, half the time, we do not know the exact cause. The outage is seldom long enough to diagnose, sequester, replicate, simulate…
👍1
🔵 عنوان مقاله
Getting Started with Fuzzing in Go
🟢 خلاصه مقاله:
این راهنمای رسمی از Go Docs یک شروع عملی و بهروز برای افزودن fuzzing به جریان تستهای Go است. آموزش نشان میدهد چگونه یک تابع FuzzXxx با testing.F بنویسید، ورودیهای اولیه را با f.Add اضافه کنید، و با go test -fuzz اجرا بگیرید (در صورت نیاز با -fuzztime). هنگام کشف خطا یا panic، ورودیِ کوچکسازیشده بهطور خودکار در testdata/fuzz ذخیره میشود تا بتوانید آن را بهصورت قطعی بازتولید، عیبیابی و بهعنوان تست رگرسیون نگهداری کنید. همچنین بهترینروشها مانند تعیین حدود منابع، اجتناب از نادترمینیزم، تعریف خاصیت/قاعده مورد انتظار، هدفگیری کدهای parser/decoder و ادغام در CI را پوشش میدهد. نتیجه اینکه افزودن fuzzing با ابزارهای داخلی Go ساده است و این راهنما مراحل، دستورات و نمونهکد لازم را در اختیارتان میگذارد.
#Go #Fuzzing #GoDocs #SoftwareTesting #Security #GoTesting #PropertyBasedTesting #CI
🟣لینک مقاله:
https://golangweekly.com/link/177186/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Getting Started with Fuzzing in Go
🟢 خلاصه مقاله:
این راهنمای رسمی از Go Docs یک شروع عملی و بهروز برای افزودن fuzzing به جریان تستهای Go است. آموزش نشان میدهد چگونه یک تابع FuzzXxx با testing.F بنویسید، ورودیهای اولیه را با f.Add اضافه کنید، و با go test -fuzz اجرا بگیرید (در صورت نیاز با -fuzztime). هنگام کشف خطا یا panic، ورودیِ کوچکسازیشده بهطور خودکار در testdata/fuzz ذخیره میشود تا بتوانید آن را بهصورت قطعی بازتولید، عیبیابی و بهعنوان تست رگرسیون نگهداری کنید. همچنین بهترینروشها مانند تعیین حدود منابع، اجتناب از نادترمینیزم، تعریف خاصیت/قاعده مورد انتظار، هدفگیری کدهای parser/decoder و ادغام در CI را پوشش میدهد. نتیجه اینکه افزودن fuzzing با ابزارهای داخلی Go ساده است و این راهنما مراحل، دستورات و نمونهکد لازم را در اختیارتان میگذارد.
#Go #Fuzzing #GoDocs #SoftwareTesting #Security #GoTesting #PropertyBasedTesting #CI
🟣لینک مقاله:
https://golangweekly.com/link/177186/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Tutorial: Getting started with fuzzing - The Go Programming Language
❤1👍1🔥1