版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试技术第一章软件测试详解本章主要介绍以下内容:软件测试的背景软件测试的定义软件测试的目的软件测试的分类软件测试的对象软件测试的原则软件测试的模型软件测试的流程2.1软件测试的背景随着计算机技术的迅速发展,软件系统的规模与复杂性与日俱增,软件的成本、软件中存在的缺陷和故障造成的各类损失也大大增加,甚至带来灾难性的后果。软件质量问题已成为所有使用软件和开发软件的人们的关注的焦点。由于软件是人脑的高度智力化的体现,不同于其他科技和生产领域,因此软件与生俱来就是存在缺陷和故障的。如何防止和减少这些存在的缺陷和故障,答案是进行软件测试。测试是最有效的排除和防止软件缺陷和故障的手段,并由此促使了软件测试理论与技术实践的快速发展,新的测试理论、测试方法、测试工具不断涌现。与此同时,软件测试技术也同步完善和发展起来。
今天,在软件比较发达的国家,软件测试已经成为一个独立的产业,软件公司纷纷建立独立的测试队伍研究测试技术并开展测试工作。中国的软件测试起步较晚,但随着我国软件产业的蓬勃发展以及人们对软件质量的重视,软件测试正在成为一个新兴的产业。软件测试的发展近些年来逐渐受到产业界、教育界和学术界的关注产业界:软件企业逐渐重视软件测试工作,测试人员地位和待遇逐渐提高,测试工作复杂度日益提高教育界:大学陆续开设软件测试课程、软件测试相关专业书籍逐渐增多、培训机构逐渐开设与软件测试相关的培训课程、软件水平考试开设了软件评测师级别(中级资格)学术界:软件测试是目前软件工程研究领域中的研究热点2023/7/2341.2软件程序+文档的集合[维基百科定义]软件在我们日常生活中无处不在通用软件:操作系统(如Windows、Linux、Macintosh等)、数据库(如Oracle、MySQL等)、编程语言(如C++、Java、C#、Python等)特定软件:银行系统、嵌入式系统(如Android)、RFID系统、Web服务、物联网、云计算等2023/7/235软件测试的对象规格设计说明书软件产品模型如UML模型:包括类图、活动图等软件产品源代码2023/7/2361.3软件测试早期软件开发等同于软件编码,不存在软件工程概念,也不存在明确的人员分工1972年,BillHetzel博士(代表作《TheCompleteGuidetoSoftwareTesting》)组织了第一次关于软件测试的正式会议,标志着该学科的诞生2023/7/237BillHetzel对软件测试的定义软件测试可以为程序能够按照预期设想行为运行而建立足够的信心[1973年]软件测试是一系列活动,这些活动是为了评估一个程序或软件系统的特性或能力,并确定是否达到了预期结果[1983年]2023/7/238G.J.Myers对软件测试的定义与B.Hetzel博士的观点不同,G.J.Myers采用逆向思维提出了自己的观点软件测试是为了发现错误而执行一个程序或者系统的过程。[1979年]强调软件测试的目的是为了发现缺陷,而不是为了证明软件没有缺陷2023/7/239G.J.Myers定义中存在的不足只强调寻找错误,容易使测试人员忽视用户的基本需求容易造成测试人员和开发人员的对立忽视了静态测试的重要性,如软件需求评审、软件设计评审和软件代码静态检查2023/7/2310综合上述两种观点软件测试是由验证和确认活动构成的整体验证(Verification)是检验软件是否已正确的实现了产品规格书所定义的系统功能和特性。相当于以软件产品设计规格说明书为标准进行软件测试的活动确认(Validation)是确认所开发的软件是否满足用户真正需求的活动。主要通过各种软件评审活动来实现,包括让用户参加评审和测试活动2023/7/2311其他观点从风险和经济的角度软件测试对风险不断评估,引导软件开发工作,进而将最终发布的软件所存在的风险降到最低。根据Pareto原则,将用户常用的功能进行完全充分的测试参考Boehm著作《软件工程经济》2023/7/2312又叫二八原则,由意大利经济学家Pareto提出,原因和结果、投入和产出、努力和报酬之间本来存在着无法解释的不平衡。1.4软件测试人员分类测试工程师职能包括:设计测试用例、运行测试用例、分析测试用例执行结果、向开发人员或项目主管提交测试报告测试主管职能包括:指导测试工程师的工作、制定测试策略和测试流程、与项目主管沟通2023/7/2313主题软件测试及其定位
全景图软件测试的位置?软件测试的位置?业务分析需求定义架构设计详细设计编程和单元测试系统测试发布/部署开发流程测试流程需求可测试性评审用户沟通测试分析和设计测试策略缺陷跟踪功能测试计划、设计及其评审非功能测试计划测试环境搭建部署验证计划单元测试集成测试测试脚本开发测试具体脚本测试执行测试结果分析产品质量评估测试报告覆盖软件开发全过程测试&开发的同步关系软件测试的地位?软件研发队伍中主要有开发人员和测试人员,而项目经理、软件配置等方面人员很少开发人员测试人员其他2
:11
:11
:21
:10QA:DEV软件测试概念的演化1979年,GlenfordMyers的《软件测试艺术》的定义:测试是为发现错误而执行的一个程序或者系统的过程。1983年,BillHetzel在《软件测试完全指南》中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。Rick和Stefan在《系统的软件测试》一书中对软件测试的定义:
测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。狭义观点vs.广义观点狭义观点
G.J.Myers所给出了测试定义——“程序测试是为了发现错误而执行程序的过程”。瀑布模型广义观点
将测试延伸到需求评审、设计审查活动中去。由静态测试和动态测试构成一个全过程的、完整的软件测试辩证观点验证软件是“工作的”,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。证明软件是“不工作的”,以反向思维方式,不断思考开发人员理解的误区、不良的习惯、程序代码的边界、无效数据的输入以及系统的弱点,试图破坏系统、摧毁系统,目标就是发现系统中各种各样的问题。软件测试的其它观点风险观点:软件测试是对软件系统中潜在的各种风险进行评估的活经济学观点:一个好的测试用例是在于它能发现至今未发现的错误。缺陷发现得越早,所造成得代价就越低,这就是从经济学的观点来说明测试越早越好。标准观点:软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,即软件测试=V&V
主题
软件测试及其定位全景图软件测试的关键字缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除软件测试的全景图质量缺陷指导软件测试阶段管理思想质量用例方法源泉确定寻求设计发现实施清除目标高质量的软件应该是相对的无产品缺陷(BugFree)或只有极少量的缺陷、满足客户需求的、是可维护的,而且它能够准时交给用户、其费用是在预算内的。但是,有关质量的好坏最终评价依赖于用户的反馈。产品质量过程质量软件产品质量的需求功能性需求PRD/MRD,UIMock-up,FunctionalSpec也可称为可说明性非功能性需求性能、安全性、可用性、兼容性、可靠性、
易用性、可达性(Accessibility)等测试目标(质量需求)缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除
可靠性测试可用性测试兼容性测试安装测试恢复测试安全性测试性能测试功能测试国际化测试本地化测试SaaS的非功能性测试性能要求,系统响应能力。可用性,7x24不间断服务可伸缩性,系统容量扩充能力,使系统可以支持来自扩大用户群体的额外负载。安全性要求,确定可能潜在的安全威胁并找到处理策略。可维护性要求,对部署系统进行维护的难易程度,可维护性与可用性之间关系密切故障转移数据库A故障转移负载平衡器Web服务器A应用服务器A数据库BWeb服务器B应用服务器B故障转移数据库A故障转移负载平衡器Web服务器A应用服务器A数据库BWeb服务器B应用服务器BXX性能测试、压力测试与负载测试系统性能的改善是测试、调整、再测试、再调整、……一个持续改进的过程——性能调优性能调优需要借助负载测试方法的帮助
负载测试和性能测试有较多相似之处,例如,测试方法比较接近、都关注系统的性能,而且多数情况下使用相同的测试工具负载测试可以看作是性能测试所采用的一种技术
压力测试可以被看作是负载测试的一种,即高负载下的负载测试容量测试也采用负载测试技术来实现辨别负载测试过程确定所要模拟的角色及其对应的关键业务操作路径。确定输入/输出参数,制定负载测试方案。准备测试环境,并完成相应的测试脚本的开发。设计具体的测试场景,如负载水平、加载方式等。执行测试,监控输出参数,如数据吞吐量、响应时间、资源占有率等。对测试结果进行分析。结果不满意,需要调整测试场景,进入下一个循环。性能测试
性能指标
关键业务负载模式
最大负载量测试环境结果分析场景设置
启动(Rampup)持续期间(Duration)结束(Rampdown)
在性能测试执行前,以什么样方式启动负载方式、如何持续进行负载测试直至负载测试结束,这个过程的负载大小和方式、负载启动和结束以及各种检查点、验证点等设计,被称为场景设置。
递增恒值动态队列负载测试执行
大量的虚拟用户要运行在多个客户端,并由控制器管理、代理(agent)驱动负载测试的执行,需要针对不同维度的变化进行,包括时间维、负载维和系统维监控、详细的记录和适当的分析是十分重要的时间维:尝试观察系统在一段较长时间上的行为变化负载维:尝试在系统上改变负载来进行对比分析系统维:负载测试也可以针系统的不同组件、不同配置等进行
负载测试执行环境结果分析要善于捕捉被监控的数据曲线发生突变的地方——拐点
安全性测试跨站点脚本(cross-sitescripting,XSS)攻击SQL注入式漏洞缓冲区溢出不安全的数据存储或传递不安全的配置管理有问题的访问控制,权限分配有问题口令设置不严,包括长度、构成和更新频率暴露的端口或入口软件安全性测试就是检验系统权限设置有效性、防范非法入侵的能力、数据备份和恢复能力等,设法找出上述各种安全性漏洞Hot测试方法缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除单因素?多因素?确定等价类的示例在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。个人月收入
税率
x<=16000%1600<x<21005%500<=x<360010%3600<=x<660015%6600<=x<2160020%21600<=x<4160025%……>10160045%边界值:全选、只选一个、一个都不选、……边界值实例字符编辑域DefaultEmptyBlankNullZeroNone测试用例缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除测试执行测试数据测试环境测试套件测试脚本测试工具手工测试自动化测试重点如何设计测试用例?需求测试用例方法测试用例设计
全面理解功能特性客户需求导向的思维方式白盒方法和黑盒方法用例工作流图/数据流图/UMLcharts负面测试测试用例框架的构成更有效、有序地组织测试测试套件测试计划集成测试目标新功能测试目标系统性能测试目标功能回归测试目标测试套件测试套件测试套件测试套件手工测试
发现缺陷率高容易实施创造性、灵活性
覆盖率量化困难
重复测试效率低不一致性、可靠性低依赖人力资源
高效率(速度)高复用性覆盖率容易度量准确、可靠不知疲劳激励团队士气
机械、难以发现缺陷一次性投入大自动测试手工测试vs.自动测试两者相互补充在系统功能逻辑测试、验收测试、适用性测试、涉及交互性测试时,多采用手工测试方法;单元测试、集成测试、系统负载或性能、可靠性测试等比较适合采用TA;对那种不稳定、开发周期短或一次性的软件等不适合TA工具本身缺乏想象力和创造性,自动测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷;缺陷缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除缺陷报告缺陷生命周期缺陷跟踪趋势分析分布分析缺陷清除率质量评估缺陷预防缺陷生命周期创建激活状态SendemailtoDEV是否清楚、可再现?已处理状态已修正状态SendemailtoQA不能再现缺少信息缺陷评审关闭状态延期增强设计无法解决需要处理验证是否通过Unittest,codereviewCheckinCVSNoNo下一个版本YesYes实例OpenabugDevchecksmail&ReviewbugDuplicatethebugDebugCheckoutcodeFixbugCodeReviewUnittestCheckincodeBuildapackageUploadpackageInstallation/configurationVerifyfixedbugsChangebugstatustoclose14Stepsstartend测试思想质量文化客户需求质量保证测试现实测试原则测试驱动成熟度模型缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除测试现实和原则测试现实是从事测试活动所面对的客观条件或限制,诸如:测试覆盖程度能否达到100%,以及人员、设备、时间等限制。软件测试原则是测试过程中所时时应该注意与遵循的观念或指导性意见,统驭测试方法,是重中之重。例如:站在用户角度,全面测试,尽早、尽可能多的发现软件缺陷测试管理缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除测试策略测试风险资源进度测试计划实验室测试团队测试覆盖测试报告与模板测试计划的内容
确认测试目标、范围和需求识别测试风险,制订相应的测试策略对测试任务和工作量进行估算确定所需的时间和资源进度安排和资源分派,包括团队角色、责任和培训测试阶段划分,包括阶段性任务和成果跟踪和控制机制核心首先确立测试范围优先级最高的需求功能新功能和改动较大的旧功能运用有效的测试技术去提高测试效果经常容易出现问题部分的功能一些经常被用户使用的功能和配置测试策略问题或风险在哪里?影响因素已有的测试方法等软件测试策略的确定体现在测试计划软件测试策略在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。制定测试策略全面细致地了解产品的项目信息分析各个因素对产品的影响确定测试范围、等级和测试重点使用尽可能少的有效测试用例,发现尽可能多的缺陷测试既不能失败、不足,也不能过度,而是寻求一个最佳平衡点测试风险需求变更,测试人员、环境、技术、工具,…广度、深度风险评估与控制寻找缓解风险的策略体现在测试计划中在测试过程中进行监控和处理测试风险是不可避免的,测试总是有风险的,因此对系统中潜在的各种风险进行评估分析与管理是必不可少的活动。问题?测试阶段有哪两种划分?测试阶段缺陷指导软件测试阶段管理思想质量用例方法目标源泉确定寻求设计发现实施清除需求审查设计审查单元测试集成测试系统测试验收测试
α/β测试回归测试冒烟测试软件测试全过程(2)软件测试全过程(3)软件测试发展趋势全程软件测试,伴随着整个软件开发生命周期全程自动化测试,测试原来可以是这样的全程缺陷预防,测试工作已经不是那么重要软件测试人员的活动示意图2023/7/2368测试用例设计可执行的测试用例实例化计算机被测产品输出评估1.5软件测试与软件开发的关系传统的软件瀑布模型认为软件测试在模型的底部Myers的定义基于该模型2023/7/2369需求分析系统设计详细设计代码实现时间V模型软件测试应该贯穿于整个软件开发过程中2023/7/2370需求分析系统设计详细设计代码实现验收测试系统测试集成测试单元测试1.6测试驱动开发敏捷方法(如极限编程、Scrum方法等)提出了测试驱动开发的思想测试在先、编码在后提高开发人员对代码的信心、支持代码重构2023/7/2371测试驱动开发实施过程2023/7/2372开始为新功能设计测试用例编码实现新功能运行测试用例判断是否通过代码修改执行代码重构结束未通过通过运行测试用例判断是否通过代码修改未通过通过是否1.6回归测试(RegressionTesting)时机软件在开发或维护阶段,当发现缺陷、用户产生新的需求或进一步提高软件运行性能,对软件进行修改后目的保证修改的正确性并避免修改对被测软件其他模块产生副作用2023/7/2373回归测试的简易流程图2023/7/23741.7软件测试自动化理由软件测试成本高昂,需要投入大量的人力一般占项目开发成本的50%以上,对于安全性要求高的系统该比重会更大目标尽可能使所有的测试行为都自动化包括测试用例设计、驱动、结果检查、缺陷定位和移除等2023/7/2375软件测试面临的挑战提出新的测试理论和测试流程例如测试驱动开发开发出新的自动化测试工具和框架例如JUnit框架提出新的高效测试方法和技术尽可能多的检测出软件内存在的缺陷,因为软件测试技术只能证明被测软件存在缺陷,不能证明被测软件不存在缺陷。发现被测软件内部所有可能缺陷是一个不可判定问题2023/7/23762.2软件测试的定义观点一:1972年,软件测试领域先驱BillHetzel博士在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。1973年他首先给出软件测试的定义:“测试就是建立一种信心,确信程序能够按预期的设想运行”。1983年他又将软件测试的定义修改为“评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。”这他定义中的“设想”和“预期结果”其实就是我们现在所说的“用户需求”。他把软件的质量定义为“符合要求”。他认为:测试方法是试图验证软件是“工作的”。所谓“工作的”就是指软件的功能是按照预先的设想执行的观点二:与观点一相反,代表人物是GlenfordJ.Myers。他认为应该首先认定软件是有错误的,然后用测试去发现尽可能多的错。除此之外,Myers还给出了与测试相关的三个重要观点,那就是:(1)测试是为了证明程序有错,而不是证明程序无措(2)一个好的测试用例是在于它发现以前未能发现的错误(3)一个成功的测试时发现了以前未发现的错误测试2.3软件测试的目的以最少的时间和人力,系统地找出软件中潜在的各种缺陷证明软件的功能与性能是否与需求说明相符合软件测试总的目标是:确保软件的质量,所以测试并不仅是个技术问题,更是个职业道德问题。2.4软件测试的分类软件测试(从是否关心软件内部结构和具体实现的角度划分)黑盒测试白盒测试软件测试(从是否执行程序的角度)静态测试动态测试软件测试(从软件开发的过程按阶段划分有)单元测试集成测试系统测试验收测试2.5软件测试的对象测试对象程序各阶段的文档2.6软件测试的原则(1)1.所有测试的标准都是建立在用户需求之上2.软件测试必须基于“质量第一”的思想去开展各项工作3.事先定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度比亚迪弗迪租赁合同审计:租赁项目审计协议
- 2024房屋防水维修合同
- 2024年度土地租赁合同:某科技有限公司租赁武汉市某区土地使用权
- 2024至2030年工业炉窑燃气燃烧调控系统项目投资价值分析报告
- 2024至2030年不粘铁锅项目投资价值分析报告
- 2024年黄铜等径直接项目可行性研究报告
- 二零二四年度版权许可使用协议(图书类)
- 2024年度租赁合同标的及租赁期限和租金支付方式
- 绿化行业合同范本
- 2024年沙滩车温度报警器项目可行性研究报告
- (2021年)浙江省杭州市警察招考公安专业科目真题(含答案)
- 99S203消防水泵接合器安装
- 高考口语考试试题答案
- 中国佛教文化课件
- 七年级英语介词专项练习含答案
- 旅行社计调实务4课件
- YY/T 1164-2021人绒毛膜促性腺激素(HCG)检测试剂盒(胶体金免疫层析法)
- Python深度学习实战-基于Pytorch全书电子讲义完整版ppt整套教学课件最全教学教程
- GB/T 818-2000十字槽盘头螺钉
- 2023年黑龙江建筑职业技术学院高职单招(语文)试题库含答案解析
- 国家自然科学基金申请经验汇总
评论
0/150
提交评论