Telegram Group & Telegram Channel
#سی_شارپ
#تست
#آزمایشگاه

یکی از ابزارهای تست ابزار Mock کردن تست هاست، ابزارهایی توی سی شارپ و زبان های برنامه نویسی وجود دارن که شما میتونید باهاشون مدل های آزمایشگاهی خودتون رو کمی به واقعیت نزدیک کنید و برای پروژه خودتون تست بنویسید.
اما آیا این تست ها 100% واقعی بودن و به واقعیت نزدیک بودن تست شمارو تضمین میکنن؟ خیر، آیا تا بحال بهش فکر کردید؟ چقدر فرق میکنن؟
ببینید توی تست های Mock چند تا اتفاق بد میوفته:
1.شما حتما باید یک فضای اضافی برای Mock کردن کلاس هاتون بسازید، این یعنی اینکه حتما مجبورید برای نوشتن Mock اینترفیس داشته باشید و حتما کلاس های اصلی پروژه تون درگیر داشتن اینترفیس هایی میشن که میتونستن هیچوقت وجود نداشته باشن. یعنی باید برنامه نویسی کنید.
از نظر من تست بالاترین لایه ی سیستم هست، معماری پروژه شما نباید بدونه شما دارید براش تست می نویسید، در نتیجه نباید کدهای لایه ی پایین اپلیکیشن خودتون رو درگیر کد های لایه بالاتر کنید، این یعنی پیچیدگی و پیچیدگی = مرگ
فرض رو بر این بگیرید که اصلا قرار نیست پروژه های سطح پایین درگیر خراب کاری هایی که شما سمت تست می کنید بشن.حالا چیکار میکنید؟
2.فرایندها به طور 100% واقعی تست نمیشن، مثلا وقتی شما یک سرور خارجی رو به صورت Rest صدا میزنید این سرور ممکنه خروجی xml یا json داشته باشه آیا همه ی فرایند های serialize و deserialize و post و get و ارتباط های شبکه ای شما هم با سرور مورد نظر تست میشه؟ Exception های اون سرور چطور؟ هیچ کدوم؟ پس این سرور mock فقط قراره یه سری داده رو بگیره و بفرسته؟ همون ورودی و خروجی های خودمون؟

اگر هنوز فکر میکنید دارم اغراق میکنم سر بزنید به لینک زیر تا ببینید چرا برنامه نویس ها نمیتونن یک کلاس HttpClient رو Mock کنند و دست به دامن تغییرات زیادی توی کدهاشون شدن:
https://stackoverflow.com/questions/36425008/mocking-httpclient-in-unit-tests

حالا اینارو گفتم که بعدش چه چیزی گفته باشم؟
ما توی شرکتمون ابزاری ایجاد کردیم به نام Laboratory و نام مدل های آزمایشگاهی اونو گذاشتیم Mockup کاری که این ابزار میکنه اینه که به صورت 100% فرایند تست Mock شمارو تضمین میکنه و به شکل یک سرور واقعی اما به صورت مجازی موقع تست های شما در پشت صحنه اجرا میشه و تمامی فرایند های پروژه شما از ابتدا تا انتها و حتی بعد از HttpClient ها و ... جایی که حتی Header ها رو میتونید برگردونید جایی که دقیقا یک پورت http گوش بزنگه تا httpClient شما بهش رکوئست بزنه تا به صورت واقعی درخواست های xml یا json یا ... رو به سرویس های شما برگردونه.
حالا دیگه نه نیازی دارید interface های اضافه بسازید، نه نیاز دارید که حتی یک خط اضافه توی لاجیک هاتون به خاطر Mock کردن پروژه بزنید اعم از ساختن interface ها یا حتی تغییرکد ها توی تست کیس ها تنها کاری که میکنید یه سری Resource میسازید تا در فرایند تست سرور به صورت مجازی لود بشه و داده هارو مجازی سازی کنه.

@csharptips



tg-me.com/CsharpTips/278
Create:
Last Update:

#سی_شارپ
#تست
#آزمایشگاه

یکی از ابزارهای تست ابزار Mock کردن تست هاست، ابزارهایی توی سی شارپ و زبان های برنامه نویسی وجود دارن که شما میتونید باهاشون مدل های آزمایشگاهی خودتون رو کمی به واقعیت نزدیک کنید و برای پروژه خودتون تست بنویسید.
اما آیا این تست ها 100% واقعی بودن و به واقعیت نزدیک بودن تست شمارو تضمین میکنن؟ خیر، آیا تا بحال بهش فکر کردید؟ چقدر فرق میکنن؟
ببینید توی تست های Mock چند تا اتفاق بد میوفته:
1.شما حتما باید یک فضای اضافی برای Mock کردن کلاس هاتون بسازید، این یعنی اینکه حتما مجبورید برای نوشتن Mock اینترفیس داشته باشید و حتما کلاس های اصلی پروژه تون درگیر داشتن اینترفیس هایی میشن که میتونستن هیچوقت وجود نداشته باشن. یعنی باید برنامه نویسی کنید.
از نظر من تست بالاترین لایه ی سیستم هست، معماری پروژه شما نباید بدونه شما دارید براش تست می نویسید، در نتیجه نباید کدهای لایه ی پایین اپلیکیشن خودتون رو درگیر کد های لایه بالاتر کنید، این یعنی پیچیدگی و پیچیدگی = مرگ
فرض رو بر این بگیرید که اصلا قرار نیست پروژه های سطح پایین درگیر خراب کاری هایی که شما سمت تست می کنید بشن.حالا چیکار میکنید؟
2.فرایندها به طور 100% واقعی تست نمیشن، مثلا وقتی شما یک سرور خارجی رو به صورت Rest صدا میزنید این سرور ممکنه خروجی xml یا json داشته باشه آیا همه ی فرایند های serialize و deserialize و post و get و ارتباط های شبکه ای شما هم با سرور مورد نظر تست میشه؟ Exception های اون سرور چطور؟ هیچ کدوم؟ پس این سرور mock فقط قراره یه سری داده رو بگیره و بفرسته؟ همون ورودی و خروجی های خودمون؟

اگر هنوز فکر میکنید دارم اغراق میکنم سر بزنید به لینک زیر تا ببینید چرا برنامه نویس ها نمیتونن یک کلاس HttpClient رو Mock کنند و دست به دامن تغییرات زیادی توی کدهاشون شدن:
https://stackoverflow.com/questions/36425008/mocking-httpclient-in-unit-tests

حالا اینارو گفتم که بعدش چه چیزی گفته باشم؟
ما توی شرکتمون ابزاری ایجاد کردیم به نام Laboratory و نام مدل های آزمایشگاهی اونو گذاشتیم Mockup کاری که این ابزار میکنه اینه که به صورت 100% فرایند تست Mock شمارو تضمین میکنه و به شکل یک سرور واقعی اما به صورت مجازی موقع تست های شما در پشت صحنه اجرا میشه و تمامی فرایند های پروژه شما از ابتدا تا انتها و حتی بعد از HttpClient ها و ... جایی که حتی Header ها رو میتونید برگردونید جایی که دقیقا یک پورت http گوش بزنگه تا httpClient شما بهش رکوئست بزنه تا به صورت واقعی درخواست های xml یا json یا ... رو به سرویس های شما برگردونه.
حالا دیگه نه نیازی دارید interface های اضافه بسازید، نه نیاز دارید که حتی یک خط اضافه توی لاجیک هاتون به خاطر Mock کردن پروژه بزنید اعم از ساختن interface ها یا حتی تغییرکد ها توی تست کیس ها تنها کاری که میکنید یه سری Resource میسازید تا در فرایند تست سرور به صورت مجازی لود بشه و داده هارو مجازی سازی کنه.

@csharptips

BY C# Programming Guide




Share with your friend now:
tg-me.com/CsharpTips/278

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

Export WhatsApp stickers to Telegram on iPhone

You can’t. What you can do, though, is use WhatsApp’s and Telegram’s web platforms to transfer stickers. It’s easy, but might take a while.Open WhatsApp in your browser, find a sticker you like in a chat, and right-click on it to save it as an image. The file won’t be a picture, though—it’s a webpage and will have a .webp extension. Don’t be scared, this is the way. Repeat this step to save as many stickers as you want.Then, open Telegram in your browser and go into your Saved messages chat. Just as you’d share a file with a friend, click the Share file button on the bottom left of the chat window (it looks like a dog-eared paper), and select the .webp files you downloaded. Click Open and you’ll see your stickers in your Saved messages chat. This is now your sticker depository. To use them, forward them as you would a message from one chat to the other: by clicking or long-pressing on the sticker, and then choosing Forward.

The STAR Market, as is implied by the name, is heavily geared toward smaller innovative tech companies, in particular those engaged in strategically important fields, such as biopharmaceuticals, 5G technology, semiconductors, and new energy. The STAR Market currently has 340 listed securities. The STAR Market is seen as important for China’s high-tech and emerging industries, providing a space for smaller companies to raise capital in China. This is especially significant for technology companies that may be viewed with suspicion on overseas stock exchanges.

telegram from ye


Telegram C# Programming Guide
FROM USA