آلفا و امگا دو وضعیت نگاه دارنده مکان میباشند که چرخش زندگی هر شئ را به هم میکند.
(وضعیتهای آلفا و امگا بخش 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، یک بار دیگر با احساس، قسمت تاریک پوشش کدی.
چه موقع میتوانم تست کردن را متوقف کنم؟
کمترین پوشش کدی توصیه شده برای هر الگوی طراحی آزمایش