SilkTest入门及4Test简明语法教程.docx
《SilkTest入门及4Test简明语法教程.docx》由会员分享,可在线阅读,更多相关《SilkTest入门及4Test简明语法教程.docx(19页珍藏版)》请在冰豆网上搜索。
SilkTest入门及4Test简明语法教程
4Test简明语法教程及SilkTest入门
SilkTest简介
SilkTest是一款先进的自动化功能测试工具,它可以帮助用户检查程序是否如预期那样运行地准确,稳定。
通过SilkTest,用户可以跨多语言、多平台和多个Web浏览器对单个业务、混合业务进行同步功能测试。
SilkTest的工作原理是通过自动捕获,检测用户第一次执行测试的操作,并把其对应的输出结果保存为预期结果(通过设置验证点)。
然后在后续测试中,SilkTest会自动重复用户交互的操作,并检查实际结果是否和第一次保存的预期结果一致,自动产生测试结果和测试报告,供用户进行检查和分析。
通过SilkTest,用户能够发现功能性的软件缺陷,并且确保那些跨越多个应用程序和数据库的业务流程在初次发布就能避免出现故障,并保持长期可靠运行。
图表1 工作三部曲:
录制-修改(参数化)-回放时自动运行,记录结果
1.1.导航式的工作流程,简单易用快速上手
SilkTest使用工作流式的导航按钮模式,在SilkTest中,无论是基本的录制-回放流程,还是数据驱动工作模式,都可以通过简单点击工作栏上的导航式按钮直接完成,通过工作流模式的导航功能,用户可以迅速上手,快速掌握和使用SilkTest。
图表2 简单方便的工作流程,易于操作
1.2.广泛支持常用应用环境,投资最大化
SilkTest支持众多的应用环境。
未经改动的单一测试脚本能够在WindowsNT和Windows2000,WindowsXP的多种本地化版本上同时运行。
因为SilkTest支持包括HTML、JavaScript、ActiveX、Java、VisualBasic,Delphi,.Net和C/C++在内的多种开发平台,进一步缩减了测试开发和执行时间。
SilkTest还认可国际化键盘,并提供对现场敏感数据(如日期和数字)的全面处理能力,从而确保本地化版本的一致性运行。
1.3.集成测试计划,有效管理测试用例
SilkTest集成测试计划(TestPlan)模块;在测试计划模块,用户可以增加和设计测试需求,维护测试相关的人员,测试类型,测试时间等信息。
并把完整的测试需求分解为众多小的需求用例,每个需求用例可以设置单独的测试属性,如设计其对应的测试负责人等。
同时,每个测试需求都可以和测试用例直接关联,如设计某个小的需求是测试人员A负责,其需要执行的测试用例是测试用例B等。
通过测试计划模块,测试需求和测试用例进行了的映射,对测试用例是一个集中的管理。
图表3 设计测试计划,管理测试用例
通过SilkTest写Web测试Case
这一篇里我们要来说明一下一个典型的Web流程是什么样的?
首先,需要在你ST上面配置一下你要测的WebApplication:
Step:
1.新建一个项目Projet
ST提供2种测试流程:
基本流程(Basic)和数据驱动流程(DataDriven)。
Basic就是由无 到有建立一个测试流程,数据驱动流程就是从已有的TestCase中再拿出来跑一遍或改吧改吧当成新的case直接用了。
我们选择Basic的,新建一个测试YAHOO网站的项目,项目名叫YahooTest
File-》newProject
2.启动扩展EnablingExtensions
在IE上打开要测试的web主页,然后在ST上点击EnablingExtensions,
选择要测试的web应用
此时会让你重开一次web应用
重新打开web应用,点下“Test”按钮
出现以下对话框后,表示环境参数已经配置ok,可以录制testcase了
3.录制脚本
点击工具栏上的“RecordTestCase”
输入TestCaseName,选择Applicationstate(两种,目前主要选择none,可以自己比较下)
点击“StartRecording”开始录制脚本
业务操作完成后,点击“Done”按钮
点击“PastetoEdior”,保存对象库文件*inc,可以根据实际需要更改fame.inc文件名
注意再保存Script脚本文件
会提示是否添加到project中,点击“是”
这时看到silktest左侧的File下,Profile、Script、Include目录下都有文件:
4运行脚本
点击“RunTestCase”,选择要运行的Testcase,Run即可
5创建测试计划TestPlan
上节中的运行testcase,只能运行一个testcase,如果需要组织多个testcase顺序运行,需要通过TestPlan组织运行;
如下图:
保存,在testplan文件中填写testcase的描述,如testcase1,之后在此行右键,选择“TestDetailed
”,添加具体的testcase脚本
如下图,则表示testcase1的脚本已经添加完成,之后可再继续添加其他testcase
运行TestPlan:
点击工具栏上的按钮,如下图所标,运行此testplan中的所有testcase脚本
数据库相关函数
DBTest提供一下六个常用函数,你可以在testcase中直接使用它们:
1.DB_Connect:
:
通过指定ODBCDSN名,打开一个数据库链接。
DB_Connect返回一个连接句柄,该句柄可以被其他DB_Tester函数使用。
SQL语句可以被提交给数据库。
例如:
con=DB_Connect("dsn=dsn_name")
2.DB_Disconnect:
关闭指定的数据库连接。
所有有关连接的资源都会被释放。
例如:
DB_Disconnect(con)
3.DB_ExecuteSql:
将指定的SQL语句发送到指定的数据库连接,并且执行。
DB_ExecuteSql返回一个查询结果句柄,该句柄可以被DB_FetchNext函数使用,例如:
res=DB_ExecuteSql(con,"SELECT*FROM...")
4.DB_FetchNext:
从指定的查询结果句柄返回下一行数据。
例如:
DB_FetchNext(res,col1,col2,col3,...)
5.DB_FetchPrevious:
从指定的查询结果句柄返回前一行数据。
6.DB_FinishSql:
关闭指定的结果句柄。
例如:
DB_FinishSql(res)
对象库inc文件中的对象的Tag说明
Tag:
tag是对象的实际名称,它和indentifier不同,indentifier是对象的逻辑名。
Silktest使用tag在记录和执行testcase的过程中识别待测应用程序中的对象。
Testcase从来不会使用tag来引用一个对象,它们通常使用indentifier来引用对象。
这下面列出的是各种tag类型。
Caption:
是对象显示给用户的标题或者Label。
Priortext:
离对象最近的左边或者是上边的statictext中的内容。
Priortexttag使用^字符开头。
Index:
在父对象中所有相同类型对象中出现的顺序(从左上到右下排序)。
Indextag必须以#字符开头。
WindowID:
是对象的GUI内部ID。
WindowIDtag必须以$字符开头。
Location:
对象的物理位置(坐标)。
Locationtag必须以@字符开头。
Attributes:
是Html对象的属性名。
如果你一个对象不是Html对象,将不会记录任何信息。
注意:
并非所有的对象都有所有的tag。
比如对话框,并没有WindowID。
所以它们也没有windowIDtag。
下面是一个CheckBox可能的tag值情况。
Tagtype
Value
Comment
Caption
Casesensitive
Priortext
^FindWhat:
"FindWhat"istheneareststatictextaboveortotheleftofthecheckbox
Index
#1
TheCaseSensitivecheckboxisthefirstcheckboxinthedialog
WindowID
$1041
Location
@(57,65)
Attributes
[blank]
AttributesareonlyrecordedforHtmlobjects.
第一篇4Test基本运算和概念
1.4test的运算符
4test的运算符基本上都和从左到右的,比如:
:
:
,->,(),[],*/%**,+-,==!
=等等。
有几个是例外的,它们的运算顺序是从右到左的,比如:
@,[type]!
~unary-unary+++--
像++或--这种数学运算符,我们下面会讲到。
加减单目运算:
(和c++像)
2.赋值形式为
X=-5 //X被赋值为+5
X=+5 //X被赋值为-5
++自加和--自减方式和C++语言规则一样:
n=10
x=++n //运行完,x为11
或
N=10
y=n++ //运行完,y为10,n为11
3.数学运算
+-*/%表示的意义和C++语言中一样,分别是加,减,乘,取模,取余;
**求幂这个符号在C++语言中没有,似乎C语言中也每有这个符号,这个符号来自Fotran语言的求幂操作**,在4test语法中它的含义是也是求幂。
4.用+-进行的集合运算
集合C=集合A+集合B //这表示集合C的成员为集合A和集合B的并集
集合A=集合C-集合B //这集合A由表示属于C但不属于B的的成员构成(相对补集的概念)
举例(书上的例子)
Red-[COLORS]{Green,Blue} //结果为Red
Red-[COLORS]{Red,Green,Blue} //结果为空
5.逻辑运算符
&―――与
||――――或
!
――――非
位运算符(Bitwiseoperators):
6.位运算
什么叫位运算?
很简单,位(bit)就是单个的0或,和C++语言一样,有6种位运算:
& 与运算 //两个位置都为1时,结果为1,其他的结果都等于0
| 或运算 //两个位置只要有一个位置为1,则结果为1。
^ 异或运算 //两个位置不相等时,结果为1,否则为0
~ 非运算(求补) //取反,0变成1,1变成0
>> 右移运算 //算子从高位向低位移动
<< 左移运算 //算子从低位向高位移动
7.If条件语句
格式如下
If(布尔表达式)
字句1
Else
字句2
更简洁的表达方式是:
If(布尔表达式)?
字句1:
字句2
8.数组结构
格式有以下几种:
{a,b} //元素之间用逗号隔开,比如LISTMyList={“a”,“b”}
{…} //下面跟字母要素,一行表示一个,如SETColors={…}
Red
Green
//这个就是后面跟的是文本,关键字是text, 如LISTMyList=
A
“b”
c //最后一项指c,前面有个空格
9.连接操作
这个是指用+号把两个字符串或数组接起来,前提是必须都是字符串或数组。
书上的例子:
//stringconcatenation
STRINGsFirstName=“Bullwinkle”
STRINGsLastName= “Moose”
//“”writesaspace
STRINGsFullName=sFirstName+“”+sLastName
//prints:
BullwinkleMoose
Print(sFullName)
//listconcatenation
LISTlsMelon={…}
“watermelon”
“cantaloupe”
LISTlsBerry={…}
“strawberry”
“raspberry”
LISTlsFruit=lsMelon+lsBerry
Print(lsFruit)
//Prints
//{watermelon,cantaloupe,strawberry,raspberry}
10.类型转换操作
格式
[type-name]expr
表示把expr所表示的类型转换成[]里面的那种类型
例子:
testcaseCastStringToInt()
STRINGsName=“SilkTest”
Print([INTEGER]sName==81) //强制转换成整形,这时候输入的是Silktest的首字母S的ASCII值
11.Member-of操作
这个就是OOP中的.的用法,取的对象的属性或服务,要结合面向对象语言的特点来了解,因为4test也是门面向对象的脚本语言,比如
TextEditor.Search.Find.Pick()
又如取当前打开的文件的名字:
FileOpen.Filename.sValue="test.txt"
12.引用(Referenceoperator)
这个就是用字符@指引的操作,格式是@expression,用来告诉编译器去哪里去数据,@后面可以接函数,方法,控件,字窗口或具体的值等多种形式,help里只列举了一个很简单的例子:
INTEGERi=RandInt(1,32)
@("Test{i}")()
这个语句是让编译器去Test{}中去取数据,i没有确切的值,所以有可能是Test1或Test2,,,,
面是从枚举类型中引用的例子:
typeCOLORisenum
>Red
>Green
>Blue
windowDialogBoxMyDialog
>CheckBoxRed
>CheckBoxGreen
>CheckBoxBlue
VOIDMyFunction()
>COLOReColor
>foreacheColorinValuesOfEnum(COLOR)
MyDialog.@([STRING]eColor).SetState(TRUE)
13.Machinehandleoperator
讲这个Machinehadle之前必需了解一下silktest中的所谓的Agent的概念,在ST的宣传稿中我们经常可以发现ST把整套工具分成两部分来讲了:
一方面是它的IDE,它ST的图形界面(GUI),可以用来开发,编辑,运行和调试4test文件。
另外一个就是Agent,它就是用来把4test脚本中的命令转换成GUI专用的命令的,可以把它理解为Agent就是IDE放出来放在AUT上面的解释测试脚本的程序,或在录制脚本时,把测试人员的动作转换成脚本回传给IDE的这么一个东西,可以把IDE看成是个Server。
IDE能够与Agent进行实时通讯,所以Agent和IDE是否在同一台PC上并不重要,测试时可以让IDE根据测试场景驱动多个Agent与它通讯。
在程序中有某句的句柄(handle),在我们这里机器也有机器的handle,就是测试环境中的机器的标签的意思(其实少的话,用计算机名足已),测试中全靠HMCACHINE值来识别机器。
HMACHINE是4test的一种数据类型,以下是几个和HMACHINE相关的函数:
SetMachine() //把特定的机器设成当前活动的机器
GetMachine() //返回当前机器的HMACHINE值,这个值可能是通过Connect或SetMachine设置的
Connect() //连接某个特定的机器,并返回其HMACHINE值
看一个例子:
Example
HMACHINEtarget_machine //定义了target_machine的类型为HMACHINE
HMACHINEhost_machine //定义了hostcomputer的类型为HMACHINE
STRINGsTarget="sunfish" //sunfish为远程主机在网络中的计算机名
STRINGsHost="moonray" //moonray为本地主机在网络中的计算机名
host_machine=GetMachine() //获得本地主机的HMCHINE值
target_machine=Connect(sTarget) //获得远程主机的HMCHINE值
Print("ActivewindowonTarget:
",Desktop.GetActive()) //取得远程主机上正在运行的窗口
SetMachine(host_machine) //切换回本地主机,就是把本地主机设成当前机器
Print("ActivewindowonHost:
",Desktop.GetActive()) //取得本地主机上正在运行的窗口
Disconnect(target_machine) //断开远程主机
现在回到我们的Machinehandleoperator,它有两种表达方式:
hMachine->distrib_func //箭号
和
[hMachine]distrib_func //[]号
其实都是让哪台机器干某哪种活的意思,如
[sMachine]TextEditor.Search.Find.Pick
["server"]doThis()
第二篇:
4Test语言和C语言对比
这个章节主要要说明一下4Test和C语言的不同之处。
1.ANYTYPE类型
首先出场的就是这种NB哄哄的类型,它可以囊括所有你想要的类型,因为它就是anytype,直译就是任何类型,NB吧!
!
2.数组的初始化
在C语言中,数组在初始化的时候是要指出元素的个数的,这是个具体的数值而不能是个变量,并且在C语言中当数组初始化后,数组的大小就不在改变;而在4test这么NB的语言当中,数组的大小是可以随时变化的,也就是它不管你在初始化的时候定义的是多大,它都可以在运行的过程中动态地去改变它。
参见两个函数:
ArrayResize()和ArraySize(),其中的ArraySize经常用来确认数组的大小在运行时是不是被改变了。
3.Boolean类型
在4Test中存在Boolean类型,其值不是TURE就是FALSE;而在标准的C中(我说的是90标准C哦)是没有布尔类型的,据说C程序员觉得用int的1和0来表示会更快一些,因此C程序员们经常再用到bool表达时,会在前面加上define或直接使用1和0:
#defineTRUE1
#defineFALSE0
4.字符型char
4Test中没有char类型来表示单独的字母,但有string类型,其实差不多。
5.枚举类型
C语言中枚举就是一种类型,4test中enum更接近于一种c中说的struct(结构),说不清楚了,看例子大家就知道了。
在C中:
enumCOLOR{red,white,blue}
4Test中:
typeCOLORisenum
red
white
blue
然后COLOR就是一种类型了,所以还可以
COLOR rcolor
Real,integer和number型:
在C中float和double到了4Test都变成了Real型了:
举例:
8.12
499.0
-6.7511
1e30
1.45e-10
在C中int,long,short和unsigned到了4test中就变成了integer只此一种,别无分店了。
在4Test中还有一种number型,它又包含了Real和