Forwarded from Go Casts 🚀
دوستان سلام، در مورد تست نویسی در golang یه سری مقاله خیلی خوب بهتون معرفی میکنم، با خوندن این سری مقاله، عملا هر آنچه که در مورد تست نویسی در گولنگ باید بدونید رو یاد میگیرد، بقیه ش دیگه میشه تمرین و تجربه در کار...
Testing in Go: First Principles
https://ieftimov.com/post/testing-in-go-first-principles/
Testing in Go: Failing Tests
https://ieftimov.com/post/testing-in-go-failing-tests/
Testing in Go: Writing Practical Failure Messages
https://ieftimov.com/post/testing-in-go-writing-practical-failure-messages/
Testing in Go: go test
https://ieftimov.com/post/testing-in-go-go-test/
Testing in Go: Table-Driven Tests
https://ieftimov.com/post/testing-in-go-table-driven-tests/
Testing in Go: Subtests
https://ieftimov.com/post/testing-in-go-subtests/
Testing in Go: Fixtures
https://ieftimov.com/post/testing-in-go-fixtures/
Testing in Go: Dependency Injection
https://ieftimov.com/post/testing-in-go-dependency-injection/
Testing in Go: Test Doubles by Example
https://ieftimov.com/post/testing-in-go-test-doubles-by-example/
Testing in Go: Golden Files
https://ieftimov.com/post/testing-in-go-golden-files/
Testing in Go: Clean Tests Using t.Cleanup
https://ieftimov.com/post/testing-in-go-clean-tests-using-t-cleanup/
Testing in Go: HTTP Servers
https://ieftimov.com/post/testing-in-go-testing-http-servers/
Testing in Go: WebSockets
https://ieftimov.com/post/testing-in-go-websockets/
Testing in Go: Stop Leaking Files
https://ieftimov.com/post/testing-in-go-stop-leaking-files/
#golang #test #unit_test #integration_test #tdd
@gocasts
Testing in Go: First Principles
https://ieftimov.com/post/testing-in-go-first-principles/
Testing in Go: Failing Tests
https://ieftimov.com/post/testing-in-go-failing-tests/
Testing in Go: Writing Practical Failure Messages
https://ieftimov.com/post/testing-in-go-writing-practical-failure-messages/
Testing in Go: go test
https://ieftimov.com/post/testing-in-go-go-test/
Testing in Go: Table-Driven Tests
https://ieftimov.com/post/testing-in-go-table-driven-tests/
Testing in Go: Subtests
https://ieftimov.com/post/testing-in-go-subtests/
Testing in Go: Fixtures
https://ieftimov.com/post/testing-in-go-fixtures/
Testing in Go: Dependency Injection
https://ieftimov.com/post/testing-in-go-dependency-injection/
Testing in Go: Test Doubles by Example
https://ieftimov.com/post/testing-in-go-test-doubles-by-example/
Testing in Go: Golden Files
https://ieftimov.com/post/testing-in-go-golden-files/
Testing in Go: Clean Tests Using t.Cleanup
https://ieftimov.com/post/testing-in-go-clean-tests-using-t-cleanup/
Testing in Go: HTTP Servers
https://ieftimov.com/post/testing-in-go-testing-http-servers/
Testing in Go: WebSockets
https://ieftimov.com/post/testing-in-go-websockets/
Testing in Go: Stop Leaking Files
https://ieftimov.com/post/testing-in-go-stop-leaking-files/
#golang #test #unit_test #integration_test #tdd
@gocasts
Ilija Eftimov 👨🚀
Testing in Go: First Principles
If you have any programming experience, whether that’s as a student or a professional, there’s a good chance you have heard about testing.
Forwarded from Go Casts 🚀
اساسا تست نویسی مقوله ای بسیار ساده، بسیار لذت بخش و در عین حال بسیار کارآمد هست.
دقت کنید وقتی صحبت از تست نویسی میشه منظور tdd نیست، tdd صرفا یک approach هست برای تست نوشتن، شما میتونید این روش رو استفاده کنید و یا نکنید
تست نویسی انواع مختلفی داره:
unit test
integration test
end to end test
که هر کدوم ارزش و جایگاه خودشونو دارن
تست نویسی واسه وقتایی که حوصله development ندارید مثل کافئین میمونه 😃
و وقتی ارزش خودشو نشون میده که لازم باشه یه چیزی رو refactor کنید، مخصوصا اگه refactor بزرگ باشه خیلی ریسک انجامش بالا میره، اگه از قبل تست های قابل اطمینان و جامعی براش نوشته باشید دیگه خیالتون میتونه تا حدود خیلی زیادی بابت refactor کردن راحت باشه
#golang #test #unit_test #integration_test #tdd
@gocasts
دقت کنید وقتی صحبت از تست نویسی میشه منظور tdd نیست، tdd صرفا یک approach هست برای تست نوشتن، شما میتونید این روش رو استفاده کنید و یا نکنید
تست نویسی انواع مختلفی داره:
unit test
integration test
end to end test
که هر کدوم ارزش و جایگاه خودشونو دارن
تست نویسی واسه وقتایی که حوصله development ندارید مثل کافئین میمونه 😃
و وقتی ارزش خودشو نشون میده که لازم باشه یه چیزی رو refactor کنید، مخصوصا اگه refactor بزرگ باشه خیلی ریسک انجامش بالا میره، اگه از قبل تست های قابل اطمینان و جامعی براش نوشته باشید دیگه خیالتون میتونه تا حدود خیلی زیادی بابت refactor کردن راحت باشه
#golang #test #unit_test #integration_test #tdd
@gocasts
The courses are offered by University of Helsinki's Department of Computer Science. No prior knowledge is required.
درسهای رشته کامپیوتر دانشگاه هلسینکی فنلاند که به رایگان در این سایت قرارداده شدهاند و شامل حوزههای مختلفی میشود. از امنیت و هوش مصنوعی گرفته تا tdd و کلی مبحث مرتبط به devops
#course #finland #free #mooc #programming #book #online #AI #java #cyber #security #docker #data #tdd #test #haskell
@pythony
https://www.mooc.fi
Selected Courses:
https://www.elementsofai.com
https://fullstackopen.com/en
https://www.elementsofai.com
https://cybersecuritybase.mooc.fi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
درسهای رشته کامپیوتر دانشگاه هلسینکی فنلاند که به رایگان در این سایت قرارداده شدهاند و شامل حوزههای مختلفی میشود. از امنیت و هوش مصنوعی گرفته تا tdd و کلی مبحث مرتبط به devops
#course #finland #free #mooc #programming #book #online #AI #java #cyber #security #docker #data #tdd #test #haskell
@pythony
https://www.mooc.fi
Selected Courses:
https://www.elementsofai.com
https://fullstackopen.com/en
https://www.elementsofai.com
https://cybersecuritybase.mooc.fi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍7🔥2
Learn Go with test-driven development
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥8
Massimo Dev
🚀 تستنویسی در پروژههای بزرگ: بهترین روشها و یه مثال واقعی 🚀
تو دنیای پرسرعت توسعه نرمافزار، تضمین کیفیت کد و اطمینان از عملکرد درست خیلی مهمه. روش تستنویسی قبل از کدنویسی (TDD) ثابت کرده که میتونه یه تغییر بزرگ ایجاد کنه، مخصوصاً تو پروژههای بزرگ. اینجا چندتا از بهترین روشها برای اجرای TDD تو پروژههای بزرگ رو با یه مثال واقعی براتون میگم.
✅ 1. طراحی و معماری ماژولار
ما تو شرکت مون ابتدا سعی کردیم یه اپلیکیشن مونولیتیک رو به مایکروسرویسها تقسیم کردیم. این کار نوشتن تستهای مستقل برای هر سرویس رو آسونتر کرد و نگهداری و مقیاسپذیری رو بهتر کرد.
✅ 2. پایپلاین تست اتوماتیک
ما TDD رو با استفاده از Jenkins و GitHub Actions تو CI/CDمون ادغام کردیم. هر کامیت یه سری تست رو اجرا میکنه و بلافاصله بازخورد میده و سلامت کد رو حفظ میکنه.
✅ 3. تست کاوریج (پوشش تست) و کیفیت
به جای دنبال کردن پوشش ۱۰۰٪، روی مسیرهای بحرانی تمرکز کردیم. مثلاً، تست احراز هویت کاربر به ما کمک کرد که مشکلات امنیتی رو زودتر پیدا و رفع کنیم
✅ 4. انواع و سطوح تست
- تستهای واحد یا Unit Tests: اعتبارسنجی اجزای فردی.
- تستهای یکپارچهسازی یا Integration Tests: اطمینان از عملکرد درست اجزا با هم.
- تستهای End-to-End: تست کل ورک فلوهای اپلیکیشن.
تو پروژه، Unit Testing برای پردازش پرداختها با تستهای End-to-End که تراکنشهای واقعی کاربران رو شبیهسازی میکرد، اجرا شد تا عملکرد قویای داشته باشیم.
✅ 5. نگهداری تستها
مرور و بازسازی منظم تستها به ما کمک کرد تا مجموعه تستهامون رو مرتبط و کارآمد نگه داریم و بدهی فنی رو کاهش بدیم.
✅ 6. کد ریویو
بررسی دقیق کدها، شامل تستها، فرهنگ ارتقاء کیفیت و مسئولیت مشترک بین اعضای تیم رو تقویت کرد.
✅ 7. ماکینگ و Stubbing
ما از ماکها (Mocks) برای شبیهسازی درگاههای پرداخت خارجی استفاده کردیم تا تستهامون بدون وابستگی به سرویسهای خارجی سریع و قابل اعتماد باشه.
✅ 8. تستهای مقیاسپذیری و عملکرد یا Scalability & Performance Testing
قبل از نسخههای اصلی، بارگذاری سرویسهامون رو تست کردیم تا گلوگاهها رو شناسایی کنیم و تو دورههای ترافیک بالا، عملکرد روان داشته باشیم.
✅ 9. مستندسازی و آموزش
مستندات جامع و جلسات آموزشی منظم در مورد بهترین روشهای TDD تیممون رو هماهنگ و مچ تر نگه داشت.
✅ 10. بازخورد و بهبود
جلسات رترو دو هفتهای یه فضایی رو برای بحث در مورد چالشها و بهبودهای TDD فراهم کرد و رویکردمون رو به طور مداوم بهبود داد.
با ادغام این روشها، فرآیند توسعهمون رو متحول کردیم و نتیجهش نرمافزار با کیفیتتر و نسخههای قابل پیشبینیتر شد. TDD فقط یه روش نیست، یه ذهنیته که وقتی کامل پذیرفته بشه، میتونه بهبودهای قابل توجهی هم تو فرآیند توسعه و هم محصول نهایی ایجاد کنه.
#توسعه_نرمافزار #TDD #تضمین_کیفیت #DevOps #مایکروسرویسها #اجایل
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 💸 Donate | 💋 Boost
🚀 تستنویسی در پروژههای بزرگ: بهترین روشها و یه مثال واقعی 🚀
تو دنیای پرسرعت توسعه نرمافزار، تضمین کیفیت کد و اطمینان از عملکرد درست خیلی مهمه. روش تستنویسی قبل از کدنویسی (TDD) ثابت کرده که میتونه یه تغییر بزرگ ایجاد کنه، مخصوصاً تو پروژههای بزرگ. اینجا چندتا از بهترین روشها برای اجرای TDD تو پروژههای بزرگ رو با یه مثال واقعی براتون میگم.
✅ 1. طراحی و معماری ماژولار
ما تو شرکت مون ابتدا سعی کردیم یه اپلیکیشن مونولیتیک رو به مایکروسرویسها تقسیم کردیم. این کار نوشتن تستهای مستقل برای هر سرویس رو آسونتر کرد و نگهداری و مقیاسپذیری رو بهتر کرد.
✅ 2. پایپلاین تست اتوماتیک
ما TDD رو با استفاده از Jenkins و GitHub Actions تو CI/CDمون ادغام کردیم. هر کامیت یه سری تست رو اجرا میکنه و بلافاصله بازخورد میده و سلامت کد رو حفظ میکنه.
✅ 3. تست کاوریج (پوشش تست) و کیفیت
به جای دنبال کردن پوشش ۱۰۰٪، روی مسیرهای بحرانی تمرکز کردیم. مثلاً، تست احراز هویت کاربر به ما کمک کرد که مشکلات امنیتی رو زودتر پیدا و رفع کنیم
✅ 4. انواع و سطوح تست
- تستهای واحد یا Unit Tests: اعتبارسنجی اجزای فردی.
- تستهای یکپارچهسازی یا Integration Tests: اطمینان از عملکرد درست اجزا با هم.
- تستهای End-to-End: تست کل ورک فلوهای اپلیکیشن.
تو پروژه، Unit Testing برای پردازش پرداختها با تستهای End-to-End که تراکنشهای واقعی کاربران رو شبیهسازی میکرد، اجرا شد تا عملکرد قویای داشته باشیم.
✅ 5. نگهداری تستها
مرور و بازسازی منظم تستها به ما کمک کرد تا مجموعه تستهامون رو مرتبط و کارآمد نگه داریم و بدهی فنی رو کاهش بدیم.
✅ 6. کد ریویو
بررسی دقیق کدها، شامل تستها، فرهنگ ارتقاء کیفیت و مسئولیت مشترک بین اعضای تیم رو تقویت کرد.
✅ 7. ماکینگ و Stubbing
ما از ماکها (Mocks) برای شبیهسازی درگاههای پرداخت خارجی استفاده کردیم تا تستهامون بدون وابستگی به سرویسهای خارجی سریع و قابل اعتماد باشه.
✅ 8. تستهای مقیاسپذیری و عملکرد یا Scalability & Performance Testing
قبل از نسخههای اصلی، بارگذاری سرویسهامون رو تست کردیم تا گلوگاهها رو شناسایی کنیم و تو دورههای ترافیک بالا، عملکرد روان داشته باشیم.
✅ 9. مستندسازی و آموزش
مستندات جامع و جلسات آموزشی منظم در مورد بهترین روشهای TDD تیممون رو هماهنگ و مچ تر نگه داشت.
✅ 10. بازخورد و بهبود
جلسات رترو دو هفتهای یه فضایی رو برای بحث در مورد چالشها و بهبودهای TDD فراهم کرد و رویکردمون رو به طور مداوم بهبود داد.
با ادغام این روشها، فرآیند توسعهمون رو متحول کردیم و نتیجهش نرمافزار با کیفیتتر و نسخههای قابل پیشبینیتر شد. TDD فقط یه روش نیست، یه ذهنیته که وقتی کامل پذیرفته بشه، میتونه بهبودهای قابل توجهی هم تو فرآیند توسعه و هم محصول نهایی ایجاد کنه.
#توسعه_نرمافزار #TDD #تضمین_کیفیت #DevOps #مایکروسرویسها #اجایل
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 💸 Donate | 💋 Boost
👍3🔥1