您好,欢迎来到小奈知识网。
搜索
您的当前位置:首页实验2 条件覆盖和判定条件覆盖 《软件测试方法和技术》

实验2 条件覆盖和判定条件覆盖 《软件测试方法和技术》

来源:小奈知识网


实验2 条件覆盖和判定条件覆盖

一、实验目的

熟悉Rational Purefy系列测试工具,理解和掌握软件开发单元测试环节中重要的代码逻辑和路径覆盖测试,使用Rational Purecoverage进行条件覆盖和判定条件覆盖测试。 二、实验任务

熟悉Rational Purefy测试环境,理解和掌握代码覆盖测试的测试用例设计和测试的执行,使用Rational Purecoverage进行代码覆盖测试。 三、实验要求

每人一台单独做,不得多人一起做。 四、实验内容

1)使用已经设计好的测试用例和事先准备的测试代码进行测试; 五、实验过程

将程序编译后使用Rational Purecoverage软件输入测试用例,进行测试:

·····················分···割····线···················· ↓↓↓自己的程序↓↓↓

1 三角形判断(条件覆盖) 序号 1 2 3 4

输入数据 2 4 1 2 2 5 7 3 3 2 3 2 预期结果 不构成三角形 不构成三角形 不构成三角形 等腰三角形 实际结果 不构成三角形 不构成三角形 不构成三角形 等腰三角形

1 三角形判断(判定条件覆盖 前四个用例与条件覆盖相同,截图同上此处省略) 序号 1 2 3 4 5 6

输入数据 2 4 1 2 2 5 7 3 3 2 3 2 3 4 5 5 5 5 预期结果 不构成三角形 不构成三角形 不构成三角形 等腰三角形 一般三角形 等边三角形 实际结果 不构成三角形 不构成三角形 不构成三角形 等腰三角形 一般三角形 等边三角形

2下一个日期判断(条件覆盖) 序号 输入数据 1 2012 2 29 2 2014 12 31 3 2012 0 19 4 2014 12 42 5 2014 12 12 6 2400 13 21

预期结果 2012 3 1 2015 1 1 错误 错误 2014 12 13 错误 实际结果 2012 3 1 2015 1 1 错误:日期不合法! 错误:日期不合法! 2014 12 13 错误:日期不合法!

下一个日期判断(判定条件覆盖 测试用例与条件覆盖相同,截图同上此处省略) 序号 输入数据 预期结果 实际结果 1 2012 2 29 2012 3 1 2012 3 1 2 2014 12 31 2015 1 1 2015 1 1 3 错误 错误:日期不合法! 2012 0 19 4 错误 错误:日期不合法! 2014 12 42 5 2014 12 12 2014 12 13 2014 12 13 6 错误 错误:日期不合法! 2400 13 21

↑↑↑自己的程序↑↑↑

·····················分···割····线····················

↓↓↓别人的程序↓↓↓

1 三角形判断(条件覆盖) 序号 输入数据 1 2 4 1 2 2 2 5

预期结果 不构成三角形 不构成三角形 实际结果 不构成三角形 不构成三角形

3 4 7 3 3 2 3 2 不构成三角形 等腰三角形 不构成三角形 等腰三角形

1 三角形判断(判定条件覆盖 前四个用例与条件覆盖相同,截图同上此处省略) 序号 输入数据 预期结果 实际结果 不构成三角形 不构成三角形 1 2 4 1 不构成三角形 不构成三角形 2 2 2 5 不构成三角形 不构成三角形 3 7 3 3 等腰三角形 等腰三角形 4 2 3 2 一般三角形 一般三角形 5 3 4 5 等边三角形 等边三角形 6 5 5 5

2下一个日期判断

由于所给程序不符合要求,所以未作测试。

↑↑↑别人的程序↑↑↑

·····················分···割····线····················

((a+b)>c&&(abs(a-b))a&&(abs(b-c))b&&(abs(a-c))c a+c>b b+c>a abs(a-b)c a+c>b b+c>a abs(a-b)c&&abs(a-b)a&&abs(b-c)b&&abs(a-c)Y%400==0||(Y%4==0&&Y%100!=0)Ymonth[1]=29;

下一个日期判断

1. 条件覆盖:在本程序中,共有8个条件:

年 月 日 Y%400==0 Y%4==0

F T 2012 2 29

F F 2014 12 31

F T 2012 0 19

F F 2014 12 42

F F 2014 12 12

T T 2400 13 21

Y%100!=0

T T T T T F

M>12 F F F F F T

M<1 F F T F F F

D>month[M-1]

F F

D>month[M-1] M>12

T F T T

Nreturn \"错误:日期不合法!\\n\";YM>12||M<1NYD>month[M-1]——

T F

—— ——

F

—— ——

—— —— —— ——

return \"错误:日期不合法!\\n\";N通过以上6个测试用例,每个条件的可能取值都有被覆盖到,满足条件覆盖法。

2. 判定条件覆盖:在本程序中,共有8个条件和5个判断:

Y%400==0

2012 2 29 F 2014 12 31 F 2012 0 19 F 2014 12 42 F 年 月 日

Y%1

Y%400!M>1==0 =0 2 T T F F T F T T F F F T

T T F

F F T

Y%400==0||

D>montD>mont(Y%4==0&&Y%M<1 h[M-1] h[M-1] M>12 100!=0) F F T F T F F T T F T T —— —— —— F F F

T F

M>12||M<1 F F T F F T

D>montD>mont

h[M-1] h[M-1] M>12 F T F F T T

D++;YD=1;M++;D>month[M-1]NM>12YM=1;Y++;N——

T F

2014 12 12

2400 13 21

F T

——

—— —— F —— —— ——

F F T

——

—— —— —— —— F —— —— —— return q;通过以上6个测试用例,判断中每个条件的所有可能取值至少有被执行一次,同时每个判断的取真分支和 取假分支都至少都被执行一次,满足判定条件覆盖法。

(side[1]+side[2]>side[3]) && (side[1]+side[3]>side[2]) && (side[2]+side[3]>side[1])Nreturn 4 //非三角形↑↑↑自己的程序↑↑↑ ·····················分···割····线···················· ↓↓↓别人的程序↓↓↓ 三角形判断: 1. 条件覆盖:在本程序中,共有6个条件: a b c 2 4 1 2 2 5 7 3 3 2 3 2 s1+s2>s3 s1+s3>s2 s2+s3>s1 T F T F T T T T F T T T s1=s2 F T F F s1=s3 F F T F s2=s3 F F F T YNside[1]==side[2] || side[1]==side[3] || side[2]==side[3]return 3 //一般三角形YN通过以上4个测试用例,每个条件的可能取值都有被覆盖到,满足条件覆盖法。 2. 判定条件覆盖:在本程序中,共有6个条件和3个判断: a b c s1+s2>s3 s1+s3>s2 s2+s3>s1 s1=s2 s2=s3 side[1]==side[2] && side[2]==side[3]return 2 //等腰三角形Yreturn 1 //等边三角形s1=s3 side[1]+side[2]>side[3] && side[1]==side[2] || side[1]==side[2] && side[1]+side[3]>side[2] && side[1]==side[3] || side[2]+side[3]>side[1] side[2]==side[3] side[2]==side[3] 2 4 1 2 2 5 7 3 3 2 3 2 3 4 5 5 5 5 T F T T T T F T T T T T T T F T T T F T F F F T F F T F F T F F F T F T F F F T T T —— —— —— T F T —— —— —— F —— T 通过以上6个测试用例,判断中每个条件的所有可能取值至少有被执行一次,同时每个判断的取真分支和取假分支都至少都被执行一次,满足

判定条件覆盖法。

下一个日期判断 :由于所给程序不符合要求,所以未作测试。

↑↑↑别人的程序↑↑↑

·····················分···割····线····················

七、实验总结

(注意:实验总结不得少于200字)

附:程序源代码

·····················分···割····线···················· ↓↓↓自己的程序↓↓↓

#include #include

int sanjiao(int a,int b,int c); void main() {

int x,y,z;

printf(\"请输入三角形的边长(正整数):\");

scanf(\"%d%d%d\

//printf(\"您输入的三角形边长为%d %d %d\\n\ sanjiao(x,y,z); if(sanjiao(x,y,z)==0)

printf(\"此三角形为一般三角形!\"); if(sanjiao(x,y,z)==1)

printf(\"此三角形为等腰三角形!\"); if(sanjiao(x,y,z)==2)

printf(\"此三角形为等边三角形!\"); if(sanjiao(x,y,z)==-1) printf(\"不构成三角形!\"); }

int sanjiao(int a,int b,int c) {

int i;

if (((a+b)>c&&(abs(a-b))a&&(abs(b-c))b&&(abs(a-c))i = 2;//等边三角形返回值为2

else if ((a==b&&b!=c)||(a==c&&b!=c)||(b==c&&a!=c)) i = 1;//等腰三角形返回值为1 else i = 0;//一般三角形返回值为0

else i = -1;//不构成三角形返回值为-1 return i; }

#include #include

char * NextDate(int Y,int M,int D); int main() {

int Y,M,D;

char *p=(char *)malloc(sizeof(char)*8); printf(\"请输入年:\"); scanf(\"%d\ printf(\"请输入月:\"); scanf(\"%d\ printf(\"请输入日:\"); scanf(\"%d\ p=NextDate(Y,M,D);

printf(\"下一天的日期是:%s\\n\ return 0; }

char * NextDate(int Y,int M,int D) {

char *q=(char *)malloc(sizeof(char)*8);

int month[]={31,28,31,30,31,30,31,31,30,31,30,31}; if(Y%400==0||(Y%4==0&&Y%100!=0)) month[1]=29; if(M>12||M<1)

return \"错误:日期不合法!\\n\"; if(D>month[M-1])

return \"错误:日期不合法!\\n\"; D++;

if(D>month[M-1])

{

D=1;M++;

if(M>12)

{

M=1;Y++;

} }

sprintf(q,\"%04d%02d%02d\ return q;

}

↑↑↑自己的程序↑↑↑

·····················分···割····线····················

↓↓↓别人的程序↓↓↓

#include #define NUMBER 3

int isoscelesTriangle(int side[]) {

if(side[1]==side[2] || side[1]==side[3] || side[2]==side[3])

return 1; else return 0; }

int equilateralTriangle(int side[]) {

if(side[1]==side[2] && side[2]==side[3])

return 1;

else

return 0;

}

int triangle(int side[]) {

if((side[1]+side[2]>side[3]) && (side[1]+side[3]>side[2]) && (side[2]+side[3]>side[1])) {

if(isoscelesTriangle(side) == 1) {

if(equilateralTriangle(side) == 1) return 1; else

return 2; } else

return 3; } else return 4; } main()

{

int i,side[NUMBER+1];

printf(\"Please input the length of three sides of a triangle:\");

for(i=1;i<=NUMBER;i++) scanf(\"%d\ if(triangle(side) == 1)

printf(\"EquilateralTriangle\\n\"); else if(triangle(side) == 2)

printf(\"IsoscelesTriangle\\n\"); else if(triangle(side) == 3) printf(\"Triangle\\n\"); else }

#include #define MONTH 12 #define MAXDAYS 31 #define MINDAYS 30 #define FEBRUARY 28 #define LEAPFEBRUARY 29

printf(\"It is not a triangle!\\n\");

#define FIRSTDAY 1 #define ADDDAYS 1

int numberOfDays[MONTH+1];

void data(int year) {

int index;

for(index=1;index<=MONTH;index++) {

if(index%2 == 0) {

if(index<=MONTH/2+1)

numberOfDays[index] = MINDAYS;

else

numberOfDays[index] = MAXDAYS; } else {

if(index<=MONTH/2+1)

numberOfDays[index] = MAXDAYS; else

} }

numberOfDays[index] = MINDAYS;

if((year%4==0 && year%100!=0) || (year%400==0)) numberOfDays[2] = LEAPFEBRUARY; else

numberOfDays[2] = FEBRUARY; }

int nextData(int year,int month,int day) {

data(year);

if(month > 0 && month <= MONTH && day > 0 && day <= numberOfDays[month] ) {

if(day+ADDDAYS > numberOfDays[month]) {

if(month == MONTH) { year++;

month = FIRSTDAY; day = FIRSTDAY;

} else {

month++; day = FIRSTDAY; } } else day++;

printf(\"The nextData is %d-%d-%d\\n\ } main() {

int year,month,day;

printf(\"Please enter the Year Month Day:\"); scanf(\"%d %d %d\ if(nextData(year,month,day) == 0) } else return 0;

}

printf(\"Please enter the correct number!\\n\");

↑↑↑别人的程序↑↑↑

·····················分···割····线····················

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo3.com 版权所有 蜀ICP备2023022190号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务