软件测试与维护教学.ppt
《软件测试与维护教学.ppt》由会员分享,可在线阅读,更多相关《软件测试与维护教学.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 软件测试与维护软件测试与维护Page 2任务任务5.1SAGM系统登录测试系统登录测试Page 35.1.1 案例描述案例描述 教职工津贴教职工津贴系统开发完毕,需要进行功能测试,本系统开发完毕,需要进行功能测试,本案例要求进行登录功能测试,设计详细的测试用例,完案例要求进行登录功能测试,设计详细的测试用例,完成黑盒测试。成黑盒测试。Page 45.1.2 案例分析案例分析 任何程序、系统中的问题,和产品设计书的不一致性,任何程序、系统中的问题,和产品设计书的不一致性,任何程序、系统中的问题,和产品设计书的不一致性,任何程序、系统中的问题,和产品设计书的不一致性,不能满足用户的需
2、求不能满足用户的需求不能满足用户的需求不能满足用户的需求 必须意识到:必须意识到:必须意识到:必须意识到:“软件软件软件软件”编程,它有自己的生命周编程,它有自己的生命周编程,它有自己的生命周编程,它有自己的生命周期期期期(life cycle)(life cycle)。大型软件系统的开发与其它工程项目。大型软件系统的开发与其它工程项目。大型软件系统的开发与其它工程项目。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。如建造桥梁、制造飞机、轮船等的开发是同理的。如建造桥梁、制造飞机、轮船等的开发是同理的。如建造桥梁、制造飞机、轮船等的开发是同理的。实践证明实践证明实
3、践证明实践证明:对软件进行充分的测试:对软件进行充分的测试:对软件进行充分的测试:对软件进行充分的测试 才能够有效的保证软件质量才能够有效的保证软件质量才能够有效的保证软件质量才能够有效的保证软件质量!Page 55.1.3 知识准备知识准备IEEE(1983)729 IEEE(1983)729 软件缺陷一个标准的定义:软件缺陷一个标准的定义:p 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;p 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。软件缺陷的主要类型软件缺陷的主要类型/现象:现象:p 功能、特性没有实现或部分实现p 设计不合理,存在缺陷p
4、实际结果和预期结果不一致p 运行出错,包括运行中断、系统崩溃、界面混乱p 数据结果不正确、精度不够p 用户不能接受的其他问题,如存取时间过长、界面不美观 Page 65.1.3 知识准备知识准备软件缺陷的产生 技术问题技术问题算法错误,语法错误,计算和精度问题,接口参数传递不匹配团队工作团队工作误解、沟通不充分软件本身软件本身文档错误、用户使用场合(user scenario),时间上不协调、或不一致性所带来的问题系统的自我恢复或数据的异地备份、灾难性恢复等问题Page 75.1.3 知识准备知识准备软件缺陷构成Page 85.1.3 知识准备知识准备在真正的程序测试之前,通过审查、评审会可以
5、发现更多的缺陷。规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能在需求分析一个阶段发现Page 95.1.3 知识准备知识准备缺陷成本Page 105.1.3 知识准备知识准备软件测试的基本方法根据根据G.J.Myers观点观点-软件测试的目:n 软件测试是为了发现错误而执行程序的过程软件测试是为了发现错误而执行程序的过程n 一个好的测试能够在第一时间发现程序中存在的错误一个好的测试能够在第一时间发现程序中存在的错误n 一个好的测试是发现了至今尚未发现的错误的测试。一个好的测试是发现了至今尚未发现的错误的测试。软件测试是质量控制的重要手段,保证客软件测试是质量控制的
6、重要手段,保证客软件测试是质量控制的重要手段,保证客软件测试是质量控制的重要手段,保证客户拿到或用户使用高质量的软件产品户拿到或用户使用高质量的软件产品户拿到或用户使用高质量的软件产品户拿到或用户使用高质量的软件产品Page 115.1.3 知识准备知识准备软件测试误区p 误区一:误区一:如果发布出去的软件有质量问题,都是软件测试人员的错p 误区二:误区二:软件测试技术要求不高,至少比编程容易多了p 误区三:误区三:有时间就多测试一些,来不及就少测试一些 p 误区四:误区四:软件测试是测试人员的事,与开发人员无关 p 误区五:误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段Page
7、125.1.3 知识准备知识准备软件测试的原则所有测试的标准都是建立在用户需求用户需求之上。软件测试必须基于“质量第一质量第一”的思想去开展各项工作,当时间和质量冲突时,时间要服从质量。事先定义好产品的质量标准质量标准,只有有了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。软件项目一启动,软件测试也就是开始软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试。穷举测试是不可能的穷举测试是不可能的。甚至一个大小适度的程序,其路径排列的数量也非常大,因此,在测试中不可能运行路径的每一种组合。Page 135.1.3 知识准备知识准备软件测试的原则第三方进行测试会更客观,
8、更有效。软件测试计划是做好软件测试工作的前提。测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。重视文档,妥善保存一切测试过程文档(测试计划、测试用例、测试报告等)Page 145.1.3 知识准备知识准备软件测试的原则l 应当把“尽早和不断地测试”作为测试人员的座右铭l 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见l 测试应从“小规模”开始,逐步转向“大
9、规模”。l 不可将测试用例置之度外,排除随意性。l 必须彻底检查每一个测试结果。l 一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系l 对测试错误结果一定要有一个确认的过程。Page 155.1.3 知识准备知识准备测试方法 黑盒子和白盒子黑盒子和白盒子 静态的和动态的静态的和动态的 文档、代码审查文档、代码审查 数据输入边界条件法数据输入边界条件法 等价划分、数据流程图等价划分、数据流程图 状态变换图状态变换图 逻辑路径法逻辑路径法Page 165.1.3 知识准备知识准备黑盒子和白盒子功能测试功能测试数据驱动测试数据驱动测试 结构测试结构测试逻辑驱动测试逻辑驱动测
10、试 客户需求事件驱动输入输出Page 175.1.3 知识准备知识准备静态的和动态的主持人主持人作者记录员列席人员内审员内审员技术专业人员用户代表不正式正式互审 走读 审查会议运行程序运行程序Page 185.1.3 知识准备知识准备自动测试和手工测试手工模拟用户手工模拟用户操作操作Page 195.1.3 知识准备知识准备软件测试分类方法方法目标目标/特性特性单元测试单元测试系统测试系统测试验收测试验收测试性能测试性能测试强壮性测试强壮性测试功能测试功能测试白盒测试白盒测试黑盒测试黑盒测试测试阶段或层次测试阶段或层次适用性测试适用性测试可靠性测试可靠性测试集成测试集成测试安全性测试安全性测试
11、Page 205.1.3 知识准备知识准备软件测试阶段阶 段输 入 输 出 需求分析需求定义,市场分析文档,相关技术文档市场需求分析会议记要,功能设计,技术设计设计审查 市场需求文档,技术设计文档 测试计划,测试用例功能验证 代码完成文件包,功能详细设计说明书最终技术文档完整测试用例,完备的测试计划,缺陷报告,功能验证测试报告系统测试代码修改后的文件包 完整测试用例,完备的测试计划 缺陷报告缺陷状态报告项目阶段报告确认测试代码冻结文件包确认测试用例缺陷状态报告缺陷报告审查版本审查版本发布 代码发布文件包 测试计划检查清单当前版本已知问题的清单版本发布报告Page 215.1.3 知识准备知识准
12、备测试阶段(SDLC)Page 225.1.4 案例实现案例实现需求:用户名长度为用户名长度为6 6至至1010位(含位(含6 6位和位和1010位)位)用户名由字符(用户名由字符(a-za-z、A-ZA-Z)和数字()和数字(0-90-9)组成)组成不能为空、空格和特殊字符不能为空、空格和特殊字符密码规则同用户名规则密码规则同用户名规则Page 235.1.4 案例实现案例实现 简单:能够正确处理用户登录简单:能够正确处理用户登录一般:一般:l输入正确的用户名和密码可以进入系统输入正确的用户名和密码可以进入系统l输入用户名或密码错误无法进入系统输入用户名或密码错误无法进入系统Page 245
13、.1.4 案例实现案例实现n详细:用户身份合法性验证n用户名验证n正常用户名的输入n含有特殊字符的用户名n为空或含有空格n字母大小写无关性测试n非法用户n密码验证n正常密码n含有特殊字符的密码n字母大小写敏感性测试n为空或含有空格n密码有效期验证n密码保存n忘记密码后找回密码功能Page 255.1.4 案例实现案例实现步骤:1、输入、输入2、输入、输入3、点击、点击OK按钮按钮结果:Page 265.1.4 案例实现案例实现“用户名”“密码”“预期结果”说明“user10”“pass10”进入系统进入系统正确的用户名和密码正确的用户名和密码(6位位)“user789”“pass789”进入系
14、统进入系统正确的用户名和密码正确的用户名和密码(7-9位位)“user000010”“pass000010”进入系统进入系统正确的用户名和密码正确的用户名和密码(10位位)“”“pass”提示输入用户名提示输入用户名不能进入系统不能进入系统用户名为空用户名为空“空格空格”“pass”提示无效用户名提示无效用户名不能进入系统不能进入系统用户名为空格用户名为空格“user”“userpass”提示用户名太短提示用户名太短不能进入系统不能进入系统用户名小于用户名小于6位位“user0000011”“userpass”提示用户名太长提示用户名太长不能进入系统不能进入系统用户名大于用户名大于10位位Pa
15、ge 275.1.5 拓展训练拓展训练 教职工津贴教职工津贴系统中,完成用户添加、修改、删除的系统中,完成用户添加、修改、删除的功能测试,设计详细的测试用例,完成黑盒测试。功能测试,设计详细的测试用例,完成黑盒测试。Page 28任务任务5.2SAGM系统测试用例设计系统测试用例设计Page 295.2.2 知识准备知识准备黑盒测试法与白盒测试法 1.1.黑盒法黑盒法 该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。通过黑盒测试主要发现以下错误:(1)是
16、否有不正确或遗漏了的功能。(2)在接口上,能否正确地接受输入数据,能否产生正确的输出信息。(3)访问外部信息是否有错。(4)性能上是否满足要求等。Page 305.2.2 知识准备知识准备黑盒测试法与白盒测试法 用黑盒法测试时,必须在所有可能的输入条件和输出条件中确定测试数据。是否要对每个数据都进行穷举测试呢?例如测试一个程序,需输入 3 个整数值。微机上,每个整数可能取值有216个,3个整数值的排列组合数为216216216=24831014。假设此程序执行一次为一毫秒,用这些所有的数据去测试要用1万年!但这还不能算穷举测试,还要输入一切不合法的数据。可见,穷举地输入测试数据进行黑盒测试是不
17、可能的。2.2.白盒法白盒法 该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。Page 315.2.2 知识准备知识准备黑盒测试法与白盒测试法 用黑盒法测试时,必须在所有可能的输入条件和输出条件中确定测试数据。是否要对每个数据都进行穷举测试呢?例如测试一个程序,需输入 3 个整数值。微机上,每个整数可能取值有216个,3个整数值的排列组合数为216216216=24831014。假设此程序执行一次为一毫秒,用这些所有的数据去测试要用
18、1万年!但这还不能算穷举测试,还要输入一切不合法的数据。可见,穷举地输入测试数据进行黑盒测试是不可能的。2.2.白盒法白盒法 该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。Page 325.2.2 知识准备知识准备黑盒测试法与白盒测试法 白盒法也不可能进行穷举测试,企图遍历所有的路径,往往是做不到的。如测试一个循环20次的嵌套的IF语句,循环体中有5条路径。测试这个程序的执行路径为520,约为1014,如果每毫秒完成一个路径的测试
19、,测试此程序需3170年!对于白盒测试,即使每条路径都测试了,程序仍可能有错。例如要求编写一个升序的程序,错编成降序程序(功能错),就是穷举路径测试也无法发现。再如由于疏忽漏写了路径,白盒测试也发现不了。所以,黑盒法和白盒法都不能使测试达到彻底。为了用有限的测试发现更多的错误,需精心设计测试用例。黑盒法、白盒法是设计测试用例的基本策略,每一种方法对应着多种设计测试用例的技术,每种技术可达到一定的软件质量标准要求。下面分别介绍这两类方法对应的各种测试用例设计技术。Page 33白盒技术白盒技术 由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用例。1.逻辑覆
20、盖逻辑覆盖 追求程序内部的逻辑结构覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖最有代表性的路径的测试用例。下面根据图5.1所示的程序,分别讨论几种常用的覆盖技术。5.2.2 知识准备知识准备Page 34 1)语句覆盖 为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次。如图5.1是一个被测程序的程序流程图。如果能测试路径124,就保证每个语句至少执行一次,选择测试数据为 a=2,b=0,x=3输入此组数据,就能达到语句覆盖标准。Page 35 2)判定覆盖 判定覆盖指设计足够的测
21、试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖。设计测试用例,只要通过路径124,135或者125,134,就达到判定覆盖标准。选择两组数据:a=3,b=0,x=1(通过路径125)a=2,b=1,x=2(通过路径134)对于多分支(嵌套IF,CASE)的判定,判定覆盖要使得每一个判定表达式获得每一种可能的值来测试。Page 36 判定覆盖较语句覆盖严格,因为如果通过了各个分支,则各个语句也执行了。但该测试仍不充分,上述数据只覆盖了全部路径的一半,如果将第二个判定表达式中的“x1”错写成“x1”,仍查不出错误。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 维护 教学
限制150内