<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات برنامه نویس</title>
        <link>https://virgool.io/barnamenevis/feed</link>
        <description>انتشار مطالب مرتبط با برنامه نویسی و کد نویسی با هر زبان و هر تکنولوژی</description>
        <language>fa</language>
        <pubDate>2026-06-16 06:44:22</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/qwarmqnfompk/58mp6u.png</url>
            <title>برنامه نویس</title>
            <link>https://virgool.io/barnamenevis</link>
        </image>

                    <item>
                <title>High Availability یا HA چیست؟</title>
                <link>https://virgool.io/barnamenevis/high-availability-%DB%8C%D8%A7-ha-%DA%86%DB%8C%D8%B3%D8%AA-vf7axfyxp6il</link>
                <description>HAعبارت High Availability یا به اختصار HA به معنای تلاش سرویس دهنده ها برای دسترسی مستمر به خدمات و سرویسها و همچنین بیشترین زمان UpTime برای آنها می باشد.ارائه دهندگان سرویس همیشه به دنبال راهکاری هستند که بتوانند همیشه در دسترس کاربران باشند یا به اصطلاح ثبات در سرویس دهی داشته باشند و 100% نیاز آنان را پاسخ دهند ولی از طرفی به هر دلیل احتمال بروز خطا و ایجاد مشکل برای سرویس ها یا سرورهای ارائه دهنده آن سرویسها اجتناب ناپذیر است و در عمل هیچگاه امکان رسیدن به آمار 100% در دسترس بودن وجود ندارد.همین عامل باعث استقبال شدیدی از راهکار HA و تلاش برای دسترسی مستمر و بیشتر به سرورها و سرویسها شد.نکته مهم این است که با توجه به پیچیده بودن و هزینه بر بودن راهکارهای HA تنها در برنامه های حساس و حیاتی از آن استفاده می شود.با استفاده از HA، از به جود آمدن نقطه‌ی شکست یا SPOF (single point of failure) جلوگیری می‌شود.SPOF به معنی بخشی از ساختار ارائه خدمت است که هیچ جایگزینی ندارد و اگر از دسترس خارج شود، سرویس دهنده قادر به ارائه خدمت نمی باشد.High Availabilityبیان بسیار ساده مفهوم HA به این صورت است که در لحظه به وجود آمدن بحران و از کار افتادن سرویس اصلی،بدون اینکه کاربر متوجه شود از سرویس جایگزین استفاده شود و سرویس دهی متوقف نشود،از اینرو نیاز است که حداقل دو نسخه از سرویس آماده خدمت باشند.پیاده سازی ساختار HA به دو صورت قابل انجام است:1 - تکنیک Active/Active:Active/Active دراینروشکهبهنوعیLoadBalancerمحسوبمیشودتمامسرویسدهندههافعالمیباشند.کلیهدرخواستهایکاربرانبهیکسرورواسطارسالشدهوازطریقآنسروردرخواستهابهصورتهمزمانبینتمامسرویسدهندههاتقسیممیشود،ازمزایایاینروشایناستکهترافیکوبارزیادیبرروییکسرورقرارنمیگیردودرخواستهابینتمامسرورهاتقسیممیشود.ازدیگرمزایایاینروشایناستکهدرصورتازکارافتادنیکسرویسدهندهدرخواستهابهسرویسدهندههایدیگرارسالمیشودوفرایندسرویسدهیمتوقفنمیشود. 2 - تکنیک Active/Passive:Active/Passiveدر این روش همه سرویس دهنده ها فعال نمی باشند و درخواستها فقط برای سرویس دهنده های فعال ارسال می شود و فقط زمانی که اختلالی در سرویس دهنده های فعال به وجود آید و متوقف شوند سرویس دهنده جایگزین، ادامه عملیات سرویس دهی را بر عهده می گیرد.معمولا سرورهای Passive منابع ضعیفتری نسبت به سرورهای Active دارند و به همین دلیل پس از وقوع اشکال در سرورهای Active می بایست به سرعت نسبت به رفع اشکال اقدام نمود.پیاده سازی و استفاده از قابلیت های HA به منظور در دسترس بودن مستمر سرویسها در سطوح مختلفی قابل انجام است:در سطح سخت افزار(Hardware):برای پیاده سازی HA در لایه سخت افزار راهکارهای متفاوتی وجود دارد از جمله استفاده از قابلیت ذخیره سازی اطلاعات بر روی چندین دیسک و مدیریت آنها با Raid Controller.همچنین قرار دادن تمام سرویسها بر روی چند سخت افزار جداگانه تا در زمان از کار افتادن احتمالی یکی از سخت افزارها دیگر سخت افزارها جایگزین شوند و سرویس دهی به صورت مستمر ادامه پیدا کند.در سطح ماشین مجازی(VM):به طور کلی یکی از دلایلِ مهم گرایش به سمت زیرساخت های مجازی، وجود امکانات قدرتمند در زمینه HA در حوزه ماشین های مجازی می باشد که می توان با انجام تنظیمات VSPHERE HA در VCENTER به این امکانات دسترسی داشت.در زیر ساخت ماشین های مجازی، تکنیک های HA در زمینه های زیر می تواند از خطاها جلوگیری کند:- خرابی یک یا چند سرور فیزیکی که میزبان ماشین های مجازی هستند.- ایجاد خطا در سیستم عامل یک ماشین مجازی.- ایجاد مشکل برای یک سرویس خاص مربوط به یک اپلیکیشن خاص.- به وجود آمدن مشکل در سمت ذخیره ساز (Storage).- ایجاد مشکل سخت افزاری قسمتی از قطعات سرور فیزیکی که میزبان ماشین مجازی است.در سطح سیستم عامل(OS):در سطح سیستم عامل برای برقراری قابلیت Redundant در راستای اجرای زیر ساخت HA نیاز به نصب ابزارها و برنامه های جانبی می باشد.پس از نصب ابزارهای جانبی با ارسال بسته ها به صورت مستمر سیتم عامل بررسی می شود تا در صورت به وجود آمدن مشکل، دیگری بتواند ادامه فرایند را مدیریت کند.در سطح پایگاه داده(DB):برای این منظور از قابلیت Replication دیتابیس ها استفاده می‌شود تا اطلاعات در چندین دیتابیس همزمان کپی شود تا در صورت از کار افتادن یک دیتابیس، اطلاعات از دیتابیس دیگر قابل دسترسی باشد.در سطح اپلیکیشن(Application):در سطح اپلیکیشن نیز می توان با ایجاد Redundant، چندین سرور اپلیکیشن را به صورت فیزیکی و یا با قابلیت Docker Base راه اندازی کرد تا در مواقع بحران بتوانند جایگزین یکدیگر شوند.در این پست وارد جزئیات نشده و سعی شد که مطالب به صورت تیتروار و خلاصه تنها برای آشنایی با مفاهیم و یک درک کلی از تکنیک های HA برای مطالعه قرار داده شود.</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Sat, 14 May 2022 15:57:25 +0430</pubDate>
            </item>
                    <item>
                <title>تست های غیر عملکردی نرم افزار (Non-Functional Test)</title>
                <link>https://virgool.io/barnamenevis/%D8%AA%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D8%BA%DB%8C%D8%B1-%D8%B9%D9%85%D9%84%DA%A9%D8%B1%D8%AF%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1non-functional-test-mskvdiw03yd0</link>
                <description>انواع تست های نرم افزار: طبقه بندی تست ها در حوزه نرم افزار در کتابها و مراجع مختلف به صورت کاملا متفاوت بیان شده است.در اینجا ما تنها به دو نوع دسته بندی عملکردی و غیر عملکردی تستها می پردازیم. در تست عملکردی نرم افزار، کاربر نهایی، کارکرد و عملکرد برنامه را جهت اطمینان از صحت رفتار آن بررسی می کند.بررسی و توضیحات کامل تست عملکردی نرم افزار در یک مطلب جداگانه بیان می شود و در این قسمت فقط به بیان توضیحات در مورد تست غیرعملکردی پرداخته می شود.تست غیر عملکردی به عنوان یک نوع آزمایش نرم افزاری برای بررسی جنبه های غیر عملکردی برنامه همچون performance usability، reliability و غیره به کار می رود.به عبارت دیگر این تست برای بررسی آمادگی یک سیستم در موارد غیر کارکردی  همچون امنیت و مقیاس پذیری و در دسترس بودن و... طراحی شده است که هرگز با آزمایش عملکردی برطرف نمی شوند.تست غیر کارکردی به همان اندازه تست عملکردی مهم است و رضایت مشتری را تحت تأثیر قرار می دهد.یکی از ویژگی های تست غیر عملکردی این است که باید قابل اندازه گیری باشد ، بنابراین جایی برای توصیف ذهنی مانند خوب ، بهتر ، بهترین و غیره وجود ندارد.انواع تست غیرعملکردیانواع تست غیر عملکردیلیست فوق کامل نیست زیرا بیش از 100 نوع تست وجود دارد و تنها متداول ترین انواع تستهای غیر عملکردی آورده شده است.1) امنیت(Security):از طریق Security Testing  نحوه حفاظت از سیستم در برابر حملات عمدی و ناگهانی منابع داخلی و خارجی مشخص می شود.2) قابلیت اطمینان(Reliability):میزان عملکرد هر سیستم نرم افزاری بطور مداوم و بدون خرابی توسط تست قابلیت اطمینان انجام می شود.3) زنده ماندن(Survivability):توسط Recovery Testing بررسی می شود که سیستم نرم افزار در صورت خرابی، چگونه به کار خود ادامه می دهد و خود را بازیابی می کند.4) در دسترس بودن(Availability):این تست مربوط به زمانی است که می خواهید بررسی کنید سیستم تا چه اندازه استفاده می شود و در صورت نیاز کاربران به آن تا چه حد در دسترس است و همچنین برای اینکه حوادث خرابی را به حداقل برسانید و اینکه بررسی کنید پیش از بازگشت سیستم به حالت نرمال ، چه مدت زمان تعمیر پیش بینی می شود.5) قابلیت استفاده(Usability):سهولت کاربر برای یادگیری ، کار کردن ، آماده سازی ورودی ها و دریافت خروجی ها توسط تست قابلیت استفاده بررسی می شود.6) مقیاس پذیری(Scalability):برای بررسی اینکه هر برنامه نرم افزاری می تواند  ظرفیت پردازش خود را برای پاسخگویی به افزایش تقاضا گسترش دهد.7) قابلیت همکاری(Interoperability):این تست غیر عملکردی تعامل و ارتباط سیستم نرم افزاری را با سیستم های نرم افزاری دیگر بررسی می کند.8) کارایی(Efficiency):میزانی که هر سیستم نرم افزاری توانایی تحمل ظرفیت ، کمیت و زمان پاسخگویی را دارد.9) انعطاف پذیری(Flexibility):این اصطلاح به سهولت کارکرد برنامه در پیکربندی های مختلف سخت افزاری و نرم افزاری اطلاق می شود. مانند حداقل RAM ، CPU مورد نیاز است.10) قابلیت حمل(Portability):انعطاف پذیری نرم افزار برای انتقال از سخت افزار یا محیط نرم افزار فعلی آن به سخت افزار یا محیط نرم افزار دیگر.11) قابلیت استفاده مجدد(Reusability):منظور بخشی از سیستم نرم افزاری است که می تواند در برنامه دیگری استفاده شود.هیچ نگران نباشید و توجه داشته باشید که همه انواع آزمایشات برای همه پروژه ها اعمال نمی شوند بلکه به ماهیت و دامنه پروژه بستگی دارند.نمونه موارد آزمایشی تست غیر کارکردیدر جدول زیر یک نمونه آزمایشی از تست غیرعملکردی جهت آشنایی آورده شده است:</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Wed, 07 Jul 2021 14:17:10 +0430</pubDate>
            </item>
                    <item>
                <title>امکانپذیر بودن یا نبودن کشف Backdoor و کدهای مخرب در نرم افزار</title>
                <link>https://virgool.io/barnamenevis/%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D9%BE%D8%B0%DB%8C%D8%B1-%D8%A8%D9%88%D8%AF%D9%86-%DB%8C%D8%A7-%D9%86%D8%A8%D9%88%D8%AF%D9%86-%DA%A9%D8%B4%D9%81-backdoor-%D9%88-%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%B1%D8%A8-%D8%AF%D8%B1-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-xrptzfxjfzen</link>
                <description>ackdoorخوبه که همین اول کار، یه توضیح مختصر بدیم که اصلا این Backdoor چی هست و چکاره هست تا بعد بریم سراغ اینکه چطوری میشه اون رو کشف کرد یا اینکه اصلا قابل کشف هست یا نه؟به زبان ساده در علوم کامپیوتر و IT، بدافزار بک دور(Backdoor) به کدهای مخربی گفته میشه که در برنامه و نرم افزار قرار داده میشه که بتونیم بدون داشتن مجوز به بخش هایی که نیاز به مجوز دارند وارد بشیم.یعنی بتونیم مکانیزم های امنیتی برنامه رو دور بزنیم و به منابع سیستم دسترسی پیدا کنیم.خوب شاید بگید تفاوتش با هک چیه؟فرقش اینه که هک از حفره ها و آسیب پذیری های ناخواسته یک سیستم استفاده میکنه ولی Backdoor کدهای مخربی هستند که توسط تولید کننده نرم افزار با سوء نیت در کد قرار داده شده و به مشتری تحویل میشود.همیشه در محل کار این نگرانی برامون وجود داشت که وقتی یه برنامه یا نرم افزار رو تحویل میگیریم و قصد استفاده از اون رو داریم چطور اطمینان حاصل کنیم که آلوده به Backdoor و کدهای مخرب نباشه.چطور مطمئن بشیم که برنامه نویس اون نرم افزار به هر دلیلی داخل سورس برنامه و یا داخل فایلهای dll یا Library اون کد مخرب نزده باشه و دست ما رو داخل پوست گردو نذاره؟ این نگرانی عاملی شد که به بررسی راههای کشف Backdoor در نرم افزار بپردازیم و از تجربیات شرکتهای مطرح که در زمینه تست امنیت نرم افزار در ایران فعال بودند استفاده کنیم و نتایج این بررسی رو در اختیار دوستان علاقمند قرار بدیم.اشتباه مرسومی که وجود داره اینه که بسیاری فکر میکنند که وجود backdoor ها با تست امنیت و pentest قابل کشف است در حالی که تست امنیت و Pentest که شرکتهای فعال در زمینه امنیت نرم افزار انجام میدهند از نوع Blackbox میباشد که  نیازی به دسترسی به کد منبع وجود ندارد بر خلاف آن بررسی وجود Backdoor در برنامه از نوع whitebox میباشد و نیاز به دسترسی به کد منبع برنامه توسط آزمونگر میباشد.متاسفانه شرکتهای ایرانی که بعضا توانایی زیادی در زمینه تست امنیت نرم افزار و PenTest دارند در زمینه بررسی و کشف بک دورها فعالیت بسیار کمی دارند و به دلایلی تمایلی به انجام این قبیل کارها ندارند.مهمترین علت اون هم اینه که انجام این تست نیاز به بررسی تمام خطوط برنامه و فایلهای dll و library های برنامه داره،ولی این تازه قسمت خوبشه،چون مشکل اصلی اینه که آزمونگر میبایست کل bussiness و قواعد کسب و کار رو به صورت کامل و دقیق بدونه تا بتونه تفکیک کنه کدهای مخرب رو از کدهای برنامه و این کار بسیار زمانبر و پرهزینه خواهد بود،و نکته  مهم اینه که اگرچه ابزارها و نرم افزارهایی برای کمک به تشخیص کدهای مخرب با استفاده از الگوهای نرم افزاری وجود داره ولی عملا کاربرد بسیار کمی داره و بهترین راه کماکان بررسی چشمی و خط به خط سورس کد است.نتیجه اینکه باید ببینیم سازمان ما تا چه حد ریسک این رو می پذیره که سورس برنامه به همراه انتقال دانش کسب و کار  رو به یک شرکت  دیگه جهت تست بسپاره و تا چه حد زمان و هزینه برای اینکار تخصیص میده.</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Thu, 22 Apr 2021 10:15:30 +0430</pubDate>
            </item>
                    <item>
                <title>ایجاد سرویس مجازی(Mock) با SoapUI و ReadyAPI</title>
                <link>https://virgool.io/barnamenevis/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%85%D8%AC%D8%A7%D8%B2%DB%8Cmock-%D8%A8%D8%A7-soapui-%D9%88-readyapi-c0fjbye9hxt9</link>
                <description>حتما برای شما هم پیش آمده است که در زمان تست نرم افزار مورد نظرتان از یک سرویس داخلی یا خارجی استفاده کنید و بنا به دلایلی(عدم دسترسی و اعتبار سنجی، عدم ارتباط شبکه، مشکل سرویس از سمت سرویس دهنده، حساس بودن داده ها و عدم امکان تست در محیط واقعی) استفاده از آن سرویس محیا نباشد.در اینگونه مواقع یا باید تست را تا زمان رفع مشکل سرویس به تعویق انداخت و یا در برخی مواقع از روش طاقت فرسا و نه چندان مطمئن و غیر اصولی برای پیش بردن فرایند تست بهره جست که به هیچ وجه توصیه نمی شود و امکان بروز خطاهای دیگری نیز وجود دارد.بهترین راهکاری که در این مواقع می توان استفاده کرد ایجاد یک سرویس مجازی(Mock) مشابه سرویس واقعی می باشد که در زمان فراخوانی سرویس به جای سرویس اصلی استفاده شود.به عبارت بسیار ساده Mocking به معنای ساختن ماکت یا تقلید از چیزی می باشد.یکی از بهترین ابزارهایی که در این زمینه وجود دارد ابزار SoapUI و یا برادر قدرتمند تر آن ReadyAPI می باشد.در این مقاله قصد داریم آموزش نصب و راهنمای کاربری ایجاد Mock را بیان کنیم.ابزار ReadyAPI یکی از محصولات SmartBear ،ابزاری است که از ادغام سه سرویس زیر ایجاد شده است:- SoapUi pro- LoadUi pro- ServiceV proبا توجه به اینکه هدف از نگارش این مستند بررسی امکان Virtualize و Mocking سرویسها است از پرداختن به سایر امکانات این ابزار صرف نظر می شود.ابتدا از بخش file-&gt;New Project نوع Api را مشخص می کنیم.در این قسمت آدرس وب سرویس را وارد می کنیم  و با انتخاب گزینه زیر به صورت اتوماتیک VirtualService مربوط به وب سرویس انتخاب شده نیز ایجاد می گردد:Create a virtual service for the imported WSDLدر تب ServiceV امکان مدیریت سرویس مجازی وجود دارد.در این بخش در قسمت Response می توان پاسخ مناسب را ایجاد و ویرایش کرد.در بخش RoutingOption امکان اینکه پاسخ ما به صورت شرطی ارائه شود با انتخاب گزینه Conditional وجود دارد.در بخش dispatchStyle می توانیم با انتخاب گزینه Script به صورت دلخواه و با زبان Groovy دستورات مورد نظر خود را تولید کرد.در این بخش با انتخاب گزینه Configure محیط کد نویسی باز شده و می توانیم آن را ویرایش کنیم.با انتخاب گزینه add Response می توان یک پاسخ جدید برای request ایجاد کرد.با استارت کردن  virtualService سرویس مجازی شروع به کار میکند.میتوانیم در Endpoint که در request انتخاب می شود آدرس serviceV جدید را وارد نماییم.با کلیک راست بر روی ServiceV مورد نظر و انتخاب Save as WAR فایل War آن ایجاد شده و می توان با هر WebServer آن را Run کرد.</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Mon, 01 Mar 2021 12:29:05 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و راهنمای کاربری Apache JMeter</title>
                <link>https://virgool.io/barnamenevis/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-apache-jmeter-w87432ziv6eq</link>
                <description>ابزار JMeter یکی از ابزارهای مشهور در حوزه Load/Performance/Stress Testing است. این ابزار زیرمجموعه بنیاد آپاچی و متن باز است و با زبان جاوا توسعه داده شده و بر روی انواع سیستم عامل ها و پلتفرم ها قابل اجراست و با آن می توان انواع مختلف تست های بار و فشار و کارایی را بر روی نرم افزارها اجرا نمود.این ابزار از مزایای بیشماری بهره می برد که در شکل زیر می توان بسیاری از آنها را مشاهده نمود.مزایای JMeterدر اینجا به اختصار تعدادی از مزایای Jmeter بیان می شود:Open source license: کاملا رایگان است ، به توسعه دهنده اجازه می دهد تا از کد منبع برای توسعه استفاده کند.Friendly GUI: استفاده ازJMeter بسیار آسان است و برای آشنایی با آن زمان زیادی لازم نیست.Platform independent : ابزار JMeter یک برنامه دسکتاپ جاوا است. بنابراین می تواند در چندین سیستم عامل اجرا شود.Full multithreading framework :  ابزار JMeter امکان نمونه برداری همزمان از توابع مختلف توسط یک thread group جداگانه را فراهم می کند.Visualize کردن نتیجه آزمون : نتیجه آزمون را می توان در قالب هایی مانند نمودار ، جدول ، درخت و لاگ فایل نمایش داد.نصب آسان : شما فقط برای اجرایJMeter فایل * .bat را کپی و اجرا می کنید. نیازی به نصب نیست.استراتژی آزمایش چندگانه :JMeter از بسیاری از استراتژی های آزمایش مانند تست بار ، آزمایش توزیع شده و تست عملکرد پشتیبانی می کند.شبیه سازی : JMeter می تواند چندین کاربر را با نخ های همزمان شبیه سازی کند و بار سنگینی برای برنامه تحت وب تحت آزمایش ایجاد کند.پشتیبانی از چند پروتکل :JMeter  فقط از تست web application پشتیبانی نمی کند بلکه عملکرد سرور پایگاه داده را نیز ارزیابی می کند. تمام پروتکل های اساسی مانند HTTP ، JDBC ، LDAP ، SOAP ، JMS و FTP توسط JMeter پشتیبانی می شوند.ضبط و پخش : فعالیت کاربر را در مرورگر ضبط کرده و با استفاده از JMeter آنها را در یک برنامه وب شبیه سازی کنید.تست اسکریپت : Jmeter را می توان با Bean Shell و Selenium برای آزمایش خودکار ادغام کرد.نحوه کار JMeter:منطق جریان کاری Jmeter به طور خلاصه در شکل زیر بیان شده است:workflow of JMeterهمچنین برای استفاده از ابزار می بایست طبق شکل زیر مراحل تست را انجام داد:نصب و راه اندازی جهت نصب و اجرای برنامه JMeter (که در زمان نگارش این مستند نسخه 5.4 می باشد) می بایست حداقل جاوا نسخه 8 بر روی سیستم نصب باشد.پس از دانلود آخرین نسخه JMeter از سایت آپاچی کافیست برنامه را از حالت فشرده خارج نموده و در پوشه bin بر روی jmeter کلیک کنیم.پس از باز شدن برنامه و وارد شدن به محیط کاربری می توانیم سناریوی تست خود را ایجاد کنیم.در این بخش نحوه ایجاد یک سناریو تست به صورت تصویری به همراه توضیحات ارائه می گردد:انتخاب Thread Group گزینه Thread Group تعداد کاربرانی می باشد که جهت شبیه سازی تست برنامه ایجاد می شود.برای ایجاد آن پس از کلیک راست ماوس از مسیر زیر ادامه می دهیم:Add menu, Add → ThreadGroupThreadGroupفیلدهای Thread Groupفیلد number of thread(users ) : تعداد کاربرانفیلد Ramp-Up Period : مدت تاخیر بین آغاز به کار هر کاربر(به عنوان مثال اگر 5کاربر با تاخیر زمای 5 انتخاب شود 5users / 5seconds = 1 user per second) اگر مقدار صفر ست شود به طور همزمان تمام کاربران با هم شروع به کار می کنند.فیلد LoopCount : تعداد تکرار هایی است که برای تست انجام می شود.اگر بخواهیم jmeter به طور مکرر تست را اجرا کند گزینه Forever را تیک می زنیم.افزودن Default HTTP Request در این قسمت می توان برای تنظیمات HTTP request مقدار پیش فرض تعریف کرد و پس از افزودن HTTP Request elements از تنظیماتی که در این بخش انجام شده استفاده می گردد.برای افزودن آن کافیست پس از انتخاب threadGroup و کلیک راست ماوس بر روی آن مسیر زیر را انتخاب کنیم:Add menu, and then select Add → Config Element → HTTP Request DefaultsHTTP Requestافزودن پشتیبانی از Cookie برای تست برنامه هایی که تحت وب هستند می بایست آیتم cookie support را به پروژه اضاف کنیم در غیر این صورت برنامه از این قابلیت استفاده نمی کند.می بایست اطمینان حاصل کنیم که هر thread کوکی مختص به خود را داشته باشد و برای تمام HTTP Request ها قابل دسترس باشد.برای انتخاب آن کافیست پس از انتخاب ThreadGroup از مسیر زیر ادامه دهیم: choose Add → Config Element → HTTP Cookie Manager.افزودن HTTP Requests ما می توانیم چندین HTTP Requset تعریف کنیم.jmeter درخواست ها را به همان ترتیبی که در سناریو تعریف می کنیم ارسال می کند.از مسیر زیر می توان HTTP Request ها را به پروژه افزود:((Add → Sampler → HTTP Requestقسمت Path را با &quot;/&quot; یا هر مسیر دلخواه تغییر داد(مثلا &quot;/ali.html&quot;)دقت شود که مواردی مانند نام سرور که در HTTP Request Defaults تعریف شده است را می توان در این بخش به صورت اختیاری تغییر داد در غیر اینصورت از مقادیر پیش فرض استفاده می شود.افزودن Listener مسئول نگهداری کل نتایج در خواست ارسال شده در یک فایل می باشد و یک نمایش بصری از دیتای خروجی را ارائه می دهد.برای این کار نیاز است پس از انتخاب کاربر و کلیک راست از مسیر زیر Listener را اضافه کرد:Add → Listener → Backend Listenerلاگین کردن به یک وب سایتدر بعضی از سایتها نیاز است که قبل از انجام هر عملی به سیستم لاگین کرد.برای اینکار می بایست مقادیر مرتبط با فرم لاگین را به صورت پارامتر ارسال کرد.روش کار به این صورت است که ابتدا یک HTTP Request ایجاد کرده و مقدار Method را برابر Post قرار می دهیم.لذا لازم است که نام فیلدهایی که در فرم لاگین استفاده می شود و همچنین نام صفحه مورد نظر را بدانیم و برای اینکار می توانیم به راحتی با Inspect کردن کد مورد نظر در صفحه لاگین توسط مرورگر مقادیر و نام فیلدها را به دست آوریم.(اگر این کار برای شما پیچیده است می توانید از امکان JMeter Proxy Recorder جهت رکورد کردن مراحل و ترتیب لاگین استفاده کنید.)انتخاب تست به صورت یک کاربره یا چند کاربره:در هر چرخه ThreadGroup این امکان برای ما گذاشته شده است که بتوانیم چرخه چندین تست را با یک User انجام دهیم یا یک چرخه را با چندین کاربر انجام دهیم.برای انجام این رفتار می توانیم با اعمال تنظیمات فیلدها در ThreadGroup به این هدف دست یابیم.برای روشن شدن این موضوع در عکس زیر تفاوت LoopCount و ThreadCount را مشاهده می کنید:برای پاک کردن cookies/cache ها و همچنین content/authorization نیز می توان در قسمت CookieManager/CacheManager/Authorization Manager یا انتخاب آن در بخش ThreadGroup این کار را انجام داد.اجرای تست و استخراج نتایج سیاه : تعداد کل نمونه های ارسال شده آبی : میانگین تمام نمونه های ارسالی قرمز : مقدار انحراف از معیار سبز : میزان توان عملیاتی که نشان دهنده تعداد درخواست ها در هر دقیقه سرور استبرای تجزیه و تحلیل عملکرد وب سرور تحت آزمایش ، باید بر روی 2 پارامتر تمرکز کنیدThroughputDeviationمقدار Throughput :مهمترین پارامتر است و نشان دهنده توانایی سرور در تحمل بار سنگین است. هرچه میزان بازده بالاتر باشد ، عملکرد سرور نیز بهتر است.در تستی که در تصویر فوق مشاهده می کنید ، توان سرور گوگل 1،491.193 در دقیقه است. این بدان معناست که سرور گوگل می تواند 1،491.193 درخواست را در هر دقیقه انجام دهد.مقدار Deviation :انحراف با رنگ قرمز نشان داده شده است و نشان دهنده انحراف از میانگین است.هر چقدر این مقدار کوچکتر باشد، بهتر است.اصطلاحاتی که می بایست با آن آشنا باشیم:Elapsed time: Measures the elapsed time from just before sending the request to just after the last chunk of the response has been received,Latency: Measures the latency from just before sending the request to just after the first chunk of the response has been received,Connect Time: Measures the time it took to establish the connection, including SSL handshake,Median: Number which divides the samples into two equal halves,90% Line (90th Percentile): The elapsed time below which 90% of the samples fall,Standard Deviation: Measure of the variability of a data set. This is a standard statistical measure,Thread Name: Derived from the Thread Group name and the thread      within the group. The name has the format groupName + &quot; &quot; +      groupIndex + “-” + threadIndex where:groupName: name of the Thread Group element,groupIndex: number of the Thread Group in the Test Plan,       starting from 1,threadIndex: number of the thread within the Thread Group,       starting from 1.Throughput: Calculated as requests/unit of time. The time is      calculated from the start of the first sample to the end of the last      sample. The formula is: Throughput = (number of requests) / (total time).</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Sat, 27 Feb 2021 12:58:05 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب و راهنمای کاربری SonarQube با Maven</title>
                <link>https://virgool.io/barnamenevis/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-sonarqube-yslr90lgzfkf</link>
                <description>ابزار  SonarQube (که ما آن را اختصاراً Sonar می‌نامیم) یک ابزار متن باز و رایگان برای بررسی کیفیت متن برنامه‌ها (Static Code Analysis) است.علاوه بر این، Sonar دارای یک سرور، واسط وب، دیتابیس و قابلیت اتصال به ابزارهای دیگر مانند  Jenkins است که آن را نسبت به سایر ابزارهای این حوزه متمایز میکند.برای آنکه Sonar را روی پروژه خود اجرا و با استفاده از آن متن برنامه های تیم خود را بررسی کنید روشهای مختلف وجود دارد. از جمله می توانید از پلاگین Eclipse یا پلاگین Maven استفاده نمایید. اگر از ابزارهای Continuous Intergration همچون  Jenkinsاستفاده می کنید می توانید اجرای Sonar را به عهده آن بگذارید. در این صورت با هر Commit برنامه نویسان تحلیل کد صورت می گیرد و در صورت تشخیص باگ بلافاصله اعضای تیم مطلع می شوند.شما می توانید در کنسول مدیریتی پروژه خود را معرفی و نحوه تحلیل کد و گزارشدهی را مدیریت و سفارشی کنید. از جمله می توانید اولویت و اهمیت قواعد تعریف شده در Sonar را برای هر پروژه سفارشی کنید. Sonar بعد از تحلیل کد گزارشی از باگهای کشف شده، نتایج اجرای تست و میزان پوشش موارد آزمون (Test Coverage)  ارائه می نماید. گزارشات Sonar روی پایگاه داده سرور آن ذخیره می شود و امکان مشاهده آن توسط مدیران، ناظران فنی و اعضای تیم وجود دارد.در حال حاضر جهت نصب سونار نسخه 8.6  می بایست جاوا نسخه 11 بر روی سیستم نصب باشد و همچنین maven (تکنولوژی Build پروژه) نسخه 3 به بالا می بایست نصب شود.برای نصب SonarQube ابتدا آخرین نسخه آن را دانلود کرده و با توجه به نوع سیتم عامل شروع به نصب می نماییم.در لینوکس می بایست از یک کاربر غیر از root استفاده شود.جهت ایجاد کاربر جدید در لینوکس از دستورات زیر استفاده می کنیم.Useradd sonarPasswd sonarسپس فایل zip مربوط به آخرین نسخه سونار را در مسیر /opt/sonar کپی می کنیم و با کاربری sonar آن را Unzip می کنیم:Unzip sonarqubeهمچنین دسترسی های سونار را نیز بررسی می کنیم:chown –R sonar.sonar *chmod -R 777 *به صورت پیش فرض برنامه سونار از پایگاه داده H2 به صورت Embed استفاده می کند اما در صورتی که بخواهیم از تمامی امکانات برنامه استفاده کنیم می بایست یک پایگاه داده(SqlServer/Oracle/PostgreSql) دیگر نصب نمود.پیشنهاد می شود که پایگاه داده بر روی یک سرور جدا از سرور سونار نصب شود.پس از نصب پایگاه داده یک Schema جدید ایجاد کرده و یک user با نام sonarqube بر روی آن ایجاد نموده و برای آن کاربری دسترسی Create,update,delete object برای آن Schema ایجاد شود.پس از نصب پایگاه داده از مسیر $SONARQUBE-HOME/conf/sonar.properties اقدام به ویرایش و تنظیم پایگاه داده می کنیم.کافی است بخش مرتبط با پایگاه داده نصب شده را از حالت کامنت خارج کرده و بخش مرتبط با پایگاه داده H2را کامنت میکنیم.اگر از پایگاه داده اوراکل استفاده شود می بایست jdbcDriver آن را در مسیر $SONARQUBE-HOME/extensions/jdbc-driver/oracle قرار دهیم.برای دیگر پایگاه داده ها به صورت پیش فرض درایورها وجود دارند.همچنین می توانیم تنظیمات پیش فرض  Elasticsearch را در مسیر زیر تغییر دهیم:$SONARQUBE-HOME/conf/sonar.propertiessonar.path.data=/var/sonarqube/datasonar.path.temp=/var/sonarqube/tempنکته:کاربر ایجاد شده می بایست دسترسی به read/write این دو دایرکتوری را داشته باشد.راه اندازی وب سرورپورت پیش فرض سونار 9000 و Context path پیش فرض &quot;/&quot; می باشد که در مسیر زیر قابل ویرایش است:$SONARQUBE-HOME/conf/sonar.properties:sonar.web.host=192.0.0.1sonar.web.port=80sonar.web.context=/sonarqubeبرای راه اندازی سرور دستور زیر را اجرا می کنیم:On Linux:      bin/linux-x86-64/sonar.sh startOn macOS:      bin/macosx-universal-64/sonar.sh startOn Windows:      bin/windows-x86-64/StartSonar.batسپس در مرورگر در آدرس http://localhost:9000 با نام کاربری و کلمه عبور admin وارد سیستم می شویم.پس از لاگین شدن به برنامه لیست پروژه هایی که قبلا در سونار ایجاد شده اند به همراه آمار مختصری از وضعیت پروژه نمایش داده می شود.در صورتی که نیاز باشد یک پروژه جدید را اضافه کنیم با کلیک بر روی add project و سپس manually را انتخاب می کنیم.در بخش projectKey یک نام منحصر به فرد به پروژه تخصیص می دهیم.در صورتی که از Maven استفاده می کنیم می بایست در این بخش از فرمت groupid:artifactid استفاده شود.در بخش DisplayName یک نام دلخواه به پروژه اختصاص می دهیم و بر روی دکمه setup کلیک می کنیم.در صفحه بعد یک نام دلخواه جهت ایجاد Token وارد کرده و بر روی دکمه generate کلیک می کنیم و سپس بر روی continue کلیک می کنیم.در صفحه بعد تکنولوژی ساخت پروژه (Maven) را انتخاب می کنیم.با انتخاب maven کد مربوط به آن در صفحه نمایش داده می شود که کافیست این کد را در مسیر سورس پروژه توسط Command اجرا کنیم.پس از اجرای دستور در صورتی که خطایی ایجاد نشود پروژه به سونار افزوده می شود و می توانیم از داده های استخراج شده آن استفاده کرد.آمار کلی هر پروژهاطلاعات کلی که در این لیست نمایش داده می شود شامل موارد زیر می باشد: Bugs Vulnerabilities Hotspot Reviewed Code Smells Coverage Duplications Lines Of Codeدر ادامه به توضیح قابلیت های برنامه و شرح کارکرد ابزار پرداخته می شود: منوی ابزارIssues: در قسمت Issues لیست کامل تمام نتایج آنالیز که نیاز به بررسی دارند ارائه می گردد.با توجه به حجم بالای تعداد Issue ها قابلیت فیلتر بر اساس آیتمهای متنوعی در سمت چپ برنامه وجود دارد که می توان با اعمال آنها فقط آیتم های مورد نیاز را نمایش داد.با انتخاب هر Issue وارد جزئیات آن شده و نوع Issue به همراه راهکار برطرف کردن خطا و یا بهینه سازی آن ارائه می گردد.Rules: با انتخاب منوی Rules تمام قوانین Embeded سونار به تفکیک نمایش داده می شود با توجه به حجم بالای تعداد Rule ها قابلیت فیلتر بر اساس آیتمهای متنوعی در سمت چپ برنامه وجود دارد که می توان با اعمال آنها فقط آیتم های مورد نیاز را نمایش داد.از قابلیت های بسیار کاربردی این ابزار امکان ایجاد Rule های جدید و یا Extend کردن Rule های موجود می باشد.RulesQuality Profiles:در این بخش Profile پیش فرض وجود دارد که در اینجا نیز می توان آن را کپی یا Extend کرد یا یک Profile جدید ایجاد کرد و به هر profile می توان Rule هایی را اختصاص داد .Quality Profiles:Quality Gates:شروط لازم برای پذیرش نسخه ارائه شده را در این قسمت تعیین می کنیم.Quality Profiles Administration :تنظیمات و پیکربندی برنامه و همچنین مدیریت کاربری و اعمال مقادیر پیش فرض در بخش Administration انجام می شود.Administrationدر هر بخش از برنامه می توان از تنظیمات سمت چپ برنامه فیلترهای مورد نیاز برای محدود کردن دامنه جستجو را انجام داد.Filter</description>
                <category>برنامه نویس</category>
                <author>ALSA</author>
                <pubDate>Tue, 23 Feb 2021 10:53:54 +0330</pubDate>
            </item>
            </channel>
</rss>