{职业发展规划}第四章执行测试1S

上传人:精****库 文档编号:140593796 上传时间:2020-07-30 格式:PPTX 页数:49 大小:264.14KB
返回 下载 相关 举报
{职业发展规划}第四章执行测试1S_第1页
第1页 / 共49页
{职业发展规划}第四章执行测试1S_第2页
第2页 / 共49页
{职业发展规划}第四章执行测试1S_第3页
第3页 / 共49页
{职业发展规划}第四章执行测试1S_第4页
第4页 / 共49页
{职业发展规划}第四章执行测试1S_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《{职业发展规划}第四章执行测试1S》由会员分享,可在线阅读,更多相关《{职业发展规划}第四章执行测试1S(49页珍藏版)》请在金锄头文库上搜索。

1、软 件 测 试 技 术,1,第四章 执行测试,4.1 测试执行概述 4.2 执行系统测试 4.3 执行单元测试 4.4 执行集成测试,2,软件测试过程,单元 测试,单元 测试,单元 测试,集成 测试,集成 测试,系统 测试,被测模块,被测模块,被测模块,设计信息,软件需求,用户信息其它元素,*,验收 测试,*,交付用户,软件测试的过程流程,3,4.1 测试执行概述,测试执行过程,执行测试的过程,也是不断发现缺陷的过程。在发现和记录了软件缺陷后,还需要对缺陷进行管理,包括对缺陷的分类、报告、重现、跟踪和统计分析。,4,例子,#include void iszero(int m) if(m!=0)

2、 printf(“%d”,m); else printf(“%d”,1); ,void main(void) int a5; int i=0; printf(“please input 5 datasn”); for(i=0;i5;i+) scanf(“%d”, ,程序功能:若输入的数组元素不等于0,则输出元素值;若输入的数组元素值为0,则输出1。,5,4.3 执行单元测试,什么是单元测试(unit testing)? 指对软件中的最小可测试单元进行检查和验证。单元,一般应根据实际情况判定其具体含义,如,C中,单元指1个函数,java中,单元指1个类,图形化软件中也可以是1个窗口、1个菜单等,

3、单元就是认为规定的最小被测试的模块。,6,在单元测试的过程中,会综合运用静态测试技术和动态测试技术。 在进行单元测试的过程中,一般会使用白盒测试,但也会结合使用黑盒测试。 单元测试是针对程序模块进行正确性检验的测试工作。在编码的过程中作单元测试,其花费是最小的, 在代码编写完成后的单元测试工作主要分为两个步骤: 人工静态检查 动态执行跟踪,7,4.3.1 静态检查,合格的代码应该具备以下性质: 正确性:指代码逻辑必须正确,能够实现预期的功能 清晰性:指代码必须简明、易懂,注释准确没有歧义 规范性:指代码必须符合企业所定义的共同规范包括命名规则,代码风格等等 一致性:指代码必须在命名上风格上都保

4、持统一 高效性:指代码不但要满足以上性质,而且需要尽可能降低代码的执行时间,8,单元测试时,静态测试常采用以下方式: 代码走查 桌面审查(同级复查) 代码评审,9,通常的人工检查阶段需要执行下列内容: P113 大多数单元测试会使用同级复查,即由开发人员的同伴(另外一个程序员)对文档和代码进行检验。 不同公司、不同的项目会有不同的复查项检查清单,例如下面的一些典型复查项: 函数入口处的形式参数的合法性 有没有显然的数组越界操作 代码的注释量是否符合公司规范 是否设置了适当的出错处理 静态测试也可采用一些辅助工具软件进行,例如PC-Lint一款C/C+语言代码静态测试工具。,10,单元测试时,应

5、该对模块进行如下检查: 对模块内所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真“与”假“的情况至少各执行一次; 在循环的边界和运行界限内执行循环体; 测试内部数据的有效性等等。,4.3.2 动态跟踪,测试排错调试,11,单元测试针对每个程序的模块,主要测试5个方面的问题: 模块接口、局部数据结构、边界条件、独立的路径和错误处理。,模块,模块接口,局部数据结构,独立的路径,出错处理,边界条件,4.3.3 单元测试的重点,12,单元测试的重点: 模块接口:检查参数个数、数据类型、顺序是否正确,确定返回值的类型及有效性; 局部数据结构:测试其内部的数据能否保持完整性,包括内部数据的内容、

6、形式及相互关系不发生错误。 独立的路径:在单元测试中,最主要的测试是针对路径的测试。 边界条件:软件常常在边界地区发生问题。 错误处理:测试出错处理的要点是模块在工作中发生了错误,其中的出错处理设施是否有效。,13,单元测试的入口标准:通常在编码完成后进行,在前期应准备,如写单元测试计划、编测试用例、单元测试代码等。一般由白盒测试工程师、开发人员完成。 单元测试的依据: 项目的详细设计文档和源程序(包括代码和注释)。 如何进行单元测试? 一般先静态地检查代码是否符合规范,然后动态地运行代码并检查运行结果。 测试方式: 主要用白盒测试。,14,单元测试的一般步骤: 静态测试,检查代码是否符合规范

7、,参看“编码规范”,如变量、类、方法的命名规范等。 编译运行程序,进行语法正确性验证 动态测试,深入检查代码的正确性、容错性和边界值等。需要提前设计一些测试步骤、测试用例。,如何进行单元测试?,15,案例 单元测试例子,#include void iszero(int m) if(m!=0) printf(“%d”,m); else printf(“%d”,1); ,void main(void) int a5; int i=0; printf(“please input 5 datasn”); for(i=0;i5;i+) scanf(“%d”, ,程序功能:若输入的数组元素不等于0,则输出

8、元素值;若输入的数组元素值为0,则输出1。,16,静态测试,参照c语言编码规范,检查程序中是否存在不符合规范的地方,发现没有注释 编译运行该程序,无语法错误,编译通过 动态测试 运行时,输入数据,包括合法数据,非法数据,边界值. 运行: 合法数据, 输入12340,输出为12341,符合预期结果 注意: 边界值问题,如输入1234567;数组的边界值等; 非法数据的输入,如输入abcde,则结果出现某些数,因为scanf()的错误判断能力不强造成的。,17,单元测试代码,单元测试中的辅助测试模块: (1)驱动模块(Driver) 指模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收测试

9、数据,将相关数据传送给被测模块,启动被测模块,并输出结果。 (2)桩模块(Stub) 指模拟被测模块所调用的模块。一般只进行很少的数据处理,如打印入口和返回。,18,单元测试的测试结构,测试用例,被测模块,驱动模块,测试结果,桩模块1,桩模块2,桩模块3,桩模块n,桩模块,驱动模块和桩模块,19,驱动模块主要完成以下事情: 1、接受测试输入; 2、对输入进行判断; 3、将输入传给被测单元,驱动被测单元执行; 4、接受被测单元执行结果,并对结果进行判断; 5、将判断结果作为用例执行结果输出。 被测单元用什么语言,驱动就用什么语言写。,总而言之,写驱动和桩不需要太高深编程知识。如果有模板或框架作为

10、参考的话,差不多就成了一个体力活。,20,#include void main(void) int a=1,b=2,c; c=fun1(a,b); printf(“%d”,c); int fun1(int x,int y) return x+y; ,main函数,fun1函数,例如,21,#include void main(void) int a=1,b=2,c; c=fun1(a,b); printf(“%d”,c); int fun1(int x,int y) return x+y; ,假设main()和fun1()分别由两个程序员开发且进度不同,进行测试时: 若没有main()函数,如

11、何测试fun1()? 若没有fun1()函数,如何测试main()?,22,#include /驱动模块 void main(void) int a=1,b=2,c; c=fun1(a,2*b); printf(“%d”,c); int fun1(int x,int y) return x+y; ,假设main()和fun1()分别由两个程序员开发且进度不同,进行测试时: 若没有main()函数,如何测试fun1()? 构建一个驱动模块(main()函数的驱动模块),里面至少能够调用fun1()并输出调用结果。,如何测试fun1模块?,23,#include void main(void) i

12、nt a=1,b=2,c; c=fun1(a,b); printf(“%d”,c); /桩模块 int fun1(int x,int y) return 2*x+y; ,假设main()和fun1()分别由两个程序员开发且进度不同,进行测试时: 若没有fun1()函数,如何测试main()? 构建一个桩模块(fun1()的桩模块),至少能够被main()调用并有一个返回值。,如何测试main模块?,24,驱动模块一般结构: Int DriverModule( ) . 调用被测试的模块; 处理运行结果; .,单元测试代码应该与单元代码保持一致,每当单元代码发生变化,需确认单元测试代码是否需要更新

13、;单元测试代码通常不完全等同于所模拟的真实模块,一般只模拟一个或一些运行情况,返回一个执行所需要的值。,桩模块一般结构: Int StubModule(.) . Return 返回值; .,单元测试代码的一般结构,25,驱动模块和桩模块都是额外的开销,虽然在单元测试中必须编写,但并不需要作为最终的产品提供给用户。,26,单元测试的通过标准,正确地实现规定的功能 错误处理正确 边界条件处理正确 达到预定的代码覆盖率(语句覆盖、判定覆盖、条件组合覆盖、路径覆盖等)。 一般要求语句覆盖率达到100%。,少于30代码行的函数一般不需要做单元测试,只要代码走查即可。,27,测试与调试,调试:利用测试结果

14、和测试过程中提供的信息进行全面分析,找出bug的根源和出错原因,修正已发现的bug的过程。,调试与测试的区别: 测试的目的:寻找和发现缺陷。测试可由非开发人员完成。 调试的目的:找出缺陷的原因,并修正缺陷。调试必须由开发人员完成。,通常,在测试以后紧接着要进行调试。 实际上,测试工作和调试工作是交叉进行的。,28,进行测试,找出缺陷,缺陷分配,进行调试,29,注意:,即使通过单元测试后没有出现问题的模块,集成在一起也有可能出现问题。即使一个软件成功运行了许多年,仍然会不断出现bug,干扰软件的使用 某个单元中可以接受的误差,可能经过多次集成后被扩大到无法接受的程度,这是集成测试要重点关注的。(

15、单元缺陷的累积扩散效应),30,什么是集成测试(integration testing)? 也称为组装测试或综合测试,是单元测试的下一个阶段,指按照设计的程序结构图,将通过测试的单元模块组装成系统或子系统,再进行测试。,4.4 执行集成测试,31,主要是单元之间的接口测试: 检查单元调用关系、数据传递等,如函数形参中的类型、个数、顺序必须与实参相匹配。 一个单元是否使其他单元出现问题?全局数据结构的使用是否出现问题(建议少用全局变量)?几个模块组合起来可否实现主功能?误差不断积累达到不可接受的程度?,集成测试的内容,32,什么时候进行集成测试? 理论上是在单元测试之后进行,但效率低,实际几乎可

16、以同步进行。 依据? 通过了单元测试的模块以及概要设计文档。 由谁来进行集成测试? 主要是开发人员或白盒测试工程师。,33,集成测试的模式,非增量式测试模式(非渐增式) 增量式测试模式(渐增式),34,非增量式测试,非增量式测试也称为一次性集成,是采用一步到位的方法来构造测试: 对所有模块进行独立的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。,35,采用非增量式测试方法进行集成测试,(1)程序结构图,(3)集成测试示意图,(2)各模块的单元测试示意图,36,非增量式测试的缺点: 需要所有单元被测试过,而实际上集成测试可以和单元测试重叠并行,因此不利于开发进度; 问题定位比较困难,集成后一旦出现问题,很难判定出错的具体原因和位置。 适合于规模较小

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号