基本路径测试法习题
《软件测试基础》期末试卷及参考答案
1、判定覆盖设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支_至少被执行一次。
2、黑盒测试的具体技术方法 ____________、 __________、 __________、____________。
等价类划分法,边界值分析法,决策表法,因果图法3、黑盒测试又称之为___________测试。
功能4、等价类划分有两种不同的情况:____________和____________。
有效等价类,无效等价类5、根据覆盖目标的不同,逻辑覆盖又可分为:________________,_____________,_______________,__________________,条件组合覆盖,判断/条件覆盖。
语句覆盖,判定覆盖,条件覆盖,路径覆盖6、根据软件生命周期中的定义,可以把自动化测试工具划分3大类____________,____________和____________。
白盒测试工具、黑盒测试工具、测试管理工具7、软件测试是为发现程序中的______________而执行程序的______________。
错误,过程8、测试用例是由______________和预期的______________两部分组成。
测试输入数据,输出数据9、白盒测试又称为______________,可以分为______________和______________两大类。
结构测试,静态测试,动态测试10、软件是包括____________﹑____________﹑____________的完整集合。
程序,数据,相关文档11、边界值分析法属于____________。
黑盒测试12、单元测试是以____________说明书为指导,测试源程序代码。
详细设计13、集成测试以____________说明书指导,测试软件结构。
概要设计14、确认测试以____________说明书为指导。
需求分析15、软件开发的基本过程____________,_____________,_______________,_____________,_____________,______________。
软件测试复习题
2005 年1. 在系统验收测试中, __(23)A_ _是在一个模拟的环境下使用模拟数据运行系统;__(24)A是在一个实际环境中使用真实数据运行系统。
B. 审计测试C.确认测试D.模块测试 B.审计测试 C.确认测试 D.模块测试B 为了申报某科技奖项,希望机构 A 能先出具一份证实其软件质量优秀的测试报告,并且口头承诺测试会继续进行,并且测试过程中发现的问题 都会得到改正。
如果你是机构A 的负责人,对于评测师甲的请求,你将_(38)_A ___。
对于公司B 提出的要求,机构 A 的评测师甲、乙分别给出了如下的建议:甲认为可以出质量优秀报告,但是需要公司B 出具改正所有测试问题的书面承诺书和自己QA 部门认可;乙认为由于测试还没有结束,很多问题海没有得到改正,因此不能出质量优秀的 报告,但可以根据已经测试过的模块的情况,出具一个质量基本合格的报告。
对于以上 建议你认为 __(39)_D ___ 。
测试结束后,评测师乙提出要保留公司 B 的被测试软件的样品,对于评测师乙的要求你认为 _______ (40)_D ___ 。
(38) A.不批准甲的请求B. 批准甲的请求,但是要求甲不能透露公司C. 不批准甲的请求,但是建议甲可以到公司D. 批准甲的请求,并要求甲尽快提高自己在 献(39) A.应该听从甲的建议C. 应该综合甲乙的建议(40) A.不合理,这样侵犯了 B 的知识产权C. 不合理,仅保留文档就行了3. 关于软件测试对软件质量的意义,有以下观点:①度量与评估软件的质量;②保证软件质量;③改进软件开发过程;④发现软件错误。
其中正确的是__(41)_C__。
(41) A.①、②、③ B .①、②、④C.①、③、④D.①、②、③、④4. 某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:① 经过自己测试的软件今后不会再出现问题;② 在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问 题多,就重点审查该程序,以免不利于团结;③ 承诺不需要其他人员,自己就可以独立进行测试工作;④ 发扬咬定青山不放松的精神, 不把所有问题都找出来, 决不罢休; 你认为应聘者 甲的保证__(43)D __。
白盒测试-基本路径测试习题
int i,max=0; int arr[]=new int[5];//设数组大小为5 System.out.println("请输入数组元素:"); for(i=0;i<=arr.length-1;i++) {
(1)void bubbleSort(int a[]){
(2)
for (int i = a.length; --i>=0; ) { //2.1 int i = a.length
(3)
boolean flipped = false; //2.2.1 –-i=0
(4)
for (int j = 0; j<i; j++) { //2.2.2 –-i>0
3.独立路径集 路径 1:2.1-2.2.1-2.2.2-15-16 路径 2:2.1-2.2.1-3-3.1-4.1-4.2-12-13-16 路径 3:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-16 路径 4:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 5:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-2.2.1-2.2.2-15-16 路径 6:2.1-2.2.1-2.2.2-3-3.1-4.1-4.2-5-6,7,8,9-10-4.3-4.2-12-13-16
for (int j = 0; j<i; j++) { if (a[j] > a[j+1]) {
基本路径测试法
画出程序控制流程图 计算程序环路复杂性 确定独立路径集合
准备测试用例
4
例:下面是一个程序段,试设计基本路径测试的测试用
例,设计出的测试用例要保证每一个基本独立路径至少要执 行一次
22 24
I
H
1. int Test(int i_count, int i_flag) 2. { 3. int i_temp = 0; 4. while (i_count > 0) 5. { 6. if (0 == i_flag) 7. { 8. i_temp = i_count + 100; 9. break; 10. } 11. else 12. { 13. if (1 == i_flag) 14. { 15. i_temp = i_temp + 10; 16. } 17. else 18. { 19. i_temp = i_temp + 20; 20. } 21. } 22. i_count- -; 23. } 24. return i_temp; 25. }
1
控制流程图的图形符号
程序控制流程图
1 边 1
3
结点 区域
2 6 3 6 7 8 4 5 7 R3 8 R1 R2
4
9 10 R4
11 (a)程序流程图 )
11 (b)控制流图
2
程序控制流程图 a b x y y
if a and b then x else y
复合逻辑下的控制流程图
3
基本路径测试的步骤
画出程序控制流程图
4
C
6
A
D
E
13
F
G
8 19
软件测试复习题
一、选择题。
1.软件测试的目的是()。
A)表明软件的正确性B) 评价软件质量C) 尽可能发现软件中的错误D) 判定软件是否合格2、导致软件缺陷的最大原因是:()A.软件需求说明书B.设计方案C.编码D.维护3.关于白盒测试与黑盒测试的最主要区别,正确的是()。
A) 白盒测试侧重于程序结构,黑盒测试侧重于功能B) 白盒测试可以使用测试工具,黑盒测试不能使用工具C) 白盒测试需要程序参与,黑盒测试不需要D) 黑盒测试比白盒测试应用更广泛4、()是一种关注变量定义赋值点(语句)和引用或使用这些值的点(语句)的结构性测试,主要用作路径测试的真实性检查。
A、基本路径测试B、逻辑覆盖C、决策表D、数据流测试5.软件测试类型按开发阶段划分( ) 。
A)需要测试﹑单元测试﹑集成测试B)单元测试﹑集成测试﹑确认测试﹑系统测试﹑验收测试C)单元测试﹑集成测试﹑确认测试D)调试﹑单元测试﹑功能测试6.测试的关键问题是()。
A)如何组织软件评审B)如何选择测试用例C)如何验证程序的正确性D)如何采用综合策略7.下列几种逻辑覆盖标准中,查错能力最强的是()。
A)语句覆盖B)判定覆盖C)条件覆盖D)条件组合覆盖8.软件测试用例主要由输入数据和()两部分组成。
A)测试计划B)测试规则C)预期输出结果D)以往测试记录分析9. 单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是()。
A) 系统功能B) 局部数据结构C) 重要的执行路径D) 错误处理10. 增量式集成测试有3种方式:自顶向下增量测试方法,()和混合增量测试方式。
A)自中向下增量测试方法B)自底向上增量测试方法C)多次性测试D)维护11.不属于白盒测试的技术是( )A) 路径覆盖B) 判定覆盖C)边界值分析D) 条件覆盖12.下列模型哪个是软件测试过程模型( )A) W模型B) 漠布模型C) L模型D) G模型13.下面( ) 方法能够有效地检测输入条件的各种组合可能引起的错误。
软件测试习题课
3、针对以下 C 语言程序,请按要求回答问题
以下是一个用来求解一元二次方程的 C 语言程序:
1 main()
2{
3
float a,b,c,x1,x2,delta;
4
scanf("%f%f%f",&a,&b,&c);
5
if (a!=0)
6
{
7
delta=b*b-4*a*c;
8
if (delta>0)
9
2{
3
int i_temp=0;
4
while(i_count>0)
5
{
6
if(0==i_flag)
7
{
8
i_temp=i_count+100;
9
break;
10
}
11
else
12
{
13
if(1==i_flag)
14
{
15
i_temp=i_temp+10;
16
}
17
else
18
{
19
i_temp=i_temp+20;
4、一个系统的登录操作规格说明如下: 登录对话框有两个数据输入:用户名和密码。登录操作对两个输入数据进行检查,要求用户
名中只能包含字母和数字(字母不区分大小写),密码可以包含任何字符。用户名和密码都 不能为空且长度不限。当用户名或密码为空时,则登录失败并提示对应的出错信息;当用户 名不正确或用户名不存在或密码错误时,则登录失败并提示以下三种相应的出错信息:用户 名不合法(即包含有非字母、非数字字符),或用户名不存在,或密码错误;当用户名和密 码都正确时,则显示登录成功信息,完成登录。 假设正确的用户名是 abcd123,密码是123456 试用等价类方法为上述规格说明设计等价类表和测试用例。
习题课(软件工件-信息系统分析)
解:(1)系统的数据源点、终点、处理功能及存储
源点:
病人:提供生理信号信息; 系统随时接收每个病人的生理信号(脉搏、体温、血 压、心电图等) 护士:要求病情报告信息; 护士可以要求系统印出某个指定病人的病情报告。 时钟:提供日期和时间信息的“时钟”。 系统应“定时记录病人情况以形成患者日志” 。
画出下列伪码程序的程序流程图和盒图: START 解:(1)程序流程图 IF p THEN 开始 WHILE q DO F T f p END DO q循环 g ELSE WHILEq BLOCK n f g n q循环 END BLOCK END IF 停止 STOP
24
本节练习
1
p
4 2
q
3
模块p、t、 u更新同一 个数据库
表1 模块接口描述
接口编号 1 2 3 4 输入 飞机类型 飞机零件清单 功能代码 飞机零件清单 控制 输出 状态标志 耦合类型 数据
r
5
s
6
5 6
零件编号 零件编号
零件制造商 零件名称
数据 数据
22
t
u
图1 一个程序的模块互连图
模块p、t、u之间为公共环境耦合
终点:
护士:接收警告信息和病情报告。
10
解:(1)系统的数据源点、终点、处理功能及存储
处理:
接收信号; 分析信号; 产生警告信息信息; 定时取样生理信号; 更新日志; 产生病情报告。
存储:
患者安全范围:医生规定的病人的生理信号安全范围; 患者日志:定时记录病人情况以形成患者日志。
白盒测试技术(基本路径测试法)
控制流图的组成: 1. 节点:以标有编号的圆圈表示。可代表一个或多个语句、一
个处理框序列和一个条件判定框(假设不包含复合条件)。包 含条件的节点被称为判断节点,分支的汇聚处应该有一个汇 点。, 2. 控制流线或弧:以箭头表示,又称为边。 3. 边和结点圈定的区域叫做区域,当对区域计数时,图形外的 区域也应记为一个区域。
之
1
▪ 1.白盒测试技术概念以及方
法
▪ 2.基本路径测试法
重点
▪ 步骤
▪ 实现
黑盒
X=2
?
y=4
白盒
X=2 y=2x
y=4
白盒测试以源代码为基本对象,是对软件的过 程性细节做细致的检查,允许测试人员利用程序内 部的逻辑结构及有关信息,设计或选择测试用例, 对程序所有逻辑路径进行测试,通过在不同点检查 程序状态,确定实际状态是否与预期的状态一致。
2.计算环路复杂度,又称为圈复杂度
❖ 案例分析
3.列出程序中形成的基本路径集合
路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-414 路径4:4-6-8-11-13-414
❖ 案例分析
4.推导出可以确保集合中每条独立路径都被执行的 测试用例。
2
1
4
3
分析控制流图:
1. 节点数: 9 2. 判断节点数: 3 3. 边数: 11 4. 区域数: 4
程 序 流 程
控 制 流 图
图
程序的环路复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至 少执行一次所必需的测试用例数目的上界。
程序环路复杂性计算方法(三种):
(1)流图中区域的数量对应于环形复杂度; 4. (2)给定流图G的环形复杂度V(G),定义 为V(G)=E-N+2, E是流图中边的数量, N是流图中节点的数量。 V(G)=11-9+ 2. (3) V(G)=P+1, P是流图G中的判定节 点数。 V(G)=3+1
实验04.使用基本路径测试法求解“自动售货机”问题
实验04:使用基本路径测试法求解“自动售货机”问题实验学时:2实验类型:设计实验要求:必修一、实验目的●理解并掌握基本路径覆盖测试法,能够实际运用;●使用Eclipse+JUnit+EclEmma进行单元测试。
二、实验要求●开发环境:Eclipse v3.7及以上版本;JUnit v4.10及以上版本;文本编辑软件。
●硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。
●系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。
三、实验内容1.下载并安装Eclipse+JUnit+EclEmma实验环境;2.通读自动售货机程序,并在Eclipse环境下运行该程序;3.使用基本路径测试法设计测试用例;⏹绘制程序控制流图;⏹计算环路复杂度;⏹确定基本路径;⏹设计测试用例。
4.完整填写以下表格:5.编写JUnit测试用例,并运行程序,保证所有测试用例通过测试;6.使用EclEmma检测测试用例覆盖率,保证覆盖率达到100%。
四、实验结果检查与评定●提交时间:2013年4月24日之前/2013年5月1日22:00之前●提交地址:学习委员邮箱●文档命名方式:12软件专升本X班_0907052XXX_张三_实验04.doc实验报告实验序号:实验项目名称:附录问题描述自动售货机程序:●若投入5角钱或1元钱的硬币,按下“橙汁”或“啤酒”按钮,则相应的饮料就送出来;●若售货机没有零钱找,则显示“零钱找完”的红灯亮,这是再投入一元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;●若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5角硬币。
程序流程图实验源代码(有缺陷的源代码)public class Sale Mac hine {priv ate in t c ount OfB eer, c o untO fOr ang eJu ice, co unt OfF i veCe nts, c oun tOfO neD oll ar;priv ate St rin g[] typ eOf Goo d s = {"B eer", "Ora nge Jui ce"};priv ate St rin g re sul tOf Dea l;publ ic Sal eMa chin e(){init ial();}publ ic voi d i niti al(){coun tOfBee r = 6;coun tOfOra nge Juic e = 6;coun tOfFiv eCe nts= 6;coun tOfOne Dol lar = 6;}publ ic Sal eMa chin e(i nt fiv e Cent s, int on eDol lar, i nt n umOf Bee r, int num OfO ran ge) //便于测试的初始化函数{coun tOfFiv eCe nts= f ive Cen t s;coun tOfOne Dol lar = o neD oll a r;countOf Bee r = num OfB eer;coun tOfOra nge Juic e = nu mOf O rang e;}publ ic Str ing cur ren tSt ate(){Stri ng sta te = "C urr ent St a te\n" +"Be er: "+ c oun tOf Bee r +"\n"+"Or ang e J uic e: " +co unt Of Oran geJ uic e +"\n" +"5 Cen ts: "+ c oun tOf Fiv eC ents + "\n" +"1 Dol lar: " + cou ntO fOn eD olla r;retu rn sta te;}publ ic Str ing ope rat ion(St r ing typ e, Str ing mon ey)//ty pe是用户选择的产品,m one y是用户投币种类{if(m oney.e qua lsIg nor eCa se("5C")) //如果用户投入5角钱{if(t ype.eq ual s(ty peO fGo ods[0]))//如果用户选择啤酒{if(c oun tOf Bee r>0)//如果还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Be er; Mo ney: 5 Ce nt s; C han ge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "B eer Sh ort a ge";retu rn res ult OfDe al;}}else if (t ype.equ als(ty peO f Good s[1]))//用户选择橙汁{if(c oun tOf Ora ngeJ uic e > 0){coun tOf Ora nge Juic e--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Or ang eJu ice; M one y: 5 C ent s; Cha nge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else if(mo ney.equ als Ign ore C ase("1D"))//如果用户投入一元钱{if(c oun tOf Fiv eCen ts>0) //如果用户投入一元钱{if(c oun tOf Fiv eCen ts> 0) //如果用户有零钱{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfB eer>0)//如果用户选择啤酒而且还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts--;coun tOf One Dol lar++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"yp e: Bee r; M one y: 1 Do lla r; Ch ang e: 5 Ce nts\n\n"+ currentSta te();retu rn res ult OfDe al;}else if (t ype.equ als(ty peO f Good s[1]))//如果用户选择橙汁而且还有橙汁{coun tOf Ora nge Juic e --;coun tOf Fiv eCe nts--;coun tOf One Dol lar ++;resu ltO fDe al= "I npu t I nfo r mati on: \n" +"Ty pe: Or ang eJu ice; M one y: 1 D oll ar; Ch ange: 5 Cents\n\n" + curr ent Sta te();retu rn res ult OfDe al;}else{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfO rang eJu ice<=0){resu ltO fDe al= "F ail ue Inf o rmat ion \n" +"Be er Sho rta g e";retu rn res ult OfDe al;}else if(ty pe.equa ls(typ eOf G oods[1])&&cou ntOf Ora nge Jui c e<=0){resu ltO fDe al= "Fai lur e Info r mati on \n"+"O ran geJ uice S hor tage";retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "C han ge Sho r tage";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}resu ltOfDe al = "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}测试用例示例代码:import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;public class SaleMachineTest {SaleMachine saleMachine = new SaleMachine();@Beforepublic void setUp() throws Exception {}@Testpublic void testOperation1() {String expectedResult = "Input Information \n" +"Type: OrangeJuice; Money: 5 Cents; Change: 0\n\n" +"Current State\n" +"Beer: 6\n" +"Orange Juice: 5\n" +"5 Cents: 7\n" +"1 Dollar: 6";assertEquals(expectedResult,saleMachine.operation("OrangeJuice", "5C"));}}。
习题解答1_v2.0
习题解答第三章黑盒测试及其用例1、NextDate函数(P28)请使用等价类划分法为NextDate函数列出输入域等价类表,并设计相应的测试用例。
解答:NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。
要求输入变量month、day和year均为整数值,并且满足下列条件:条件1 1≤month ≤12条件2 1≤day ≤31条件3 1912≤year ≤2050分析程序规格说明中给出和隐含的对输入条件的要求。
列出等价类表*年份:闰年、非闰年(1912≤year ≤2050)*月份:1-12月*天数:1、3、5、7、8、10、12(31天),4、6、9、11(30天),2(28或29)等价类表2、找零钱最佳组合(P47)假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。
假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1) 四种。
请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。
解答:根据等价类划分法和边界值分析法的基本定义,得到下列基本认识:Step1.输入:商品价格R和顾客付款P有以下情况:R > 100 0 < R < = 100 R <= 0 P > 100 R<= P <= 100 P < RStep2.输出:N50 = 1 N50 = 0 4 > N10 >= 1 N10 = 0 N5 = 1 N5 = 0 4 > N1 >= 1 N1 = 0 Step3.分析规格中每一决策点之情形,以RR1, RR2, RR3 表示计算要找50, 10, 5 元货币数时之剩余金额。
R > 100R <= 0 P > 100 P < R RR1 >= 50 RR2 >= 10 RR3 >= 5Step4. 由上述之输入/ 输出条件组合出可能的情形。
