ST9401_HW3_rev2.pdf

‫به نام خدا‬
‫آزمون نرمافزار – تمرین سوم‬
‫استاد‪ :‬دکتر میریان‬
‫مهلت ارسال‪4991/9/ 72:‬‬
‫پاسخ به سواالت به صورت گروهی است‪ .‬ارسال پاسخ بعد از ساعت ‪ 21‬شب مهلت تعیین‬
‫شده‪ ،‬به ازای هر روز تاخیر باعث کسر ‪ ۵‬درصد از نمره تمرین میشود‪ .‬به پاسخهای ارسال‬
‫شده با بیش از ‪ 2۱‬روز تاخیر نمرهای تعلق نخواهد گرفت‪.‬‬
‫نام گروهها در سایت درس قرار گرفته است‪ .‬پاسخها را به ‪sharif.test94@gmail.com‬‬
‫ارسال نمایید‪ .‬عنوان ایمیل ‪ ST3-GroupName‬باشد‪.‬‬
‫قسمت تئوری‬
.‫ برای هریک از موتانتها به سواالت زیر پاسخ دهید‬.‫ مشخص شده است‬B ‫ و‬A ‫ با توجه به برنامه زیر دو موتانت‬.2
.‫) در صورت امکان مورد ازمونی ارائه دهید که به موتانت نرسد‬a
.‫ رخ ندهد‬infection ‫) در صورت امکان مورد ازمونی ارائه دهید که به موتانت برسد اما شرط‬b
.‫ برقرار باشد ولی انتشار رخ ندهد‬infection ‫) در صورت امکان مورد ازمونی ارائه دهید که شرط‬c
.‫) مورد آزمونی ارائه دهید که موتانت را بکشد‬d
Mutants A and B:
 while (isPat == false && isub + patternLen - 1 < subjectLen) // Original
while (isPat == false && isub + patternLen - 0 < subjectLen) // Mutant A
 (b) isPat = false; // Original
isPat = true; // Mutant B
// Example program for pattern matching of two strings
class TestPat {
public static void main(String[] argv) {
final int MAX = 100;
char subject[] = new char[MAX];
char pattern[] = new char[MAX];
if (argv.length != 2) {
System.out.println("java TestPat String-Subject String-Pattern");
return;
}
subject = argv[0].toCharArray();
pattern = argv[1].toCharArray();
TestPat testPat = new TestPat();
int n = 0;
if ((n = testPat.pat(subject, pattern)) == -1)
System.out.println("Pattern string is not a substring of the subject
string");
else
System.out.println("Pattern string begins at the character " + n);
}
public TestPat() {
}
public int pat(char[] subject, char[] pattern) {
// Post: if pattern is not a substring of subject, return -1
// else return (zero-based) index where the pattern (first)
// starts in subject
final int NOTFOUND = -1;
int iSub = 0, rtnIndex = NOTFOUND;
boolean isPat = false;
int subjectLen = subject.length;
int patternLen = pattern.length;
while (isPat == false && iSub + patternLen - 1 < subjectLen) {
if (subject[iSub] == pattern[0]) {
rtnIndex = iSub; // Starting at zero
isPat = true;
for (int iPat = 1; iPat < patternLen; iPat++) {
if (subject[iSub + iPat] != pattern[iPat]) {
rtnIndex = NOTFOUND;
isPat = false;
‫‪break; // out of for loop‬‬
‫}‬
‫}‬
‫}‬
‫;‪iSub++‬‬
‫}‬
‫;)‪return (rtnIndex‬‬
‫}‬
‫}‬
‫‪.1‬‬
‫‪ .a‬آیا امکان ایجاد بی نهایت تست از گرامر وجود دارد؟ در صورتی که وجود دارد توضیح دهید که چه چیز و‬
‫چگونه موجب این امر میشود‪.‬‬
‫‪ mutation score .b‬با بحث ‪ coverage‬در گراف چگونه مرتبط است؟‬
‫‪ .3‬با توجه به گرامر زیر به سواالت پاسخ دهید‪.‬‬
‫‪Code::= ChangePart d NOPart‬‬
‫‪ChangePart ::= sp zeroOrSp other‬‬
‫‪4‬‬
‫‪NOPart ::= ordinary‬‬
‫‪ordinary ::= zero | sp | other‬‬
‫‪zeroOrSp ::= zero | sp‬‬
‫"‪zero ::= "0‬‬
‫"‪sp ::= "1" | "2‬‬
‫"‪other ::= "3" | "4" | "5" | "6" | "7" | "8" | "9‬‬
‫"‪d ::= "-‬‬
‫‪ .a‬برای هر یک از رشته ورودیهای زیر مشخص کنید که متعلق به گرامر فوق هستند یا خیر‪ .‬در مواردی که رشته به‬
‫گرامر تعلق ندارد مشکل را نشان دهید‪.‬‬
‫‪123-4567‬‬
‫‪012-3456‬‬
‫‪109-1212‬‬
‫‪346-9900‬‬
‫‪113-1111‬‬
‫‪ .b‬گرامر موتانت زیر را در نظر بگیرید‪ .‬در صورت امکان رشته ای مشخص کنید که در گرامر موتانت ظاهر شود اما در‬
‫گرامر اصلی نباشد‪ .‬رشته دیگری بیابید که در گرامر موتانت ظاهر نشود ولیکن به گرامر اصلی تعلق داشته باشد‪.‬‬
‫رشتهای بیابید که در هر دو گرامر ظاهر شود‪.‬‬
‫‪changePart ::= sp ordinary other‬‬
‫قسمت عملی (اختیاری)‬
‫‪ .2‬با استفاده از ‪ Selenium‬نرم افزاری بنویسید که تعیین کند که با کلید واژه مشخص شده برای جستجو‪ ،‬سایت مورد‬
‫نظر در کدام صفحه از نتایج جستجوی ‪ google‬قرار دارد‪ .‬برای مثال برای عبارت ‪“sharif software‬‬
‫”‪ testing‬و سایت ”‪ “ce.sharif.edu/courses/94-95/1/ce828-1‬در صفحه اول قرار دارد‪.‬‬
‫برنامه‬
‫عبارت‬
‫”‪testing‬‬
‫‪software‬‬
‫‪“sharif‬‬
‫را‬
‫به‬
‫عنوان‬
‫عبارت‬
‫جستجو‬
‫و‬
‫”‪ “ce.sharif.edu/courses/94-95/1/ce828-1‬به عنوان سایت مورد نظر دریافت میکند و باید‬
‫شماره صفحه جستجویی که سایت در آن قرار دارد را اعالم کند‪ .‬این عمل حد اکثر تا صفحه ‪ 12‬انجام شود‪.‬‬
‫‪ .1‬با استفاده از ‪ Selenium‬قابلیت ورود به سایت درس بر روی ‪ ce‬با نام کاربری خود را تست کنید‪( .‬لطفا از قرار‬
‫دادن نام کاربری و کلمه عبور خود در کد خودداری کنید و محلی کامال مشخص برای جایگزینی این دو مورد‬
‫تعبیه کنید تا برنامه قابل تست با نام کاربری و کلمه عبور دلخواه باشد‪).‬‬