1、软件工程开发实践,北京邮电大学 韩万江,国家十二五教材,软件项目开发流程图,软件工程实践,第 7 章软件测试,本章要点,3,一,二,三,四,测试概述,测试方法,测试级别,测试管理流程,五,测试总结与案例分析,软件测试,-测试方法,测试方法,软件测试方法,动态测试,静态测试,白盒测试,白盒测试,在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。,在知道程序内部结构的情况下采用的测试技术或策略。,不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态分析技术。,实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。,黑盒测试,cha
2、pter_7,6,静态测试(分析),定义:不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态测试技术。方法:走查:WalkThrough审查:Inspection评审:Review,Michael Fagan IBM(1976),chapter_7,静态分析-走查,定义:开发组内部进行的,主要是个人通过检查和阅读等手段来查找错误的活动。经验:限时避免跑题不要现场修改检查要点逻辑错误代码标准/规范/风格,chapter_7,静态分析-审查,定义:开发组内部进行的,分配了相关的角色,采用讲解、提问并使用Checklist方式进行的查找错误的活动。经验:以会议
3、的形式,制定会议目标、流程和规则,结束后要编写报告参加人员经验丰富的开发人员和本模块相关的开发人员本项目组的新人由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表、本模块开发者回答问题并记录不要现场修改检查要点设计需求代码标准/规范/风格,chapter_7,9,静态分析-评审,定义:开发组、测试组和相关人员(QA、产品经理等)联合进行的,采用讲解、提问并使用Checklist方式进行的查找错误的活动。一般有正式的计划、流程和结果报告。经验:以会议的形式,制定会议目标、流程和规则,结束后要编写报告。相关资料要在会议前下发并阅读。参加人员经验丰富的开发人员和本模块相关的
4、开发人员测试组和相关人员由另外一名开发者进行讲解、其他开发者主要按照Checklist进行提问并填表、本模块开发者回答问题并记录不要现场修改检查要点设计需求代码标准/规范/风格文档的完整性和一致性,chapter_7,同行(对等)评审(Peer Review),对等技术评审是由与工作产品开发人员具有同等背景和能力的人员对工作产品进行的一种评审,目的是早期和有效的消除软件工作产品中的缺陷,并可对软件工作产品和其中可预防的缺陷有更好的理解。,chapter_7,白盒测试,基于代码的测试,chapter_7,12,白盒测试,基本的逻辑覆盖其它的逻辑覆盖准则,chapter_7,基本逻辑覆盖测试,语句
5、覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖,chapter_7,语句覆盖,选择足够的测试用例,使得程序中每一条可执行语句至少被执行一次。语句覆盖率(至少被执行一次的语句数量)/(可以执行的语句总数),chapter_7,语句覆盖实例,1.if Condition thenDo_something;End ifAnother_Statement;,TestCase:Condition True,chapter_7,16,判定覆盖,选择足够的测试用例,使得程序中每一个判断的每一种可能结果都至少被执行一次。判定覆盖也叫分支覆盖。判定覆盖率(判定结果被评价的次数)/(判定结果的总数),ch
6、apter_7,17,判定覆盖实例,1.if Condition thenDo_something;End ifAnother_Statement;,TestCase:1、Condition True,2、Condition False,chapter_7,判定覆盖实例,1.if Condition then Do_something;Else Do_something_Else;End ifAnother_Statement;,TestCase:Condition True,TestCase:Condition False,chapter_7,判定覆盖实例,1.If A and B then
7、 Do-SomethingEnd if,判断:1.A=T,B=T=A and B=T2.A=T,B=F=A and B=F,TestCase A B A and BTestCase1 T T TTestCase2 T F F,chapter_7,条件覆盖,选择足够的测试用例,使得程序中每一个判断中的每一个条件的可能结果都至少被执行一次条件覆盖率(条件操作数值至少被评价一次的数量)/(条件操作数值的总数),chapter_7,条件覆盖实例,1.If A and B then Do-SomethingEnd if,TestCase A B A and BTestCase1 T F FTestCas
8、e2 F T F,chapter_7,条件覆盖,例如:if(A1)and(B=0)then X=X/A;if(A=2)and(X1)then X=X+1;,A1,A=1,A2,A 2,B=0,B0,X1,X=1,chapter_7,条件覆盖,条件:A1 T1;A0 F2A=2 T3;A 2 F3X1 T4;X=1 F4,Testcase A B X,Case1、1 0 3,Case2、2 1 1,if(A1)and(B=0)then X=X/A;if(A=2)and(X1)then X=X+1;,chapter_7,24,判定条件覆盖,选择足够的测试用例,使得同时满足判定覆盖和条件覆盖。判定条
9、件覆盖率(条件操作数值或者判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果的总数),chapter_7,25,判定条件覆盖-实例,1.If A and B then Do-SomethingEnd if,判断:1.A and B=T2.A and B=F,TestCase A B A and B TestCase1 T T TTestCase2 F F F,条件:1.A=T 2.A=F3.B=T 4.B=F,chapter_7,26,判断条件覆盖-实例,判断(A1)and(B=0)A1,B=0=TrueA1,B0=FalseAFalseA0=False(A=2)and(X1)A=2
10、,X1=TrueA=2,XFalseA2,X1=False A2,X False,条件:A1 T1;A0 F2A=2 T3;A 2 F3X1 T4;X=1 F4,A、B、X,2、0、3,1、1、1,if(A1)and(B=0)then X=X/A;if(A=2)and(X1)then X=X+1;,chapter_7,27,判断条件覆盖案例冗余,判断(A1)and(B=0)A1,B=0=TrueA1,B0=FalseAFalseA0=False(A=2)and(X1)A=2,X1=TrueA=2,XFalseA2,X1=False A2,X False,条件:A1 T1;A0 F2A=2 T3
11、;A 2 F3X1 T4;X=1 F4,A、B、X,2、0、3,1、1、1,if(A1)and(B=0)then X=X/A;if(A=2)and(X1)then X=X+1;,1、0、3,2、1、1,chapter_7,28,条件组合覆盖,选择足够的测试用例,使得程序中每一个分支判断中的每一个条件的每一种可能组合结果都至少被执行一次。条件组合覆盖率(被评价的分支条件组合数量)/(分支条件组合总数),chapter_7,条件组合覆盖,1.If A and B then Do-SomethingEnd if,TestCase A B A and B TestCase1 T T TTestCase2 F F F,TestCase3 T F FTestCase4 F T F,chapter_7,30,条件组合覆盖,条件组合A1,B=0 A1,B0A0A=2,X1A=2,X2,X1A2,X=1,条件:(A1)and(B=0)A1A0(A=2)and(X1)A=2A 2X1X=1,