《第10章软件测试技术与工具课件》由会员分享,可在线阅读,更多相关《第10章软件测试技术与工具课件(21页珍藏版)》请在金锄头文库上搜索。
1、第十章软件测试技术与工具常用的软件测试方法黑盒测试:将被测系统看成一个黑盒,从外界取得输入,然后再输出。又叫功能测试或数据驱动测试。白盒测试:是对软件的过程性细节做细致的检查。又称为结构测试或逻辑驱动测试。基于风险的测试:是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。基于模型的测试:是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统。常见的软件测试类型BVT(BuildVerificationTest):是在所有开发工程师都已经键入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是
2、否完整,主要的软件特性是否正确。ScenarioTests(基于用户实际应用场景的测试):模仿用户这样一个真实的使用环境,即用户会有哪些用法,会用这个应用程序做哪些事情,操作会是一个怎样的流程。SmokeTest:想知道修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,进行的专门测试。WEB性能测试:随着需求量与应用领域的不断扩大,对WEB应用软件的正确性、有效性和对WEB服务器等方面都提出了越来越高的性能要求,对WEB应用程序进行有效系统的测试变得十分重要。后面将对WEB应用程序的测试进行深入讨论。WEB测试技术测试技术lWEB应用程序体系结构WEB应用程序采用B/S结构,在这种
3、结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑则在服务器端实现,形成所谓的三层结构。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。lWEB测试的内容与目的测试的目的是证伪,但不能片面的理解为简单的找Bug就可以了。l软件测试应该经历以下四个步骤:1测试人员描述发现的问题(找到Bug);2测试人员详细说明是在何种情况下测试发现的问题,包括测试的环境、输入的数据、发现问题的类型、问题的严重程度等情况;3测试人员协同开发人员一起去分析Bug的原因,找出软件的缺陷所在;4测试人员
4、根据解决的情况进行分类汇总,以便日后进行软件设计的时候提供参考,避免以后出现类似软件缺陷。WEB测试技术测试技术l制定WEB测试计划1首先对被测的WEB应用程序进行需求分析。2写出测试策略和方法。3确定测试环境的要求(包括软件和硬件方面),选择合适的测试工具。4针对主要的测试行为描述测试的细节。l测试的类型WEB测试的类型包括内容测试、界面测试、功能测试、性能测试、兼容性测试、安全性测试等情况。WEB的功能测试与传统的软件测试区别不大,主要是在连接测试方面有区别。WEB应用程序的测试包括客户端连接服务器速度方面的测试和压力测试这两方面。WEB测试技术测试技术lWEB应用程序的步骤可以分为以下几
5、步:分析产品结构,明确性能测试的需求。分析应用场景和用户数据,并完成初步的测试用例设计。依据性能测试需求和确定的测试点进行测试组网设计,并明确不同组网方案的重要程度或优先级作为取舍评估的依据。完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。确定采用的测试工具。迭代进行全面的性能测试。进行初验测试。完成性能测试评估报告。l进行性能测试时候的有效性能指标:通用指标;Web服务器指标;数据库服务器指标。WEB测试技术测试技术l测试工具介绍ACT(或者MSACT)。ACT是微软的VisualStudio和VisualStudio.NET带的一套进行程序测
6、试的工具OpenSystemTestingArchitecture(OpenSTA)。OpenSTA是一个功能强大、自定义设置功能完备的软件,其特点是可以模拟很多用户来访问需要测试的网站。PureLoad。PureLoad是基于Java的测试工具,它的Script代码完全使用XML技术。QALoad。QALoad不仅仅可以测试WEB应用程序,还可以测试一些服务器上的内容。不但可以测试Windows操作系统,而且可以测试AIX,HP-UX和Solaris等系统。LoadRunner。MercuryLoadRunner是一种预测系统行为和性能的负载测试工具。软件测试技术l软件测试技术大致分为:自动
7、化测试,手工测试,探索性测试,单元测试,单元级别性能测试,数据库性能测试,压力测试,软件的安全性测试,软件安装/卸载测试,环境测试。其中,手工测试与自动化测试可以认为是测试互补方法。自动化测试自动化测试l自动化测试技术的含义非常广泛,任何帮助流程的自动流转、替换手工的动作、解决重复性问题以及大批量产生内容,从而帮助测试人员进行测试工作的相关技术或工具的使用都叫自动化测试技术。l目的是帮助软件系统测试,它可能部分地替代手工测试,但是不可能完全替代手工测试。l优点:对程序的回归测试更方便;可以运行更多更繁琐的测试;可以执行一些手工测试困难或不可能进行的测试;更好地利用资源;测试具有一致性和可重复性
8、;测试的复用性;增加软件信任度。l缺点:不能取代手工测试;手工测试比自动测试发现的缺陷更多;对测试质量的依赖性极大;测试自动化不能提高有效性;可能会制约软件开发;工具本身并无想象力。手工测试手工测试l手工测试有其不可替代的地方,因为人具有很强的判断能力,而工具没有。不可替代的地方至少包括以下几点:n测试用例的设计:测试人员的经验和对错误的判断能力是工具不可替代的。n界面和用户体验测试:人类的审美观和心理体验是工具不可模拟的。n正确性的检查:人们对是非的判断、逻辑推理能力是工具不具备的l手工测试也存在这一些缺陷,手工测试者最常做的就是重复的手工回归测试,不但代价昂贵,而且容易出错。探索性测试l探
9、索性测试是:同时设计测试和执行测试。是一种测试思维技术。缺乏可管理性和度量性。因此,JamesBach提出了基于任务的测试管理(Session-BasedTestManagement)。基于任务的测试管理是用于度量和管理探索性测试的一种方法。l可把探索性测试方式作为传统测试方式的补充,在每一项测试后留下一定的时间给测试人员做探索性的测试,以弥补相对刻板的传统测试方式的不足。单元测试l单元测试是针对软件设计中的最小单位(程序模块),进行正确性检验的测试工作,其目的在于发现每个程序模块内部可能存在的差错。l单元测试由谁来做:存在两种截然不同的对立观点。一部分人认为单元测试既然是测试的一种类型,当然
10、应该由测试人员负责;另外一部分人则认为,开发人员应该通过编写单元测试的代码来保证自己写的程序是正常工作的。l结对单元测试:让测试人员和开发人员结对进行单元测试,如图所示。单元级别性能测试l性能测试不应该只是一种后期的测试活动,更不应该是软件系统上线前才进行的“演练”,而应该是贯穿软件的生产全过程,如图所示。l单元阶段的性能测试可以考虑从以下几个方面进行:代码效率评估;应用单元性能测试工具;数据库优化。l数据库性能测试:很多软件系统除了代码层的性能测试之外,都需要应用到数据库,通常数据库也会成为性能瓶颈之一。l压力测试:指模拟巨大的工作负荷以查看应用程序在峰值使用情况下如何执行操作,是一种验证软
11、件系统极限能力的性能测试。l软件的安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。不同安全测试考虑的问题也不同。用户认证安全的测试;系统网络安全的测试;数据库安全考虑问题。l软件安装/卸载测试安装测试需要注意以下几点:安装过程是否是必要的;安装过程;卸载;升级安装;安装后的第一次运行;利用工具辅助测试。l环境测试是验证在不同的机器环境下,软件系统是否正常工作。环境测试,也有人叫兼容性测试或配置测试等,是指测试软件系统在不同的环境下是否仍然能正常使用。自动化测试l什么是自动化测试自动化测试就是利用策略、工具以及产出等,减少人工介入到非技术性、重复性、冗长的测试活动里,从
12、而达到无人监守完成测试,并自动产生测试报告,分析测试结果等一系列活动。l自动化测试是可以使测试自动进行,并对测试输出结果与期望输出进行比较(这一点往往为人们所忽略)的测试技术。可用于任何阶段的测试中,如单元测试、集成测试、系统测试或验收测试。自动化测试标准要成功地实现软件测试自动化,需要周密的计划和大量艰苦的工作,软件测试自动化的开发人员首先必须清楚自动化测试的内容。以下几条可以作为自动化软件测试的标准:l自动回归测试l对稳定的应用进行测试l对没有时间依赖性的测试l重复性测试的自动化l合理限制自动化的范围自动化测试体系结构l从软件自动化测试的适用范围以及实现机制,总结出软件测试自动化以下几个关
13、键要素:要测试什么软件?要被测试的软件的构件或者特征是什么?被测软件系统的运行环境是什么?被测试软件系统的对外提供的接口是什么?数据的输入格式是什么以及结果的捕获?基于这几个关键要素,可以描绘下图所示的软件自动测试体系结构:自动化测试原理和方法l软件测试自动化实现的原理和方法主要有:直接对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术、虚拟用户技术和测试管理技术。代码分析:是一种白盒测试的自动化方法,类似于高级编译系统。捕获和回放:是一种黑盒测试的自动化方法。脚本技术:可分为,线性脚本,结构化脚本,数据驱动脚本,关键字驱动脚本。虚拟用户技术和测试管理技术:虚拟用户技术的应用极大的减
14、少了人工测试的工作量,保证了自动化测试的高效性;同时,大量的用户访问测试又能对测试对象的稳定性及不确定的因素进行测试,增强了测试的效果;软件测试管理包括测试计划管理、测试用例管理、软件缺陷管理、软件执行及软件报告等软件测试过程中的一系列的流程管理。自动化测试优缺点l自动化测试的优点:对新版本运行回归测试,提高测试覆盖度,缩短测试时间。可运行更多更频繁的测试。可执行一些手工测试困难和不可能做到的测试。更好的利用资源。提高测试的复用性。可以更快速的将产品发布到市场。增加软件的信任度。l自动化测试的缺点:不会比手工测试发现更多的缺陷。在产品频繁变更的条件下的维护代价会很高。通过自动化没有发现缺陷并不
15、代表系统便没有缺陷。对环境的依赖性要远远大于手工测试。对于流程的要求也要远远大于手工测试。对测试工程师的技能要求要比手工测试更高。对工具的依赖性较高。手工测试与自动测试的应用比较l这二者存在一些相通之处。但是与手工测试相比,自动化测试又有许多新的功能与特点,从而导致二者的差异。两者的差别如下图所示:l软件自动化测试只是对手工测试的一种补充,是绝不能代替手工测试,在实际中根据不同的应用、不同性质的测试情况,应该合理的选取自动化测试,而不能一味的为了自动化而选择自动化测试。常用的软件测试工具测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具。l白盒测试工具:一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。l黑盒测试工具适用于黑盒测试的场合,黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。l性能测试工具l测试管理工具:测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。