1软件测试技术由安博测试空间技术中心提供2第六章软件测试工具6.1软件测试自动化6.2测试工具概述6.3功能测试工具WR36.1软件测试自动化软件测试自动化定义各种测试活动的管理和实施,包括测试脚本的开发和执行,均使用一种自动化测试工具来验证测试的需求。为什么需要软件测试自动化?测试效率高测试过程可完全重现4自动化测试是万能的吗?5自动化测试的问题:前期耗用的工作量大对测试人员的技术水平要求较高需要对测试脚本(程序)进行维护6易手工测试的情况:手工很容易测试的程序只需要测试一次的程序要马上进行测试的程序要使用直觉和经验才能测试的程序不可预知结果的程序易自动化测试的情况:要经常执行测试的程序压力测试手工测试自动测试7自动化测试对测试人员的要求:有编程能力,至少会使用一种高级语言(C/C++、java、VB等)有一定系统设计的能力8自动化测试过程:制定测试方案编写、修改、维护测试脚本测试实施96.2测试工具概述测试工具分类:白盒测试工具黑盒测试工具测试管理工具其他10白盒测试工具针对代码进行测试,测试中发现的缺陷可以定位到代码级。白盒测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。对于不同的开发语言,白盒测试工具实现的方式和内容差别较大。目前测试工具主要支持的开发语言包括:标准C、C++、VisualC++、Java、VisualJ++等。11白盒测试工具简介IBM公司的白盒测试工具有:工具名支持语言环境功能PurifyVisualC/C++、Java内存错误检测PureCoverageVC、VB、Java测试覆盖程度检测QuantifyVC、VB、Java测试性能瓶颈检测12PurifyPurify使用了具有专利的目标代码插入技术(OCI:ObjectCodeInsertion)。Purify在程序的目标代码中插入了特殊的指令用来检查内存的状态和使用情况。在Windows中,只要运行Purify,填入需要分析的程序及参数,Purify会自动插入检测代码并显示报告。13PureCoveragePureCoverage是一个面向VC,VB或者Java开发的测试覆盖程度检测工具,它可以自动检测你的测试完整性和那些无法达到的部分。PureCoverage的主要功能特性:即时代码测试百分比显示未测试,测试不完整的函数,过程或者方法的状态表示在源代码中定位未测试的特定代码行PureCoverage缺省显示未测试代码为红色,已测试代码蓝色,而死状态行(通常是函数,过程或者方法中的非活动代码部分)黑色。14QuantifyQuantify是用来评估产品的性能的工具。用Quantify执行要测的产品,他会搜集各个函数/方法的调用关系和执行时间等。15Quantify16其他白盒测试工具针对不同的编程语言,有不同的进行单元测试的白盒测试工具,例如:Java——JunitPHPUnit——PHPVBunit——vbVisualUnit——C/C++Dunit——Delphi17黑盒测试工具黑盒测试工具包括功能测试工具和性能测试工具。工具名公司名功能WinRunnerMercury功能测试工具,检测应用程序是否能够达到预期的功能及正常运行。AstraQuicktestMercuryWeb自动化测试工具RobotIBMRational功能测试、性能测试工具QARunCompuware功能测试工具,类似于WinRunner。SilkTestSegue功能测试工具。LoadRunnerMercury负载测试工具。18测试管理工具测试管理工具用于对测试计划、测试用例、测试实施进行管理工具名公司名功能TestDirectorMercury提供测试需求、测试计划、缺陷管理TestManagerIBMRational测试管理工具。提供测试计划、测试评估、测试报告管理,以及链接测试用例与需求ClearQuestRational缺陷和变更跟踪系统BugzillaMozilla免费的缺陷管理工具TrackRecordCompureware缺陷管理工具19测试工具的选择功能适用运行平台价格工具的连续性206.3功能测试工具WR人工测试非常无聊且浪费时间与人力。WinRunner软件可以仿真鼠标的动作和键盘的输入,而不需要人工干预。WinRunner软件可以加速测试过程。重复使用脚本进行测试。21一、录制回放示例从“开始”—“程序”—“WinRunner”—”WinRunner”启动WR软件。在工具栏上选择”Record”按钮录制脚本。对被录制的软件进行操作。按”左Ctrl+F3“按钮停止录制。在WinRunner中记录下脚本。选择工具栏上”Save(保存)“按钮保存脚本。选择工具栏上”FromTop“按钮从开始运行脚本。22二、WR如何识别程序中的GUI对象一般的Windows应用程序通常由窗口、按钮、list、菜单等组成,在WR中这些窗口、按钮等通称为GUI对象。WR软件会学习这些GUI对象的属性,如class、label、width等来识别GUI对象。WR给每一个GUI对象分配一个易理解的逻辑名。23set_window(“Login“,15)button_press(OK)窗口的逻辑名是“Login”,按钮的逻辑名是“OK”。一个对象的物理描述包含了唯一标识对象的属性,每个属性都有对应的值。例如,“OK”按钮有如下物理描述:{class:push_button,label:OK}类的属性是“pushbutton”,标签的属性是“OK”。24WR提供工具GUISpy来查看GUI对象的属性。(选择菜单”Tools“—”GUISpy“)25WinRunner通过以下三种方式学习软件的GUI:使用RapidTestScriptWizard学习软件每个窗体中所有GUI对象的属性。通过录制脚本的方法学习被录制的那部分软件中所有的GUI对象的属性。使用GUIMapEditor学习单个GUI对象、窗体或某个窗体中所有GUI对象的属性,如果软件开发过程中GUI改变了,用户可以使用GUIMapEditor重新学习改变部分的GUI对象。(菜单”Tools“—”GUIMapEditor“)26三、理解GUIMapWR识别完GUI对象后,把GUI对象存储到GUIMap文件中。GUIMap文件中包含了GUI对象的逻辑名和物理描述。当运行一个测试,WinRunner从测试脚本中读取对象的逻辑名,通过逻辑名查找GUIMAP获取相应的物理描述,转而执行相应操作。一个GUIMap文件不能包含两个有相同逻辑名的窗体,一个窗体中不能包含有两个相同逻辑名的对象。27GUIMap的两种模式GUIMapFilePerTest模式每次新建测试就自动新建一个GUIMapFile每次保存测试时,GUIMapFile自动被保存每次打开测试时,GUIMapFile自动被加载该模式适合初学者使用GlobalGUIMapFile模式该模式可以使多个测试共享一个GUIMapFile该模式需要手动存储GUIMapFile每次打开测试时,需要手动加载GUIMapFile该模式是WR软件的默认模式该模式适合熟练的WR用户使用28在主菜单中进行如下选择可以进行两种模式的切换。“TOOLS”—”GeneralOptions”—”General“选项卡29四、录制脚本的两种模式WinRunner在录制脚本时有两种不同的记录模式:ContextSensitiveAnalogContextSensitive该模式以GUI对象为基础,WR会识别使用者点选的GUI对象。Analog该模式WR软件主要录制鼠标移动的轨迹、鼠标的点选、键盘的输入建议只在录制绘图软件时选择该模式F2可以进行两种模式切换30录制脚本时的建议录制前关闭不必要的程序和窗口尽量在录制结束时,回到开始录制的画面,以便测试脚本可以重复运行31五、同步点测试测试程序每次操作的响应时间不一定,有时快,有时慢。此时WR会等待一个固定的时间,若实际测试中应用程序的响应超过了这个固定时间,则测试运行失败。例如:从数据库取数据等待一个窗口开启等待某个状态信息出现解决办法:增加WR预设等待时间(缺点脚本执行速度变慢)在测试脚本中插入同步点32增加WR预设等待时间主菜单中选择“Tools”—“GeneralOptions…”—”Run”—“Settings”33插入同步点在脚本中光标移到需要插入同步点的位置。如button_press(“InsertOrder”);后面。插入同步设置。策略:当“Insertdone”的提示在主窗口上方出现时,再让测试继续。选择”Insert”—“Synchronization”—“ForObject/windowBitmap”。34插入同步点将手形光标移到应用程序中去捕获”InsertDone“的位图信息。35插入同步点脚本中出现对象等待的函数,等待图形出现,等待时间为1s,把“1”改为“10”。再次运行脚本。36六、GUI对象检查点通常运行一个应用程序,是通过GUI对象的行为来测定功能是否与需求一致。检查GUI对象可以通过创建GUIcheckpoints来实现,一个GUICheckpoints可以检查一个GUI对象属性的行为。检查点可以检查在应用程序的运行中是否出现了预期的对象或窗口。比如,按钮是否可用,单选按钮是否选中等。插入检查点选择”Insert”—“GUICheckpoints”—“ForObject/windowBitmap”。在录制脚本中进行插入。37GUI对象检查点的一些建议为了让测试通宵运行,可以设置让WR检查到Checkpoint的不匹配项时不弹出信息框。选择“Tools—GeneralOption…—Settings”,清除“Breakenwhenverificationfails”的复选框。这将使测试在运行时不会中断。捕捉对象属性时,单击为直接在脚本中插入Obj_GUI_Check语句;双击为显示选中对象的属性,查看选择后再确定是否插入OBJ_GUI_Check语句。38七、建立数据驱动测试实际测试中通常需要用不同的测试数据对系统进行测试。而录制的脚本中数据是固定的。可以采用数据驱动的方式使每次脚本运行时使用不同的测试数据。即所谓的参数化测试。(菜单“Tools”—“DataDriveWizard”)