软件测试与维护_第1页
软件测试与维护_第2页
软件测试与维护_第3页
软件测试与维护_第4页
软件测试与维护_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件测试与维护软件测试与维护王传栋王传栋南京邮电大学计算机学院南京邮电大学计算机学院2内容与要求内容与要求n知识知识点点q(1)知识点一:软件测试)知识点一:软件测试q(2)知识点二:软件调试)知识点二:软件调试q(3)知识点三:软件维护内容与分类)知识点三:软件维护内容与分类q(4)知识点四:维护的策略与过程)知识点四:维护的策略与过程q(5)知识点五:维护的副作用)知识点五:维护的副作用n教学基本要求教学基本要求q了解软件测试的概念、目的和原则,掌握常用的黑盒、白盒测了解软件测试的概念、目的和原则,掌握常用的黑盒、白盒测试方法,了解软件测试的基本步骤和各种测试的目的、内容和试方法,了解软件

2、测试的基本步骤和各种测试的目的、内容和方法,了解程序调试的方法和原则;了解软件维护的概念,内方法,了解程序调试的方法和原则;了解软件维护的概念,内容和策略和分类方法;解软件维护副作用的定义以及软件维护容和策略和分类方法;解软件维护副作用的定义以及软件维护副作用的分类方法。副作用的分类方法。基本概念基本概念n软件测试软件测试q软件测试的根本目标:尽可能多地发现并排除软件中潜藏的错软件测试的根本目标:尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用,测试目标决误,最终把一个高质量的软件系统交给用户使用,测试目标决定了测试方案和测试用例的设计定了测试方案和测试用例的设计q

3、观念:观念:测试并不是证明程序是正确的,而是发现错误。测试并不是证明程序是正确的,而是发现错误。n程序调试程序调试q对测试出现的错误进行诊断,确定错误的位置、原因,并改正对测试出现的错误进行诊断,确定错误的位置、原因,并改正错误。错误。n软件维护软件维护q是软件生命周期的最后一个阶段,指软件交付使用之后,为了是软件生命周期的最后一个阶段,指软件交付使用之后,为了改正错误或满足用户新的需求而修改软件的过程。改正错误或满足用户新的需求而修改软件的过程。3测试目的与原则测试目的与原则n目的目的q测试是程序的执行过程,目的是发现错误;测试是程序的执行过程,目的是发现错误;q一个好的测试用例在于能够发现

4、迄今为止尚未发现的错误;一个好的测试用例在于能够发现迄今为止尚未发现的错误;q一次成功的测试在于发现了迄今为止尚未发现错误的测试。一次成功的测试在于发现了迄今为止尚未发现错误的测试。n原则原则q应当把应当把“尽早地和不断地进行测试尽早地和不断地进行测试”作为座右铭作为座右铭q测试应避免程序员自己进行测试应避免程序员自己进行q测试用例包括测试数据和与其对应的预期输出结果测试用例包括测试数据和与其对应的预期输出结果q测试用例应包括合理的和不合理的输入数据测试用例应包括合理的和不合理的输入数据q注意错误群集的地方注意错误群集的地方q严格执行测试计划,排除测试的随意性严格执行测试计划,排除测试的随意性

5、q全面检查每一次测试结果全面检查每一次测试结果q妥善保存测试计划、测试用例、出错统计和最终的分析报告妥善保存测试计划、测试用例、出错统计和最终的分析报告4测试策略测试策略n软件过程是一个螺旋过程,沿着流线每螺旋前进一圈都会软件过程是一个螺旋过程,沿着流线每螺旋前进一圈都会降低软件的抽象层次降低软件的抽象层次q系统工程定义软件的角色,引出软件需求分析系统工程定义软件的角色,引出软件需求分析q需求分析建立软件的信息域、功能、行为、性能、约束和确认标准需求分析建立软件的信息域、功能、行为、性能、约束和确认标准q沿着螺旋向内,经过设计阶段,最后到达编码阶段沿着螺旋向内,经过设计阶段,最后到达编码阶段n

6、软件测试也可以放在螺旋模型中来考虑,沿着流线每向外软件测试也可以放在螺旋模型中来考虑,沿着流线每向外螺旋前进一圈都拓宽了测试范围螺旋前进一圈都拓宽了测试范围5u单元测试起始于螺旋中心,单元测试起始于螺旋中心,侧重于源代码单元(构件)侧重于源代码单元(构件)u集成测试,测试重点在于软集成测试,测试重点在于软件体系结构设计和构造件体系结构设计和构造u确认测试,依据已经建立的确认测试,依据已经建立的软件,对需求进行确认软件,对需求进行确认u系统测试,将软件与其他系系统测试,将软件与其他系统成分作为一个整体来测试统成分作为一个整体来测试传统测试与传统测试与OO测试测试n我们首先以我们首先以小的测试小的

7、测试开始,随后转向开始,随后转向大的测试大的测试6高端测试高端测试测试步骤测试步骤n单元测试单元测试q测试侧重于单个构件,确保构件作为一个单元起作用测试侧重于单个构件,确保构件作为一个单元起作用q充分利用测试技术,检查构件中每个控制结构的特定路径充分利用测试技术,检查构件中每个控制结构的特定路径以确保完全覆盖,并最大可能地发现错误以确保完全覆盖,并最大可能地发现错误n集成测试集成测试q组装或集成各个经过单元测试的构件以形成完整的软件包组装或集成各个经过单元测试的构件以形成完整的软件包q测试处理并并验证与程序构造相关的问题测试处理并并验证与程序构造相关的问题q普遍使用关注输入和输出的测试用例设计

8、技术普遍使用关注输入和输出的测试用例设计技术n确认测试确认测试q评估确认准则,为软件满足所有的功能、行为和性能需求评估确认准则,为软件满足所有的功能、行为和性能需求提供最后的保证提供最后的保证n系统测试系统测试q超出软件工程的边界,隶属计算机系统工程的范围超出软件工程的边界,隶属计算机系统工程的范围q验证系统成分能否合适地结合在一起,且能满足整个系统验证系统成分能否合适地结合在一起,且能满足整个系统的功能的功能/性能需求性能需求7单元测试单元测试n测试的对象:模块测试的对象:模块q目的:发现模块内部存在的错误目的:发现模块内部存在的错误q模块不是独立的程序,需要模块不是独立的程序,需要辅助测试

9、模块辅助测试模块q发现编码和详细设计的错误,会涉及到发现编码和详细设计的错误,会涉及到详细设计报告详细设计报告8集成测试集成测试n目的目的q是构造软件体系结构的系统化技术,测试是构造软件体系结构的系统化技术,测试与接口相关的错误与接口相关的错误q发现设计错误,涉及到发现设计错误,涉及到概要设计报告概要设计报告n方式方式q自顶向下增量式测试自顶向下增量式测试q自底向上增量式测试自底向上增量式测试q三明治测试:混合增量式三明治测试:混合增量式n其他技术其他技术q回归测试:重新执行已测试过的测试用例回归测试:重新执行已测试过的测试用例q冒烟测试:软件重构中进行的测试冒烟测试:软件重构中进行的测试9确

10、认测试确认测试软件合格性测试软件合格性测试n目的目的q检查系统的功能和性能、检查文档检查系统的功能和性能、检查文档n功能或性能特征符合需求规格说明,被接受功能或性能特征符合需求规格说明,被接受n发现与规格说明的偏差,创建缺陷列表,并修复发现与规格说明的偏差,创建缺陷列表,并修复q发现软件分析阶段的错误,会涉及到发现软件分析阶段的错误,会涉及到需求分析报告需求分析报告n测试与测试与测试:关注点是客户使用测试:关注点是客户使用q测试:由有代表性的最终用户在开发者的现场进行的,开发测试:由有代表性的最终用户在开发者的现场进行的,开发者在后面观看,并记录错误和使用问题。者在后面观看,并记录错误和使用问

11、题。q测试:在一个或者多个最终用户场所进行,开发者通常不在测试:在一个或者多个最终用户场所进行,开发者通常不在场场10系统测试系统测试n关注点是系统集成关注点是系统集成q软件与硬件系统、支持软件、数据信息等配套协同工作软件与硬件系统、支持软件、数据信息等配套协同工作q测试超出软件过程范围,不仅仅由软件工程师执行测试超出软件过程范围,不仅仅由软件工程师执行n分类分类q恢复测试:通过各种方式强制地使软件发生故障,并验证其能适恢复测试:通过各种方式强制地使软件发生故障,并验证其能适当恢复当恢复q安全测试:验证系统内的保护机制,是否能够实际保护系统不受安全测试:验证系统内的保护机制,是否能够实际保护系

12、统不受非法入侵非法入侵q压力测试:压力测试: 目的是破坏程序,以非正常的数量、频率或容量的方目的是破坏程序,以非正常的数量、频率或容量的方式执行系统式执行系统q性能测试,与压力测试结合,测试软件在集成环境中的运行性能性能测试,与压力测试结合,测试软件在集成环境中的运行性能q部署测试:配置测试,在多平台及部署测试:配置测试,在多平台及OS环境中测试软件的安装与运环境中测试软件的安装与运行行11测试技术测试技术nBug潜伏在角落,在边界处聚集潜伏在角落,在边界处聚集q目标:发现错误目标:发现错误q标准:一个完整的方式标准:一个完整的方式q约束:最小的工作量和时间约束:最小的工作量和时间n穷举测试:

13、穷举测试:对大型系统来说,是不可能的对大型系统来说,是不可能的n选择测试选择测试q选择选择重要路径重要路径,检测重要数据结构的有效性,检测重要数据结构的有效性12Selected path白盒测试白盒测试n也称为玻璃盒测试也称为玻璃盒测试q保证一个模块中的所有独立路径至少被执行保证一个模块中的所有独立路径至少被执行1次次q所有的逻辑判定均需测试取真所有的逻辑判定均需测试取真(true)和取假和取假(false)两个方面两个方面q在上下边界及其可操作的范围内执行所有的循环在上下边界及其可操作的范围内执行所有的循环q检验内部数据结构以确保其有效性检验内部数据结构以确保其有效性n为什么要覆盖为什么要

14、覆盖?q逻辑错误和错误假设,与路径的可能执行是成反比的逻辑错误和错误假设,与路径的可能执行是成反比的q我们总是认为那条路径不可能被执行;我们总是认为那条路径不可能被执行;q事实上,现实总是与直觉相反事实上,现实总是与直觉相反q印刷错误是随机的;很可能包含一些未经测试的路径印刷错误是随机的;很可能包含一些未经测试的路径13白盒测试白盒测试n逻辑覆盖法:一种白盒测试技术,实现语句覆盖逻辑覆盖法:一种白盒测试技术,实现语句覆盖q计算过程设计的逻辑复杂性测量,指导定义执行路径的集合计算过程设计的逻辑复杂性测量,指导定义执行路径的集合q执行路径集合导出的测试用例,保证每一条语句至少执行一次执行路径集合导

15、出的测试用例,保证每一条语句至少执行一次n语句覆盖,试图覆盖所有语句语句覆盖,试图覆盖所有语句n判定覆盖,试图覆盖所有判定点,判定点值的判定覆盖,试图覆盖所有判定点,判定点值的“真真”或或“假假”n条件覆盖,试图覆盖所有判定条件条件覆盖,试图覆盖所有判定条件n判定判定/条件覆盖,试图覆盖所有判定点和判定条件条件覆盖,试图覆盖所有判定点和判定条件n条件组合覆盖,试图覆盖所有判定条件的各种组合条件组合覆盖,试图覆盖所有判定条件的各种组合14白盒测试白盒测试n导出测试用例导出测试用例q设计或源码设计或源码 流图流图q计算流图环复杂性计算流图环复杂性nV(G) = 简单决策数简单决策数+1 or 封闭

16、区域数封闭区域数+ 1 or E(边数边数)-N(点数点数)+2n独立路径数独立路径数V(G) =4,提供了保证所有语句至少执行一次所需的测试数量,提供了保证所有语句至少执行一次所需的测试数量的上限的上限q确定线性独立路径的基本集合确定线性独立路径的基本集合n路径路径1: 1,2,3,6,7,8n路径路径2: 1,2,3,5,7,8n路径路径3: 1,2,4,7,8n路径路径4: 1,2,4,7,2,4,.7,8q准备测试用例,强制执行每条路径准备测试用例,强制执行每条路径15白盒测试白盒测试n导出测试用例导出测试用例V(G) =6, 路径:路径:n1,2,10,11,13n1,2,10,12

17、,13n1,2,310,11,13n1,2,3,4,5,8,9,2, n1,2,3,4,5,6,8,9,2, n1,2,3,4,5,6,7,8,9,2,16白盒测试白盒测试n语句覆盖语句覆盖基本路径测试基本路径测试q使程序中每个语句至少都能够被执行一次使程序中每个语句至少都能够被执行一次q语句:赋值语句、条件语句、分支语句、循环语句语句:赋值语句、条件语句、分支语句、循环语句17 Function js(float A, float B, float X) If (A1 & B=0) X=X/A ; If (A=2 | X1) X=X+1 ; t tr ru ue e o or r f fa

18、al ls se e t tr ru ue e o or r f fa al ls se e 如:如:A =2 B=0, X= ? 白盒测试白盒测试n判定覆盖(分支覆盖)判定覆盖(分支覆盖)q设计若干测试用例,运行被测程序,使得程序中每个判断的取设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足真分支和取假分支至少经历一次,即判断的真假值均曾被满足18 Function js(float A, float B, float X) If (A1 & B=0) X=X/A ; If (A=2 | X1) X=X+1 ; t tr ru ue

19、 e f fa al ls se e t tr ru ue e f fa al ls se e 如如:A =2 B=0, X= ? A=1 B=?, X =0 白盒测试白盒测试n条件覆盖条件覆盖q一个判定语句是由多个条件组合而成的复合判定一个判定语句是由多个条件组合而成的复合判定q构造一组测试用例,使得每一判定语句中每个逻辑条件可能值构造一组测试用例,使得每一判定语句中每个逻辑条件可能值至少满足一次至少满足一次19 Function js(float A, float B, float X) If (A1 & B=0) X=X/A ; If (A=2 | X1) X=X+1 ; t tr ru

20、 ue e f fa al ls se e t tr ru ue e f fa al ls se e 如如:A 1 / A ! 1 B = 0 / X != 0 t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e 如如:A = 2 / A != 2 X 1 / X ! 1 t tr ru ue e o or r f fa al ls se e t tr ru ue e o or r f fa al ls se e 白盒测试白盒测试n条件判定组合覆盖,设计足够的测试用例条件判定组合覆盖,设计足够的测试用例q使得判定中每个条件的所有可

21、能使得判定中每个条件的所有可能(真真&假假)至少出现一次至少出现一次q并且每个判定本身的判定结果并且每个判定本身的判定结果(真真&假假)也至少出现一次也至少出现一次20 Function js(float A, float B, float X) If (A1 & B=0) X=X/A ; If (A=2 | X1) X=X+1 ; t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f f

22、a al ls se e t tr ru ue e f fa al ls se e t tr ru ue e o or r f fa al ls se e 白盒测试白盒测试n多条件覆盖(条件组合覆盖)多条件覆盖(条件组合覆盖)q设计足够的测试用例,使得每个判定中条件的各种可能组合都设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次至少出现一次21 Function js(float A, float B, float X) If (A1 & B=0) X=X/A ; If (A=2 | X1) X=X+1 ; t tr ru ue e f fa al ls se e t tr

23、ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e t tr ru ue e f fa al ls se e 黑盒测试黑盒测试n侧重于软件的功能需求侧重于软件的功能需求, 试图发现以下类型的错误试图发现以下类型的错误: q不正确或遗漏的功能不正确或遗漏的功能q接口错误接口错误q数据结构或外部数据库访问错误数据结构或外部数据库访问错误q行为或性能错误行为或性能错误q初始化

24、和终止错误初始化和终止错误n测试用例的组织测试用例的组织q等价类划分法等价类划分法q边界值分析法边界值分析法q错误推测法(正交数组测试)错误推测法(正交数组测试)q因果图法因果图法22黑盒测试黑盒测试n等价类划分等价类划分q有效等价类有效等价类是指对软件规格说明而言,是有意义的、合理是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合的输入数据所组成的集合n检验程序是否实现了规格说明中预先规定的功能和性能检验程序是否实现了规格说明中预先规定的功能和性能q无效等价类无效等价类是指对软件规格说明而言,是无意义的、不合是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合理的输入

25、数据所构成的集合n鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方符合规格说明要求的地方q等价类划分的指导原则:等价类划分的指导原则:n若输入条件指定一个范围,则可以定义若输入条件指定一个范围,则可以定义1个有效和个有效和2个无效等价类个无效等价类n若输入条件需要特定的值,则可以定义若输入条件需要特定的值,则可以定义1个有效和个有效和2个无效等价类个无效等价类n若输入条件指定集合的某个元素,则可以定义若输入条件指定集合的某个元素,则可以定义1个有效和个有效和1个无效等价类个无效等价类n若输入条件为

26、布尔值,则可以定义若输入条件为布尔值,则可以定义1个有效和个有效和1个无效等价类个无效等价类23黑盒测试黑盒测试n边界值分析边界值分析q对输入或输出的边界值进行测试的一种黑盒测试方法对输入或输出的边界值进行测试的一种黑盒测试方法n通常作为对等价类划分法的补充,这种情况下,其测试用例通常作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界来自等价类的边界q为什么使用边界值分析法?为什么使用边界值分析法?n无数的测试实践表明,大量的故障往往发生在输入定义域或无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界输出值域的边界上,而不是在

27、其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果情况设计测试用例,通常会取得很好的测试效果q示例:示例:NextDate函数的边界值分析测试用例函数的边界值分析测试用例n在在NextDate函数中,隐含规定了变量函数中,隐含规定了变量mouth和变量和变量day的取的取值范围为值范围为1mouth12和和1day31 ,并设定变量,并设定变量year的取的取值范围为值范围为1912year2050 24软件调试软件调试n错误类型:错误类型:语法错误、运行错误、逻辑错误语法错误、运行错误、逻辑错误n确定错误性质和位置的原则确定错误性质和位置的原则q分析思考与错误有关的信息、避开死胡同、避免使用试探法分析思考与错误有关的信息、避开死胡同、避免使用试探法n修改错误的原则修改错误的原则q关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论