《软件测试策略与过程.ppt》由会员分享,可在线阅读,更多相关《软件测试策略与过程.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件件测试策略与策略与过程程现在学习的是第1页,共31页本章教学目标本章教学目标n n理解软件测试的复杂性理解软件测试的复杂性n n理解软件测试的方法与策略理解软件测试的方法与策略n n明确单元测试的主要任务和过程n n明确集成测试的方法和确认测试的准则n n明确系统测试的八个领域测试要点n n明确验收测试的主要内容和相关配置现在学习的是第2页,共31页2.1 软件测试的复杂性分析软件测试的复杂性分析 1、无法对程序进行完全测试 (1 1)测试所需要的输入量太大)测试所需要的输入量太大 (2 2)测试的输出结果太多)测试的输出结果太多 (3 3)软件实现的途径太多)软件实现的途径太多 (4 4
2、)软件规格说明没有一个客观标准)软件规格说明没有一个客观标准 2、测试无法显示潜在的软件缺陷和故障 通过软件测试只能报告软件已被发现的缺陷和故障,无法报通过软件测试只能报告软件已被发现的缺陷和故障,无法报告隐藏的软件故障。告隐藏的软件故障。3、存在的故障现象与发现的故障数量成正比 结论:应当对故障集中的程序段进行重点测试结论:应当对故障集中的程序段进行重点测试现在学习的是第3页,共31页软件测试的复杂性分析软件测试的复杂性分析(续)(续)4、不能修复所有的软件故障 原因:原因:没有足够的时间进行修复;没有足够的时间进行修复;修复的风险较大;修复的风险较大;不值得修复;不值得修复;可不算做故障的
3、一些缺陷;可不算做故障的一些缺陷;“杀虫剂现象杀虫剂现象”。结论:关键是要进行正确的判断、合理的取舍,根据风险分析决结论:关键是要进行正确的判断、合理的取舍,根据风险分析决定哪些故障必须修复,哪些故障可以不修复。定哪些故障必须修复,哪些故障可以不修复。现在学习的是第4页,共31页软件测试的复杂性分析软件测试的复杂性分析(续)(续)5、软件测试的代价 工作原则:针对软件风险做出恰当选择,去粗存工作原则:针对软件风险做出恰当选择,去粗存精,找到最佳的测试量,既能达到测试的目的,又能较精,找到最佳的测试量,既能达到测试的目的,又能较为经济。为经济。现在学习的是第5页,共31页2.2 软件测试方法与策
4、略软件测试方法与策略2.2.1 2.2.1 静态测试与动态测试静态测试与动态测试2.2.2 2.2.2 黑盒测试与白盒测试黑盒测试与白盒测试2.2.3 软件测试过程软件测试过程Return现在学习的是第6页,共31页软件测试策略软件测试策略n n什么是软件测试策略?什么是软件测试策略?是为软件工程过程定义的一个软件测试的模板,也就是把特定是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤。的测试用例方法放置进去的一系列步骤。n n软件测试策略的特征:软件测试策略的特征:(1 1)测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中。)测试从模块层开始
5、,然后扩大延伸到整个基于计算机的系统集合中。(2 2)不同的测试技术适用于不同的时间点。)不同的测试技术适用于不同的时间点。(3 3)测试是由软件的开发人员和(对于大型系统而言)独立的测试)测试是由软件的开发人员和(对于大型系统而言)独立的测试组来管理的。组来管理的。(4 4)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。现在学习的是第7页,共31页软件测试充分性准则软件测试充分性准则 P40P40n n对任何软件都存在有限的充分测试集合。对任何软件都存在有限的充分测试集合。n n如果一个软件系统在一个测试数据集合上的
6、测试是充分的,那么再多如果一个软件系统在一个测试数据集合上的测试是充分的,那么再多测试一些数据也应该是充分的。这一特性称为测试一些数据也应该是充分的。这一特性称为单调性单调性。n n即使对软件所有成分都进行了充分的测试,也并不表明整个软件即使对软件所有成分都进行了充分的测试,也并不表明整个软件的测试已经充分了。这一特性称为的测试已经充分了。这一特性称为非复合性非复合性。n n即使对软件系统整体的测试是充分的,也并不意味软件系统中各个成分即使对软件系统整体的测试是充分的,也并不意味软件系统中各个成分都已经充分地得到了测试。这个特性称为都已经充分地得到了测试。这个特性称为非分解性非分解性。n n软
7、件测试的充分性应该与软件的需求和软件的实现都相关。软件测试的充分性应该与软件的需求和软件的实现都相关。n n软件越复杂,需要的测试数据就越多。这一特性称为软件越复杂,需要的测试数据就越多。这一特性称为复杂性复杂性。n n测试得越多,进一步测试所能得到的充分性增长就越少。这一特测试得越多,进一步测试所能得到的充分性增长就越少。这一特性称为性称为回报递减率回报递减率。请同学们自己慢慢体会以下定义:请同学们自己慢慢体会以下定义:现在学习的是第8页,共31页2.2.1 静态测试与动态测试静态测试与动态测试 根据程序是否运行,测试分为静态测试与动态测试。根据程序是否运行,测试分为静态测试与动态测试。1.
8、静态测试:指不实际运行被测软件,只是静态地检查程序代码、界指不实际运行被测软件,只是静态地检查程序代码、界面或文档中可能存在的错误的过程,主要是对软件的编程格式、结面或文档中可能存在的错误的过程,主要是对软件的编程格式、结构等方面进行评估。构等方面进行评估。包括三个方面:包括三个方面:n n对于代码测试:主要测试代码是否符合相应的标准和规范。对于代码测试:主要测试代码是否符合相应的标准和规范。n n对于界面测试:主要测试软件的实际界面与需求中的说明是否符合。对于界面测试:主要测试软件的实际界面与需求中的说明是否符合。n n对于文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。对于
9、文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。现在学习的是第9页,共31页案例案例1 1:C C语言程序的静态分析和动态测试语言程序的静态分析和动态测试#include include max(float x,float y)max(float x,float y)float z;float z;z=xy?x:y z=xy?x:y return(z);return(z);main()main()float a,b;float a,b;int c;int c;scanf(“%f,%f”,&a,&b);scanf(“%f,%f”,&a,&b);c=max(a,b);c=max(a
10、,b);printf(“Max is%dn”,c);printf(“Max is%dn”,c);现在学习的是第10页,共31页案例案例1 1修改后,如下修改后,如下#include include max(float x,float y)/max(float x,float y)/返回两个单精度数中的大数返回两个单精度数中的大数 float z;float z;z=xy?x:y z=xy?x:y return(z);return(z);main()main()float a,b,cfloat a,b,c;scanf(“%f,%f”,&a,&b);scanf(“%f,%f”,&a,&b);c=m
11、ax(a,b);c=max(a,b);printf(“Max is%dn”,c);printf(“Max is%dn”,c);可参考可参考C C语言编码规范语言编码规范现在学习的是第11页,共31页2.2.1 静态测试与动态测试静态测试与动态测试静态测试:n n静态测试包括代码检查、静态结构分析、代码质量度量静态测试包括代码检查、静态结构分析、代码质量度量 等。等。它可以由人工进行,也可以借助软件工具自动进行。它可以由人工进行,也可以借助软件工具自动进行。n n静态测试方法也可称为静态测试方法也可称为“静态分析静态分析”。现在学习的是第12页,共31页静态测试与动态测试静态测试与动态测试(续)
12、(续)n n静态测试阶段的任务:静态测试阶段的任务:P41P41(1 1)检查算法的逻辑正确性。)检查算法的逻辑正确性。(2 2)检查模块接口的正确性。)检查模块接口的正确性。(3 3)检查输入参数是否有合法性检查。)检查输入参数是否有合法性检查。(4 4)检查调用其他模块的接口是否正确。)检查调用其他模块的接口是否正确。(5 5)检查是否设置了适当的出错处理。)检查是否设置了适当的出错处理。(6 6)检查表达式、语句是否正确,是否含有二义性。)检查表达式、语句是否正确,是否含有二义性。(7 7)检查常量或全局变量使用是否正确。)检查常量或全局变量使用是否正确。(8 8)检查标识符的使用是否规
13、范、一致。)检查标识符的使用是否规范、一致。(9 9)检查程序风格的一致性、规范性。)检查程序风格的一致性、规范性。(1010)检查代码是否可以优化,算法效率是否最高。)检查代码是否可以优化,算法效率是否最高。(1111)检查代码注释是否完整,是否正确反映了代码的功能。)检查代码注释是否完整,是否正确反映了代码的功能。现在学习的是第16页,共31页静态测试与动态测试静态测试与动态测试(续)(续)n n静态测试可以完成以下工作:静态测试可以完成以下工作:(1 1)发发现现下下列列错错误误:错错用用局局部部变变量量和和全全局局变变量量;未未定定义义的的变变量量、不不匹匹配配的的参参数数;不不适适当
14、当的的循循环环嵌嵌套套或或分分支支嵌嵌套套、死死循循环环、不不允允许许的的递归;调用不存在的子程序,遗漏标号或代码。递归;调用不存在的子程序,遗漏标号或代码。(2 2)找找出出以以下下问问题题的的根根源源:从从未未使使用用过过的的变变量量;不不会会执执行行到到的代码、从未使用过的标号;潜在的死循环。的代码、从未使用过的标号;潜在的死循环。(3 3)提提供供程程序序缺缺陷陷的的间间接接信信息息:所所用用变变量量和和常常量量的的交交叉叉应应用用表表;是是否否违违背背编编码码规规则则;标标识识符符的的使使用用方方法法和和过过程程的的调调用用层层次。次。(4 4)为进一步查找做好准备。)为进一步查找做
15、好准备。(5 5)选择测试用例。)选择测试用例。(6 6)进行符号测试。)进行符号测试。现在学习的是第17页,共31页静态测试与动态测试静态测试与动态测试(续)(续)2 2、动态测试、动态测试指实际运行被测程序,输入相应的测试数据,检查实际指实际运行被测程序,输入相应的测试数据,检查实际输出结果与预期结果是否相符的过程。输出结果与预期结果是否相符的过程。例如,前面的案例例如,前面的案例1,输入数据1.2,3.5则输出为:则输出为:1.2000001.200000与预期的相符现在学习的是第18页,共31页静态测试与动态测试静态测试与动态测试(续)(续)n动态测试包括:(1)功能确认与接口测试:测
16、试各单元功能正确性、单元间的接口等。(2)覆盖率分析:对代码的执行路径覆盖范围进行评估。(3)性能分析:查找性能瓶颈 (4)内存分析:测量内存使用情况,了解内存分配情况,找出发生错误的原由。现在学习的是第19页,共31页2.2.2 黑盒测试和白盒测试黑盒测试和白盒测试(续)(续)1、黑盒测试(Black-box Testing)(Black-box Testing):指把被测软件看作是一个黑盒子,不关心里面的结构,指把被测软件看作是一个黑盒子,不关心里面的结构,只关心输入数据和输出结果。只关心输入数据和输出结果。例如,只关心输入例如,只关心输入x=2时,输出结果是否为时,输出结果是否为y=4。
17、测试规划是基于产品的功能。也称为功能测试、数据驱动测试和基于规格说明的也称为功能测试、数据驱动测试和基于规格说明的测试,实际上还包括性能测试。测试,实际上还包括性能测试。现在学习的是第20页,共31页输入入输出出黑盒黑盒测试是在程序接口是在程序接口进行行测试,它只是,它只是检查程程序功能是否按照序功能是否按照规格格说明明书的的规定正常使用。定正常使用。也也被称被称为用用户测试。现在学习的是第21页,共31页n n黑盒测试黑盒测试主要根据主要根据规格说明书设计规格说明书设计规格说明书设计规格说明书设计测试用例,并不涉及程序测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关
18、系内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。或程序的功能设计测试用例。n n黑盒测试的特点:黑盒测试的特点:(1 1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。生变化时,测试用例仍然可以使用。(2 2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。缩总的开发时间。现在学习的是第22页,共31页n n黑盒测试主要用于发现以下几类错误:黑盒测试主要用于发现以下几类错误:是否有不正确或遗漏了的
19、功能?是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息访问错误?是否有数据结构错误或外部信息访问错误?性能上是否满足用户需求?性能上是否满足用户需求?是否有初始化或终止性错误?是否有初始化或终止性错误?n黑盒测试的具体技术方法黑盒测试的具体技术方法 :边界值分析法边界值分析法 等价类划分法等价类划分法 因果图法因果图法 决策表法决策表法现在学习的是第23页,共31页2、白盒测试(White-box Testing):指将被测软件看作一个打开的盒子,研研究究盒盒子子里里面面的的代码和程序结
20、构。测试规划基于产品的内部结构。代码和程序结构。测试规划基于产品的内部结构。又称为结构测试,一般用来分析程序的内部结构。现在学习的是第24页,共31页白盒白盒测试需要需要完全了解程序完全了解程序结构和构和处理理过程,程,它按照程序内部它按照程序内部逻辑测试程序,程序,检验程序中程序中每条通路是否按每条通路是否按预定要求正确工作。定要求正确工作。也被称也被称为程序程序员测试。应用程序用程序现在学习的是第25页,共31页n白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。n通常的程序结构覆盖有:语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 路径覆盖现在学习
21、的是第26页,共31页?X=2 y=2x Y=4 X=2Y=4未知等式与已知等式黑盒黑盒白盒白盒3 3、黑盒测试法和白盒测试法的比较、黑盒测试法和白盒测试法的比较现在学习的是第27页,共31页黑盒测试和白盒测试的比较黑盒测试和白盒测试的比较 P45n黑盒测试:根据输入数据与输出数据的对应关系进行测试,而不考虑内部结构及工作情况。注重于软件的范围,通过划分程序的输入和输出域来确定测试用例。若外部特性本身存在问题或规格说明的规定有误,则应用黑盒测试方法是不能发现问题的。n白盒测试:只根据程序的内部结构进行测试。测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。如果程序
22、的结构本身有问题,比如说程序逻辑有错误或者有遗漏,那也是无法发现的。现在学习的是第28页,共31页项目项目黑盒测试法黑盒测试法白盒测试法白盒测试法规划规划方面方面功能和性能的测试功能和性能的测试结构的测试结构的测试优点优点方面方面 能确保从用户的角度能确保从用户的角度出发进行测试出发进行测试 能对程序内部的特定部位进能对程序内部的特定部位进行覆盖测试行覆盖测试缺点缺点方面方面无法测试程序内部特无法测试程序内部特定部位;当规格说明有定部位;当规格说明有误,则不能发现问题误,则不能发现问题无法检查程序的外部特性;无法检查程序的外部特性;无法对未实现规格说明的程无法对未实现规格说明的程序内部欠缺部分
23、进行测试序内部欠缺部分进行测试应用应用范围范围 边界分析法边界分析法 等价类划分法等价类划分法 决策表测试决策表测试 因果图法因果图法 语句覆盖,判定覆盖,语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,判定/条件覆盖,条件覆盖,路径覆盖,循环覆盖,路径覆盖,循环覆盖,模块接口测试模块接口测试P45n n黑盒测试与白盒测试的比较黑盒测试与白盒测试的比较现在学习的是第29页,共31页白盒白盒测试黑盒黑盒测试软件公司一般两种件公司一般两种测试相相结合,合,对软件件的整体功能和性能的整体功能和性能进行黑盒行黑盒测试,对软件的源代件的源代码采用白盒采用白盒测试。灰盒灰盒测试(grey-box testing)grey-box testing)现在学习的是第30页,共31页白盒白盒测试黑盒黑盒测试白盒白盒测试工程工程师黑盒黑盒测试工程工程师现在学习的是第31页,共31页