1、代码检查、走查与评审、覆盖率(白盒)测试及答案解析(总分:108.00,做题时间:90 分钟)一、选择题(总题数:39,分数:39.00)1.以下叙述中正确的是_。(分数:1.00)A.可跟踪性分析是在整体上分析整个资源的分配策略B.关键性分析是标识原始需求和相应开发结果之间关系的能力C.接口分析必须关注 3种接口:用户接口、硬件接口和软件接口D.评估权在软件开发的最后阶段进行,以确认产品是否符合规格说明2.走查是对软件进行静态测试的一种方法,以下不属于走查活动的是_。(分数:1.00)A.计划走查会议B.准备测试用例C.执行走查以发现和改正错误D.在走查过程中程序员逐渐讲解自己的程序3.检查
2、是否存在“已定义但未使用”的变量引用异常应属于_。(分数:1.00)A.静态分析B.动态分析C.代码执行D.调试4.软件静态分析一般包括:控制流分析、数据流分析、接口分析,以及_。(分数:1.00)A.表达式分析B.功能分析C.边界值分析D.因果图分析5.在程序测试中,用于检查程序模块或子程序之间的调用是否正确的静态分析方法是_。(分数:1.00)A.操作性分析B.可靠性分析C.引用分析D.接口分析6.下列引用表,不能直接从表中查出说明/使用错误的是_。(分数:1.00)A.循环层次表B.等价表C.变量交叉引用表D.标号交叉引用表7.程序的静态错误分析和设计分析共同研究的题目是_。(分数:1.
3、00)A.接口一致性B.表达式分析C.引用分析D.类型和单位分析8.下列关于代码检查说法正确的是_。 代码检查过程的目的是发现错误,而不是纠正错误 程序员通常可以通过代码检查得到编程风格、算法选择及编程技术等方面的反馈信息 代码检查是早期发现程序中最易出错部分的方法之一(分数:1.00)A.B.C.D.都是9.以下关于人工检查方法叙述正确的是_。(分数:1.00)A.走查的主要工作是由程序编写者本人来完成的B.代码检查是对程序进行模拟,一步一步地展示程序如何处理由检查人员提供的测试数据C.同行评审是一种通过作者的同行来确认缺陷和需要变更区域的检查方法D.桌上检查是以小组为单位进行检查程序的10
4、.评审方法有很多,其中最便宜的评审方法是_。(分数:1.00)A.轮查B.结对评审C.小组评审D.走查11.同行评审是一种通过作者的同行来确认缺陷和需要变更区域的检查方法,它主要分为管理评审、技术评审、过程评审和_。(分数:1.00)A.程序评审B.数据评审C.组织体系评审D.文档评审12.下列不属于人工测试方法的是_。(分数:1.00)A.单元测试B.桌上检查C.同行评审D.走查13.在代码检查中,讲解员的最佳人选是_。(分数:1.00)A.检查人员B.程序或文档的编写者C.程序或文档的测试者D.会议主持人员14.下列不属于表达式分析的是_。(分数:1.00)A.数组下标越界B.形参和实参类
5、型的一致性C.除式为零D.表达式中不正确使用括号15.代码检查的作用是_。(分数:1.00)A.发现程序中的缺陷和错误B.程序员会得到编程风格、算法选择及编程技术等反馈信息C.可以在早期发现程序中最易出错的部分D.以上全部16.用于代码检查的错误列表有_。(分数:1.00)A.数据引用或声明错误B.运算、比较错误C.控制流、接口、输入/输出错误D.以上全部17.在走查的过程中,参加审查的人员中,程序编写者有_。(分数:1.00)A.1个B.2个C.多于 2个D.不确定18.在走查的第一步计划走查会议中,下列活动不属于协调人完成的是_。(分数:1.00)A.选择一名或多名人员组成走查小组B.为审
6、查程序准备测试用例C.分发所有必需的材料给审查人员D.安排走查会议时间和地点19.负责在走查期间做出所有说明,包括发现的问题、样式方面错误、遗漏、矛盾、改进意见等,该角色应该是。(分数:1.00)A.协调人B.走查小组秘书C.测试员D.记录员20.以小组形式进行,小组成员集体扮演计算机角色检查源程序的方法是_。(分数:1.00)A.评审B.代码检查C.走查D.轮查21.在一个正式的评审活动小组中,职责是确保即将评审的文件已经准备好,这个角色是_。(分数:1.00)A.评审组长B.作者C.读者D.评审秘书22.管理评审主要是评价管理体系的_。(分数:1.00)A.适应性B.充分性C.有效性D.以
7、上全部23.技术评审分为正式和非正式两种,通常由技术负责人制度详细地评审计划,包括_。(分数:1.00)A.评审时间B.对所需文件的定义C.评审地点D.以上全部24.在软件开发过程中,需要的文档评审有_。(分数:1.00)A.需求文档评审B.软件设计文档评审C.代码评审和质量验证文档评审D.以上全部25.过程评审的目标是_。(分数:1.00)A.评估主要的质量保证代码B.总结和共享好的经验C.指出进一步完善和改进的部分D.以上全部26.有一种评审方法是有计划和结构化的、非常接近于最正式的评审技术,它是_。(分数:1.00)A.小组评审B.正式评审C.结对评审D.走查27.对于核心代码的评审最好
8、是_。(分数:1.00)A.结对评审B.走查C.正式评审D.分配检查方法28.如果程序通过了 100%的代码覆盖率测试,则说明程序满足了_。(分数:1.00)A.语句覆盖B.编程规范C.设计规格D.功能需求29.设有一段程序如下: if(a=b) and (c=d) or (e=f)do S1 else if(p=q) or (s=t) do S2 else do S3 满足判定/条件覆盖的要求下,最少的测试用例数目是_。(分数:1.00)A.6B.8C.3D.430.在以下有关逻辑覆盖的说法中错误的是_。(分数:1.00)A.所有满足条件组合覆盖标准的测试用例集,也满足路径覆盖的覆盖标准B.
9、条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求C.路径覆盖的差错能力很强,但有时达不到条件组合覆盖的覆盖率要求D.判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来31.对于具有串联型分支结构的程序,如果有 7个判断语句串联,则使用正交实验设计法,至少需要的测试用例数应为_。(分数:1.00)A.23B.24C.26D.2732.下列指导选择和使用测试覆盖率的原则中错误的是_。(分数:1.00)A.覆盖率不是目的,仅是一种手段B.不要追求绝对 100%的覆盖率C.不可能针对所有的覆盖率指标来选择测试用例D.只根据测试覆盖率指标来指导测试用例的设计33.覆盖率对软件
10、测试有非常重要的作用,下列关于覆盖率说法正确的是_。(分数:1.00)A.覆盖率是用于度量测试完整性的一个手段,覆盖率可以分为逻辑覆盖和功能覆盖两种B.为了测试的完整性,我们在测试时通常要针对所有的覆盖率指标进行测试C.路径覆盖是最强的覆盖,故达到路径覆盖的测试用例一定满足判定/条件覆盖D.为了测试更充分,我们通常要求测试用例能达到 100%的覆盖率34.如果一个判定中的复合条件表达式为(A1)or(B=3),则为了达到 100%的判定覆盖率,至少需要设计多少个测试用例_。(分数:1.00)A.1个B.2个C.3个D.4个35.路径覆盖必定也满足_。(分数:1.00)A.语句覆盖B.条件覆盖C
11、.判定覆盖D.条件组合覆盖36.以下关于逻辑覆盖的叙述中正确的是_。(分数:1.00)A.对所有代码达到 100%的语句覆盖率是不现实的B.测试用例满足条件覆盖则必定满足判定覆盖C.语句覆盖是测试完整性方面很好的度量方法D.条件/判定覆盖是一个比判定覆盖和条件覆盖更强的覆盖37.下列语句中既可以作为定义节点,同时还可以作为使用节点的是_。(分数:1.00)A.输入语句B.输出语句C.赋值语句D.条件语句38.下列几种逻辑覆盖标准中,设计足够的测试用例,运行被测程序,使得程序中所有可能的路径至少执行一次,称为_。(分数:1.00)A.判定覆盖B.条件覆盖C.语句覆盖D.路径覆盖39.程序流程如下
12、图所示,要覆盖程序中所有可能的路径,所需测试用例数至少是_。 (分数:1.00)A.3个B.5个C.15个D.30个二、论述题(总题数:7,分数:69.00)已知 C源程序如下: /* Input today“s date, output tomorrow“s date */ /* version 2 */ #include stdio.h struct ydate int day; int month; int year; ; int leap(struct ydate d) if(d.year%4=0 else return 0; int numdays(struct ydate d) i
13、nt day; static int daytab= 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; if(leap (d) else day=daytabd.month-1; return day; int main(void) struct ydate today, tomorrow; printf(“format of date is: year, month, day 输入的年、月、日之间应用逗号隔开/n“); printf(“today is: “); scanf(“%d, %d, %d“, while(0=today.year|tod
14、ay.year65535 | 0=today.month | today.month12)| 0=today.day | today.daynumdays(today) printf(“input date error! reenter the day!/n“); printf(“today is :“); scanf(“%d, %d, %d“, if(today.day!=numdays(today) tomorrow.year=today.year; tomorrow.month=today.month; tomorrow.day=today.day+1; else if(today.mo
15、nth=12) tomorrow.year=today.year+1; tomorrow.month=1; tomorrow.day=1; else tomorrow.year=today.year; tomorrow.month=today.month+1; tomorrow.day=1; printf(“tomorrow is :%d,%d,%d/n/n“, tomorrow.year,tomorrow.month, tomorrow.day); (分数:10.00)(1).画出程序中所有函数的控制流程图。(分数:5.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖
16、率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%,则说明为什么。(分数:5.00)_已知 C源程序如下: #includestdio.h #includestring.h void reverse(char s) int c, i, j; for(i=0, j=strlen(s)-1; ij; i+, j+) c=si; si=sj; sj=c; void getHex(int number, char s) int I; i=0; while(number0) if(number%1610) si+=number%16+“0“; else switch(number%
17、16) case 10:si+=“A“; break; case 11:si+=“B“; break; case 12:si+=“C“; break; case 13:si+=“D“; break; case 14:si+=“E“; break; case 15:si+=“F“; break; default: printf(“Error“); break; number/=16; si=“/0“; reverse(s); int msin() unsigned int number; int i=0; char s50; printf(“%s“, “please input number:/
18、n“); scanf(“%d“, getHex(number, s); i=0; while(si) printf(“%c“, si+); return 0; (分数:10.00)(1).画出程序中所有函数的控制流程图。(分数:5.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100%。如果认为该程序的语句覆盖率或分支率无法达到 100%,则说明为什么。(分数:5.00)_已知 C源程序如下: /* 一个使用结构体数组的简单地址列表 */ #includestdion.h #includestdlib.h define MAX 4 struct addr
19、char name30; char street40; char city20; unsigned long int zip; addr_listMAX; void init_list(void), enter(void); void deleteAddr(void), list(void); int menu_select(void), find_free(void); int main(void) char choice; init list(); /* 初始化结构体数组 */ for(;) choice=menu select (); switch (choice) case 1: en
20、ter(); break; case 2: deleteAddr(); break; case 3: list(); break; case 4: exit(0); return 0; /*初始化列表*、 void init list(void) register int t; for (t=0; tMAX; +t) addr_list t.name 0 =/0; /*获取菜单选择*/ int menu select (void) char s80; int c; printf(“1. Enter a name/n“); printf(“2. Delete a name/n“); printf
21、(“3. List the filekn“); printf(“4. Quitkn“); do printf(“/nEnter your choice:“); gets (s); c=atoi (s); while(c1 | c4); return c; /*增加地址*/ void enter (void) int slot; char s80; slot=find free(); if (slot=-1) printf(“/nList Full“); return; printf(“Enter name:“); gets(addr listslot.name); printf(“Enter
22、street:“); gets(addr listslot.street); printf(“Enter city:“); gets(addr listslot.city); printf(“Enter zip:“); gets (s); addr listslot.zip = strtoul(s, /0, 10); /*查找未用结构*/ int find free (void) register int t; for(t=0; addr listt.name0 +t); if(t=MAX) return-1; /* no slots free */ return t; /*删除地址*/ vo
23、id deleteAddr(void) register int slot; char s80; printf(“enter record # :“); gets (s); slot=atoi(s); if(slot=0 /*在屏幕上显示列表*/ void list (void) register int t; for(t=0;t if(addr listt.name0) printf(“%s/n“, addr_listt.name);printf(“%skn“, addr_listt.street);printf(“%s/n“, addr_listt.city);printf(“%lu/n/
24、n“, addr_listt.zip);printf(“/n/n“);5. 画出 main函数的控制流程图。main函数的控制流程图如下(限于篇幅只显示语句块,不显示具体语句):*图中各判断语句如下:tMAXc1 | c4addr_listt.name0 /定义链表指针 typedef struct list_node /定义链表结构 int data; list_pointer link; list node; /用到的操作函数 list_pointer create(); /建立一个单向链表 void insert(list_pointer *p_ptr, list_pointer nod
25、e); /在 node后加入一个新的节点 void delete_node(list_pointer *p_ptr, list_pointer trail, list_pointer node); /删除前一个节点是 trail的当前节点 node void print(list_pointer *p_ptr); /打印链表节点中的值 list_pointer invert(list_pointer lead); /反转链表 int main() list_pointer ptr=NULL; list_pointer node, trail; list_pointer *p= int choo
26、se, location, i; printf(“you should create a link first: /n“); /建立一个单向链表 prt=create(); /*ptr指向链表的第一个节点*/ print(ptr); /根据用户的不同选择进行相应的操作 printf(“input number 0, you can quit the program/n“); printf(“input number 1, you can insert a new node to link/n“); printf(“input number 2, you can delete a node fr
27、om the link/n“); printf(“input number 3, you can invert the link/n“); printf(“please input you choice/n“); scanf(“%d“, while(choose!=0) switch(choose) case 1: i=1; while(ilocation) node=node-link; i+; insert(p, node); /*p为指向 ptr的指针*/ print(ptr); break; case 2; printf(“you wiii delete a node from the
28、 link/n“); printf(“please input the location of the node:/n“); scanf(“%d“, node=ptr; if(location=1) trail=NULL; trail=ptr; i=1; while(ilocation) trail=trail-link; i+; node=trail-link; delete_node(p, trail, node); print(ptr); break; case 3: printf(“you will invert the link/n“); ptr=invert(ptr); print
29、(ptr); break; default: break; return-1; printf(“please input you choice/n“); scanf(“%d“, return 0; /根据用户的输入值建立一个新的单向链表 list pointer create() int i, current, length; list_pointer p1, p2, head; printf(“please input the node number of the link:/n“); scanf(“%d“, %length); printf(“the number of the link
30、is: %d“, length); printf(“please input the data for the link node:/n“); i=0; p1=p2=(list pointer)malloc(sizeof(list_node); head=p1; for(i=1; ilength; i+) scanf(“%d“, p1-data=current; p2-link=p1; p2=p1; p1=(list pointer)malloc(sizeof(list node); p2-link=NULL; return head; .(分数:10.00)(1).画出主函数 main的控制
31、流程图。(分数:5.00)_(2).设计一组测试用例,尽量使 main函数的语句覆盖率能达到 100%。如果认为该函数的语句覆盖率无法达到 100%,则说明原因。(分数:5.00)_针对以下 C语言程序,请按要求回答问题。 已知 weekday.c源程序如下: #includestidio.h #includeconio.h /*主函数*/ Int main() Char letter; Printf(“please input the first letter, “Y“ to exit!/n“); While(1etter=getch()!=“Y“) /当输入字母为 Y时结束 Switch(
32、letter) Case “S“: Printf(“%c/n“, letter); Printf(“please input second letter/n“); /输入第二个字母 If(letter=getch()=“a“) Printf(“Saturday/n“); Else if(letter=“u“) Printf(“Sunday/n“); Else printf(“data error/n“); Break; Case “F“: Printf(“fridaykn“); Break; Case “M“: Printf(“mondayha“); Break; Case “T“: Prin
33、tf(“%c/n“, letter); Printf(“please input second letter/a“); /输入第二个字母 If(letter=getch()=“u“) Printf(“Tuesday/n“); Else if(letter=“h“) Printf(“Thursday/n“); Break; Case “W“: Printf(“Wednesday/n“); Return 0; (分数:15.00)(1).画出主函数 main的控制流程图。(分数:5.00)_(2).设计一组测试用例,使 main函数的语句覆盖率尽量达到 100%。(分数:5.00)_(3).Mai
34、n函数的语句覆盖率能否达到 100%?如果认为无法达到,则说明原因。(分数:5.00)_40.用基本路径测试法为下列程序设计测试用例。 程序功能描述:计算学生人数、学生分数的总分数和平均分。要求运行时最多输入 50个学生分数(以-1作为输入结束的标志),程序流程图如下图所示。 (分数:9.00)_41.为下列程序确定最小的测试用例数,程序流程图如下图所示。 (分数:5.00)_代码检查、走查与评审、覆盖率(白盒)测试答案解析(总分:108.00,做题时间:90 分钟)一、选择题(总题数:39,分数:39.00)1.以下叙述中正确的是_。(分数:1.00)A.可跟踪性分析是在整体上分析整个资源的
35、分配策略B.关键性分析是标识原始需求和相应开发结果之间关系的能力C.接口分析必须关注 3种接口:用户接口、硬件接口和软件接口 D.评估权在软件开发的最后阶段进行,以确认产品是否符合规格说明解析:解析 接口分析的目的是评估软件交付物是否正确、已知、完整和准确地说明了接口需求。接口分析必须关注 3种接口:用户接口、硬件接口和软件接口。2.走查是对软件进行静态测试的一种方法,以下不属于走查活动的是_。(分数:1.00)A.计划走查会议B.准备测试用例 C.执行走查以发现和改正错误D.在走查过程中程序员逐渐讲解自己的程序解析:解析 走查的步骤如下:(1)计划走查会议;(2)走查产品;(3)执行走查;(
36、4)解决缺陷;(5)走查记录;(6)产品返工,准备测试用例是走查之前要进行的活动。3.检查是否存在“已定义但未使用”的变量引用异常应属于_。(分数:1.00)A.静态分析 B.动态分析C.代码执行D.调试解析:解析 静态错误分析有以下几种:类型和单位分析、引用分析等,其中在静态错误分析中,使用技术最广泛的是发现引用异常。4.软件静态分析一般包括:控制流分析、数据流分析、接口分析,以及_。(分数:1.00)A.表达式分析 B.功能分析C.边界值分析D.因果图分析解析:解析 静态错误分析主要用于确定在源程序中是否有某类错误或危险结构。它有以下几种类型:单位分析、引用分析、表达式分析、接口分析。5.
37、在程序测试中,用于检查程序模块或子程序之间的调用是否正确的静态分析方法是_。(分数:1.00)A.操作性分析B.可靠性分析C.引用分析D.接口分析 解析:解析 静态错误分析主要用于确定在源程序中是否有某类错误或者危险结构,包括: (1)类型和单位分析。为了强化对源程序中数据类型的检查,在程序设计语言中扩充一些新的数据类型 (2)引用分析。在静态错误分析中,使用技术最广泛的是发现引用异常。 (3)表达式分析。对表达式进行分析,以发现和纠正在表达式中出现的错误。 (4)接口分析。接口的一致性是程序的静态错误分析和设计分析共同研究的题目。接口一致性的设计分析主要检查模块之间接口的一致性和模块与外部数
38、据库之间接口的一致性。6.下列引用表,不能直接从表中查出说明/使用错误的是_。(分数:1.00)A.循环层次表B.等价表 C.变量交叉引用表D.标号交叉引用表解析:7.程序的静态错误分析和设计分析共同研究的题目是_。(分数:1.00)A.接口一致性 B.表达式分析C.引用分析D.类型和单位分析解析:8.下列关于代码检查说法正确的是_。 代码检查过程的目的是发现错误,而不是纠正错误 程序员通常可以通过代码检查得到编程风格、算法选择及编程技术等方面的反馈信息 代码检查是早期发现程序中最易出错部分的方法之一(分数:1.00)A.B.C.D.都是 解析:9.以下关于人工检查方法叙述正确的是_。(分数:
39、1.00)A.走查的主要工作是由程序编写者本人来完成的B.代码检查是对程序进行模拟,一步一步地展示程序如何处理由检查人员提供的测试数据C.同行评审是一种通过作者的同行来确认缺陷和需要变更区域的检查方法 D.桌上检查是以小组为单位进行检查程序的解析:10.评审方法有很多,其中最便宜的评审方法是_。(分数:1.00)A.轮查B.结对评审 C.小组评审D.走查解析:11.同行评审是一种通过作者的同行来确认缺陷和需要变更区域的检查方法,它主要分为管理评审、技术评审、过程评审和_。(分数:1.00)A.程序评审B.数据评审C.组织体系评审D.文档评审 解析:12.下列不属于人工测试方法的是_。(分数:1
40、.00)A.单元测试 B.桌上检查C.同行评审D.走查解析:13.在代码检查中,讲解员的最佳人选是_。(分数:1.00)A.检查人员B.程序或文档的编写者 C.程序或文档的测试者D.会议主持人员解析:14.下列不属于表达式分析的是_。(分数:1.00)A.数组下标越界B.形参和实参类型的一致性 C.除式为零D.表达式中不正确使用括号解析:15.代码检查的作用是_。(分数:1.00)A.发现程序中的缺陷和错误B.程序员会得到编程风格、算法选择及编程技术等反馈信息C.可以在早期发现程序中最易出错的部分D.以上全部 解析:16.用于代码检查的错误列表有_。(分数:1.00)A.数据引用或声明错误B.
41、运算、比较错误C.控制流、接口、输入/输出错误D.以上全部 解析:17.在走查的过程中,参加审查的人员中,程序编写者有_。(分数:1.00)A.1个 B.2个C.多于 2个D.不确定解析:18.在走查的第一步计划走查会议中,下列活动不属于协调人完成的是_。(分数:1.00)A.选择一名或多名人员组成走查小组B.为审查程序准备测试用例 C.分发所有必需的材料给审查人员D.安排走查会议时间和地点解析:19.负责在走查期间做出所有说明,包括发现的问题、样式方面错误、遗漏、矛盾、改进意见等,该角色应该是。(分数:1.00)A.协调人B.走查小组秘书 C.测试员D.记录员解析:20.以小组形式进行,小组
42、成员集体扮演计算机角色检查源程序的方法是_。(分数:1.00)A.评审B.代码检查C.走查 D.轮查解析:21.在一个正式的评审活动小组中,职责是确保即将评审的文件已经准备好,这个角色是_。(分数:1.00)A.评审组长B.作者 C.读者D.评审秘书解析:22.管理评审主要是评价管理体系的_。(分数:1.00)A.适应性B.充分性C.有效性D.以上全部 解析:23.技术评审分为正式和非正式两种,通常由技术负责人制度详细地评审计划,包括_。(分数:1.00)A.评审时间B.对所需文件的定义C.评审地点D.以上全部 解析:24.在软件开发过程中,需要的文档评审有_。(分数:1.00)A.需求文档评
43、审B.软件设计文档评审C.代码评审和质量验证文档评审D.以上全部 解析:25.过程评审的目标是_。(分数:1.00)A.评估主要的质量保证代码B.总结和共享好的经验C.指出进一步完善和改进的部分D.以上全部 解析:26.有一种评审方法是有计划和结构化的、非常接近于最正式的评审技术,它是_。(分数:1.00)A.小组评审 B.正式评审C.结对评审D.走查解析:27.对于核心代码的评审最好是_。(分数:1.00)A.结对评审B.走查C.正式评审 D.分配检查方法解析:28.如果程序通过了 100%的代码覆盖率测试,则说明程序满足了_。(分数:1.00)A.语句覆盖 B.编程规范C.设计规格D.功能
44、需求解析:解析 语句覆盖就是设计若干测试用例,运行被测程序,使得每一可执行语句至少执行一次。29.设有一段程序如下: if(a=b) and (c=d) or (e=f)do S1 else if(p=q) or (s=t) do S2 else do S3 满足判定/条件覆盖的要求下,最少的测试用例数目是_。(分数:1.00)A.6B.8C.3 D.4解析:解析 判定/条件覆盖,就是设计足够的测试用例,使得判定语句中每个条件的所有可能取值至少评价一次,同时每个判定语句本身所有可能分支也至少评价一次。 本程序一共有两个判定语句和三条路径。 若以 1代表某一个条件为真,0 代表为假,则对于(a=b)、(c=d)、(e=f)、(p=q)、(s=t)这 5个条件,取不同的真值组合,即可设计出相应的测试用例,达到判定/条件覆盖的要求。在这里,先取(a=b)、(c=d)、(e=