<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های عرفان سلطانی</title>
        <link>https://virgool.io/feed/@m_57106677</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-07 20:47:26</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>عرفان سلطانی</title>
            <link>https://virgool.io/@m_57106677</link>
        </image>

                    <item>
                <title>روش های تست نرم افزار</title>
                <link>https://virgool.io/@m_57106677/%D8%B1%D9%88%D8%B4-%D9%87%D8%A7%DB%8C-%D8%AA%D8%B3%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-rs9te4n8sobm</link>
                <description>روش های تست نرم افزاردر فرآیند تست و ارزیابی نرم‌افزار، تست های مختلفی تعریف می شوند که هر یک از آنها در مرحله خاصی استفاده می شوند. تست نرم‌افزار عموما در چهار سطح اصلی صورت می‌گیرد که این چهار مرحله به ترتیب انجام می شوند و شامل :1تست واحد (Unit testing)2 تست یکپارچگی(Integration Testing)3 تست سیستم(System Testing)4 تست پذیرش(Acceptance Testing)تست واحد (Unit testing) :یکی از مراحل اولیه و اصلی تست یک سیستم، تست واحد می‌باشد که هریک از واحدها یا ماژول‌های تشکیل دهنده یک برنامه را به‌طور مستقل مورد تست قرار می‌دهد. تست واحد نوعی تست جعبه سفید است که برنامه‌نویس ساختار داخلی برنامه را می‌شناسد و به دنبال آن‌ است که بداند انجام تست چه تاثیری روی عملکرد داخلی آن می‌گذارد. معمولا تست واحد، توسط خود برنامه‌نویسان و به موازات توسعه سیستم انجام می‌شود. این تست بر روی ارزیابی بخش‌های کوچک عملیاتی تمرکز دارد.هدف از انجام این تست اطمینان از درستی عملکرد واحدهایی است که پس از توسعه در قسمت‌های مختلف سیستم مورد استفاده قرار خواهند گرفت. به عبارتی می‌توان گفت که آیا واحد مورد نظر به تنهایی کاری را که باید انجام بدهد، می‌دهد یا خیر؟برای انجام این تست باید برنامه نویس استانداردهایی را رعایت نماید که متدهای نوشته شده توسط وی به تنهایی و بدون وابستگی خاصی قابل انجام باشد. به طور مثال در بدنه متد خود از کنترلی مقدار نگرفته باشد و همه مقادیر مورد نیاز به صورت پارامتریک به متد مورد نظر ارسال شده باشد.تست سطح یکپارچگی (Integration Testing):تست واحد را برای هر کدام از واحدها به صورت جداگانه انجام دادیم و از صحت عملکرد آنها مطمئن شدیم. همه واحدها به تنهایی به طور صحیح وظایف خود را انجام می‌دهند، آیا نیاز است که درستی عملکرد واحد ها در زمانی که کنار هم قرار می گیرند نیز تست شود؟ ما نیاز داریم تا مطمئن شویم که آیا واحدها در کنار هم کار می‌کنند، به درستی فراخوانی می‌شوند و داده‌های درستی را در زمان مناسبی از طریق واسط‌های آنها عبور می‌دهند.تست یکپارچگی (مجتمع سازی) مهمترین سطح از تست است که روی تعامل بین اجزا، ماژول‌ها و اشیایی که با هم کار می‌کنند، تمرکز دارد. تست یکپارچگی در واقع سطحی از تست است که اطمینان می‌دهد بخش‌های مختلف سیستم به درستی باهم تعامل دارند و داده‌ها و اطلاعات بین آنها درست پاس می‌شوند.هدف از تست یکپارچگی سیستم آن است که مطمئن شویم اجزای مختلف سیستم در کنار یکدیگر به‌خوبی کار می‌کنند و تعاملات، ارتباطات و رد و بدل کردن داده‌ها در بین ماژول‌های مختلف سیستم به‌درستی انجام می‌شود و در نتیجه کل سیستم عملکرد صحیحی دارد.تست سیستم (System Testing):تست یکپارچگی را برای نرم‌افزار مورد نظر انجام دادیم و مطمئن شدیم که تمام قطعات در کنارهم می‌توانند قرار گیرند و بدون هیچ مشکلی وظایفشان را انجام دهند. در اینجا نرم افزار طراحی شده به تنهایی درست عمل می کند و بخش های مختلف می توانند کنار یکدیگر بدون خطا فعالیت نمایند. نرم‌افزار خود جزئی از یک سیستم بزرگتر است و نیاز است که با عناصر دیگر این سیستم مانند سخت افزارها ارتباط برقرار کند و با آنها یکپارچه شود. پس نیاز داریم تا مطمئن شویم که سیستم به عنوان یک واحد به طور کامل عمل خواهد کرد و نیازمندی‌های سیستم را برآورده می‌کند. این سطح از تست آخرین سطحی است که توسط توسعه‌دهندگان انجام می شود تا قبل از تحویل نرم‌افزار به کاربرنهایی برای تست از عملکرد آن مطمئن شوند.بنابراین تست سیستمی نشان‌ می‌دهد که سیستم کلیه نیازمندی‌های مد نظر را برآورده کرده است. یک تست سیستمی زمانی‌ مفید خواهد بود که خصوصیات و مشخصات سطح سیستم برای آن وجود داشته باشد. برای این منظور استفاده از مستندات تهیه شده برای اهداف سیستم لازم و مفید به نظر می‌رسد.تست پذیرش (Acceptance Testing):نرم‌افزار به‌طور کامل توسط توسعه‌دهندگان در تمام سطوح تست، با موفقیت تست شد، اما آیا نرم‌افزار واقعا به‌طور کامل کار می‌کند؟ آیا تمام نیازهای فعلی کاربر نهایی را برآورده می‌کند؟ بنابراین تستی نیاز داریم که توسط کاربران نهایی، مشتریان و نه توسعه‌دهندگان صورت می‌گیرد و هدف آن است که کاربر مشخص کند عملیاتی که برنامه انجام می‌دهد نیازمندی‌های آن‌ها را برآورده می‌کند یا خیر. تست پذیرش دارای انواع مختلفی است که می‌توان به موارد زیر اشاره کرد:-9.4.1 تست آلفا: تست آلفا در سایت توسعه دهنده نرم‌افزار و در اغلب موارد توسط کارمندان داخلی و در بعضی از موارد توسط مشتری انجام می‌گیرد.4.2.9-تست بتا: تست بتا در سایت مشتریان و توسط مشتریان که از سیستم استفاده خواهند کرد صورت می‌گیرد و مشکلات مشاهده شده را به توسعه‌دهندگان گزارش می‌کنند.تست پذیرش دو هدف اصلی دارد. اول اطمینان از اینکه سیستم پیاده‌سازی شده نیازمندی‌های نرم‌افزاری را برآورده می‌کند. دوم اطمینان از اینکه سیستم نرم‌افزاری می‌تواند در دنیای واقعی، که از افراد متعدد با توانایی‌‌ها، ویژگی‌ها، شرایط و فشارکاری و زمانی مختلفی تشکیل شده است، به خوبی عمل کند.</description>
                <category>عرفان سلطانی</category>
                <author>عرفان سلطانی</author>
                <pubDate>Thu, 17 Dec 2020 22:34:56 +0330</pubDate>
            </item>
                    <item>
                <title>تست و ارزیابی نرم افزارهای توضیع شده</title>
                <link>https://virgool.io/@m_57106677/%D8%AA%D8%B3%D8%AA-%D9%88-%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D8%AA%D9%88%D8%B6%DB%8C%D8%B9-%D8%B4%D8%AF%D9%87-nlfqir6ktfiz</link>
                <description>معیارهای تست پذیر بودن نرم‌افزار: 1قابلیت اجرا Operability – هرچه نرم‌افزار بهتر کار کند و در محیط‌های بیشتری قابل اجرا باشد، بهتر قابل ارزیابی است.2مشاهده‌پذیری Observability – قابلیت مشاهده نتایج ارزیابی3کنترل‌پذیری Controlability – قابلیت اجرای تستهای خودکار (مثل امکان اجرای خودکار تست‌های واحد توسط jUnit برای زبان جاوا)4تجزیه‌پذیری Decomposability – ارزیابی می‌تواند هدفمند تر شود.5سادگی Simplicity – کاهش پیچیدگی معماری و منطق برنامه6پایداری Stability – برای ارزیابی تغییرات کمی بخواهد.7درک‌پذیری Understandability – قابلیت درک طراحی و وابستگیهای بین اجزا ریسک نرم افزارامروزه بسیاری از کارها در زندگی شخصی، صنعت، امور نظامی و غیره به نرم افزارها سپرده شده است. گاهی یک اشتباه کوچک نرم‌افزاری می‌تواند سبب خسارات جبران ناپذیری شود. برای تشریح موضوع به چند نمونه اشاره می‌گردد.2.1در سال 1994 خطای محاسبات اعشاری در پردازنده پنتیوم شرکت اینتل، علاوه بر کاهش فروش آن، اعتبار شرکت را تا مدتی خدشه‌دار کرد.2.2 سال 1998 مدار گرد مریخ به دلیل یک خطا در محاسبات نرم افزاری، در جهت اشتباهی وارد اتمسفر مریخ شده و منفجر گردید. 327 میلیون دلار صرف این پروژه شده بود.203واحد ممیز شناور اندازه‌گیری شتاب افقی این ماهواره بر بود. 7 میلیارد دلار و 10 سال زمان برای ساخت این ماهواره بر هزینه شده بود. همچنین باری که این ماهواره بر حمل می‌کرد، 500 میلیون دلار ارزش داشت.تنها 26% از پروژه های نرم افزاری دنیا با موفقیت اجرا می‌شوند. معیار های موفقیت پروژه عبارتند‌از:اتمام به موقع با بودجه تعیین شده با تمام قابلیت‌ها و عملکردهای مورد نظر، با تمام قابلیت‌ها و عملکردهای مورد نظر بدون خطا (با خطای جزئی)-بسیاری از پروژه‌های تولید نرم افزار با شکست مواجه می‌شوند، هزینه بالایی صرف پروژه‌های شکست خورده می‌گردد.-در آمریکا، بیش از 81 میلیارد دلار صرف پروژه‌های شکست خورده می‌شود.-در انگلیس، بیش از 33 میلیارد دلار صرف پروژه‌های شکست خورده می‌شودنسل‌های مختلف تست نرم افزاربا گذشت زمان و پیشرفت صنعت نرم افزار، تست نرم افزار نیز تحولات بسیاری داشته است، بر همین اساس تست نرم افزار را می‌توان در سه نسل دسته‌بندی کرد:1 نسل اول (دهه هفتاد میلادی)تست=رفع خطا(debug)2نسل دوم (دهه هشتاد میلادی)تست یک فعالیتی است که در انتهای چرخه حیات نرم افزار و به منظور شناسایی خطا انجام می‌شود3 نسل سوم (قرن بیست و یکم)تست یک فرایندی است موازی با فرایند تولید (شامل چهار فاز) که به منظور سنجش و بهبود کیفیت نرم افزار استفاده می‌شود.</description>
                <category>عرفان سلطانی</category>
                <author>عرفان سلطانی</author>
                <pubDate>Thu, 17 Dec 2020 22:26:48 +0330</pubDate>
            </item>
                    <item>
                <title>تست و ارزیابی نرم افزارهای توزیع شده</title>
                <link>https://virgool.io/@m_57106677/%D8%AA%D8%B3%D8%AA-%D9%88-%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D8%B4%D8%AF%D9%87-ltcshwneaadx</link>
                <description>مقدمهامروزه بسیاری از کارها در زندگی شخصی، صنعت، امور نظامی و غیره به نرم افزارها سپرده شده است. گاهی یک اشتباه کوچک نرم‌افزاری می‌تواند سبب خسارات جبران ناپذیری شود.همیشه یکی از مهم ترین بحث ها در طراحی و پیاده سازی نرم افزارها، کارکرد درست سیستم طراحی شده می باشد. با رشد سیستم و توسعه چندین ساله آن توسط تیم های نرم افزار، کارکرد درست و بدون اشکال همه قسمت های آن همیشه یکی از دغدغه های برنامه نویسان می باشد.برای همین تست های مختلف تعریف و طراحی شده اند که به تیم های نرم افزاری کمک می کنند نرم افزاری های کم اشکال یا بی اشکالی را تولید نمایند.1- تعریف:آزمون نرم‌افزار(تست و ارزیابی نرم‌افزار) به منظور اطمینان از عملکرد صحیح آن در رویدادهایی مختلفی که ممکن است در دوره استفاده از نرم‌افزار با آن مواجه شود می‌باشد و به عبارت دیگر پیدا کردن خطاهایی احتمالی یک نرم‌افزار برای عملکرد درست، صحیح و بهینه آن در طول استفاده از آن است. هر چقدر نرم‌افزار بتواند با رویدادها مختلف به صورت مطلوب تر و قابل پذیرش تری چه از نظر عملکرد و چه از راحتی کاربر داشته باشد می‌توان انتظار داشت نرم‌افزار دارای عملکرد بهتری می‌باشد. آزمون برنامه شامل اجرای بخش هایی (کامپوننت هایی) از برنامه یا بخش هایی از سیستم میشود تا مشخصات موردنظر سیستم را ارزیابی کند. بصورت کلی این مشخصات مشخص میکنند که هرکدام از بخش های برنامه ویژگی های زیر را تحت عملیات آزمون کردن دارند :• به نیازمندی هایی که توسعه و طراحی نرم افزار را جهت دهی کرده اند رسیده است؟• به انواع ورودی ها پاسخ مناسبی میدهد؟• عملکرد خود را در زمان قابل قبولی انجام میدهد؟• به اندازه کافی کارآمد است؟• آیا میتوان آن را روی محیطی که برای آن برنامه ریزی انجام گرفته است نصب و اجرا کرد؟• به نتیجه کلی که مطلوب سرمایه گذاران است دست پیدا کرده است؟همانطور که تعداد تست های ممکن حتی برای مولفه های برنامه های ساده اغلب نامحدود هستند، تمامی تست کننده های برنامه از روشی استفاده میکنند که تست هایی ساده و در عین حال مناسب برای زمان و منابع سیستم را انجام دهند. در نتیجه، تست کردن برنامه عموما در تلاش است تا برنامه یا اپلیکیشن را با رویکرد یافتن حفره های برنامه اجرا کند.فرایند تست کردن، پروسه ای همراه با تکرار است یعنی که هنگامیکه یکی از حفره های برنامه درست شد فرایند تست کردن باید مجددا انجام پذیرد زیرا درست کردن این حفره میتواند حفره های دیگر، عمیق تر یا حتی جدیدی را نمایان کند. آزمون نرم افزار میتواند اطلاعات حیاتی و مستقلی درباره کیقیت برنامه و میزان ریسک شکست یا عدم موفقیت آن در مقابل استفاده کنندگان یا اسپانسرهای سیستم را ارائه دهد. آزمون نرم افزاری میتواند در زمانیکه برنامه بصورت کامل یا حتی قسمتی از آن در دسترس بود انجام پذیرد. فرایند توسعه نرم افزار عموما مشخص میکند چه زمانی و به چه صورتی آزمون نرم افزرا صورت پذیرد. برای مثال در فرایند فاز بندی شده، بیشتر تست کردن ها زمانی انجام میگیرد که پیش نیاز های سیستم پیدا شده و سپس در برنامه ای قابل آزمون پیاده سازی شده اند.البته در رویکرد Agile نیازمندی ها، برنامه نویسی و آزمون نرم افزاری عموما بصورت همزمان انجام میپذیرند.در سال‌های اخیر آمارهای شگفت‌آوری از سوی مؤسسه NIS،National Institute of Standards and تست نرم‌افزارTechnologyدربارهٔ شکست سیستم‌های نرم‌افزاری ارائه شده‌است. در کشور ایالات متحده، این شکستها سالیانه حدود ۵۹٫۵ میلیارد دلار به اقتصاد این کشور صدمه می‌زند. طبق بررسیهای انجام شده با بکارگیری تست در تمام فازهای تولید نرم‌افزار ۲۲٫۲ میلیارد دلار از این خسارت را می‌توان کاهش داد. طبق آمارهای ارائه شده از سوی مؤسسه(IDC )International Data Corporation،  چهل درصد از بودجه نرم‌افزارها صرف تست آن می‌گردد. در کشور ما نیز، با توجه به رشد فن آوری اطلاعات و ارتباطات در طی چند سال گذشته و تولید بومی بسیاری از نرم‌افزارهای مورد نیاز، نیاز به این فرایند بیش از پیش احساس شده و در صورت عدم توجه به آن، کاهش کیفیت سیستم‌های ارائه شده، عدم رضایت مشتری و در نهایت از دست دادن بازار را به همراه خواهد داشت. تست خوب: احتمال پیدا کردن خطاهای کشف نشده توسط ارزیابی زیاد است. تست موفق: که حداقل یک خطای کشف نشده را بیابد تست فقط وجود خطا را نشان می‌دهد  0پیدا نشدن خطا در تست به معنای بدون خطا بودن برنامه نیست. اصول تست با توجه به نیازمندیهای کاربر برنامه‌ریزی قبل از اجرا (test plan) نوشتن برنامه تست قانون پارتو %۸۰ خطاهای کشف نشده در ۲۰٪ کد است تست باید از اجزای کوچک شروع شود، ممکن نیست (exhaustive) تست کامل برای مؤثر بودن باید توسط شخص ثالث بی‌طرف انجام شود،</description>
                <category>عرفان سلطانی</category>
                <author>عرفان سلطانی</author>
                <pubDate>Thu, 17 Dec 2020 22:11:45 +0330</pubDate>
            </item>
            </channel>
</rss>