+1 امتیاز
قبل در برنامه نویسی توسط (130 امتیاز)
برچسب گذاری دوباره قبل توسط
برای تست‌ جریان داده در یک برنامه، روش‌های مختلفی وجود دارد. از جمله All-Uses Testing و All-Definition Testing

مفهوم کلی این دو روش چیست و چه تفاوت‌هایی با هم دارند؟

1 پاسخ

+2 امتیاز
قبل توسط (1.4هزار امتیاز)
ویرایش شده قبل توسط
 
بهترین پاسخ

فرض کنید شما گراف برنامه تان را بدست آورده اید؛

تعریف کلی:

All-Defs Coverage: برای هر متغیر موجود در برنامه، شما باید برای هر تعریف (مقدار دهی) متغیر، حداقل یک مسیر رو پیدا کنید که متغیر در ابتدای مسیر تعریف، در طول مسیر بدون تغییر، و در انتهای مسیر استفاده (خواندن مقدار متغیر) شده باشد. پس مجموعه آزمون باید طوری انتخاب شود که در اجرا، حداقل  یک بار چنین مسیری برای هر تعریفِ هر متغیر طی شود.

All-Uses Coverage: برای هر متغیر موجود در برنامه، شما باید برای هر استفاده از متغیر، حداقل یک مسیر پیدا کنید که در ابتدای مسیر تعریف، در طول مسیر بدون تغییر، و در انتهای مسیر استفاده شده باشد. پس مجموعه آزمون باید طوری انتخاب شود که در اجرا، حداقل  یک بار چنین مسیری برای هر استفاده از هر متغیر طی شود.

تعریف دقیق:

چند تعریف زیر ابتدا باید مطرح شود:

def: مجموعه متغیرهایی که در گره n تعریف (یا مقداردهی) شده اند:

def(n)

use: مجموعه متغیرهایی که در گره n از آنها استفاده (مقدار آنها خوانده شده است) شده است:

use(n)

use: مجموعه متغیرهایی که در یال e از آنها استفاده شده است:

use(e)

مثال گراف:

یک مسیر def-clear برای متغیر v (از گره ni تا گره nj، خود این دو گره در مسیر حساب نمی شوند) است، اگر در هیچ جای این مسیر (گره ها و یال ها)، مقدار v تغییر نکند (def نشده باشد).

du-path برای متغیر v (برای یک مسیر)یک مسیر def-clear برای متغیر v است که در گره ni تعریف (def) و در گره nj استفاده (use) شده باشد:

du(ni,nj,v)

du-path برای متغیر v (برای یک گره آغازین): مجموعه تمام du-path های متغیر v که در گره n تعریف شده اند:

def(n,v)

حالا می توانیم تعاریف All-Defs Coverage و All-Uses Coverage رو بیان کنیم:

All-Defs Coverage:

به ازای تمام مجموعه du-path های 

S = def(n,v)

آزمونهای ما حداقل یک مسیرِ d را از هر S، پوشش دهند (دقت شود هر S برای یک متغیر و یک n تعریف می شود).

All-Uses Coverage:

به ازای تمام مجموعه du-path های

s = def(ni,nj,v)

آزمونهای ما حداقل یک مسیرِ d را از هر S، پوشش دهند (دقت شود هر S برای یک متغیر و یک nj تعریف می شود).

مثال:

مجموعه آزمون ما برای All-Defs Coverage، باید برای متغیر x، حداقل یکی از مسیرهای 4-3-2-0، 4-3-1-0، 5-3-2-0 و 5-3-1-0 را طی کند (که در جدول یکی از این مسیرهای انتخاب شده است)

مجموعه آزمون ما برای All-Uses Coverage، باید برای متغیر x، حداقل یکی از مسیرهای 4-3-2-0 و 4-3-1-0 را برای (use(4 و حداقل یکی از مسیرهای 5-3-2-0 و 5-3-1-0 را برای (use(5، طی کند.

دقت شود، اگر گراف، چند متغیره بود، کارهای بالا باید برای هر متغیر تکرار شود.

سوالات مشابه

+2 امتیاز
2 پاسخ 658 بازدید
0 امتیاز
0 پاسخ 458 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
0 امتیاز
0 پاسخ 247 بازدید
0 امتیاز
1 پاسخ 527 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
+1 امتیاز
0 پاسخ 323 بازدید
+1 امتیاز
2 پاسخ 22.5هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
+1 امتیاز
1 پاسخ 744 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
0 امتیاز
0 پاسخ 874 بازدید
+1 امتیاز
1 پاسخ 442 بازدید
0 امتیاز
1 پاسخ 212 بازدید
...