软件测试策略与过程.ppt

上传人:re****.1 文档编号:569939006 上传时间:2024-07-31 格式:PPT 页数:42 大小:921.51KB
返回 下载 相关 举报
软件测试策略与过程.ppt_第1页
第1页 / 共42页
软件测试策略与过程.ppt_第2页
第2页 / 共42页
软件测试策略与过程.ppt_第3页
第3页 / 共42页
软件测试策略与过程.ppt_第4页
第4页 / 共42页
软件测试策略与过程.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《软件测试策略与过程.ppt》由会员分享,可在线阅读,更多相关《软件测试策略与过程.ppt(42页珍藏版)》请在金锄头文库上搜索。

1、A Free sample background from Slide 12.2.3 软件测试过程软件测试过程单元单元测试测试单元单元测试测试单元单元测试测试集成集成测试测试集成集成测试测试系统系统测试测试* 这两个测试可能交叉与前后互换这两个测试可能交叉与前后互换被测模块被测模块被测模块被测模块被测模块被测模块设计信息设计信息软件需求软件需求用户信息用户信息其它元素其它元素* 验收验收测试测试* 交付用户交付用户软件测试的过程流程确认确认测试测试A Free sample background from Slide 2软件测试过程软件测试过程n n单元测试单元测试单元测试单元测试:针对每个单

2、元的测试,针对每个单元的测试, 以确保每个模块能正常以确保每个模块能正常工作为目标。工作为目标。大量采用白盒测试大量采用白盒测试。n n集成测试集成测试集成测试集成测试:对已测试过的模块进行对已测试过的模块进行组装组装,进行集成测试。,进行集成测试。目的在于检验与软件设计相关的程序结构问题。目的在于检验与软件设计相关的程序结构问题。多采用黑多采用黑盒测试。盒测试。n n系统测试系统测试系统测试系统测试:检验所开发的软件能否满足所有功能和性能需检验所开发的软件能否满足所有功能和性能需求的最后手段。检验软件产品能否与系统的其他部分(比求的最后手段。检验软件产品能否与系统的其他部分(比如,硬件、数据

3、库及操作人员)协调工作。如,硬件、数据库及操作人员)协调工作。采用黑盒测试采用黑盒测试。n n验收(用户)测试验收(用户)测试验收(用户)测试验收(用户)测试:检验软件产品质量的最后一道工序。:检验软件产品质量的最后一道工序。主要突出用户的作用,同时软件开发人员也应有一定程度主要突出用户的作用,同时软件开发人员也应有一定程度的参与。的参与。采用黑盒测试。采用黑盒测试。A Free sample background from Slide 3一个实用软件测试过程一个实用软件测试过程一种简单实用的软件测试过程模型一种简单实用的软件测试过程模型 POCERMPOCERM。测试过程中必需的基本测试活动

4、及其产生的结果:测试过程中必需的基本测试活动及其产生的结果:n n写软件测试计划写软件测试计划 ( (PlansPlans) )n n写测试设计写测试设计( (编制测试大纲编制测试大纲 ( (OutlinesOutlines), ),设计测试用例设计测试用例 ( (test test CaseCase generation) generation))n n测试执行测试执行 ( (ExecutionExecution) )n n生成软件测试报告生成软件测试报告 ( (software testing software testing ReportsReports) ) 软件问题报告软件问题报告S

5、PR (Software Problem Report)SPR (Software Problem Report) 测试结果报告测试结果报告 ( (test result Reports)test result Reports)A Free sample background from Slide 42.3 单元测试单元测试A Free sample background from Slide 5n n什么是单元测试什么是单元测试( (unit testing)unit testing)? 指指对对软软件件中中的的最最最最小小小小可可可可测测测测试试试试单单单单元元元元进进行行检检查查和和验验

6、证证。单单元元,一一般般应应根根据据实实际际情情况况判判定定其其具具体体含含义义,如如,C C中中,单单元元指指1 1个个函函数数,javajava中中,单单元元指指1 1个个类类,图图形形化化软软件件中中也也可可以以是是1 1个个窗窗口口、1 1个个菜菜单单等等,单单元元就就是是认认为为规规定定的的最最小小被被测测试试的的模模块。块。A Free sample background from Slide 6单元测试过程单元测试过程单元测试计划单元测试计划单元测试设计单元测试设计单元测试执行单元测试执行测试的记录测试的记录测试总结测试总结分析分析完毕完毕缺陷跟踪缺陷跟踪A Free sampl

7、e background from Slide 7单元测试过程单元测试过程n计划阶段,依据是需求规格说明和详细设计说明书,主要内容是测试范围、测试时间进度、资源分配表、单元测试策略和方法。例如, 是否需要静态测试、 测试工具、 单元测试代码开发(驱动(Driver)和桩(Stub)模块)等。n设计阶段,依据是单元测试计划和详细设计,生成单元测试用例,主要内容是设计测试用例,编写Driver and Stub.n执行阶段,依据是单元测试用例、需求说明、详细说明,执行测试用例,生成缺陷报告。n评估阶段,依据是单元测试用例、缺陷报告等。写单元测试报告。A Free sample background

8、 from Slide 8单元测试策略单元测试策略n分离式单元测试,将所有单元分离开,独立地测试每个单元,测试时单元间互相不调用。n分层式单元测试 由不调用其他单元的最底层单元开始,按自底向上顺序完成每一层的单元的测试,在测试上一层单元时,可以调用已经通过测试的下层单元。 或:由不被其他单元调用的最顶层单元开始,按自顶向下的顺序完成每一层单元的测试。A Free sample background from Slide 92.3.1 单元测试的主要任务单元测试的主要任务n n单元测试针对每个程序的模块,主要测试单元测试针对每个程序的模块,主要测试5 5个方面的问题:个方面的问题: 模模块块接接

9、口口、局局部部数数据据结结构构、边边界界条条件件、独独立立的的路路径径和和错错误误处处理。理。模块模块模块接口模块接口局部数据结构局部数据结构路径测试路径测试出错处理出错处理边界条件边界条件A Free sample background from Slide 15何时进行单元测试?何时进行单元测试?通常在编码完成,代码已通过编译后进行单元测通常在编码完成,代码已通过编译后进行单元测试,在前期应准备,如写单元测试计划试,在前期应准备,如写单元测试计划, ,编测试用例、编测试用例、单元测试代码等。一般由白盒测试工程师、开发人员单元测试代码等。一般由白盒测试工程师、开发人员完成。完成。qq单元测试

10、的依据: 源程序源程序( (包括代码和注释包括代码和注释) ),项目的详细设计,项目的详细设计文档。文档。qq如何进行单元测试?一般先静态地检查代码是否符合规范,然后动态一般先静态地检查代码是否符合规范,然后动态地运行代码并检查运行结果。主要用白盒测试。地运行代码并检查运行结果。主要用白盒测试。A Free sample background from Slide 16单元测试的一般步骤:单元测试的一般步骤:n n编译运行编译运行程序,进行语法正确性验证程序,进行语法正确性验证 n n静态测试静态测试,检查代码是否符合规范,参看,检查代码是否符合规范,参看“ “编码规编码规范范” ”n n动态

11、测试动态测试,深入检查代码的正确性、容错性和边界,深入检查代码的正确性、容错性和边界值等。需要提前设计一些测试步骤、测试用例。值等。需要提前设计一些测试步骤、测试用例。 如何进行单元测试?如何进行单元测试?A Free sample background from Slide 17案例案例 单元测试例子单元测试例子# #include include void iszero(int m)void iszero(int m) if(m!=0) if(m!=0) printf(“%d”,m); printf(“%d”,m);else else printf(“%d”,1);printf(“%d”,

12、1); void main(void)void main(void) int a5; int a5; int i=0; int i=0; printf(“please input 5 datasn”); printf(“please input 5 datasn”);for(i=0;i5;i+)for(i=0;i5;i+) scanf(“%d”,&ai);scanf(“%d”,&ai);iszero(ai);iszero(ai); 程序功能:若输入的数组元素不等程序功能:若输入的数组元素不等于于0 0,则输出元素值;若输入的数组元,则输出元素值;若输入的数组元素值为素值为0 0,则输出,则输出

13、1 1。A Free sample background from Slide 18n n编译运行该程序,无语法错误,编译通过编译运行该程序,无语法错误,编译通过n n静态测试,参照静态测试,参照c c语言编码规范,检查程序中是否存在不符语言编码规范,检查程序中是否存在不符合规范的地方,发现没有注释合规范的地方,发现没有注释n n动态测试动态测试 运行时运行时, ,输入数据包括合法数据输入数据包括合法数据, ,非法数据非法数据, ,边界值边界值. . 运行:运行: 合法数据合法数据, , 输入输入1234012340,输出为,输出为1234112341,符合预期结果,符合预期结果 注意:注意:

14、边界值问题,如输入边界值问题,如输入12345671234567;数组的边界值等;数组的边界值等; 非法数据的输入,如输入非法数据的输入,如输入abcdeabcde,则结果出现某些数,因为则结果出现某些数,因为scanfscanf() ()的的 错误判断能力不错误判断能力不 强造成的。强造成的。A Free sample background from Slide 19单元测试代码单元测试代码是单元测试中的辅助测试模块:是单元测试中的辅助测试模块:(1 1)驱动模块驱动模块(Driver) (Driver) 指指模拟模拟模拟模拟被测试模块的被测试模块的上一级模块上一级模块上一级模块上一级模块,

15、相当于被测模块的主程序。它接收测试数据,将相关相当于被测模块的主程序。它接收测试数据,将相关数据传送给被测模块,启动被测模块,并输出结果。数据传送给被测模块,启动被测模块,并输出结果。(2 2)桩模块桩模块(Stub)(Stub) 指指模拟模拟模拟模拟被测模块所被测模块所调用的模块调用的模块调用的模块调用的模块。 驱动模块和桩模块都是额外的开销,虽然驱动模块和桩模块都是额外的开销,虽然在单元测试中必须编写,但并不需要作为最终在单元测试中必须编写,但并不需要作为最终的产品提供给用户。的产品提供给用户。 A Free sample background from Slide 20 单元测试的测试环

16、境单元测试的测试环境测试用例测试用例被测模块被测模块驱动模块驱动模块测试结果测试结果桩模块桩模块1桩模块桩模块2桩模块桩模块3桩模块桩模块n桩模块桩模块驱动模块和桩模块驱动模块和桩模块A Free sample background from Slide 21# #include include void main(void)void main(void)int a=1,b=2,c;int a=1,b=2,c;c=fun1(a,b);c=fun1(a,b); int fun1(int x,int y)int fun1(int x,int y)return x+y;return x+y; 假设假

17、设main()main()和和fun1()fun1()分别由两个分别由两个程序员开发且进度不同,进行测试程序员开发且进度不同,进行测试时:时:若没有若没有main()main()函数,如何测试函数,如何测试fun1fun1() ()? 若没有若没有fun1()fun1()函数,如何测试函数,如何测试mainmain() ()? A Free sample background from Slide 22# #include include / /驱动模块驱动模块void void main(voidmain(void) ) intint a=1,b=2,c; a=1,b=2,c;c=fun1(

18、a,2*b);c=fun1(a,2*b); intint fun1(int fun1(int x,intx,int y) y)return return x+yx+y; ; 假设假设main()main()和和fun1()fun1()分别由两个分别由两个程序员开发且进度不同,进行测试程序员开发且进度不同,进行测试时:时:若没有若没有main()main()函数,如何测试函数,如何测试fun1fun1() ()? 构建一个构建一个驱动模块驱动模块( (main()main()函数函数的驱动模块的驱动模块) ),里面至少能够调用里面至少能够调用fun1fun1() ()并输出调用结果。并输出调用结

19、果。如何测试如何测试fun1fun1模块模块? ?A Free sample background from Slide 23# #include include void void main(voidmain(void) ) intint a=1,b=2,c; a=1,b=2,c;c=fun1(a,b);c=fun1(a,b); / /桩模块桩模块intint fun1(int fun1(int x,intx,int y) y) return 2*return 2*x+yx+y; ; 假设假设main()main()和和fun1()fun1()分别由两个分别由两个程序员开发且进度不同,进行测

20、试程序员开发且进度不同,进行测试时:时:若没有若没有fun1()fun1()函数,如何测试函数,如何测试mainmain() ()? 构建一个构建一个桩模块桩模块( (fun1()fun1()的桩模的桩模块块) ),至少能够被,至少能够被main()main()调用并有一调用并有一个返回值。个返回值。如何测试如何测试mainmain模块模块? ?A Free sample background from Slide 24n驱动模块一般结构: Int DriverModule( ) . 调用被测试的模块; 处理运行结果; . 单元测试代码单元测试代码单元测试代码单元测试代码应该与应该与应该与应该

21、与单元代码单元代码单元代码单元代码保持一致,每当单元代码保持一致,每当单元代码保持一致,每当单元代码保持一致,每当单元代码发生变化,需确认单元测试代码是否需要更新;单元测发生变化,需确认单元测试代码是否需要更新;单元测发生变化,需确认单元测试代码是否需要更新;单元测发生变化,需确认单元测试代码是否需要更新;单元测试代码通常不完全等同于所模拟的真实模块,一般只模试代码通常不完全等同于所模拟的真实模块,一般只模试代码通常不完全等同于所模拟的真实模块,一般只模试代码通常不完全等同于所模拟的真实模块,一般只模拟一个或一些运行情况,返回一个执行所需要的值。拟一个或一些运行情况,返回一个执行所需要的值。拟

22、一个或一些运行情况,返回一个执行所需要的值。拟一个或一些运行情况,返回一个执行所需要的值。n桩模块一般结构: Int StubModule(.) . Return 返回值; .单元测试代码的一般结构单元测试代码的一般结构A Free sample background from Slide 25单元测试的技术指标单元测试的技术指标n正确地实现规定的功能n错误处理正确n边界条件处理正确n达到预定的代码覆盖率(语句覆盖、判定覆盖、条件组合覆盖、路径覆盖等)A Free sample background from Slide 26n n什么是集成测试什么是集成测试( (integration te

23、stingintegration testing) )? 单元测试的下一个阶段,指将通过测试的单元模单元测试的下一个阶段,指将通过测试的单元模块组装成系统或子系统,再进行测试。块组装成系统或子系统,再进行测试。n集成测试的内容:单元组装后的功能正确性:是否实现预期功能单元之间的接口:调用关系、数据传递 一个单元是否使其他单元出现问题?对全局数据结构、数据文件/数据库的使用是否出现问题集成后的系统性能:集成后系统资源使用情况2.4 集成测试集成测试A Free sample background from Slide 27集成测试过程集成测试过程集成测试计划集成测试计划集成测试设计集成测试设计集

24、成测试执行集成测试执行测试的记录测试的记录测试总结测试总结分析分析完毕完毕缺陷跟踪缺陷跟踪 一些项目不一定要有一个单独的一些项目不一定要有一个单独的一些项目不一定要有一个单独的一些项目不一定要有一个单独的集成测试计划,可以在项目计划中包集成测试计划,可以在项目计划中包集成测试计划,可以在项目计划中包集成测试计划,可以在项目计划中包含;一些项目不设置单独的集成测试含;一些项目不设置单独的集成测试含;一些项目不设置单独的集成测试含;一些项目不设置单独的集成测试阶段,而是和单元测试合并,如分层阶段,而是和单元测试合并,如分层阶段,而是和单元测试合并,如分层阶段,而是和单元测试合并,如分层单元测试。单

25、元测试。单元测试。单元测试。A Free sample background from Slide 28n n什么时候进行集成测试?什么时候进行集成测试? 理论上是在单元测试之后进行,但效率低,实际理论上是在单元测试之后进行,但效率低,实际几乎可以同步进行。几乎可以同步进行。n n依据?依据? 单元测试的模块以及概要设计文档。单元测试的模块以及概要设计文档。n n由谁来进行集成测试由谁来进行集成测试? ? 主要是开发人员或白盒测试工程师。主要是开发人员或白盒测试工程师。A Free sample background from Slide 29集成测试的模式集成测试的模式n非增量式测试模式n增

26、量式测试模式A Free sample background from Slide 302.4.1 非增量式测试非增量式测试n n非增量式测试也称为一次性集成,是采用一步到位的方法来构造测试: 对所有模块进行独立的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。 A Free sample background from Slide 32非增量式测试的缺点:非增量式测试的缺点:n n需要所有单元就绪,而实际上集成测试可以和单需要所有单元就绪,而实际上集成测试可以和单元测试重叠并行,因此不利于开发进度;元测试重叠并行,因此不利于开发进度;n n问题定位比较困难,集

27、成后一旦出现问题,很难问题定位比较困难,集成后一旦出现问题,很难判定出错的具体原因和位置。判定出错的具体原因和位置。 适合于规模较小的应用,有利于并行开发。适合于规模较小的应用,有利于并行开发。A Free sample background from Slide 332.4.2 增量式测试增量式测试n n增量式测试的集成是逐步实现的:增量式测试的集成是逐步实现的: 逐逐次次将将未未曾曾集集成成测测试试的的模模块块和和已已经经集集成成测测试试的的模模块结合成程序包,再将这些模块集成为较大系统。块结合成程序包,再将这些模块集成为较大系统。n n n n按照不同的实施次序,增量式集成测试又可以分为

28、:按照不同的实施次序,增量式集成测试又可以分为: (1 1)自顶向下增量式测试自顶向下增量式测试 (2 2)自底向上增量式测试自底向上增量式测试 (3 3)自顶向下与自底向上相结合自顶向下与自底向上相结合A Free sample background from Slide 34自顶向下法自顶向下法(top-down integration)n n自顶向下法:逐步集成和逐步测试是按照结构图自上而自顶向下法:逐步集成和逐步测试是按照结构图自上而下进行的,即首先集成下进行的,即首先集成主控模块(主程序),主控模块(主程序),主控模块(主程序),主控模块(主程序),然后依照然后依照控制层次结构向下进

29、行集成控制层次结构向下进行集成, ,逐渐将各模块集成。策略有逐渐将各模块集成。策略有两种,深度优先方式(纵向)或者广度优先方式(横向)。两种,深度优先方式(纵向)或者广度优先方式(横向)。n n深度优先方式的集成:深度优先方式的集成: 首先集成在结构中的一个主控路径下的所有模块,首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。主控路径的选择是任意的。 n n广度优先方式的集成:广度优先方式的集成: 首先沿着水平方向,把每一层中所有直接隶属于上首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。一层的模块集成起来,直到底层。A Free sample b

30、ackground from Slide 35自顶向下增量式测试自顶向下增量式测试(续)(续)n n集成测试的整个过程由3个步骤完成: (1)主控模块作为测试驱动器。 (2)根据集成的方式(深度或广度),下层的桩模块一次一次地被替换为真正的模块。 (3)在每个模块被集成时,都必须进行单元测试。 重复第2步,直到整个系统被测试完成。 A Free sample background from Slide 38自底向上法自底向上法(bottom-up integration)n n自底向上法,按结构图自下而上,自底向上法,按结构图自下而上,从程序模块结构的最从程序模块结构的最底底层模块开始集成和测

31、试。层模块开始集成和测试。n n由于是从最底层开始集成,由于是从最底层开始集成,对于一个给定层次的模块,它对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经集成并测试的子模块(包括子模块的所有下属模块)已经集成并测试完成,完成,所以不再需要使用桩模块进行辅助测试。而是使用所以不再需要使用桩模块进行辅助测试。而是使用驱动模块。驱动模块。 A Free sample background from Slide 40 增量式测试增量式测试方式不需要所有单元就绪,使单元测试与集成测试的重叠并行是可行的,测试时,若发现问题,一般可定位于新加入的单元。 适合于规模较大的应用。增量式测试要比

32、非增量式测试具有一定的优越性。A Free sample background from Slide 41不同集成测试方法的比较不同集成测试方法的比较(续)(续)2 2、自顶向下与自底向上增量式测试的比较、自顶向下与自底向上增量式测试的比较n n自顶向下自顶向下增量式增量式测试:测试: 主主要要优优点点: :可可以以自自然然的的做做到到逐逐步步求求精精,一一开开始始就就能能让让测试者看到系统的框架。测试者看到系统的框架。 主主要要缺缺点点: :需需要要提提供供桩桩模模块块,并并且且在在输输入入/ /输输出出模模块块接接入系统以前,在桩模块中表示测试数据有一定困难。入系统以前,在桩模块中表示测试

33、数据有一定困难。n n自底向上增量式自底向上增量式测试:测试: 主主要要优优点点: :由由于于驱驱动动模模块块模模拟拟了了所所有有调调用用参参数数,生生成成测试数据也无困难。测试数据也无困难。 主主要要缺缺点点: :直直到到最最后后一一个个模模块块被被加加进进去去之之后后才才能能看看到到整个程序(系统)的框架。整个程序(系统)的框架。A Free sample background from Slide 42集成体通过测试的标准集成体通过测试的标准n在功能、性能等方面达到预期要求;n错误处理正确;n调用对覆盖率100%。左图中的调用对:(A,B) (A,C) (B,D)(B,E) (C,F)A AC CE ED DB BF F调用对示例调用对示例

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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