آلفا و امگا دو وضعیت نگاه دارنده مکان میباشند که چرخش زندگی هر شئ را به هم میکند.
(وضعیتهای آلفا و امگا بخش 7).
وضعیت آلفا ابزار شئ را قبل از اینکه ساخته شود نشان و ارائه میدهد.
وضعیت امگا لاشه یک شئ را بعد از اینکه از بین رفت یا اینکه خراب شد نشان میدهد.
هیچ آزمایش و تستی برای اشیاء در این وضعیتها انجام نشده است.
چرخش آلفا امگا شئ را تحت آزمایش از وضعیت آلفا به وضعیت امگا با فرستادن پیام با هر روش حداقل یک بار میبرد.
مجموعه تست چرخش آلفا امگا نشان می دهد که همه روشها در یک گروه به طور جزئی قابل عمل میباشند.
گذشتن این چرخه به معنی این است که گروه تحت تست آماده آزمایشات و تستهای پر هزینهتر میباشد.
عناصر چرخه آلفا امگا در (گراهام 94+، اوربک 94، فایر اسمیت 95، و فایر اسمیت 96) فهرست شده است.
یک مجموعه تست آلفا امگا ابتدا روشهای ساده را امتحان میکند.
هیچ کوششی برای به دست آوردن پوشش جملهای یا امتحان کردن همه مسئولیتها انجام نمیگیرد.
این کوشش بعداً انجام میشود، بعد از اینکه گروه به اندازه کافی و خوب به منظور حمایت تستهای وسیعتر، کار کند.
یک چرخه آلفا امگا شش مرحله اصلی دارد.
تست کننده یک پیام به هر یک از روشهای زیر در ترتیب تعیین شده میفرستد.
1.
روش جدید یا سازنده
2.
روش دست یابنده
3.
روش بولین (شرطی)
4.
روش اصلاح کننده (تغییر دهنده)
5.
روش تکرار کننده
6.
روش از بین برنده و خراب کننده
درون هر یک از این مرحلهها، روشهای خصوصی اول امتحان میشود که به وسیله روشهای حفاظت شده و سرانجام روشهای عمومی دنبال میشود.
از آنجا که روشهای عمومی به طور نمونه بستگی به روشهای حفاظت شده و خصوصی دارد، هنگام دخالت یک روش محافظت شده با یک تست روش عمومی به وجو میآید.
امتحان کردن روشهای عمومی بعد از روشهای محافظت شده و خصوصی میتواند مانع بعضی از این موانع شود.
ترتیب دوباره توالی پایه به منظور همراهی کردن وابستگیهای ویژه گروهی دیگر ممکن است لازم و ضروری باشد.
در کاملسازی و ترکیب یک طرفه فرض میشود که همه یا بیشتر گروه توسعه یافته است.
هنگامی که یک گروه رشد پیدا میکند همان روش دنبال میشود.
تست کننده با رشد عملکردی گروه به طور صفوار افزایش پیدا میکند.
پیامهای آزمایشی ممکن است به حرکت کننده مانند روشهایی که به گروه اضافه میشود، اضافه شود.
اگر فاصله گروهی کامل توسعه پیدا کند اما بعضی از روشها به عنوان شاخههای درخت اجرا شود، پس پیامهای تستی مطابق ممکن است شاخه درخت را امتحان کند یا اینکه تا زمان کامل شدن شاخه درخت به تأخیر بیفتد.
چرخه آلفا امگا ممکن است یک روش مناسب برای روشهای افزایشی باشد و روشها میتوانند در ترتیب آلفا امگا طراحی شوند.
اول سازندهها، بعد دستیابندهها، بعد بولینها، و غیره.
یک تست کننده که این چرخه را اجرا میکند اسکلتی را ایجاد میکند که به آسانی میتواند با موارد آزمایشی بر پایه الگو توسعه پیدا کند.
مدلهای تستی بر پایه اجرا
نقش پوشش قانونی: یک مدل پوشش قانونی شامل قسمتهایی از اجرا میشود که باید برای برآوردن مدل تستی بر پایه اجرا برآورده شود.
پوشش به عنوان یک متریک، درصدی از این قسمتهای آزمایش شده به وسیله یک مجموعه تستی میباشد.
برای مثال هر مجموعه تستی که باعث میشود هر زیرحساب حداقل یکبار امتحان شود، 100 درصد پوشش زیرحسابی یا به طور ساده پوشش زیرحساب تهیه میکند.
صدها پوششی از اواخر 1960 استفاده، نشر و تجزیه و تحلیل شد.
تقریباً همه تستهای بر پایه اجرای حمایتی، به استثنای نمودار جریان گروهی، هیچ مدل پوششی قانونی جدید مهمی برای اهداف سازگار با سافتور پیشنهاد یا توسعه نشده است.
مدلهای پوششی و قانونی دامنه روش در این جا مرور میشود.
و هر کدام به وسیله ابزار پوششی در دسترس تجاری حمایت میشوند که این برای شش زبان یا شرح دادن مفهوم تستی مهم میباشد.
بعضی از پیشنهادات پوششی برای اهداف سازگار با قوانین در بخش 4-4 (مدلهای پوششی برای اهداف سازگار با تست) خلاصهمیشود.
در روش تستینگ، پوشش به وسیله معیار کفایت تعریف میشود که این عناصر یک IVI تمرین شده به وسیله یک استراتژی تستی را تعیین میکند.
(ویوکر 88).
یک مجموعه تستی اگر همه عناصر امتحان شده، امتحان شده باشند، کافی میباشد.
استراتژی تستی X گفته میشود که زیرمجموعه استراتژی y باشد اگر همه عناصری که y امتحان میکند، همچین به وسیله X نیز امتحان شوند.
برای مثال گفته میشود که پوشش شاخهای زیرمجموعه پوشش زیرحسابی (جملهای) باشد.
زیرا امتحان همه شاخهها ضرورتاً همه زیرحساب را امتحان میکند.
سلسلهبندی زیر مجموعهای درجهبندی تحلیلی پوششها میباشد.
هیچ نتایج قابل عمومی شدهای درباره تأثیرات خرابی پیدا شده نسبی وجود ندارد که به درجهبندی ارتباط داشته باشد.
زیرا هیچ مورد جامعی در مورد شمار و انواع باگهایی که باقی میمانند نمیتواند اشاره شود و رسیدن به یک هدف پوشیده چیزی مانند تناسب برای استفاده را نمیرساند.
یک پوشش پائینتر در این سلسله بندی بر این دلالت نمیکند که یک معیار بالاتر ضرورتاً برای پیدا کردن نتایج باگی برای یک استفاده خاص و بالعکس ضروری میباشد.
برای دلایل شرح داده شده در بخش 9، نقش مناسب تجزیه و تحلیل پوشش قانونی برای تستهای مسئولیتی، ایجاد یک مدل تکمیلی و ترکیبی میباشد.
از یک مدل پوششی کدی به عنوان یک مدل تستی استفاده نکنید.
برای طراحی کردن مجموعه تستی به مدلهای پوششی کدی تکیه نکنید و از تستیهای مسئولیتی و گزارشات پوششی برای تجزیه و تحلیل کفایت مجموعه تستی استفاده کنید.
پوشاندن بعضی از جنبههای یک روش یا گروه هرگز ضمانتی برای سافتور بدون باگ نمیباشد.
با وجود این، تجزیه و تحلیل کدی و پوشش کدی نقش مهمی در نتایج سازگار با تست دارد.
گزارشات پوششی میتواند به مجموعه تستی ناکافی اشاره کند.
گزارشات پوششی ممکن است وجود شگفتیهد را اشاره کند.
گزارشهای پوششی میتواند به تعیین ساختهای اجرایی که به طرحی تستی بر پایه اجرا یا رشد توسعه شاخهها و حرکتکنندههای ویژه نیاز دارند، کمک میکند، شاید بیشترین استفاده مهم تحلیل پوششی ملایم کردن نقاط کور غیر قابل اجتناب میباشد.
هر دو تست کنندگان غیر وابسته و توسعهدهنگان به طور مداوم قادر به طرح و تدبیر مجموعه تستهای پوششی بالا تنها به وسیله تجزیه و تحلیل وظیفه نیستند.
مجومعههای تستی اگرچه اغلب کامل به نظر میرسند، اما به بیشتر از 60 درصد جمله یا پوشش شاخه ای نمیرسند.
برای مثال، یک مطالعه انجام شده به وسیله یک فروشنده یک آنالیز کننده پوششی C++ رایج نشان داده است که مجموعه تستهای تابعی وسیع انجام شده برای یک استفاده هوا فضایی تنها 40 درصد شاخههای عضو برد تابع را آزمایش کرده است.
هورگان تجربه و آزمایشی را توضیح میدهد که همین تأثیرات مشابه را نشان میدهد (هورگان 96+).
این آزمایش دو برنامه سودمند استفاده شده به طور وسیع پیچیده انجام شده است.
TEX و AWK.
این برنامهها به وسیله اشکال راهنما در علم کامپیوتر و برنامهنویسی توسعه یافته است (به ترتیب دونالد توت و پرین کرینگان) و برای سالهای زیادی به وسیله متقاضیان استفاده شده است.
کد منبعی C و مجموعه تستها برای شش برنامه به طور رایگان در دسترس میباشند.
اگر چه این مجموعه تستها آنالیز دقیقی از عملکرد را انعکاس میدهد، به طور آشکار به وسیله تحلیل پوششی واجد شرایط میشوند.
هورگان هر دو سیستم را وسیله قرار و مجموعه تستهای منتشر شده را اجرا کرد.
نتایج پوشیده در جدول 2-10 نشان داده میشود.
هیچکدام از مجموعه تستها به پوشش حکمی نرسیدهاند و تنها در حدود دو سوم شاخه پوشیده شدهاند.
(مراجعه شود به بخش پوشش جریان دیتا در صفحه 384 تا 389 برای توضیح استفاده پوشش C و P).
در سیستمهای بزرگ پوشش صد درصدی اغلب به خاطر راههای غیر عملی، کد مرده، و جابجایی استثنا غیر قابل دسترسی میباشد.
تا 10 تا 15 درصد اجازه برای چنین ناهمسانی در سیستمهای پیچیده وجود دارد (در سیستمهای پیچیده بزرک، میانگین 80 تا 85 درصد پوشش شاخهای به دست آورده میشود.
]گردی 92، 171[) .
جدول 1-1 بنابراین حتی با اجازه غیرعملی و سوء استفاده مهم، مجموعه تستهای عملکردی منتشر شده همه جنبههای کد را آزمایش نمیکنند.
این نتایج به طور ضعیف روی توانایی توتف کنندگان یا هر آزمایش کننده یا توسعه دهنده دیگری منعکس نمیشود، اما نسبتاً نشان میدهد که چقدر تست کردن سیستمهای پیچیده علاقه آکادمیکی میباشد.
منبعی گروهی ابزارهای پوششی کدی به وسیله تجزیه کردن آن برای القا کد شیاری، کدگذاری میشود.
زمانی که مقصد گروه ابراز شده اجرا میشود، حکمهای شیاری القا شده تولید یک فایل شیاری میکند.
بعد از اینکه تست اجرا شده، فایل شیاری برای تولید گزارش پوششی پردازش میشود گزارش پوشیده نشان می دهد که کدام قسمت گروه ابراز شده برای همه اجراهای تستی که به یک فایل پوششی وارد شدهاند، اجرا میشود.
بخشهای ابراز شده به وسیله مدل پوششی حفاظت شده با ابزار پوششی تعیین میشوند.
همه ابزار پوششی در دسترس از نظر تجاری دارای ارزش شاخههای و بخشهای حساب شده در دامنه روشی میباشد.
بعضی از ابرازها پیامهای سرورـ مراجع را شیاربندی میکنند و از مدلهای پوششی اضافی حمایت میکنند، بر حسب انتشار این کتاب، هیچ ابزاری که بتواند تحلیل پوششی را در دامنه گروهی یا دامنه گروهی صاف شده حمایت کند، در دسترس نمیباشد.اگرچه گروه بزرگ، گروههای تحت تست ابزاریابی داشتهاند، تحلیل پوششی به ما مطلب کمی در مورد خصوصیاتی توارثی آزمایش شده یا نشده، اگر چیزی وجود داشته باشد، میگوید.
روشهای انتزاعی (یک فاصله بدون اجرا) دارای هیچ قسمتی نمیباشد و در اینجا، بعضی از ابزار 5 درصد پوشش و بقیه 100 درصد پوشش را گزارش میدهند.
یک تحلیلگر پوششی یک قسمت ضروری ابزار کار امتحان کننده و تستکننده میباشد.
ابزار دستی خطاپذیر و وقیتگیر میباشند.
در مقابل ابزار اتوماتیک و ساختن دوباره معمولاً چند ثانیه طول می کشد.
ابزارآرایی به طور نمونه روی یک کپی از منابع گروهی تحت تست انجام میشود.
تغییرات اشکالزدائی برای کدگذاری غیر ابزار شده انجام میشود.
یک کپی از این منبع ابزاریابی میشود و مجموعه تستی دوباره اجرا میشود.
کد منبعی ابزار شده معمولاً دور ریخته میشود یا اینکه آرشیو میشود.
پوشش کدی FAQ قبل از بحث در مورد اینکه مدلهای پوششی برای شش زبان به وسیله آنالیزگرهای پوششی در دسترس به طور تجاری حمایت شدهاند، اشارات اصلی کمی باید در مورد پوشش انجام شود.
جزئیات معیار پوشش در بخشهای زیر آمده است.
آیا پوشش 100 درصدی همان پوشش جامع و فراگیر میباشد؟
نه، تست جامع به جز موارد جزئی غیر ممکن میباشد.
یک مجموعه تستی جامع نیاز دارد که همه راهها برای واردات ممکن و وضعیتها امتحان شود.
اگر حلفهها موجود باشد، هر تکرار میتواند به عنوان مسیر جدایی در نظر گرفته شود، بنابراین شمار مسیرها به طور نجومی افزایش پیدا میکنند و زیاد میشود، حتی در برنامههای ساده (مراجعه شود به بخش 3-3 محدودیتهای آزمایش) .
اندازههای پوششی نمونه بر پایه زیرمجموعههای کوچک آزمایش جامع میباشد.
آیا پوشش شاخهای همان پوشش مسیری میباشد؟
نه، یک مجموعه تستی که هر شاخه را یک مرتبه آزمایش میکند، ضمانت نمیکند که همه مسیرهای ورودی و خروجی مورد امتحان واقع شوند.
این به معنی آن نیست که همه مسیرهای ممکن در وجود تکرار، مورد امتحان واقع شدهاند.
شمار مسیرهای ورودی ـ خروجی مورد نیاز برای پوشش شاخهای معمولاً در مقایسه با شمار کلی مسیرهای ورودی ـ خروجی کوچک میباشند.
در چند موارد ویژه، شاخه و پوشش مسیر یکی می باشند.
بعد به قسمت پوشش شاخهای در این بخش مراجعه شود.
آیا پوشش حکمی یا پوشش بر پایه مسیر همان پوشش مسیری میباشد؟
نه، مراجعه شود به جواب قبل.
آیا پوشش مسیری میتواند به دست آورده شود؟
شاید، پوشش مسیری نیاز به این دارد که: 1.
شما وقت کافی برای تعیین و تست همه مسیرهای ورودی ـ خروجی داشته باشد (روشی تنها با 10ها حکم که میتواند صدها مسیر داشته باشد).
2.
و با هر حلقه به عنوان بخش مجزایی با چندین موارد ویژه برخورد کنید.
3.
همه راهها و مسیرها عملی باشند.
آیا هر مسیر در یک نمودار جریانی قابل تست میباشد؟
بستگی دارد.
در کدهای خوب سازمان یافته، اکثر مسیرهای ورود و خروج میتوانند اجرا شوند.
اینکه ما میتوانیم مسیری را روی نمودار جریان دنبال کنیم به این معنی نمیباشد که توالی تطابقی حکمها آسان میباشد.
مشکل عملی بودن مسیر در بخش 3-2-10، حساسیت مسیر بحث میشود.
آیا کمتراز 100 درصد پوشش قابل قبول است؟
مسیرهای غیر عملی، کدهای مرده، و جابجایی استثنا میتواند مانع 100 درصد پوشش از هر نوعی شوند.
10 تا 15 درصد، اجازه نمونه برای چنین سیستمهای پیچیدهای میباشد.
آیا من میتوانم در یک آزمایش دارای اطمینان خاطر بالایی باشم اگر پوشش را اندازه نگیرم؟
نه.
از دست دادن یک شاخه یا قسمت آسان میباشد حتی اگر شما یک مجموعه تستی وظیفهای را به طور شیطانی و زیرکانه توسعه دهید (مراجعه شود به جدول 2-10 و بحث آزمایش هورگان).
آیا دسترسی به پوشش صد درصد برای X و گذراندن همه تستها به این معنی است که من دارای کد بدون اشکال و گیر می باشم؟
نه، خیلی از اشکال و گیرها میتوانند از مجموعه تست پنهان شوند که پوشش بالایی را کسب میکنند.
مراجعه شود به صفحات 396 تا 399، یک بار دیگر با احساس، قسمت تاریک پوشش کدی.
چه موقع میتوانم تست کردن را متوقف کنم؟
کمترین پوشش کدی توصیه شده برای هر الگوی طراحی آزمایش در بخش معیار خروجی مطابقش داده شده است.
در عمل، چند وضعیت غیر معمول ممکن است توسعه پیدا کند.
در لیست پائین، پوشش به پوشش صد درصدی برای همه مدلهای آزمایشی انتخاب اشاره میکند که این در پوشش شاخهای دامنه میباشد.
پوشش به دست آورده میشود، اما بعضی از تست ها انجام نمیشود.
کار تا زمانی که همه تستها انجام نشود و پوشش به دست نیاید، انجام نمیشود.
بالا بردن IUT و آزاد کردن کد بدون تصحیح همه اشکال قابل قبول میباشد اگر: 1.
اشکال شناخته شده غیر انتقادی باشند (اشتباهات آرایشی در فرمت کردن GUI، برای مثال) 2.
اگر شما یک لیست اشکال شناخته شده را با مستندسازی آزاد سازی شامل کنید.
همه تستها انجام شود، اما پوشش به دست آورده نشود.
(بخش 3-2-10 حساسیت مسیر) یا اینکه قسمتهای اضافی گران باشد.
پوشش به دست آورده نشود و بعضی از تستها انجام نشود.
شما ممکن است در موقعیتی باشید که نتوانید کد را عوض کنید.
بعضی از اشکال میتوانند از پوشش جلوگیری کنند.
اگر شما نتوانید کد را عوض کنید، پس شما نمیتوانید پوشش دست پیدا کند.
سعی کنید موارد تستی را پیدا کنید که اشکال و گیرها را دور خواهد زد (نادیده خواهد انگاشت) و پوشش بالاتری تولید کند.
پوشش به دست آورده میشود.
همه تستها انجام میشود یا اینکه شما تصمیم گرفتهاید پوشش اضافی ضمانت نشود یا اینکه عملی نباشد.
شما تقریباً انجام دادهاید.
این ابزارسازی که احتیاج به اندازهگیری پوشش دارد میتواند گاهی اوقات باعث شکستهای ساختگی شود.
مطمئن باشید که همه ثابتهای اشکالی واقع کار میکند.
همیشه برای ساختن اجرای دوباره نهایی مجموعه تست پوششی کلی روی یک اجرای غیر ابزاری برنامهریزی کنید.
پوشش به دست میآید و همه تستها روی کد غیر ابزاری انجام میشود.
تبریک ـ شما یک تست مناسب را اجرا کرده اید.
روش مدلها پوشش کدی دامنهای نمودار جریان کنترلی یک اصطلاح و عبارت شرطی شامل یک وضعیت یا وضعیتهایی میشود که درست یا غلط را ارزیابی میکند.
شرطی ها در حکم های کنترلی استفاده میشوند.و مانند اگر.
یک شرطیا هر عمل کننده بولینی در یک عبارت ظرطی تطابق میکند.
یک شرظ با چند وضعیت و شرطف یک شرط ترکیبی نامیده میشود.
ارزیابی عبارت شرطی به طور نمونه منجر به انتقال کنترل به یکی از چندین بخشها مجزای کدی میشود.
یک بخش مجزا یک یا دو جمله دائمی لغوی با هیچ جمله شرطی اجرا شده میباشد.
یعنی اینکه به محضش اینکه یک بخش مجزا وارد شدف همه جملات در بخش مجزا اجرا خواهند شد(این تداوم محیط با وقت طی شده را نشان میدهد ـ ما در مورد شکستهای نیرو یا مشکلات فاجعهبار مشابه نگران نیستیم.
آخرین جمله در یک بخش مجزا باید شرط، یک کنترل حلقهای، خروجی روش دیگری باشد.
آخرین قسمت مجزا شامل شرط یا عبارت خروجی میباشد که قطعه دیگری را انتخاب میکند اما شامل کد قطعه بعدی نمیشود.
شکل 2-10 قسمت میانگیر دایرهای گروه جواوا را نشان میدهد.
یک میانگیر داره وار مانند یک حلقه ضبط کار میکند.
پیامها به طور متوالی تا زمانی که حد میانگیر به دست آید، ضبط می شوند.
سپس پیام بعدی روی قدیمیترین پیام نوشته میشود.
میانگیر (بافر) میتواند شمار ثابتی از بیشترین پیام های اخیر را نگه دارد.
روش Display lastMsy، اخیرترین n پیام اضافه شده را به نمایش می گذارد.
اگر میانگیر خالی باشدف هیچ پیامی اجرا نمیشود.
اگر n بزرگتر شمار پیامهای در دسترس باشد، همه پیامها به نمایش گذارده می شوند.
در این روش فرض میشود که اشاره گر به آخرینت پیام به عنوان پیامهایی که به میانگیر میشود، نگهداری میشود.
کد لازم برای Display lastMsy (اجرای آخرین پیام) و قسمت از میانگیر دایرهای شکل گروه در شکل 2-10 به نمایش کشیده شده است.
جدول 2 برچسبهای قطعات مطابق برچسبهای گره در شکل 3-10 می اشد.
همه مدلهای پوشیده کدی به طور نمونه از بعضی اشکال نمودار جریان کنترل استفاده میکنند.
(مبحث 77).
این گراف نشان می دهد که کدام قطعات برنامه ای ممکن است به وسیله دیگران دنبال شود شکل 3-10 نمودار جریان کنترلی را برای Display lastMsy نشان میدهد.
یک قطعه به وسیله یک گره در یک نمودار کنترلی (یک دایره) نشان داده میش ود.
گرهها میتوانند به وسیله هر قرارداد مفیدی نامگذاری یا شمارش شوند.
حروف بزرگک در اینجا استفاده می شوند.
انتقال شرطی کنترل شاخه یا انشعاب میباشد.
یک انشعاب به وسیله یک لبه برونرو (ورودی) در یک نمودا رکنترلی نشان داده میشود.
یک لبه مستقیم ()پیکان) نشان مثیدهد که قطعه دیگری میتواند از قطعه دیگری به دست آید.
پیکان با هیج حکم ویژهای تطبیق نمیکند.
نقطه ورودی یک روش به وسیله گره ورودی نشان داده میشودف که یک گره بدون لبههای درون سوی میباشد.
یک روش متشکل از قسمتهایی است که به وسیله پیکانها به هم مربوط می شوند.و یک مسیر ورودی ت خروجی ـ مسیر یاست که از گره ورودی شروع میشود و به گره خروجی ختم میشود.
یک مسیر به وسیله گرههایی که مسیر را تشکیل میدهند ساخته شده است.
حلقهها به وسیله قطعاتیدرون پرانتزها نمایش داده می شوند و به وسیله ستارهای که نشان می دهد این گروه ممکن است از صفر تا nبار تکرار شود، دنبال می شوند.
این رشتهها اصطلاحات و عبارت های مسیری میباشند (بیزر 90).
مسیرها ممکن است از طریق گراف کنترلی در خیلی از روشها دنبال شوند.
با در نظر گرفتن تکرار،شمار مسیرهای ورود و خروج برای اهداف عملی نامحدود میشود.
(به بخش 3-3 محدودیتهای آزمایش مراجعه شود) همه زبانهای برنامهنویسی موجود در این کتاب از شرطهای ترکیبی حمایت میکنند.
برای مثال به هر وضعیت در سه شرط ترکیبی Display lastMsy به عنوان یک بخش مجزا در شکل 7-10 نشان داده میشود.
جعبههای انداخته شده در اطراف گره ها در شکل 3-10 دلالت می کند که ممکن است آنها در همان حکم اتفاق بیفتند.
شرطهای ترکیبی باید به طور جداگانه مدلسازی شوند.
همه ترکیبات غلط ـ صحیح در یک شرط ترکیبی مییتوانند آنالیز شوند و تآثیرات ارزیابی بولینی محیط کوچک واضح و روشن میشود.
C++، جاوا، و C عینی از معانی C استفاده میکنند.
ارزیابی بولینی محیط کوچک برای همه اصطلاحات بولینی چند شرطی به کار میرود.
ارزیبای اصطلاحی زمانی که آپوند (عملوند) سمت چپ یک اپراتور || درست میباشد، متوقف میشود.
ارزیابی زمانی که آپرند یک اپراتور && غلط میباشد، متوقف میشود و انشعاب غلط گرفته میشود.
برای مثال اگر زمانی که X صفر نباشد، y/x ارزیابی نمیشود و اجرا حکم به حکم بدی ادامه پیدا می کند.
این روش از تقسیم به وسیله صفر جلوگیری میکند.
زمانی که X صفر میباشد.
پیام Foo تنهای زمانی فرستاده میشود که هر دو قسمت شرط درست باشد.
Adu 95 به صورت اتوماتیک تولید ارزیابی محیط کوچک نمیکند، اما ایجاد اپراتورهای محیط کوتاه و "سپس" و " اگر نه" میکند.
این عملگرها ترتیب ارزیابی و پایان را تعیین میکنند.
اپرند سمت راست عملگر "و سپس" تنها زمانیکه آپرند در سمت چپ درست باشد، ارزیابی میشود.
ارزیابی در اپرند سمت چپ غلط اولیه تمام میشود، و انشعاب غلط گرفته میشود.
اپرند سمت راست "و اگرنه" زمانی که اپرند سمت چپ غلط باشد، ارزیابی میشود.
ارزیابی در اولین اپرند سمت چپ صحیح پایان میباید و اشنعاب درست گرفته میشود.
برای مثال: واضح است که هر ارزیابی محیط کوتاهی ارزیابی میشود.
افیل ایجاد عملگرهای " و سپس" و " و اگرنه" میکند، که معانی Ada را دنبال میکند.
کلمات کلیدی تحویل شده توانایی مشابهی را نشان میدهد.
نشان میدهد اختلاطها ارزیابی بولینی محیطی کوتاهی را با پیامهای بلوک شده اجرا میکنند و: یک بلوک و یا: و یک بلوک پیامها تنها میتوانند به اپرند بولینی فرستاده شوند.
زمانی که دریافت کننده و : یک بلوک درست باشد، یک بلوک ارزیابی میشود و به علاوه دریافت کننده میشود.
زمانی که دریافت کننده غلط باشد، یک بلوک ارزیابی نمیشود و عبارت به عنوان درست ارزیابی میشود.
زمانی که دریافت دریافت کننده غلط باشد، یک بلوک ارزیابی میشود و با غلط ارزیابی میشود.
اگر X درست باشد.
پوشش جملهای پوشش جمله ای زمانی به دست میآید که همه جملات در یک روش حداقل یک بار اجرا شوند.
این به عنوان پوشش CL، پوشش خطی، پوشش قطعهای یا پوشش بلوکی شناخته میشود.
پوشش بلوکی پایه و قطعهای، قطعات را به جای حکمهای شخصی و انفرادی محاسبه میکنند.
استفاده قطعات به عنوان واحد از بعضی از تحریفهای گزارش شده اجتناب میکند.
فرض کنید که یک روش دو قطعه داشته باشد، P و Q.
Pدارای یک حکم میباشد و Q دارای 9 حکم.
10 درصد پوشش حکمی به وسیله اجرای P و 90 درصد پوشش حکمی به وسیله Q به دست آورده میشود.
اگرچه قسمت جملات تمرین شده درست میباشد، شماره ها شمار تستهای اضافی مورد نیاز را منعکس نمیکنند.
تحت پوشش قطعهای، 50 درصد پوشش برای امتحان کردن هر قطعه گزارش میشود با اشاره به این که مجموعه تستی به طور ناقص برای به دست آوردن پوشش قطعه ای میباشد.
اگر ما بتوانیم یک مسیر ورودی خروجی پیدا کنیم که شامل همه قطعات بشود، ما میتوانیم 100 درصد پوشش حکمی با یک مورد تستی ساده تشخیص دهیم (هیچ ضمانتی وجود ندارد که چنین مسیر وجود خواهد داشت) مسیر 12 Display lastMsy، ABC(DEF)*DGH(IGK)*IL چنین مسیر میباشد.
حلقهها نیاز دارند که به اندازه کافی برای به دست آوردن همه حکم ها در بدنه حلقه، تکرار شوند.
سادگی پوشش حکمی جذاب و گیرا میباشد.
اما اشکال ظریف و پر سر و صدا میتوانند از مجموعه تستی که این نوع پوشش را به دست میآورد، پنهان شوند.
فرض کنید که شرط در گروه B به طور غلط به عنوان محاسبهگر msg کدگذاریس شده است.
.
هر مجموعه تستی که محاسبهگر پیامی را مجبور به صفر بو.دن حداقل یکبار نکند، این خطا را از دست خواهد داد.
شمار زیادی از مجموعههای تستی میتوانند پوشش جملهای را بدون دیدن این وضعیت تهیه کنند.
از آنجا که همه جملات در بدنه حلقه گذرگاه تک اشکالهای کنترلی حلقهای رایج را آشکار کند.
پوشش جملهای به طور نمونه بدون امتحان کردن هم ترکیبات صحیح ـ غلط یک شرط ساده میتواند به وجود آید.
با بعضی از ساختارهای کدی، پوشسش جمله ای و همچنین پوشش شاخهای را به دست میآورد.
برای مثال ما باید هر دو شاخهها را برای به دست آوردن همه جملات در FOO بگیریم.
با وجود این، همه حکم ها در یک nule else، Until loop و case بدون ساختارهای عیوبی میتوانند بدون امتحان کردن همه شعبه ها به دست آورده شوند.
شکل 8-10 این موقعیتها را نشان میدهند.
با یک nule else مسیر ABC پوشش حکمی را بدون امتحان کردن شاخه روی مسیر AC نشان میدهد.
برای مثال پوشش حکمی FOO به وسیله قرار دادن x و y به طور مساوی به تست آورده میشود.
زمانی که موقعیت غلط میباشد، کد تولید یک از کار افتادگی غلط، و اشاره گر غلط می کند.
در until loop مسیر AB تولید پوشش حکمی بدون انجام تکرارهای حلقهای میکند.
در ساختار case بدون عیب پوشش جمله ای به وسیله یک مجموعه تستی که همه مسیرهای AB، ACD، ACEF و ACEFG امتحان میکند، تهیه میشود.
شاخه QI از آخرین شرط حذف میشود.
همه این مثال هاساختارهای برنامهنویسی سازمان یافتنی قانونی می باشند که میتواند اشکال را از مجموعه تستی پوشش حکمی پنهان کند.
ساختن یک case برای کمتر از 100 درصد پوشش جملهای سخت میباشد.
به طور وضوح، اگر یک گیر در یک حکم وجود داشته باشد و آن حکم اجرا نشود، ما هیچ برای آشکار کردن گیر و اشکال نداریم.
پوشش حکمی کمترین مورد نیاز به وسیله معیارهای مهندسی سافتور IEEE میباشد.
[IEE E 1008] و استاندارد به ثبت رسیده IBM برا ی مدت 30 سال بود.
همان طور که مثالهای قبل نشان داد، این یک معیار ضعیف میباشد و به عنوان خالیترین مینیمم میباشد.
پوشش شاخهای (انشعابی) پوشش شاخهای زمانی که هر مسیر از یک گره حداقل یک بار به وسیله مجموعه تستی اجرا میشود، به دست آورده میشود.این به عنوان پوشش حکمی، پوشش لبهای، یا پوشش C2 شناخته میشود.
پوشش شاخهای روی پوشش حکمی به وسیله نیاز به اینکه هر شاخه حداقل یک مرتبه گرفته میشود، پیشرفت پیدا میکند.
(حداقل یک ارزیابی درست و یک ارزیابی غلط).
این شرط ترکیبی را به عنوان یک حکم کلی در نظر می گیرد.
یک عبارت شرطی با n وضعیت، بیشترین ترکیبات 2n نتایج صحیح ـ غلط دارد.
پوشش شاخهای نیاز به این داردکه تنها 2 تا آزمایش شود.
ما برای مسیر گرفته شده از شرط اعتبار دریافت میکنیم و مهم نیست که کدام وضعیت به شاخه ختم میشود.
نمودار پوشش شاخهای Display last msg مانند شکل 7-10 به نظر میرسد.
با گرههای ترکیبی {A,B}، {D,E} و {I,J} طوری رفتار میشود که انگار به ترتیب گرههای X، y و z ساده میباشند.
چند مسیر باید برای کسب پوشش شاخهای پوشش داده شود؟
با هیچ حلقه و گرههای شاخهای 2 مسیر D، پوشش شاخهای نیاز به مسیرهای بیشتر از D+1 ندارد.
این همچنین برای گرافهای با حلقه در مسبرهای کمتر از D+1 ممکن است به دست آورده شود.
برای مثال در Display last msg پوشش شاخهای میتواند در 3 مسیر به دست آورده شود.
در این مثال ما می توانیم شاخه ورودی حلقه و شاخه خروجی حلقه را روی یک مسیر بگیریم.
مانند پوشش جملهای (حکمی) پوشش شاخهای هیچ محدودیت ویژهای را روی شمار تکرارها قرار نمیدهد.
این میتواند به وسیله چندین مسیر مختلف به دست آید و هر مسیر به وسیله مقادیر آزمایشی مختلف ممکن است فعال شود.
پوشش شاخهای پیشرفتی روی پوشش حکمی میباشد زیرا هر نتیجه عبارت شرطی باید حداقل یک مرتبه مورد آزمایش و امتحان واقع شود.
با وجود این، این دارای نقاط کور خودش میباشد.
ارزیابی محیط کوتاه به معنی آن است که هر پوشش شاخهای ممکن است برای شروط ترکیبی بدون آزمایش همه وضعیتها به دست آید.
برای مثال در روش C++ یا جاوا، شاخه ++X زمانیکه a==b میشود گرفته میشود و مقدار xو y هر چی میباشد و این ( ) خالی میباشد.
شاخه --x زمانیکه a!=bو x!=y گرفته خواهد شد، هرچه به وسیله این برگشت داده میشود خالی میباشد.
پوشش شاخهای مسیرهای غیر صریح را که از شروط ترکیبی منتج میشود نادیده میگیرد.
نمودارجریان کنترلی که از بسط کامل Display last msg منتج میشود، دارای مسیر ورود و خروج 22 میباشد که این در مقایسه با 11 برای مدل مجموعه میباشد.
پوشش شاخهای ضمانت نمیکند که همه مسیرهای ورود و خروج اجرا شوند.
تنها 3 تا از 11 مسیر احتمالی برای Display last msg مورد نیاز میباشد.
این نقطه کور میتواند بر مجموعه تست پوششی تأثیر کند.
حتی در مسیرهای ساده با شرو ع ساده.
برای مثال پوشش شاخهای برای روش میتواند با 2 آزمایش به دست آورده شود: {a=0, b=0, x=0, y=0} و {a=0, b=1, x=0, y=1}.
در حقیقت چها رمسیر ورود ـ خروج وجود دارد: صحیح ـ صحیح، صحیح ـ غلط، غلط ـ صحیح ، غلط ـ غلط.
هر مسیر محاسبه مختلفی را نشان میدهد.در مسیر صحیح ـ صحیح، x عوض نمیشود اما به وسیله هر دو شاخه تغییر میکند.
این به وسیله یکی روی صحیح ـ غلط افزایش پیدا میکند و به وسیله غلط ـ صحیح کاهش پیدا می کند.
و روی غلط ـ غلط غیر متغیر و غیر ملموس باقی می ماند.
پوشش چند وضعیتی پوشش شاخهای نیاز به امتحان هر وضعیت در یک شرط ترکیبی یا ترکیبات صحیح ـ غلط یک شرط ترکیب ندارد.و خیلی از اشکال رایج بنابراین میتوانند از مجموعه تست شاخهای پنهان شوند.
میر 3 مدل پوششی متناوب برای امتحان این روابط آنالیز میکند.
(میر 79)پوشش وضعیتی نیاز به این دارد که هر روش وضعیتی حداقل یک بار به عنوان صحیح یا غلط ارزیابی میشود.
این نیاز به تست کردن همه شاخههای ممکن ندارد زیرا امکان عوض کردن یک شاخه و تمرین همه وضعیتها وجود ندارد.
پوشش وضعیتی بنابراین میتواند گرهها را از دست بدهد و به طور احتمالی ما را با کمتر از پوشش حکمی کامل قرار دهد.
پوشش شرطی / شاخهای به وسیله نیاز به اینکه هر وضعیت حداقل یک بار صحیح یا غلط ارزیابی شود، روی این روش پیشرفت میکند.
با شرطهای پیچیده ویژه، پوشش وضعیتی / شاخهای اینکه همه ترکیبات صحیح /غلط شرایط آزمایش شوند، را ضمانت نمیکند.
پوشش چند وضعیتی نیاز به این دارد که همه ترکیبات صحیح /غلط شرایط ویژه حداقل یک بار مورد آزمایش واقع شوند.
حداکثر 2 ترکیب صحیح /غلط برای حکم شرطی با n وضعیت ساده وجود دارد.
اگر پوشش چند وضعیتی به دست آید، سپس همه حکمها، شاخهها و وضعیتها لزوماً پوشیده میشوند.
این نوع پوشش، پوشش مسیری را ضمانات نمیکند.
اگر همه شرایط در یک روش به جدول حقیقی انداخته شود، پوشش چند وضعیتی همان پوشش همه تغییره میباشد (مراجعه شود به بخش6، مدلهای ترکیبی).
موانع عملی ممکن است ما را از تشخیص پوشش چند وضعیتی مانع کند.
رسیدن به همه ترکیبات شرطی ممکن به خاطر ارزیابی محیط کوتاه غیر ممکن باشد.
شرایط جامع دو طرفه که چندین اصطلاح شرطی را احاطه می کند ممکن است مانع ترکیبات ویژه شود.
اگرچه ما معمولاً به موارد دستی 2n برای پوشش چند وضعیتی احتیاج نداریم، موارد تستی بیشتری در مقایسه با یک حکم یا مجموعه تستی پوشش شاخهای مورد نیاز میباشد.
بعضی از ابزارهای پوشش حدی را گزاری میدهند که در آن همه ترکیبات صحیح / غلط مشروط ترکیبی فعال شدهاند اما معمولاً نمیتوانند تعیین کنند که کدام ترکیبات حذف شده غیر عملی می باشند.
چندین ترکیب صحیح /غلط بر پایه ساختارعملگرهای "و" و "یا" در یک عبارت شرطی ترکیبی ممکن است مفید به اثبات برسد اگر پوشش چند وضعیتی غیر عملی باشند.
(مراجعه شود به بخش 6) پوشش کدی مقصد پوشش کدی مقصدی به وسیله ابزارسازی القا شده9 در کد مقصد تولید به وسیله همگردان اندازهگیری میشود.
این پوشش برای تصدیق بعضی از استفادههای امنیتی لازم میباشد.
ابزارهای پرفایل کردن اجرایی به طور نمونه در این سطح کار میکنند و میتوانند ایجاد قطعات مقصد کنند یا اینکه ایجاد یک پوشش شاخه ای مقصد به عنوان یک تأثیر جانبی کنند.
نتایج یک آنالیزگر پوششی مقصد برای بیان کردن سخت میباشد.
بهینه کردن همگردان، برای مثال، ایجاد کد مقصدی میکند که ساختمانش از ساختار کد منبعی به طور اصلی فرق میکند.
خیلی از همگردانها برای ماشینها RISC فراخوانهای عملکردی را برای افزایش تأثیر ذخیره شدگی به صف خواهد کرد.
حلقه ها با شمار ثابت ممکن است باز شود و غیره.
اگر عملکردهای داخلی دارای شاخه یا حلقه باشد، کد مقصدی ممکن است شامل شاخههای بیشتری نسبت به منبع باشد.
ماکرهای C ـ عینی و C++ به شاخههای غیر منتظره و ناهمسانیهای دیگر منجر میشوند.
این پوشش همه قدرت و ضعف پوشش کدی منبعی را در بر میگیرد اما بار اضافی بیان تجزیه و تحلیل پوششی روی کد مقصد تحمیل می کند.