36软件自动化测试理论及应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第五章软件自动化测试理论及应用一个例子:RationalFuntionalTester2第五章软件自动化测试理论及应用5.1自动化测试概念5.2自动化测试在软件开发周期中的位置5.3自动化测试局限性5.4自动化测试基本理论5.5自动化测试实施5.6常用工具介绍5.7IBMRational自动化测试解决方案架构5.8负载测试工具设计与开发5.9自动化测试成熟度35.1自动化测试概念用工具代替/辅助人工完成软件测试活动的过程,泛指所有能用工具辅助进行的有关测试活动。测试自动化的目标是对被测试系统进行自动测试。总的来说,测试自动化的目标是通过较少的开销,得到更彻底的测试,并提高产品的质量。45.1自动化测试概念自动化测试有如下特点:可以对程序的新版本自动执行回归测试可以执行一些手工测试困难或不可能进行的测试可以更好地利用资源测试具有一致性和可重复性测试的重用性可以更快地将软件推向市场可以增加软件信任度55.1自动化测试概念测试自动化误区:不现实的期望期望自动测试发现大量新故障安全性错觉自动测试的维护开销技术问题65.2自动化测试在软件开发周期中的位置系统设计详细设计单元测试集成测试系统测试验收测试测试设计工具逻辑设计工具物理设计工具管理工具覆盖测试工具调试工具动态分析工具自动测试工具性能、功能模拟测试工具需求分析静态分析工具程序编码75.3自动化测试局限性自动化测试不能取代手工测试。下列情况不适合于自动化测试:测试很少进行软件不稳定:如软件升级版本时,用户界面和功能频繁变化,此时自动化测试相应部分修改的开销较大。而软件不稳定时,手工测试可以很快发现故障。结果很容易通过人验证的测试:该种情况下的自动化测试非常困难甚至不可能,如彩色模式的合适程度、屏幕轮廓的直观效果,或选择制定的屏幕对象是否能够播放正确的声音等。涉及物理交互的测试:如在读卡机上划卡,断开设备的物理连接,开关电源等。85.3自动化测试局限性手工测试比自动测试发现的故障要多自动化测试主要是进行重复测试,一般情况下,自动化测试进行的工作是以前进行过的,因此被测试软件在自动化测试中暴露的故障要少得多。测试自动化主要用于回归测试,进行正确性验证测试,而不是故障发现测试。据经验数据统计,自动测试只能发现约15%的故障,而手工测试可以发现85%的故障。95.3自动化测试局限性自动化测试不能提高测试的有效性。自动化测试只是用于提高测试的效率,即减少测试的开销和时间。自动化测试不具有想象力自动化测试是通过测试软件进行,测试过程只是按照运行机制执行。手工测试时可以直接判断测试结果的正确性,而自动测试许多情况下测试结果还需要人工干预判断。手工测试可以处理意外事件,如网络连接中断,此时必须重新建立连接。手工测试时可以及时处理该意外,而自动化测试时该意外事件一般都会导致测试的中止。105.4自动化测试基本理论自动化测试过程中主要涉及以下内容:测试驱动、桩和驱动数据的自动生成:主要是依据所采用的测试方法,如等价类、边界值等自动产生多组测试数据。自动测试输入:工具录制测试者所做的所有操作,并将这些操作写成工具可以识别的脚本。被录制的脚本中含有测试输入(包括文本和鼠标移动、点击菜单和按钮等动作)测试脚本技术:用于自动测试过程存放测试步骤、测试数据等相关内容。测试结果的自动比较:将预期输出与程序运行过程中的实际输出进行比较。自动测试执行:工具读取脚本并执行脚本命令,可以重复测试者的操作。在执行脚本过程中可以完成测试结果的自动比较。自动测试管理:完成测试计划、测试大纲、测试缺陷管理等工作。115.4.1自动测试输入对于支持命令行的软件系统,采用批处理方式输入是最好的测试用例自动化输入方式对于不支持命令行的软件系统,一般来说可以采用商用化录制回放测试工具生成输入脚本,或自己编制测试用例输入脚本125.4.2自动比较简单比较复杂比较动态比较执行后比较135.4.3测试结果输出和转储测试结果输出一般有以下形式:基于磁盘的输出:包括数据库、文件和目录/文件夹;基于屏幕的输出:主要是文本和特殊图形字符、图形图像等;多媒体信息的输出:包括不易比较的测试输出形式如播放的声音、显示的视频等;通讯报文的输出:主要是网络中传送的通讯报文,一般以帧形式出现。145.4.4脚本技术线性教本结构化脚本共享脚本数据驱动脚本关键字驱动脚本155.4.4.1线性教本线性脚本是通过录制手工执行的测试用例时得到的脚本,这种脚本包含所有的击键(键盘和鼠标)、控制测试软件的控制键及输入数据的数字键,可以添加比较指令实现结果比较线性脚本的优点主要是:不需要深入的工作或计划,只需坐在计算机前录制手工任务;可以快速开始自动化;对实际执行操作可以审计跟踪;用户不必是编程人员;提供良好的(软件或工具)演示。线性脚本的缺点主要是:一切依赖于每次捕获的内容;测试输入和比较是“捆绑”在脚本中的;无法共享或重用脚本;容易受软件变化的影响;修改代价大,维护成本高。165.4.4.2结构化脚本结构化脚本类似于结构化程序设计,含有控制脚本执行的指令,支持顺序、选择和循环(叠代控制)3种基本控制结构,一个脚本可以调用另一个脚本。另外由于引进其他指令改变控制结构,可以提高重用性,增加功能和灵活性,改善维护性。需要一定的编程技术。主要有优点是健壮性更好,更灵活;但是脚本更加复杂,测试数据依然“包含”脚本中。175.4.4.3共享脚本共享脚本可以被多个测试用例使用,脚本之间可以相互调用;可以允许同一软件应用或系统的测试之间共享脚本;在不同的软件应用或系统的测试之间也可共享脚本。共享脚本的优点是:以较少的开销实现类似的测试;维护开销低于线性脚本;删除明显的重复;可以在共享脚本中增加更智能的功能。共享脚本的缺点是:需要跟踪更多的脚本,文档、文字以及存储,如果管理得不好,很难找到适当的脚本;每个测试仍需要一个特定的测试脚本,维护成本仍然比较高;共享脚本通常只是针对被测软件的某一部分。185.4.4.4数据驱动脚本数据驱动脚本是将测试输入存储在独立的(数据)文件中(*.XLS、*.TXT、*.DAT等),而不是存储在脚本中,脚本中只存放控制信息。用变量取代在录制的脚本代码中固定输入内容,如:名字、地址、数据等,然后通过变量从外部(文件、电子表格、数据库等)读取数据的测试数据驱动脚本的优点是:可以很快增加类似的测试(脚本相同,数据不同);测试者增加新测试不必具有工具脚本语言的技术或编程知识;对于第二个测试及后续测试无额外的脚本维护开销。数据驱动脚本的缺点是:初始建立的开销较大;需要专业(编程)支持。195.4.4.5关键字驱动脚本关键词驱动脚本实际上是较复杂的数据驱动技术的逻辑扩展。用变量取代在录制的脚本代码中的对象标识,如:按钮、编辑框等控件ID等,然后在脚本中通过这些变量来操作这些对象进行。关键字驱动脚本有如下特征:测试脚本由控制脚本、测试文件、支持脚本组成;控制脚本不再受被测软件或特殊应用的约束;测试文件中使用关键字描述测试事例;控制脚本依次读取测试文件中的每个关键字并调用相关的支持脚本。关键字驱动脚本的优点:独立于测试脚本语言开发测试事例所需脚本数量是随软件的规模而不是测试的数量而变化的可以用与工具(及平台)无关的方法实现测试实现测试的方法可以剪裁适合测试者而不是测试工具205.4.5系统运行数据统计性能测试和内存泄露检查的测试过程中,不是预期输出与实际输出的比较,而是运行数据采集并统计输出结果。主要利用操作系统提供的API函数,测试软件获得系统信息并进行统计和分析。215.5自动化测试实施被测试软件的测试方式选择并不是所有的软件都需要进行自动化测试。225.5自动化测试实施自动化测试实施前的准备工作在进行测试自动化之前,对被测试软件的可测试性接口的分析和处理是非常重要的工作;通过对接口的分析,制定出测试输入和输出的脚本文件结构。235.5自动化测试实施自动化测试流程自动化回归测试在实施上,一般分为两个主要步骤,一个是测试结果输出脚本模板生成,该部分需要人工进行,一个是自动化回归测试。245.5自动化测试实施测试结果输出脚本模板生成流程图被测试软件O人工验证结果测试用例脚本1●●●测试用例脚本NO●●●测试输出1测试输出N测试工具●●●测试输出1测试输出N模板库255.5自动化测试实施整个自动化回归测试流程图:被测试软件O测试用例脚本1●●●测试用例脚本NO●●●测试输出1测试输出N模板库测试输出1测试工具●●●测试输出N比较预期输出PASS故障反馈相同不相同265.6常用工具介绍序号测试的类型简述1代码分析器监督程序代码复杂度,是否遵循标准等等2覆盖分析器校检哪一部分的代码已经被测试,面向代码语句覆盖、条件覆盖、路径覆盖等等3内存分析器边界检查和漏洞检测等等4性能测试工具测试在不同的负载级别之下客户/服务器和WEB应用程序等等5WEB测试工具检验链接是否有效,客户和服务器端的代码、WEB站点的交互是否正常工作6其他工具测试实例管理,文件管理,BUG报告,配置管理工具275.6常用工具介绍性能测试工具Loadrunner嵌入式软件测试工具CodeTestLogiScope缺陷管理跟踪工具TestDirectorBuzilla285.6.1LoadRunnerLoadRunner®是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。295.6.1LoadRunner305.6.1LoadRunner创建虚拟用户创建真实的负载实时监测器分析结果以精确定位问题所在重复测试保证系统发布的高性能其他特性EnterpriseJavaBeans的测试支持无线应用协议支持MediaStream应用完整的企业应用环境的支持315.6.2嵌入式软件测试工具纯软件测试工具纯软件的测试工具采用的软件插桩技术,在被测试代码中插入一些函数,用这些函数来完成数据的生成,并上传数据到目标系统的共享内存中。纯硬件测试工具:主要是逻辑分析仪和仿真器。逻辑分析仪主要通过监控系统在运行时总线上的指令周期,并以一定频率捕获这些信号,通过对捕获的信号进行分析来判断程序当前运行状况。仿真器通常采用内存标记技术,它所关心的也是处理器从外存的代码段读取数据的情况纯硬件测试工具是不具备对内存分配进行分析和检查的能力325.6.2.1CodeTestCodeTest系统包括3种嵌入式软件测试和分析工具:CodeTestNative,CodeTestSoftware-In-Circuit和CodeTestHardware-In-Circuit,每一种工具代表了嵌入式系统开发的每一个周期的不同阶段,它们分别由于:在开发阶段早期,没有目标硬件,只有宿主机开发环境和测试环境。在开发阶段中期,系统的集成工作、硬件开发板已出现。在产品确认阶段,此时产品进入系统综合测试阶段。335.6.2.1CodeTestCodeTest是一个硬件辅助软件的测试与分析工具,它一方面吸取软件插桩技术,并对这种技术进行改善,纯软件工具插入的是一个函数,而CodeTest插入的是一条赋值语句,它在汇编级也是一条语句,所以它执行的时间非常短,同时避免了被其他的中断所中断,所以它对目标系统的影响非常小。另一方面,CodeTest从纯硬件的测试工具那里吸取了从总线捕获数据的技术并且对它进行了改善,CodeTest改变了采样方式,它通过监视系统总线,当程序运行到插入的特殊点的时候才会主动地到数据总线上去捕获数据。345.6.2.1CodeTest由于CodeTest对软件插桩技术

1 / 64
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功