[转载]Silktest FAQ 系列

上一篇 / 下一篇  2007-11-29 13:56:20 / 个人分类:SilkTest

英文版地址http://silktest.blogspot.com/转载请注明出处http://blog.csdn.net/yuetiantian/,欢迎大家批评指正。

Q1:SilkTest无法为IE浏览器设置default Base state
result
文件的错误提示如下:

[ ] *** DefaultBaseState is invoking Browser
[ ] *** Error: Unable to start Internet Explorer 6 DOM
[ ] Occurred in AppError
[ ] Called from Explorer.Invoke at extend\explorer.inc(470)
[ ] Called from Browser.Invoke at browser.inc(361)
[ ] Called from DefaultBaseState at defaults.inc(126)
[ ] Called from main at $scrīptMain(2)
首先检查一下,确认所有silktest里面的ExtensionTools/Enable Extensions)都正确地激活了。如果排除了上面的可能性后,再确认机器上没有装两个不同版本的silktest
如果机器上没有装两个不同版本的silktest,还有一种可能就是在卸载过前一个版本的silktest以后没有重启就安装了后一个版本的silktest,如果是这样可以按如下的步骤操作:
卸载silktest
重启机器

重新安装silktest
重启机器


Q2:silktest
IE识别为一个C/S的应用程序。
在为浏览器激活了extension之后,silktest将把浏览器表现为一个c/s结构的应用,并且会产生下面的信息:
SilkTest detected a Client/Server application.
The required Extension has been enabled.
只有一种方法可以解决这个问题,你必须在机器上创建你自己窗口的profile:用administrator登录以后,在系统属性对话框中打开高级标签,然后打开user profile工具。一旦你这样操作了,你选择你的用户并且点击delete按钮。再次用你自己的帐户登录将会创建新的用户profile
顺便提示:如果你想要从profile存储信息,请单独保存这些信息。比方说你想保存你的favorites,可以先将其拷贝到其他的地方,在删除了user profile以后再将它拷贝回来。

Q3
silktestExtension Kitsilktest的一部分么?
一些功能和工具只有在你购买了它们并且授权给你以后才可用。
Extension Kit:
如果你购买了Extension Kit,你必须在安装silktest的时候提供密码以便安装它。如果你不知道密码,请联系silktest的客户服务人员。
Silktest Agent only
:如果你仅仅为silktest agent购买了license而不是silktest,那么在你安装完成后只有Agent、例程和silktest的位图工具是可用的。
升级:在silktest2006中,Extension kit已经被包括了,并不需要另外付费。如果你的维护合同是最新的,那么可以请Borland公司将你的silktest升级到2006R2.因为在旧版本中,extension kit是一个附件软件,你不得不单独购买。一旦extension Kit被安装了,QA工程师就可以从Start -> Programs > Borland > SilkTest 2006 > Documentation -> Extension Kit Documentation得到更多信息,同时也可以从silktest的在线帮助文件中得到有关信息(Help > Help Topics)

Q4
:我从哪里可以买到silktest的入门和进阶书籍?
一旦你的软件公司从Segue(准确点说现在是Borland)购买了silktestlicensesilktest的指南和用户手册将会邮寄到你公司的QA部门。现在在市场上还没有silktest的用户手册以及其他类似的书籍。我希望能够看到诸如“24小时学会silktest”之类的书籍,但是现在还没有人写出这样的书来。

Q5
:为什么Borland要购买Segue公司?
Nielsen
Borland的总裁和首席执行官说:
“Segue
的质量优化产品和服务将会完善我们的应用生命周期管理解决方案。将我们现在关注的重点从软件开发扩展到软件交付,以及通过成功的软件开发帮助客户公司增加商业价值都是一种自然的拓展。
这一决定使我们的重点扩展到应用程序生命周期管理,并且同时是我们的IDE商务关注于其收益,并且使我们能够去做为我们公司、客户和软件发展所应该做的那些正确的事情。
Segue
拥有一整套业界领先的包括自动测试的工具,它们是:

测试管理:为做计划,编写文档和管理整个测试过程提供了一个流程驱动的方法。
功能和回归测试:在构建到构建的过程中,确定你的应用真正地符合所有的需求。
负载,压力和性能测试:在交付前使用模拟真实环境的方法最大化应用的性能、可度量性和可靠性。
应用性能管理:可以24x7x365地评估应用交付后,你的终端用户的客户体验以及服务履行情况。

Q6:silktest还是winrunner
如果你不了解这两个工具,并且准备在它们之中选择一个,可以参考下面的搜索结果:
2005
413日在dice.com的搜索结果:
silktest-68
个项目
winrunner-514
个项目
2005
413日在s.f.bayarea craigslist的搜索结果:
silktest -17
个项目
winrunner-28
个项目

Q7:在字符串中如何匹配一个'?'问号字符?
如何使用MatchStr函数在一个字符串中寻找问号字符,而不是使用问号字符的通配符功能?
可以使用下面的代码
[-] main ()
[ ] STRING s = "this is a test?"
[ ] Print (MatchStr ("*{Chr(63)}", s))
上面的答案错误。
可以用
[-] main ()
[ ] STRING s = "this is a test?"
[ ] if(StrPos("?",s)) == 0)
[ ]  print("No ?")
[ ] else
[ ]  print("Have ?")

Q8:如果在执行DB_Connect过程中抛出了异常,如何能够确切地知道异常的种类?
最简单的办法是把DB_Connect调用用do...except扩起来,比如:
[-] do
[ ] Print ("MSSQL : dsn={sDsn};UID={SQL_User};PWD={SQL_Pwd}")
[ ] hdbc = DB_Connect ("dsn={sDsn};UID={SQL_User};PWD={ SQL _Pwd}")
[-] except
[-] ResOpenList ("Unable to connect to the DSN '{sDsn}' for the reasons below")
[ ] ExceptLog ()
[ ] ResCloseList()
一般说来,有很多中原因可能导致数据库链接错误,所以一般的检查错误的方法在这里是不适合的。
ExceptLog()
将会返回ODBC错误序号和文字,QA工程师和测试开发者都可以分析这些错误信息,并且做出反应。

Q9:如何捕捉到IE浏览器中打开的WORD文件的内容?
下面的4Test语言代码可以帮助你解决这个问题:
] STRING sSFileName="FileName"
[ ] STRING sTFileName="FileNameTarget"
[ ]
[-] window DialogBox DS
[ ] tag "{sSFileName} - Microsoft Word"
[ ]
[-] window DialogBox D1
[ ] tag "Document1 - Microsoft Word"
[ ]
[-] window DialogBox SaveAs
[ ] tag "Save As"
[ ] parent DS
[ ]
[-] window DialogBox Open
[ ] tag "Open"
[ ] parent D1
[ ]
[-] testcase Copy_Content_Of_Word_To_Notepad()
[ ] SYS_Execute("Start Winword.exe")
[ ] D1.SetActive()
[ ]
[ ] D1.TypeKeys("")
[ ] Open.TypeKeys("D:\{sSFileName}.doc")
[ ] Open.TypeKeys("-Word Document")
[ ] Open.TypeKeys("")
[ ] DS.SetActive()
[ ]
[ ] DS.TypeKeys("-a")
[ ] SaveAs.TypeKeys("-Text Only")
[ ] SaveAs.TypeKeys("D:\")
[ ] SaveAs.TypeKeys("")
[ ]
[ ] DS.DialogBox("Microsoft Word|$MessageBox").TypeKeys("")
[ ] DS.DialogBox("File Conversion - {sSFileName}").TypeKeys("")
[ ] DS.DialogBox("File Conversion - {sSFileName}").TypeKeys("")
[ ] DS.TypeKeys("-x")
[ ]
4Test
代码将会建立一个.txt文件,你可以读取该文件的内容并且验证你的数据。

Q10:如何追加内容到List of List of string中去?
可以使用下面的代码,注意split需要你自己实现。
[ ] LIST OF STRING lsOptions = {}
[ ] LIST OF LIST OF STRING llsOptions = {{}}
[ ] STRING sLine
[ ]
[ ] hFile = FileOpen("{sDataDir}Installation\{sDataFile}",FM_READ)
[-] while FileReadLine(hFile,sLine)
[ ] lsOptions = Split(sLine,",")
[ ] ListAppend(llsOptions, lsOptions) 

Q11: Segue的测试方法论是什么?
Segue的测试方法论是一个包括六个阶段的测试流程:
1)计划。决定测试策略并且定义测试需求。
2)捕捉。将你的应用程序中的GUI对象对象化,并且建立一个运行测试的框架。
3)创建测试。创建自动的,可重用的测试。利用录制和编程手段建立用Segue4Test语言编写的测试脚本。
4)运行测试。选择某些测试并且针对需要测试的软件执行它们。
5)报告。分析测试结果并且生成缺陷报告。
6)追踪。在待测软件中追踪缺陷并且执行回归测试。

Q12: DBTester提供了哪些函数?
DBTester提供了6个函数,你可以在你的4Test脚本里面直接使用它们
:
DB_Connect:
通过指定的OBDC DSN名打开一个数据库连接。DB_Connect返回一个连接句柄,该句柄可以被用在其他的DBTester函数中。SQL语句将被提交到数据库中去。
DB_Disconnect:关闭指定连接句柄所代表的数据库连接。所有该连接相关的资源将被释放。
DB_ExecuteSql:将指定的SQL语句发送到指定的数据库连接上执行。DB_ExecuteSql返回一个结果句柄,该句柄将会被DB_FetchNext函数使用。
DB_FetchNext:得到指定的查询结果句柄的下一行内容。
DB_FetchPrevious:得到指定的查询结果句柄的上一行内容。
DB_FinishSql:关闭指定的查询结果句柄。

Q13: silktest host是什么?
Silktest host是一个用来管理和执行测试脚本的组件。Silktest host通常运行在和待测软件不同的机器上。

Q14: 如何验证web应用中里面的动态文本?
我正在用silktest测试一个web程序,当我填写好form并且提交的时候,页面显示一个包含用户名的文本消息,例如:Successfully created test account for user John Winrunner。这个消息将会随着用户名的不同而变化,例如:Successfully created test account for user Andrew SilkTest。如何来验证这个动态的文本呢?
你肯定是要获取一些特别的消息,根据你的需求不同这里有一些建议可以采用:
1)采用消息的索引而不是标题来申明他们,因为标题可能不时地改变。
2)单独申明每个消息,然后检查他们是否存在。在某一时刻只能有一个存在,而且你可以根据他当时提供的消息继续进行将要做的事情。

3)用4Test代码将Agent的选项OPT_VERIFY_UNIQUE暂时设置为flase,例如:
Agent.SetOption (OPT_VERIFY_UNIQUE, FALSE)
// 4Test code that requires non-unique messages
Agent.SetOption (OPT_VERIFY_UNIQUE, TRUE)


Q15:SilkMeter
license server停了,我该怎么做?
silkMeterlicense server停了,并且这一周都无法使用,但是我却要在周末之前完成一个十分重要的测试项目。我如何能够按时完成这些工作
你需要联系Borland公司,申请一个零时的license或者是机动的license.

Q16:如何使用4Test语言删除cookie文件?
我用4Test脚本来测试web应用,我想知道如何在脚本执行过程中删除指定的cookie文件。
下面的4Test函数可以用来删除指定的cookie文件
[-] RemoveCookies (String sPath, String sFile)
[ ] //*******************
[ ] //* The function for removing a stored web cookie file.
[ ] //* sPath The complete path to the directory where the cookie is stored
[ ] //* Example "C:\Documents and Settings\Administrator\Cookies\"
[ ] //* sFile unique part of the cookie file name
[ ] //* for example "*winrunner*"
[ ] //*******************
[ ] LIST OF FILEINFO lfInfo
[ ] LIST OF STRING lsFileName
[ ] INTEGER iCount
[ ] STRING sLFile
[ ] Boolean bFound
[ ]
[ ] lfInfo = SYS_GetDirContents (sPath) //obtain directory content
[-] for iCount = 1 to ListCount(lfInfo) //for every FILEINFO in lsInfo
[ ] ListAppend(lsFileName, lfInfo[iCount].sName) //append the name of the files
[ ]
[-] for each sLFile in lsFileName //for each file name in lsFileName
[ ] bFound = MatchStr (sFile, sLFile) //check if the sFile string is in the File Names
[-] if bFound == TRUE //if the sFile string is in file name
[ ] SYS_RemoveFile (sPath + sLFile) //delete the file from the sPath directory
你可以简单地修改这个函数用来删除特定文件夹中的所有文件,或者通过循环来删除一组文件。


Q17:
如何关闭桌面上所有的窗口?
我想要关闭桌面上包括浏览器在内的所有窗口,但是MS SQL Query Analyzer, Visual SourceSafe, SecureCRT等软件在执行我的testcase前由于印度团队的要求已经被打开了,如何解决?
可以使用下面的4Test语言代码:
[-] CloseAllPrograms()
    [ ] //http://blog.csdn.net/yuetiantian/
    [ ] LIST OF WINDOW lwOpen = Desktop.GetChildren()
    [-] while (lwOpen !={})
        [ ] ListDelete(lwOpen, ListFind(lwOpen, Taskbar))
        [ ] ListDelete(lwOpen, ListFind(lwOpen, DialogBox("Program Manager")))
        [-] if(lwOpen == {})
            [ ] break
        [ ] Window w = lwOpen[1]
        [-] do
            [ ] w.SetActive()
            [ ] w.Exit()
        [-] except
            [ ] w.SetActive()
            [ ] w.Exit()
            [ ] lwOpen = Desktop.GetChildren()

Q18:
如何从MSExcel里面读取数据
我们尝试从excel数据表里面读取一块数据用于创建ddt。我们不希望在这个过程中使用特定的列名,我们希望能够从指定的数据区例如B4:D11里面读取数据。基本地,我们希望能够从所有的spreadsheet单元格中读取数据,并打印出来。
可以尝试下列代码:
[] hDBC = DB_Connect ("DRIVER=Microsoft Excel Driver (*.xls); FIRSTROWHASNAMES=1;READONLY=FALSE;
DRIVERID=790;DBQ=C:\QA.xls")
[] //run a SQL statement
[] hSQLq = DB_ExecuteSQL (hDBC, "SELECT * from [Sheet1$B4:D11]")
[] //while there are still rows to retrieve
[-] while DB_FetchNext (hSQLq, descrīption, var1, var2)
[] print("{++i}:{ descrīption } { var1} { var2} !")
[]
[] DB_Disconnect(hDBC)
从培训的角度,你还可以查看silktest用户手册中的以下函数:
·    DB_Connect
·    DB_ExecuteSQL
·    DB_FetchNext
·    DB_FinishSql
和数据类型
·    HDATABASE
·    HSQL
还可以从DBTester数据库函数中寻找有用的信息。

Q19:
如何执行一个字符串代表的函数?
silktest培训的过程中,我无法创建一个使用字符串作为函数名进行执行的脚本。有什么办法可以实现它么?
下面的4Test代码使用@作为函数引用。请确保你调用的这个函数已经被定义了,否则将会导致异常跑出。具体的@操作符使用细节可以在borland提供的语言参考附录中查找。
[-] testcase foobar() appstate none
// prints directory on the host machine where startup include files located
[ ] string sFunc = "GetStartupDir"
[ ] string sDirectory = @(sFunc)()
[ ] print(sDirectory)

Q20:
silktest中如何使用正则表达式?
QA
工程师希望知道如何在一个testcase中使用正则表达式来确认某个字符串是有效的格式。
不幸的是,即使是在最新的8.0版本中,silktest仍然不支持POSIX或者是Perl类型的正则表达式。聪明的QA工程可以用问号来匹配单个字符,用星号来匹配零个或者多个字符组成的字符串。SubStr,MatchStrGetFiled可能是有帮助的,但是它们都有一定的限制。

Q21:如何修复位图无法稳定的错误?
软件QA经理突然要求我建立一个验证位图的testcase。在testcase记录时,我选择了验证整个窗口,在testcase运行时出现了一个可怕的错误:"*** Error: Bitmap failed to stabilize"。整个QA team都无法在silktest的文档里面找到这个问题的解决办法,其中的一个同事还在QA经理办公室里面看到了解雇整个QA的通知书。
描述的这个位图错误发生在被验证的窗口不稳定的情况下:例如,某些东西在屏幕上频繁地变化。自动测试工具在指定的时刻无法得到被测窗口将无法捕捉到稳定的位图副本并且产生一个E_BITMAP_NOT_STABLE异常。
你们的QA工程是可以采用不同的方法捕捉到稳定的位图。
用下面的代码将各选项设置为0
Agent.SetOption (OPT_BITMAP_MATCH_COUNT, 0)
Agent.SetOption (OPT_BITMAP_MATCH_TIMEOUT, 0)
Agent.SetOption (OPT_BITMAP_MATCH_INTERVAL, 0)

Q22:
解释一下DOM扩展相对于VO扩展的优点

silktest中文档对象模型Document Object Model (DOM)浏览器扩展比可视对象Virtual Object (VO)浏览器扩展有以下一些优点:
l
记录器可以像QA工程录制时那样显示一个矩形来高亮控件。
lDOM
扩展能够识别文字的大小和对象实际的名字。
l
对于浏览器的大小和文字大小的设置没有依赖。
l
对没有边框的表格支持得比较好
lDOM
扩展相对于VO扩展能够提供更多的类和属性。


Q23:
如何用4Test代码设置代理服务器?
在准备QA面试前我准备写一段代码来为IE6设置代理服务器,迄今为止我找到了两个windows注册表键用来为我的windows xp机器设定代理服务器。
可以将下面的键值设置成1或者0从而启用或者取消代理服务器。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
可以用下面的键值来设置代理服务器的ip地址和端口号。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer
那么我接下来该怎么做呢?
下面的代码可以满足你的需要。顺便说一下,在你修改注册表示后,确定你已经将其备份了并且确定你们公司有人知道如何在出现问题后恢复注册表,或者只在测试的环境下使用该代码。

[ ] // Turns on specified proxy
[ ] // sProxyName -> ip:port
[+] configureProxyServer(STRING sProxyName)
[ ]
[ ] integer iKey = HKEY_CURRENT_USER
[ ] string sPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\"
[ ] string sProxyServer = "ProxyServer"
[ ] string sProxyEnable = "ProxyEnable"
[ ] string sProxyOn = "REG_DWORD: 0x00000001"
[-] do
[ ] SYS_GetRegistryValue(iKey, sPath, sProxyServer, TRUE)
[ ] SYS_SetRegistryValue(iKey, sPath, sProxyServer, sProxyName)
[-] except
[ ] Reg_CreateValue(iKey, sPath, sProxyServer, serverName)
[ ]
[-] do
[ ] SYS_GetRegistryValue(iKey, sPath, sProxyServer, TRUE)
[ ] SYS_SetRegistryValue(iKey, sPath, sProxyEnable, sProxyOn)
[-] except
[ ] Reg_CreateValue(iKey, sPath, sProxyEnable, sProxyOn)
[ ]
[ ]

Q24:silktest
自动测试工具的局限是什么?
Silktest
自动测试有如下的局限:
Silktest
可能无法识别某些window frames
偶尔会很难激活应用的窗口。

如果将测试系统迁移到其他浏览器或者操作系统上,可能会需要

相关阅读:

TAG: SilkTest

 

评分:0

我来说两句

Open Toolbar