自动化功能测试及用例设计袁玉宇yuanyuyu@263.netyuyu_yuan4@hotmail.com本部分课程目标测试与自动化测试WinRunner介绍测试用例设计自动化自动化是对策略、经验、工具及工件的使用,它减少了对手工或人的干预或非技能方面的介入,及重复或冗长工作需要。测试自动化自动化测试直接依赖于整个软件流程的可自动化成熟度。包括:测试流程、持续编译、持续集成、测试系统发布、测试执行、测试管理、缺陷测试跟踪等多个方面的自动化实现和整合。测试和自动化的区别自动化测试的误区期望自动化测试能够完全取代手动测试期望自动化测试发现大量的新缺陷期望自动化测试能够智能的完成绝大多数工作期望自动化测试是一劳永逸的自动化测试的目的缩短测试周期,加快测试进度,从而加快产品发布进度实现更大规模、更大频率的测试减少手工测试的人力资源投入,降低测试成本提高测试覆盖率保证回归测试的可控性和一致性自动化测试的目的提高测试用例执行的可靠性在不降低质量的情况下由低技能的人员完成定义清晰的测试过程,降低和避免测试人员的个体对整体测试的影响提高测试人员的工作效率,并使更高技能的人员有时间和资源,对产品进入更深层次的测试。辅助测试人员完成手工无法完成的测试工作。测试用例的质量指标检测软件缺陷的有效性测试用例的可仿效性测试用例执行、分析和调试的经济性测试用例的可修改行Keviat图适合做自动化测试情况产品型项目大型增量式开发、持续集成项目能够自动编译、自动发布的系统需要多次重复机械性动作的测试适合做自动化测试情况简单而烦琐的基于命令行交互方式的测试完成一些手工难以完成的测试目标涉及大量第三方软件或设备的测试不适合做自动化测试情况按需定制型项目(通常为一次性的短期项目)项目周期很短的项目业务规则复杂的项目不适合做自动化测试情况依赖于人类的习惯、感官或智力的测试内容不需要频繁测试的软件软件不稳定被测软件产品提供API的软件基于命令行的接口基于GUI基于终端接口自动化测试的最佳实践自动化测试的代码效率不是越高越好自动化测试的执行过程和记录应便于分析自动化测试的设计和脚本可读性越好越好自动化测试的最佳实践自动化测试的脚本可维护性是重中之重完整性是自动化测试成功的前提自动化测试脚本之间是松耦合或彼此独立的自动化技术模拟/虚拟技术对象管理技术脚本技术比较技术自动化技术执行技术录制、回放技术同步技术健壮性技术自动化测试的脚本技术线性脚本结构化脚本共享脚本数据驱动脚本关键字驱动脚本线性脚本线性脚本是录制手工执行的测试事例得到的脚本。如果用户只使用线性脚本技术,即录制每个测试事例的全部内容,则每个测试事例可以通过脚本完整地被回放。几乎任何重复的操作都可以使用线性脚本技术自动化。线性脚本的优点简单,只需坐在计算机前录制手工任务。可以快速开始自动化。对实际执行操作可以审计跟踪。用户不必是编程人员(如果不修改)线性脚本的缺点无共享或重用脚本。容易受软件变化的影响。修改代价大。如果回放脚本时发生了录制脚本时没有发生的事情,引起整个测试失败。结构化脚本结构化脚本类似于结构化程序设计,结构化脚本中含有控制脚本执行的指令。控制脚本执行的指令:顺序,选择和叠代。结构化脚本例子PartoftheScribbletestscriptSelectOption’File/Close’FocusoOn’Close’LeftMouseClick’Yes’FocusOn’SaveAs’Typecountries2LeftMouseClick’Save’IfMessage=‘Replaceexistingfile?’LeftMouseClick’yes’EndifFocusOn‘Scribble’SelectOption’File/Exti’结构化脚本的优缺点健壮性好,对一些容易导致测试失败的特殊情况进行处理。可以执行许多其他类似的功能,如重复的指令可以使用循环结构。可以作为模块被其他脚本调用。脚本变得更加复杂,而且测试数据仍然’捆绑’在脚本中。共享脚本脚本可以被多个测试事例使用。这意味着脚本语言允许一个脚本被另一个脚本调用,而这多少已成为所有测试执行自动化工具的标准。这种技术思路是产生一个执行某种任务的脚本,而不同的测试要重复这个任务,当要执行这个任务时只需要在每个测试事例的适当地方调用这个脚本。共享脚本例子ScribbleOpen(FILENAME)LeftMouseClick’Scribble’FocusOn’Scribble’SelectOption’File/Open’FocusOn’Open’Type’countries’LeftMouseClick’Open’共享脚本例子ScribbleSaveAs(FILENAME)FocusOn’Scribble’SelectOption’File/Close’FocusOn’Close’LeftMouseClick’Yes’FocusOn’SaveAs’TypeFILENAMELeftMouseClick’Save’FocusOn’Scribble’SelectOption’File/Exit’共享脚本例子CallScribbleOpen(‘countries’)FocusOn’Scribble’SelectOption’List/AddItem’FocusOn’AddItem’Type’France’LeftMouseClick’OK’FocusOn’Scribble’SelectOption’List/AddItem’FocusOn’AddItem’Type’Germany’LeftMouseClick’OK’FocusOn’Scribble’CallScribbleSaveAS(‘TEST2’)共享脚本的优点以较少的开销实现类似的测试。维护开销低于线性脚本。删除明显的重复。可以在共享脚本中增加更智能的功能。共享脚本的缺点需要跟踪更多的脚本,文档、名字、以及存储,很难找到适当的脚本。对于每个测试仍需要一个特定的测试脚本。因此维护成本比较高。共享脚本通常是针对被测软件的某个部分。数据驱动脚本数据驱动脚本技术将测试输入存储在独立的数据文件中,而不是存储在脚本中。脚本中存放控制信息(如菜单导航)。执行测试时,从文件中而不是直接从脚本中读取测试输入。这种方法的最大好处是同一个脚本可以运行不同的测试。数据驱动脚本例子Controlscript:ScribbleControlOpenFile’ScribbleData’ForeachrecordinScribbleDataReadINPUTFILEReadNAME1ReadNAME2ReadOUTPUTFILE数据驱动脚本例子CallScribbleOpen(INPUTFILE)FocusOn’Scribble’SelectOption’List/AddItem’FocusOn’AddItem’TypeNAME1LeftMouseClick’OK’FocusOn’Scribble’SelectOption’List/AddItem’FocusOn’AddItem’TypeNAME2LeftMouseClick’OK’FocusOn’Scribble’CallScribbleSaveAS(OUTPUTFILE)EndFor数据驱动脚本例子Datafile:ScribbleDataCountries,Sweden,USA,test1Countries,France,Germany,test2Countries,Austria,Italy,test3Countries,Spain,Finland,test4数据驱动脚本优点可以很快增加类似的测试。测试者增加新测试不必具有工具脚本语言的技术或编程知识。对第二个测试及后续测试无额外的脚本维护开销。数据驱动脚本缺点初始建立的开销较大;需要专业编程支持;必须易于管理。关键字驱动脚本就是较复杂的数据驱动技术的逻辑扩展。分为三层结构:一是控制脚本;二关键字动作描述;三是数据或测试用例。WinRunner定义WinRunner是一个自动化企业功能测试工具,能够用来测试应用程序是否按照预料的结果进行运行。通过录制脚本,校验和自动的对用户的交互进行回放,WinRunner能够确定出应用中的缺陷,并且保证跨越多个应用和数据库的业务过程,能够在初次和以后的时间里面稳定的无缝的运行。手工测试和自动化测试的区别执行用户操作等待处理完成检查应用是否具有预期功能重复以上操作直到所有应用得到验证1234生成自动测试脚本加入同步点加入检查点运行一个脚本或一组脚本1234WinRunner标准版WinRunner配置Web、VisualBasic、PowerBuilder、ActiveX等四种Add-insDelphi、Java、Baan、Wap等附加的Add-ins利用一个测试工具WinRunner能够测试大部分的企业应用利用检查点很容易对数据进行检查市场上最为强大的功能测试工具WinRunner支持最为广泛的企业环境Legacy•3270Emulators•5250Emulators•VT100EmulatorsCustomC/S•VB4,5,6•PB4,5,6,6.5•OracleDev2000•Forte3.0.l.3•Delphi2,3,4ERP/CRM•BaanIVc,V•SAPR/33,4•OracleApps10,10.7,11•Peoplesoft6,7,7.5•SiebelE-Biz•IE4.x,IE5.x•NS4.0&higher•DHTML•XML•AWTfromJDK1.1.7•JFC•JDK•SymantecVisualCafé•ActiveX•OracleJinitiator•OracleNCA•AnimatedImagesWinRunner自动化测试过程1.设置初始化条件2.记录用户的操作3.设置结束条件4.运行测试脚本生成自动测试脚本生成自动测试脚本1加入检查点执行测试3加入同步点24记录并且生成脚本#AutomobilePurchaseFormset_window(AutomobilePurchaseForm,10);edit_set(CustomerName,ThomasPaine);edit_set(Address,234WillowDrive);DepartDate:___/___/___FromCity..:________________ToCity.....:________________Flight......:_______OrderNumber....:__________Customer........:___________________BillingDate......:edit_set(Date,12/12/03);list_select_item(Make,BMW);button_press(InsertSale);ThomasPaine234WillowDrive12/12/03BMW19732002tiiedit_set(Model,2002tii);edit_set(Year,1973);回放脚本DepartDate:___/___/___FromCity..:________________ToCity.....:________________Flight......:_______OrderNumber....:__________Customer........:___________________BillingDate......:ThomasPaine234WillowDrive12/12/03BMW19732002tiiPurchaseCompleted...#AutomobilePurchaseFo