AutomatedTestingWord文档格式.docx
《AutomatedTestingWord文档格式.docx》由会员分享,可在线阅读,更多相关《AutomatedTestingWord文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
创建一个新测试工程
创建工程组ProjectSuite
点击在菜单项选择项menu->
File->
New->
Newprojectsuite创建一个新的测试工程组
Name:
工程组名称。
例如中,咱们将其命名为PSToolset
Location:
工程组寄存的文件目录。
创建ProjectSuite的目的
●能够利用同一个TC来操作不同的Project
●利用同一个TC编辑器设置编辑不同的Project及其子项
●一次执行所有的project
●在一个Suite下,共享信息
创建工程Project
Newproject创建一个新的测试工程
ProjectName:
测试工程名称。
例如中,咱们将其命名为SuperCDelphi
Language:
利用的脚本语言。
一个工程只能利用一种脚本,若是需要利用多种脚本语言,需要在工程组下创建多个工程,每一个工程能够选择利用不同的脚本。
工程文件和各类脚本文件寄存的目录。
其文件目录如下图
最上层为ProjectSuite,其包括各个Project和suiteLog的子文件夹。
注意,关于TC的编辑器,一次只能打开一个ProjectSuite,不能同时打开多个ProjectSuite,可是能够对ProjectSuite下多个Project进行编辑。
当TC编辑器当前已经打开ProjectSuite的时候,选择创建Project,新创建的Project将会被添加到当前的ProjectSuite下;
若是TC编辑器没有打开任何ProjectSuite,现在选择创建Project,TC将会先自动创建一个默许的ProjectSuite,然后包括新创建的Project。
Project和ProjectSuite的查看与编辑是在TC环境中的ProjectExplorer窗口中
添加测试程序TestedApps
选择ProjectExplorer->
PSToolset->
SuperCDelphi->
TestedApps鼠标右击菜单当选择Add->
NewItem...,对话框当选择测试程序。
在添加完程序以后,TC左侧的workspace中会新增一个sheet名为TestedApps,在此窗口中能够看见新增的app的各种属性:
●Icon:
App图标
●Launch
●Name:
App别名。
此处Name能够被修改,在测试脚本中如需引用App,那么通过该名称访问挪用
●FIlename:
App应用程序实际文件名。
●Count:
启动的进程数量。
如设置为1,表示当在TC中启动App时,只启动一个进程;
如设置为2,表示在TC中启动App时,同时启动两个进程。
●FilePath:
App所在的文件目录
●RunMode
●Parameters:
设置app的启动参数。
关于STBData能够设置用户名密码作为其启动参数,那么在TC中启动STBData时即可没必要手工输入用户名密码,通过验证后直接进入主界面。
若是在无需测试登录验证的用例中,将用户名密码设置在Parameters中,能够简化测试脚本的编写。
参数例如如下(用户名为admin密码为空):
/username=admin/password="
"
界面如下
编写测试脚本
捕捉、映射App中的对象
测试脚本除有自己的执行逻辑,最重要的部份是需要和App中对象进行交互,这包括关于App中对象属性的读写、函数的挪用、事件的扩展。
因此,在撰写脚本之前,咱们需要先捕捉到App中的对象,并将对象映射成为便于脚本编写访问的表达式。
什么缘故需要映射App中对象呢
●第一,关于TC,它是在App运行期捕捉到其包括的各个对象,在TC中关于App的对象引用不同于在App编码实现时关于对象的声明。
App在运行时内部关于对象的引用,是执行器依照指令将堆地址赋值给变量,从而使得程序能够通过对变量的引用正确访问到运行时分派的堆地址。
可是,关于TC来讲,无法明白App内部堆分派和引用的逻辑,因此其只能通过捕捉Windowshandle来获取得对象,再匹配对象运行时属性值,将正确的对象映射到脚本中声明的对象变量。
一样用于匹配过滤对象的属性包括Class、Name、Caption,固然也能够在设置映射的时候手工增减和修改属性。
●在TC脚本访问对象有多种方式,既能够通过查询进程对象及其子对象来访问到,例如能够写成(DelphiScript):
Sys.Process('
STBData'
).VCLObject('
fmImpDefine'
pgcDefines'
)可是这种写法显然过于繁杂,而关于需要多属性过滤的对象来讲也不严谨,因此TC还提供了再次映射,称之为alias,即它能够将依照属性过滤后的MappedObject对象映射,再次映射改变其层次关系(namespace),从而使得在脚本中需要访问对象时,撰写代码加倍简练。
要捕捉App中的对象,比较简单的方式是,在Projectexpleror中点击PSToolset->
NameMapping,在TC的workspace中会打开NameMapping窗体
点击按钮(MapObjetcFromScreen),显示出如下窗体
该窗体提供的功能,捕捉对象有三种方式:
●按住FinderTool拖拽,当拖拽开始的时候,TC界面会自动隐藏,按住鼠标左键开始移动,当鼠标移动到需要捕捉的控件上时,控件周围会显现红色边框,此刻松开鼠标左键,呼唤出MapObject窗体查看编辑对象的映射。
●点击SelectObjectwithcursor,点击后TC界面会自动隐藏,然后能够移动鼠标,当鼠标放在能够捕捉的控件上时,控件周围会显现红色的边框,此刻你能够按快捷键SHIFT+CTRL+A呼唤出MapObject窗体查看编辑对象的映射。
●在Object输入框中直接输入表达式。
固然,若是利用以上两种方式捕捉对象,TC会自动生成出对象映射的表达式显示在Object的输入框中,现在也能够对其进行修改。
当已经捕捉一个对象后,会在Object编辑框中显示出对象的映射表达式,现在,点击Highlight按钮,TC会调出捕捉的控件对象到前台,而且在其周围显示闪烁的红色方框。
点击OK按钮回到TCworkspace的NameMapping界面。
在NameMapping界面的左半部份有上下两个子窗口:
●MappedObjects
●Aliases
在TC脚本中驱动App执行指定的动作
TC驱动App执行动作一样是通过挪用App对象的函数来实现的,这些被挪用的函数的执行逻辑即为所需的测试动作,例如点击按钮、关闭窗体、遍历数据集……这些函数有些是标准函数(TC概念的standard函数),有些是App对象中自概念的函数(通过debugagent取得)。
查看对象的函数能够通过以下方式,在ProjectExplorer中点击PSToolset->
SUperCDelphi->
NameMapping,在MappedObjects窗口中点击已经映射(Mapping)的对象,在右键菜单当选择ShowinObjectBrowser。
(注意,在利用ObjectBrowser查看对象的时候,第一必然要保证该对象已经被创建在进程中)
TC显示ObjectBrowser,在Methods页中能够看到所有能够访问的对象的函数,选择其中的一个,能够在窗体下方显示出函数的描述信息。
在Methods中能够看到三类函数:
●Standard:
TC概念的标准函数,这些函数不是对象实现中声明的,而是和实现语言相关的一些公共操作,即,关于利用delphi实现的程序其standard部份的函数相同,而关于利用C#实现的程序又是另一组standard函数。
Standard和Actions这两类函数,由于是TC中概念的,因此若是App在编译的时候没有将DebugInfo和RTTI信息编译进程序中,在ObjectBrowser中仍然能够看见并访问到这些函数,只是DebugAgent的函数可能可不能被访问到。
●Actions:
也是TC概念的函数,性质同Standard,但此类函数一样是完成某些动作。
●DebugAgent:
这种函数是App中对象声明的函数,只有在App编译的时候选择将DebugInfo信息编译进程序的时候,才可被TC访问到。
由于不同语言,例如Delphi、C#、VB等对象声明和编译实现都不相同,因此具体有哪些DebugInfo会被编译进App,仍然需要查询具体的语言编译器说明和TC对不同版本语言的支持信息。
在挪用DebugAgent这种函数的时候,需要明确明白这些函数在原语言中声明的数据类型,和这些数据类型是不是可被TC支持,若是支持的话会被映射成何种类型,可是即便如此,在传递复杂类型,例如结构、对象、数组……仍然可能会犯错,因此需要十分警惕。
启动测试程序TestedApp
在TC中启动App通常有两种方式
●在TestedApps中直接启动。
若是你没有撰写启动app的脚本而是期望在利历时通过其他方式启动app,或只是调试一部份脚本的时候,能够利用该种方式启动
●在脚本中启动。
启动例如如下DelphiScript:
TestedApps.STBData.Run();
VBScript:
callTestedApps.STBData.Run()
点击按钮
由于Click方式是被TC概念的Actions,因此关于绝大部份可视控件都能够执行Click操作,但各个控件的实现逻辑不同,因此有些控件可能会响应Click,有些控件可不能响应Click。
第一映射Button对象,然后执行脚本。
要紧函数说明:
●Click:
leftbuttonclick
●ClickM:
middlebuttonclick
●ClickR:
rightbuttonclick
●DbClick:
leftbuttondoubleclick
●DbClickM:
middlebuttondoubleclick
●DbClickR:
rightbuttondoubleclick
DelphiScript:
l.btnDefinitions.Click();
Aliases.Sys.STBData.fmConsol.btnDefini