配色: 字号:
软件测试自动化及其框架
2022-05-18 | 阅:  转:  |  分享 
  
第9章软件测试自动化9.1测试自动化的内涵9.2测试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9.5性能
测试工具特性要求9.6自动化测试框架第9章软件测试自动化自动化测试是相对手工测试的一个概念,由手工逐个地运行测试用例的操作
过程被测试工具或系统自动执行的过程所代替,包括输入数据自动生成、结果的验证、自动发送测试报告等。9.1测试自动化的内涵9.1.2
什么是测试自动化9.1.3软件测试自动化的优势9.1测试自动化的内涵9.1.1手工测试的局限性手工测试具有创造性,
适合特殊场景测试、特殊情况或边界条件以及那些复杂的逻辑判断、界面友好性测试。但是一些机械性、重复性的简单功能测试不适合采用手工测试
。而且手工测试在某些方面存在局限性。9.1测试自动化的内涵9.1.1手工测试的局限性通过手工测试(manualtest)
无法做到覆盖所有代码路径;许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到在系统负载、性能测试时,需要模拟大量
数据、或大量并发用户等各种应用场合时,也很难通过手工测试来进行在进行系统可靠性测试时,需要模拟系统运行十年、几十年,以验证系统能否
稳定运行,也是手工测试无法模拟的。如果有大量(几千)的测试用例,需要在短时间内完成,手工测试又怎么办呢?测试可以发现错误,并不能表
明程序的正确性。对一些关键程序需要利用数学归纳法或谓词演算等进行正确性验证。9.1测试自动化的内涵9.1.2什么是测试自动化
自动化测试=测试工具?用测试工具执行测试的过程?用工具完成测试任务?自动化测试是把以人为驱动的测试行为转化为机器执行
的一种过程,即模拟手工测试步骤,通过执行由程序语言编制的测试脚本,自动地完成软件的单元测试、功能测试、负载测试或性能测试等全部工作
。自动化测试集中体现在实际测试被自动执行的过程上,也就是由手工逐个地运行测试用例地操作过程被测试工具自动执行地过程所代替。9.1
测试自动化的内涵系统可以自动完成软件测试的各项工作:(1)测试环境的搭建和设置,如自动上传软件包到服务器并完成安装;(2)基于模型
实现测试设计的自动化,或基于软件设计规格说明书实现测试用例的自动生成;(3)脚本自动生成,如根据UML状态图、时序图等生成可运行的
测试脚本;(4)测试数据的自动产生;(5)测试操作步骤的自动执行,包括软件系统的模拟操作、测试执行过程的监控;(6)测试结果分析,
实际输出和预期输出的自动对比分析;(7)测试流程的自动处理,包括测试计划复审和批准、测试任务安排执行、缺陷生命周期等自动化处理。(
8)测试报告自动生成功能。9.1.3软件测试自动化的优势自动运行的速度快,是手工无法相比的。测试结果准确。例如搜索用时及时是0
.33秒或0.24秒,系统都会发现问题,不会忽视任何差异高复用性。一旦完成所用的测试脚本,可以一劳永逸运行很多遍永不疲劳可靠独
特的能力自动化测试有什么优势、带来什么益处?自动化测试带来的好处测试周期缩短更高质量的产品软件过程更规范提高软件测试的准确度和精
确度,也就是提高测试质量节省人力资源,降低企业成本充分利用硬件资源,降低企业成本。手工测试自动测试手工测试vs.自动测试高效
率(速度)高复用性覆盖率容易度量准确、可靠不知疲劳激励团队士气机械、难以发现缺陷一次性投入大发现缺陷率高容易实施
创造性、灵活性覆盖率量化困难重复测试效率低不一致性、可靠性低依赖人力资源正确认识测试自动化不现实的期望注定测试自动化的
失败测试自动化能:显著降低重复手工测试的时间建立可靠、重复的测试,减少人为错误增强测试质量和覆盖率测试自动化不能:完全替代手工测试
和手工测试工程师保证100%的测试覆盖率弥补测试实践的不足进一步说明各自应用范围在系统功能逻辑测试、验收测试、适用性测试、涉及物理
交互性测试时,多采用手工测试(黑盒)方法;单元测试、集成测试、系统负载或性能、稳定性、可靠性测试等比较适合采用TA;对那种不稳定软
件的测试、开发周期很短的软件、一次性的软件等不适合测试自动化功能测试时,工具更能发挥回归测试作用,因为工具缺乏想象力和灵活性而不能
发现更多的新问题(自动测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷),但可以保证对已经测试过部分进行测试的准确性和客观
性9.1测试自动化的内涵9.2测试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9.5性能测试工具特
性要求9.6自动化测试框架9.2测试自动化实现的原理9.2.1代码分析 9.2.2对象识别 9.2.3脚本技术9.2.4
自动比较技术9.2.5测试自动化系统的构成9.2测试自动化的原理和方法9.1.2代码分析代码分析:类似于高级编译系统,
在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。代码的静态分析的关键
是建立各种规则,而这种规则的建立是依赖于相应编程语言的语法。如依据EBNF(扩展巴科斯-诺尔范式)对Java代码的分析。9.
2.1代码分析9.2.2对象识别一般测试工具UI测试:测试工具对用户界面的操作,要么按照屏幕的实际像素坐标来定位,要么通过寻找
UI上的对象来确定操作目标。对象识别:获得对象的ID、对象名,然后根据对象的ID、对象名,确定其属性值等数据,在脚本语言中使用一类
API调用识别、操作GUI对象。9.2.2对象识别9.2.3脚本技术脚本是一组测试工具执行的指令集合,也是计算机程序的一
种形式。脚本可以通过录制测试的操作产生,然后再作修改,也可以直接用脚本编写语言编写脚本。测试工具中的脚本包含数据和指令,并包含:(
1)同步(何时进行下一个输入)(2)比较信息(比较什么、如何比较以及和谁比较)(3)捕获何种屏幕数据及存储在何处。(4)从另一个数
据源读取数据时从何处读取。(5)控制信息9.2.3脚本技术线性脚本,是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、
移动、输入数据等,所有录制的测试用例都可以得到完整的回放结构化脚本,类似于结构化程序设计,具有各种逻辑结构、函数调用功能数据驱动脚
本,将测试输入存储在独立的(数据)文件中,而不是存储在脚本中,针对某些功能测试时,操作步骤是一样的,而输入数据是不一样的,相当于一
个测试用例对应一组输入数据。关键字驱动脚本,是数据驱动脚本的逻辑扩张,实际上是封装了各种基本操作,每个操作由相应的函数实现,而在开
发脚本时不需要关心这些基础函数,直接使用定义好的关键字,这样脚本编写效率会提高,脚本维护也容易。线性脚本结构化脚本另外一个例子关
键字驱动脚本Zhu.Kerry@gmail.com文件服务器控制程序机房数据库服务器Web服务器客户端9.2.5测试自动化系
统的基本结构测试实验室,或一组测试用的服务器或PC。构建、存放程序软件包和测试软件包,并使测试工具可以存取这些软件包。Build系
统编译拷贝测试文件存储测试用例和测试结果,提高过程管理质量,同时生成统计所需要的数据。软件包负责测试的执行、调度,从服务器读取测试
用例,向测试环境中代理发布命令。拷贝测试结果负责显示测试结果、生成统计报表、结果曲线;作为测试指令转接点,接受测试人员的指令向控制
服务器传送。同时根据测试结果,自动发出电子邮件给测试或相关开发人员分派工作获取测试任务、数据测试人员在自己机器上安装的程序,许多时
候要写一些特殊软件来执行测试结果与标准输出的对比工作或分析工作。发布指令分派工作更新显示查询结果9.1测试自动化的内涵9.2测
试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9.5性能测试工具特性要求9.6自动化测试框架9.3测
试自动化的实施9.3.1测试工具的分类 9.3.2测试工具的选择 9.3.3测试自动化普遍存在的问题 9.3.4自动化测试
的引入和应用9.3.1测试工具的分类根据测试方法不同,分为白盒测试工具和黑盒测试工具、静态测试工具和动态测试工具等。根据工具的来
源不同,分为开源测试工具(多数是免费的)和商业测试工具、自主开发的测试工具和第三方测试工具等。根据测试的对象和目的,分为单元测试工
具、功能测试工具、性能测试工具、测试管理工具等更细的分类静态测试工具 -扫描分析:Findbugs,Jtest,C++Te
st -规则定义动态测试工具 -内存检测工具 -录制/回放工具 -负载测试工具 -监控工具9.3.2测试工具的选择 需
求,自己特定的需求开源、商业、自己开发?功能成熟度运行环境支持、服务价格选择流程9.3.3测试自动化普遍存在的问题不正确的观
念或不现实的期望缺乏具有良好素质、经验的测试人才测试工具本身的问题影响测试的质量测试脚本的质量低劣没有进行有效的、充分的培
训没有考虑到公司的实际情况,盲目引入测试工具没有形成一个良好的使用测试工具的环境其它问题测试自动化项目的本质测试自动化项目本
质上是软件开发项目一个测试自动化项目必须具有:清晰定义并严格实施的过程来自组织各级的支持周密的计划具体的设计和架构9.3.4自动
化测试的引入和应用找准测试自动化的切入点把测试开发纳入整个软件开发体系测试自动化依赖测试流程和测试用例软件测试自动化的投入
较大进行资源的合理调度9.1测试自动化的内涵9.2测试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9
.5性能测试工具特性要求9.6自动化测试框架9.4功能测试工具要求以HPQuickTestProfessioal(QA
T)为例:支持脚本语言(VBScript)能引用外部代码库(VBS)支持录制回放功能提供对象识别工具(ObjectSpy)
及多种方法识别对象支持抽象层和对象库(ObjectRepository)支持数据驱动测试支持关键字驱动测试脚本编辑器支持两种视
图(专家模式和关键字模式)9.4功能测试工具要求支持描述性编程支持各种类型验证点设置环境变量错误现场恢复测试结果多种状态(Pa
ssed、Failed、Done、Warning、Information)等并能过滤提供调试环境对外提供大量API和对象提供各种插
件9.4功能测试工具要求其他一些特性需要:容错处理机制命令行方式运行脚本分布式测试支持支持远程代理程序运行跨平台特性9
.1测试自动化的内涵9.2测试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9.5性能测试工具特性要求
9.6自动化测试框架9.5性能测试工具要求性能测试工具要能模拟实际用户的操作行为,自动生成测试脚本。并能针对脚本进行修改,
增加逻辑控制,完成参数化和数据关联。如使用不同的输入值来执行相同脚本的操作时,来匹配多个实际用户的操作行为。以LoadRunner
为例:(1)虚拟用户生成器:捕获最终用户业务流程创建测试脚本,作为负载测试的基础(2)控制器:用于组织、驱动、管理和监控负载测试的
中央控制。9.5性能测试工具要求以LoadRunner为例:(3)负载生成器:运行虚拟用户,以产生有效的可控制的负载。(4)分
析器:帮助查看、分析和比较性能结果,使用这些图和报告,可以标识和确定应用程序中的瓶颈,并确定需要对系统进行哪些更改来提高性能。9.
5性能测试工具要求作为性能测试工具还会提供以下功能:(1)能够支持广泛的通信协议和技术。(2)提供一个互动的环境,能建立持续且
循环的负载,限定负载,又能管理和驱动负载测试方案。(3)通过广域网模拟,可以比较精准地测试部署到广域网上的产品点到点性能,包括延时
、丢包、链接错误等,可以拥有一个更贴近真实部署环境的性能测试环境。(4)安全机制(5)网络组和配置(6)自定义测试结果分析9.1
测试自动化的内涵9.2测试自动化实现的原理9.3测试自动化的实施9.4功能测试工具特性要求9.5性能测试工具特性要求9.6
自动化测试框架9.6自动化测试框架SUTHarness/IDEScriptLanguageAgentsToolsSched
ulerReport工具任务安排脚本代理报告Harness/IDETA框架提供的服务测试件的存储与管理测试脚本开发调试(TIDE
)测试机/资源的管理任务安排测试执行启动与调度系统监控、Log收集测试结果分析测试报告查询……流行的TA框架xUnit,OCUn
it/GHUnithttp://wiki.eclipse.org/SWTBot/UsersGuideSWTbot,http:/
/marathontesting.com/marathonite/MarathonITEEclipseTPTP(单元性能)STA
F+STAXSelenium+WebdriverSelenium+JUnit/TestNGWhydoweperf
ormfunctionaltesting?Whenisfunctionaltestingperformed?What
problemsdoweencounterwhentheentiretestingphaseistobet
estedmanually?OCUnit/GHUnitiOS/MacOSX上XCode4.2下使用OCUnit、OCMock进行单元测试;GHUnit开源,GH-GitHubSWTbot,SWTBotisanopen-sourceJavabasedUI/functionaltestingtoolfortestingSWTandEclipsebasedapplications;SWT(StandardWidgetToolkit)MarathonITE:GUITestingforJava/SwingApplications;http://marathontesting.com/marathonite/Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格
献花(0)
+1
(本文系太好学原创)