07 编码及测试.ppt

上传人:豆**** 文档编号:25137307 上传时间:2022-07-10 格式:PPT 页数:144 大小:1.12MB
返回 下载 相关 举报
07 编码及测试.ppt_第1页
第1页 / 共144页
07 编码及测试.ppt_第2页
第2页 / 共144页
点击查看更多>>
资源描述

《07 编码及测试.ppt》由会员分享,可在线阅读,更多相关《07 编码及测试.ppt(144页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、07 编码及测试编码及测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2 了解程序设计语言的选择了解程序设计语言的选择 理解编码的风格理解编码的风格 培养良好的编码习惯培养良好的编码习惯复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3为易测试易维护,所选用的高级语言应该为易测试易维护,所选用的高级语言应该 有理想的模块化机制有理想的模块化机制 以及可读性好的控制结构和数据结构以及可读性好的控制结构和数据结构为便于调试和提高软件可靠性,应该为便于调试和提高软件可靠性,应该 使编译程序能够尽可能多地发现程序中的错误使编译程序能够尽可

2、能多地发现程序中的错误为了降低成本,选用的高级语言应该为了降低成本,选用的高级语言应该 有良好的独立编译机制有良好的独立编译机制复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4 通常要考虑如下因素:通常要考虑如下因素:应用领域应用领域-首要的标准首要的标准算法和计算复杂性算法和计算复杂性软件运行环境软件运行环境用户需求,特别是性能需求用户需求,特别是性能需求数据结构的复杂性数据结构的复杂性软件开发人员的知识水平软件开发人员的知识水平可用的编译器与交叉编译器可用的编译器与交叉编译器复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程5 选

3、择高级语言还是低级语言选择高级语言还是低级语言优先选择高级语言优先选择高级语言必要时使用低级语言必要时使用低级语言对运行时间和存储空间有过高要求的项对运行时间和存储空间有过高要求的项目,如电子笔记本中的软件目,如电子笔记本中的软件在某些不能提供高级语言编译程序的计在某些不能提供高级语言编译程序的计算机上开发程序,如单片机上的软件算机上开发程序,如单片机上的软件大型系统中对系统执行时间起关键作用大型系统中对系统执行时间起关键作用的模块的模块复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程6 编码风格主要包括:编码风格主要包括:源程序中的内部文档源程序中的内部文档数据

4、说明数据说明语句构造语句构造输入输出输入输出复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程7 所谓程序内部的文档包括恰当的标识符、适当所谓程序内部的文档包括恰当的标识符、适当的注解和程序的视觉组织等等。的注解和程序的视觉组织等等。 1 1)对标识符:)对标识符: 选取含义鲜明的名字,以正确地提示程序对象代表的实体。选取含义鲜明的名字,以正确地提示程序对象代表的实体。 若使用缩写,缩写规则应该一致,并应给每个名字加注解。若使用缩写,缩写规则应该一致,并应给每个名字加注解。 2 2)对注解:)对注解:内容一定要正确内容一定要正确每个模块开始处序言性注释每个模块开始处

5、序言性注释程序中间代码相关解释程序中间代码相关解释用空格或空行区分注解和程序用空格或空行区分注解和程序 3 3)对程序清单的布局:)对程序清单的布局:利用适当的阶梯形式使程序的层次结构清晰明显利用适当的阶梯形式使程序的层次结构清晰明显复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程8 数据说明的次序应当规范化数据说明的次序应当规范化 说明语句中变量安排有序化说明语句中变量安排有序化 使用注解说明复杂数据结构使用注解说明复杂数据结构复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程9下述规则有助于使语句简单明了:下述规则有助于使语句简单明

6、了:不要为了节省空间而把多个语句写在同一不要为了节省空间而把多个语句写在同一行;行;尽量避免复杂的条件测试;尽量避免复杂的条件测试;尽量减少对尽量减少对“非非”条件的测试;条件的测试;避免大量使用循环嵌套和条件嵌套;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运利用括号使逻辑表达式或算术表达式的运算次序清晰直观。算次序清晰直观。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程10对所有输入数据都进行检验;对所有输入数据都进行检验;检查输入项重要组合的合法性;检查输入项重要组合的合法性;保持输入格式简单;保持输入格式简单;使用数据结束标记,不要

7、要求用户指定数据的使用数据结束标记,不要要求用户指定数据的数目;数目;明确提示交互式输入的请求,详细说明可用的明确提示交互式输入的请求,详细说明可用的选择或边界数值;选择或边界数值;当程序设计语言对格式有严格要求时,应保持当程序设计语言对格式有严格要求时,应保持输入格式一致;输入格式一致;设计良好的输出报表;设计良好的输出报表;给所有输出数据加标志。给所有输出数据加标志。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程11软件测试基础软件测试基础测试策略测试策略面向对象测试面向对象测试测试用例设计测试用例设计调试调试复旦大学计算机科学与工程系复旦大学计算机科学与工

8、程系 软件工程课程软件工程课程12 了解了解OOOO测试;测试; 理解软件测试的目标、原则,理解软件测试的目标、原则, 掌握软件测试的方法、策略、各测试阶掌握软件测试的方法、策略、各测试阶段的任务和原理、测试和调试的区别;段的任务和原理、测试和调试的区别; 掌握黑盒测试和白盒测试的技术和方法。掌握黑盒测试和白盒测试的技术和方法。 熟练掌握白盒测试中的逻辑覆盖测试和熟练掌握白盒测试中的逻辑覆盖测试和基本路径测试。基本路径测试。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程13 软件测试的目的软件测试的目的 软件测试的原则软件测试的原则 软件测试的对象软件测试的对象

9、 软件测试的方法软件测试的方法 测试信息流测试信息流 测试完成标准测试完成标准复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程14“软件测试是为了证明程序是正确的,软件测试是为了证明程序是正确的,即测试能发现程序中所有的错误即测试能发现程序中所有的错误”。“程序测试是证明程序正确地执行了预程序测试是证明程序正确地执行了预期的功能期的功能”。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程15 Glen MyersGlen Myers给出的软件测试目的:给出的软件测试目的:测试是一个测试是一个为了发现错误而执行程序为了发现错误而执行程序

10、的过程的过程一个好的测试用例是指一个好的测试用例是指很可能找到迄很可能找到迄今为至尚未发现的错误今为至尚未发现的错误的测试用例的测试用例一个成功的测试是指一个成功的测试是指揭示了迄今为至揭示了迄今为至尚未发现的错误尚未发现的错误的测试的测试 复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程16DavisDavis提出了一组指导软件测试的基本原则:提出了一组指导软件测试的基本原则:1.1.所有的测试都应所有的测试都应可追溯可追溯到客户需求到客户需求2.2.应该应该早早在测试开始之前就制定测试计划在测试开始之前就制定测试计划3.3.注意测试中的注意测试中的群集群集现象

11、:测试中发现的现象:测试中发现的80%80%的的错误可能来自于错误可能来自于20%20%的程序代码的程序代码4.4.测试应测试应由小由小规模规模到大到大规模规模5.5.不可能穷举测试不可能穷举测试6.6.应由独立的应由独立的第三方第三方来承担测试来承担测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程17复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程18 测试用例的设计方法:测试用例的设计方法: 白盒白盒测试(白箱测试,结构测试)测试(白箱测试,结构测试) 黑盒黑盒测试(黑箱测试,行为测试,功能测试(黑箱测试,行为测试,功能测试)

12、测试)复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程19白盒测试白盒测试 把测试对象看作一个透明盒,测试人员根据把测试对象看作一个透明盒,测试人员根据程序内部的逻辑结构程序内部的逻辑结构及有关信息设计测试用及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。的要求正确地工作。 主要用于主要用于模块测试模块测试,包括:,包括:程序模块中的所有独立路径至少执行一次程序模块中的所有独立路径至少执行一次对所有逻辑判定的取值(对所有逻辑判定的取值(“真真”与与“假假”)都至少)都至少测试一次测试一次在上下边界及

13、可操作范围内运行所有循环在上下边界及可操作范围内运行所有循环测试内部数据结构的有效性等测试内部数据结构的有效性等复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程20黑盒测试黑盒测试 把测试对象看做一个黑盒子,依据程序的把测试对象看做一个黑盒子,依据程序的需需求规格说明书求规格说明书,检查程序的功能是否符合它,检查程序的功能是否符合它的功能需求。的功能需求。 黑盒测试黑盒测试可用于各种测试可用于各种测试 试图发现以下类型的错误:试图发现以下类型的错误:不正确或遗漏的功能不正确或遗漏的功能接口错误,如输入接口错误,如输入/ /输出参数的个数、类型等输出参数的个数、类型

14、等数据结构错误或外部信息数据结构错误或外部信息( (如外部数据库如外部数据库) )访问错误访问错误性能错误性能错误初始化和终止错误初始化和终止错误复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程21复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程22 什么时候停止程序测试?什么时候停止程序测试? 是一个最困难的问题,但一定要停止。是一个最困难的问题,但一定要停止。 几种实用的测试完成标准:几种实用的测试完成标准:MusaMusa和和AckermanAckerman提出了一个提出了一个基于统计标准基于统计标准的答的答复:复:“不,我们不

15、能绝对地认定软件永远也不不,我们不能绝对地认定软件永远也不会再出错,但是相对于一个理论上合理的和在会再出错,但是相对于一个理论上合理的和在试验中有效的统计模型来说,如果一个在按照试验中有效的统计模型来说,如果一个在按照概率的方法定义的环境中,概率的方法定义的环境中,10001000个个CPUCPU小时内不小时内不出错运行的概率大于出错运行的概率大于0 0995995的话,那么我们就的话,那么我们就有有95%95%的信心说,我们已经进行了足够的测试的信心说,我们已经进行了足够的测试”。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程23使用指定的测试用例设计方法产生

16、测试用例,使用指定的测试用例设计方法产生测试用例,运行运行这些这些测试用例均未发现错误测试用例均未发现错误(包括发现错(包括发现错误后已被纠正的情况),则测试可终止。误后已被纠正的情况),则测试可终止。观察测试阶段中观察测试阶段中单位时间内发现错误数目的曲单位时间内发现错误数目的曲线:线:单发单发位现位现时的时的间错间错内误内误数数周(或天)周(或天)可可以以停停止止单发单发位现位现时的时的间错间错内误内误数数周(或天)周(或天)不不应应停停止止复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程24 测试过程按测试过程按4 4个步骤进行,即单元测试、集成个步骤进行,

17、即单元测试、集成测试、确认测试和系统测试。测试、确认测试和系统测试。单元测试:针对单元测试:针对模块或构件模块或构件,主要揭露,主要揭露编码错误编码错误。集成测试:针对集成测试:针对集成的软件系统集成的软件系统,主要揭露,主要揭露设计设计错误错误。确认测试:根据软件需求规约对确认测试:根据软件需求规约对集成的软件集成的软件进行进行确认,主要揭露确认,主要揭露不符合需求规约的错误不符合需求规约的错误。对于基于计算机系统中的软件,还需将它集成到对于基于计算机系统中的软件,还需将它集成到基于计算机系统中,并进行系统测试,以揭露基于计算机系统中,并进行系统测试,以揭露不不符合系统工程中对软件要求的错误

18、符合系统工程中对软件要求的错误。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程25 V V模型:描述软件开发各阶段与测试策模型:描述软件开发各阶段与测试策略之间的对应关系。略之间的对应关系。系统工程系统工程需求分析需求分析设计设计编码编码系统测试系统测试确认测试确认测试集成测试集成测试单元测试单元测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程26 又称模块测试又称模块测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程27复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课

19、程28复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程29复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程30复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程31复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程32复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程33复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程342. 2. 单元测试过程单元测试过程 通常与编码工作结合起来进行。通常与编码工作结合起来进行。 模块本

20、身不是一个独立的程序,在测试模块模块本身不是一个独立的程序,在测试模块时,必须为每个被测模块开发一个时,必须为每个被测模块开发一个驱动驱动(driver)(driver)程序程序和若干个和若干个桩桩(stub)(stub)模块模块。驱动程序驱动程序被测模块被测模块桩模块桩模块桩模块桩模块复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程35 驱动模块驱动模块接收测试数据,把测试数接收测试数据,把测试数据传送给被测模块,接收被测模块据传送给被测模块,接收被测模块的返回数据,并打印相关结果。的返回数据,并打印相关结果。 桩模块桩模块代替被测试的模块所调用的代替被测试的模

21、块所调用的模块,它接受被测模块的调用,验模块,它接受被测模块的调用,验证入口信息,把控制连同模拟结果证入口信息,把控制连同模拟结果返回给被测模块。返回给被测模块。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程36复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程37复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程38. TEST STUB(. TEST STUB(* *测试正文编辑模块用的存根程序测试正文编辑模块用的存根程序* *) )初始化;初始化;输出信息输出信息“进入了正文编辑程序进入了正文编辑程序

22、”;输出输出“输入的控制信息是输入的控制信息是”CFUNCTCFUNCT;输出缓冲区中的字符串;输出缓冲区中的字符串;IF CFUNCT=CHANGEIF CFUNCT=CHANGETHENTHEN把缓冲区中第二个字改为把缓冲区中第二个字改为* * * *ELSEELSE在缓冲区的尾部加在缓冲区的尾部加?ENDENDIFIF;输出缓冲区中的新字符串;输出缓冲区中的新字符串; END TEST STUBEND TEST STUB复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程39. TEST DRIVER(. TEST DRIVER(* *测试正文编辑模块用的驱动程

23、序测试正文编辑模块用的驱动程序* *) )说明长度为说明长度为25002500个字符的一个缓冲区;个字符的一个缓冲区;把把CFUNCTCFUNCT置为希望测试的状态;置为希望测试的状态;输入字符串;输入字符串;调用正文编辑模块;调用正文编辑模块;停止或再次初启;停止或再次初启; END TEST DRIVEREND TEST DRIVER复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程40 也称组装测试、联合测试也称组装测试、联合测试 经单元测试后,每个模块都能独立工作,经单元测试后,每个模块都能独立工作,但把它们放在一起往往不能正常工作。但把它们放在一起往往不能

24、正常工作。 主要问题在于:主要问题在于:接口处数据丢失;接口处数据丢失;模块对其他模块的副作用;模块对其他模块的副作用;子功能组合起来达不到期望的主功能;子功能组合起来达不到期望的主功能;模块组合过程中误差累积以至无法接受;模块组合过程中误差累积以至无法接受;全局数据结构存在的问题。全局数据结构存在的问题。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程411.1.集成的方式集成的方式 非增量式集成:非增量式集成: “ “一步到位一步到位” ” 。先将所有经过单元测试的模块组合在。先将所有经过单元测试的模块组合在一起,然后整个程序作为一个整体进行测试。一起,然后整

25、个程序作为一个整体进行测试。错误难定位。改错易引入新错。错误难定位。改错易引入新错。 增量式集成:增量式集成:根据程序结构图,按某种次序挑选一个(或一组)尚未根据程序结构图,按某种次序挑选一个(或一组)尚未测试过的模块,把它集成到已测试好的模块中一起进行测试过的模块,把它集成到已测试好的模块中一起进行测试测试; ;每次增加一个(或一组)模块每次增加一个(或一组)模块; ;直至所有模块全部直至所有模块全部集成到程序中。集成到程序中。错误往往与新加入的模块有关。错误往往与新加入的模块有关。又可分为自顶向下集成和自底向上集成。又可分为自顶向下集成和自底向上集成。 在进行集成测试时普遍采用增量式集成方

26、法。在进行集成测试时普遍采用增量式集成方法。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程42 自顶向下集成:自顶向下集成:从主控模块开始从主控模块开始按照控制层次,将直接或间接按照控制层次,将直接或间接从属的模块按从属的模块按深度优先深度优先或或广度广度优先优先的方式的方式逐个集成逐个集成到整个结到整个结构中,并对其进行测试。构中,并对其进行测试。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程43 深度优先测试次序:深度优先测试次序: M M1 1、M M2 2、M M5 5、M M8 8、M M6 6、M M3 3、M M7

27、7、M M4 4 广度优先测试次序:广度优先测试次序: M M1 1、M M2 2、M M3 3、M M4 4、M M5 5、M M6 6、M M7 7、M M8 8M2M3M4M7M1M6M5M8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程44 自顶向下集成的步骤自顶向下集成的步骤:(1 1)主控模块(主程序)被直接用作驱动程序,所)主控模块(主程序)被直接用作驱动程序,所有直接从属于主控模块的模块用桩模块替换,有直接从属于主控模块的模块用桩模块替换,然后对主控模块进行测试;然后对主控模块进行测试;(2 2)根据集成的实现方式(深度优先或广度优先),)根据集

28、成的实现方式(深度优先或广度优先),下层的桩模块一次一个地替换成真正的模块,下层的桩模块一次一个地替换成真正的模块,从属于该模块的模块用桩模块替换,然后对从属于该模块的模块用桩模块替换,然后对其进行测试;其进行测试;(3 3)用)用回归测试回归测试来保证没有引入新的错误;来保证没有引入新的错误;(4 4)重复第()重复第(2 2)和第()和第(3 3)步,直至所有模块都被)步,直至所有模块都被集成。集成。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程45自底向上集成:自底向上集成:从最底层模块开始从最底层模块开始然后按照程序结构图的控然后按照程序结构图的控制层次

29、将上层模块集成到制层次将上层模块集成到整个结构中,并对其进行整个结构中,并对其进行测试。测试。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程46 自底向上集成的步骤自底向上集成的步骤:(1 1)将低层模块组合成能实现软件特定功能)将低层模块组合成能实现软件特定功能的簇;的簇;(2 2)为每个簇编写驱动程序,并对簇进行测)为每个簇编写驱动程序,并对簇进行测试;试;(3 3)移走驱动程序,用簇的直接上层模块替)移走驱动程序,用簇的直接上层模块替换驱动程序,然后沿着程序结构的层次换驱动程序,然后沿着程序结构的层次向上组合新的簇;向上组合新的簇;(4 4)凡对新的簇测试

30、后,都要进行)凡对新的簇测试后,都要进行回归测试回归测试,以保证没有引入新的错误;以保证没有引入新的错误;(5 5)重复第()重复第(2 2)步至第()步至第(4 4)步,直至所有)步,直至所有的模块都被集成。的模块都被集成。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程47McMaMb簇簇1簇簇2簇簇3D1D3D2驱动模块驱动模块簇簇4簇簇5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程482.2.不同集成测试方式的比较不同集成测试方式的比较自顶向下集成的优点自顶向下集成的优点: 不需要驱动模块;能尽早对程序的主要不需要驱动模块

31、;能尽早对程序的主要控制和决策机制进行检验,能较早发现整控制和决策机制进行检验,能较早发现整体性的错误;深度优先的自顶向下集成能体性的错误;深度优先的自顶向下集成能较早对某些完整的程序功能进行验证。较早对某些完整的程序功能进行验证。 自顶向下集成的缺点:自顶向下集成的缺点: 测试时低层模块用桩模块替代,不能反测试时低层模块用桩模块替代,不能反映真实情况;重要数据不能及时回送到上映真实情况;重要数据不能及时回送到上层模块。层模块。自底向上测试方法的优缺点与上述自顶向下测自底向上测试方法的优缺点与上述自顶向下测试方法的优缺点刚好相反。试方法的优缺点刚好相反。复旦大学计算机科学与工程系复旦大学计算机

32、科学与工程系 软件工程课程软件工程课程493.3.集成策略的选择集成策略的选择 折衷的策略:折衷的策略:高层使用自顶向下策略,低层则使用自底高层使用自顶向下策略,低层则使用自底向上策略向上策略也称为三明治测试(也称为三明治测试(sandwich testingsandwich testing)。)。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程504.4.关键模块关键模块 集成测试时,应当确定集成测试时,应当确定关键模块关键模块(critical critical modulemodule) ,对这些关键模块,对这些关键模块及早进行测试及早进行测试。 关键模块的

33、特征:关键模块的特征:1 1)与多个软件需求有关;)与多个软件需求有关;2 2)含有高层控制;)含有高层控制;3 3)本身是复杂的或是容易出错的;)本身是复杂的或是容易出错的;4 4)含有确定的性能需求。)含有确定的性能需求。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程515.5.回归测试(回归测试(Regression TestingRegression Testing) 对已经进行过的测试的子集的重新执行对已经进行过的测试的子集的重新执行,以确保对,以确保对程序的改变和修改,没有传播非故意的副作用。程序的改变和修改,没有传播非故意的副作用。 必要性:必要性

34、:在集成测试过程中,每当在集成测试过程中,每当增加一个(或一组)新模块增加一个(或一组)新模块时,时,原先已集成的软件就发生了改变。新的数据流路径被建立,原先已集成的软件就发生了改变。新的数据流路径被建立,新的新的I/OI/O操作可能出现,还可能激活新的控制逻辑,这些操作可能出现,还可能激活新的控制逻辑,这些改变可能使原本正常的功能产生错误。改变可能使原本正常的功能产生错误。当测试时发现错误后,需修改程序;或者在软件维护时也当测试时发现错误后,需修改程序;或者在软件维护时也需修改程序。这些需修改程序。这些对程序的修改对程序的修改也可能使原本正常的功能也可能使原本正常的功能产生错误。产生错误。复

35、旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程52 回归测试集回归测试集已经过测试的子集已经过测试的子集包括三种不同类型的测试用例:包括三种不同类型的测试用例: 能测试软件能测试软件所有功能的代表性所有功能的代表性测试用例测试用例 专门针对可能受修改影响的软件功能的专门针对可能受修改影响的软件功能的附加测试附加测试 注重于修改过的软件模块的测试注重于修改过的软件模块的测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程53任务是验证软件的功能任务是验证软件的功能和性能及其它特性是否与用户的要求一致。和性能及其它特性是否与用户的要求一致

36、。 确认测试标准:确认测试标准: 软件需求规格说明书软件需求规格说明书 确认测试的结果:确认测试的结果:功能和性能满足需求规约要求,用户可以功能和性能满足需求规约要求,用户可以接受。接受。功能和性能与需求规约有偏差,此时需列功能和性能与需求规约有偏差,此时需列出问题清单。出问题清单。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程54复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程55 软件配置评审软件配置评审也称软件审计(也称软件审计(auditaudit)其目的是保证:其目的是保证:软件配置的所有成分都齐全,软件配置的所有成分都齐

37、全,各方面的质量都符合要求,各方面的质量都符合要求,具有维护阶段必需的细节,具有维护阶段必需的细节,而且已经编排好分类目录而且已经编排好分类目录。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程56 测试和测试和测试测试若软件是为单客户开发的,则最后由客户若软件是为单客户开发的,则最后由客户进行验收测试(进行验收测试(acceptance testacceptance test),以),以确认该软件。确认该软件。若软件是为多客户开发的,让每个客户做若软件是为多客户开发的,让每个客户做验收测试是不现实的。大多数软件厂商都验收测试是不现实的。大多数软件厂商都使用一种称

38、为使用一种称为测试测试和和测试测试的过程,来的过程,来发现那些似乎只有发现那些似乎只有最终用户最终用户才能发现的错才能发现的错误。误。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程57 测试:测试:是由一个是由一个用户在开发者环境下用户在开发者环境下进行的测试。进行的测试。用户在开发者的用户在开发者的“指导下指导下”进行测试。进行测试。经经测试后的软件称为测试后的软件称为版软件。版软件。 测试:测试:是由软件的是由软件的多个用户在实际使用环境下进行的测多个用户在实际使用环境下进行的测试试。与与测试不同,开发者通常不在测试现场。测试不同,开发者通常不在测试现场。用

39、户定期把问题报告给开发者。用户定期把问题报告给开发者。开发者接到开发者接到测试问题报告后,对软件进行最后测试问题报告后,对软件进行最后的修改,然后着手准备向所有的用户发布最终的的修改,然后着手准备向所有的用户发布最终的软件产品。软件产品。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程58 对整个基于计算机的系统进行的一对整个基于计算机的系统进行的一系列测试。系列测试。 常用的系统测试包括:常用的系统测试包括:恢复测试恢复测试(recovery testingrecovery testing)安全测试安全测试(security testingsecurity te

40、sting)压力测试压力测试(stress testingstress testing)性能测试性能测试(performance testingperformance testing)复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程59恢复测试(恢复测试(recovery testingrecovery testing) 通过各种手段,通过各种手段,强制软件发生故障强制软件发生故障,然后,然后来验证系统能否在来验证系统能否在指定的时间间隔内恢复指定的时间间隔内恢复正常,包括修正错误并重新启动系统。正常,包括修正错误并重新启动系统。 如果恢复是由系统自身来完成的,那

41、么,如果恢复是由系统自身来完成的,那么,需验证重新初始化、检查点机制、数据恢需验证重新初始化、检查点机制、数据恢复和重启动等的正确性。复和重启动等的正确性。 如果恢复需要人工干预,那么要估算平均如果恢复需要人工干预,那么要估算平均修复时间修复时间MTTRMTTR(mean time to repairmean time to repair)是)是否在用户可以接受的范围内。否在用户可以接受的范围内。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程60安全测试(安全测试(security testingsecurity testing) 用来用来验证集成在系统中的保护

42、机制验证集成在系统中的保护机制能否实能否实际保护系统不受非法侵入。际保护系统不受非法侵入。 在安全测试过程中,测试者扮演一个试图在安全测试过程中,测试者扮演一个试图攻击系统的角色,采用各种方式攻击系统。攻击系统的角色,采用各种方式攻击系统。 一般来说,只要有足够的时间和资源,好一般来说,只要有足够的时间和资源,好的完全测试一定能最终侵入系统。的完全测试一定能最终侵入系统。 系统设计者的任务是把系统设计成:攻破系统设计者的任务是把系统设计成:攻破系统所付出的代价大于攻破系统后得到信系统所付出的代价大于攻破系统后得到信息的价值。息的价值。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工

43、程课程软件工程课程61压力测试(压力测试(stress testingstress testing) 也称强度测试也称强度测试 是在一种需要非正常数量、频率或容量的是在一种需要非正常数量、频率或容量的方式下执行系统方式下执行系统 目的是检查系统对非正常情况的承受程度。目的是检查系统对非正常情况的承受程度。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程62性能测试(性能测试(performance testingperformance testing) 用来测试软件在集成的系统中的运行性能。用来测试软件在集成的系统中的运行性能。 对实时系统和嵌入式系统尤为重要。对

44、实时系统和嵌入式系统尤为重要。 可发生在测试过程的所有步骤中可发生在测试过程的所有步骤中单元测试时,主要测试一个独立模块的性能,单元测试时,主要测试一个独立模块的性能,如算法的执行速度。如算法的执行速度。软件集成后,进行软件整体的性能测试。软件集成后,进行软件整体的性能测试。计算机系统集成后,进行整个计算机系统的性计算机系统集成后,进行整个计算机系统的性能测试。能测试。 常常需要与压力测试结合起来进行,而且常常需常常需要与压力测试结合起来进行,而且常常需要一些硬件和软件测试设备,以监测系统的运行要一些硬件和软件测试设备,以监测系统的运行情况。情况。复旦大学计算机科学与工程系复旦大学计算机科学与

45、工程系 软件工程课程软件工程课程63 面向对象语境对测试的影响面向对象语境对测试的影响 面向对象的测试策略面向对象的测试策略 面向对象测试用例设计面向对象测试用例设计复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程64 测试目标不变测试目标不变仍然是用最少时间和工作量来发现尽仍然是用最少时间和工作量来发现尽可能多的错误可能多的错误 测试策略和测试战术有所改变测试策略和测试战术有所改变原因:面向对象软件的性质原因:面向对象软件的性质 继承、封装、多态性、基于消息的通信等概念继承、封装、多态性、基于消息的通信等概念复旦大学计算机科学与工程系复旦大学计算机科学与工程系

46、软件工程课程软件工程课程65 单元单元类类是是面向对象软件中的单元面向对象软件中的单元适用于适用于OOOO测试的两种单元定义测试的两种单元定义 可以编译和执行的最小软件部件可以编译和执行的最小软件部件 决不会指派给多个设计人员开发的软件部件决不会指派给多个设计人员开发的软件部件 封装封装属性和操作被封装在类中属性和操作被封装在类中很难获得对象某些具体信息很难获得对象某些具体信息给测试带来困难。给测试带来困难。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程66 继承继承子类可覆盖继承的父类操作子类可覆盖继承的父类操作测试了父类操作后,需对子类中继承的操作重测试了父

47、类操作后,需对子类中继承的操作重新进行测试。新进行测试。 多态性多态性对同一操作,不同对象有不同的实现对同一操作,不同对象有不同的实现在测试时,应覆盖反映多态的所有实现方法。在测试时,应覆盖反映多态的所有实现方法。 基于消息的通信基于消息的通信通过消息通信来实现类之间的协作通过消息通信来实现类之间的协作没有明显的层次控制结构没有明显的层次控制结构传统的自顶向下和自底向上集成策略不适用于传统的自顶向下和自底向上集成策略不适用于面向对象软件测试。面向对象软件测试。复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程67 依次进行类内测试、类间测试、确认测试和系统测试。依次

48、进行类内测试、类间测试、确认测试和系统测试。类测试(类内测试)类测试(类内测试): :即单元测试。包括类方法测试和类即单元测试。包括类方法测试和类行为测试。行为测试。类间测试(类间测试(interclass testinginterclass testing):即集成测试。两种策:即集成测试。两种策略:略: 基于线程的测试基于线程的测试(thread-based testingthread-based testing):集成一组互相协作):集成一组互相协作的类来的类来响应系统的一个输入或事件响应系统的一个输入或事件,每个线程逐一被集成和测试,每个线程逐一被集成和测试,并通过回归测试保证其没有产

49、生副作用。并通过回归测试保证其没有产生副作用。 基于使用的测试基于使用的测试(use-based testinguse-based testing):按使用层次来集成系统。):按使用层次来集成系统。把那些几乎不使用其他类提供的服务的类称为把那些几乎不使用其他类提供的服务的类称为独立类独立类,把使用类,把使用类的类称为的类称为依赖类依赖类。集成从测试独立类开始,然后集成直接依赖于。集成从测试独立类开始,然后集成直接依赖于独立类的那些类,并对其测试。按照依赖的层次关系,逐层集成独立类的那些类,并对其测试。按照依赖的层次关系,逐层集成并测试,直至所有的类被集成。并测试,直至所有的类被集成。确认测试确

50、认测试:利用:利用用况模型用况模型来发现与需求不一致的错误。来发现与需求不一致的错误。系统测试系统测试复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程68 传统的测试用例设计方法及其思想仍可用。传统的测试用例设计方法及其思想仍可用。 类内测试类内测试测试类操作测试类操作: :通常采用白盒测试方法通常采用白盒测试方法测试类行为测试类行为: :利用状态机图进行,考虑覆盖所有利用状态机图进行,考虑覆盖所有状态、所有状态迁移等覆盖标准,也可考虑从状态、所有状态迁移等覆盖标准,也可考虑从初始状态到终止状态的所有迁移路径的覆盖初始状态到终止状态的所有迁移路径的覆盖复旦大学计算

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

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com