به نام خدا آزمون نرمافزار – تمرین اول استاد :دکتر میریان مهلت ارسال1394/08/18 : پاسخ به سواالت به صورت گروهی است .ارسال پاسخ بعد از ساعت 12شب مهلت تعیین شده، به ازای هر روز تاخیر باعث کسر ۵درصد از نمره تمرین میشود .به پاسخهای ارسال شده با بیش از ۱۴روز تاخیر نمرهای تعلق نخواهد گرفت. نام گروهها در سایت درس قرار گرفته است .پاسخها را به [email protected]ارسال نمایید .عنوان ایمیل ST1-GroupNameباشد. قسمت تئوری .1گزارههای زیر را اثبات یا با مثال نقض رد کنید: .aمجموعهی نیازمندیهای تست Complete Path Coverageبرای همهی گرافها مجموعهای متناهی است. .bبا روشهای تست میتوان فالتهایی در Unreachable codeرا یافت. .cاگر مجموعهی تست T1پوشش بیشتری از مجموعهی تست T2داشته باشد ،آنگاه خطاهای بیشتری را نیز در کد پیدا خواهد کرد. .dبرای گرافهای بدون دور مجموعهی نیازمندیهای Prime Path Coverageبا مجموعهی نیازمندیهای Complete Path Coverageیکسان است. قطعه کد زیر را در نظر بگیرید. { )public int[] merge(int[] a, int[] b ;]int[] result = new int[a.length + b.length ;int indexResult = 0 ;int indexA = 0 ;int indexB = 0 { )while (indexResult < result.length )]if (indexB >= b.length || a[indexA] < b[indexB ;]result[indexResult++] = a[indexA++ )]else if (indexA >= a.length || a[indexA] >= b[indexB ;]result[indexResult++] = b[indexB++ } ;return result } این تابع دو آرایهی مرتب شده را ادغام میکند. )aخطا یا خطاهای برنامه در کدام قسمت هستند؟ آنها را اصالح نمایید. )bدر صورت امکان تستی ارائه کنید که هیچ فالتی را اجرا نمیکند. )cدر صورت امکان تستی ارائه کنید که یک فالت را اجرا میکند اما در اثر آن برنامه به حالت خطا ( )Error Stateنمیرود. )dدر صورت امکان تستی ارائه کنید که یک فالت را اجرا میکند و برنامه را به حالت خطا ( )Error Stateمیبرد اما موجب Failureنمیشود. )eبرای تست مورد قبل اولین حالت خطا را مشخص کنید. )fگراف جریان داده را به دست آورید. )gنیازمندیهای پوشش ADUPCرا به دست آورید. )hمسیرهای آزمون و نمونههای آزمون را برای هر یک از این نیازمندیها مشخص کنید. )iآیا ADUPCمیتواند خطای برنامه را کشف کند؟ اگر بله چگونه؟ اگر نه چرا؟ .2گراف زیر را در نظر بگیرید و به موارد زیر پاسخ دهید. .aعبارت path expressionاین گراف را بدست آورید. .bبا استفاده از مورد قبل تعداد مسیرهای این گراف از راس ابتدایی تا راس انتهایی که از هر یال حداکثر یک بار استفاده کند را محاسبه کنید. بخش عملی 1 .1در مورد Unit Testمطالعه کنید و آن را به صورت خیلی خالصه (یک پاراگراف) توضیح دهید .یک زبان برنامهنویسی برای پیادهسازی انتخاب کنید 2و در مورد ابزارهای مختلف برای انجام Unit Testدر آن تحقیق مختصری انجام دهید و یکی از آنها را با ذکر دلیل انتخاب کنید. 1نمرهی این بخش از تمرین بخشی از نمرهی پروژه است. 2پیشنهاد میشود از زبان جاوا برای تمرینهای عملی این درس استفاده نمایید .ابزارهای پیچیده برای تست (مانند )Mutation Testing در زبانهای دیگر ممکن است در دسترس نباشند. .2در مورد مفهوم Code Coverageمطالعه کنید و آن را به صورت خیلی خالصه (یک پاراگراف) توضیح دهید .در مورد ابزارهای مختلف برای محاسبه Code Coverageدر زبان انتخابی خود تحقیق مختصری انجام دهید و یکی از آنها را با ذکر دلیل انتخاب کنید. .3برنامهای بنویسید که جستجوی دودویی انجام دهد .قسمت انجام جستجو باید مجزا بوده (مثال یک functionدر جاوا( .برنامه ورودی خود را از یک فایل با نام in.txtدریافت میکند .این فایل در پوشه ای که برنامه اجرا میشود قرار میگیرد .این فایل شامل دو خط است .در خط اول اعدادی (بدون تکرار) که در آنها باید جستجو شود قرار دارند .این اعداد با فاصله از همدیگر جدا شدند .در خط دوم اعدادی که باید در بین اعداد خط قبل جستجو شوند قرار دارند .این اعداد نیز با فاصله از هم جدا شدهاند. برنامه باید فایلی با نام out.txtایجاد کند .برای هر عدد در خط دوم فایل ورودی باید یک سطر در فایل خروجی (با حفظ ترتیب) نوشته شود .در صورتی که جستجو موفقیت آمیز بود اندیس عدد ( )zero based indexرا در آرایه مرتب شده و در غیر این صورت -1نوشته شود .در صورت بروز هر گونه خطا -2نوشته شود. برنامه شما برای ورودیهای مشخص شده تست خواهد شد و میزان موفقیت آن بخشی از نمره تمرین شما خواهد بود. Unit Test هایی طراحی کنید که درصد Code Coverageبرابر با صد باشد (تصاویر مربوط به Code Coverageدر ابزار مورد انتخاب خود را فایل ارسالی قرار دهید). .4برای قسمت جستجوی دودویی برنامهای که در قسمت قبل نوشتید )aمسیرهای Primeرا به دست آورید و نیازمندیهای پوشش Prime Pathرا بنویسد. )bمسیرهای آزمون را مشخص کنید. )cنمونه های آزمون را برای این نیازمندیها به دست آورید. )dبرای نمونههای آزمون به دست آمده Unit Testبنویسید.
© Copyright 2025 Paperzz