-
TD运行过程出现RPC报错的处理方案一
2008-11-19 18:54:09
现象:
TD启动后,使用Site Administrator或Test Director功能时,提示“RPC 错误”。
关联现象:
1、 IIS中虚拟目录TDBIN的属性“应用程序保护”为“中(共用)”,且点击“创建”按钮后,改变“应用程序保护”为“高(独立)”,提示“COM+错误”;
2、 TestDriector Checker运行“Check All”时,“Virtual Directory”项有问题(?或×)。
3、 Distributed Transaction Cordinator服务不可启动。
问题:可在“应用程序”日志中看到MS DTC启动失败的错误信息。DTC启动失败导致RPC问题。
解决方法:
1、 根据“应用程序”日志提示,运行msdtc –restlog命令建立DTC日志文件;
2、 启动Distributed Transaction Cordinator服务;
3、 在IIS中,虚拟目录TDBIN的属性页点击“创建”按钮,将“应用程序保护”为“高(独立)”。此外,RPC服务的依赖关系中还存在一些其他的服务,如果其他服务不能启动,也会影响RPC正常启动。同样的道理,如果其他服务不能启动,应用程序日志会有相应提示,依照提示,应该可以解决问题。
-
右键菜单操作自动测试
2008-11-13 13:35:54
示例一:
rem 在一个页面的某链接上按右键
Browser("Google").Page("qwewqe - Google 搜索").Link("qwewqe 的博客空间联城网[免费发布信息][分类信息,信").Click micRightBtn
Dim wshShell
Set wshShell = CreateObject("Wscrīpt.Shell")
'模拟键盘操作,向下移动两次
For i=1 to 2
wshShell.SendKeys "{DOWN}" '模拟键盘操作
Next
'模拟键盘操作,按回车键,完成在新窗口中打开链接
wshShell.SendKeys "{ENTER}"
示例二:
rem 在Word中复制粘贴一段文字的右键操作
'选择需要复制的原文字,Drop后面的内容定义了文字块的坐标
Window("Microsoft Word").WinObject("Microsoft Word 文档").Drag 510,180
Window("Microsoft Word").WinObject("Microsoft Word 文档").Drop 645,178
'按右键
Window("Microsoft Word").WinObject("Microsoft Word 文档").Click 576, 182, micRightBtn
Dim wshShell
Set wshShell = CreateObject("Wscrīpt.Shell")
'模拟键盘操作,向下移动两次
For i=1 to 2
wshShell.SendKeys "{DOWN}" '模拟键盘操作
Next
'模拟键盘操作,按回车键,完成复制操作
wshShell.SendKeys "{ENTER}" '模拟键盘操作
'在需要粘贴的位置按右键
Window("Microsoft Word").WinObject("Microsoft Word 文档").Click 393, 564, micRightBtn
'模拟键盘操作,在右键菜单上向下移动三次,按回车键,完成粘贴操作
For i=1 to 3
wshShell.SendKeys "{DOWN}" '模拟键盘操作
Next
wshShell.SendKeys "{ENTER}" '模拟键盘操作 -
资料的下载与应用
2008-11-07 09:39:58
当我们在学习一种新技术、一个新工具应用的时候,很希望有一种快速的学习方法,使自己在最短的时间掌握需要掌握的知识。 网络确实是我们学习期间可以利用的最好资源。但网络上的资料五花八门,有入门资料,有详细介绍,也有高手的讨论。那么我们应该如何利用这些资料呢? 个人认为,必须随时清醒地认识自己需要什么! 首先,我们一点都不了解新东东的时候,还是先找点有案例操作的资料看看,不要追求资料内容的全面,只要有可操作性就好。按照资料上的案例去操作一下,掌握基本的概念和方法。 然后,搜索内容详尽的资料,分类存放在自己的资料夹。这些详尽的资料只需要有一份完整的参考书就好!其余哪些似乎很有用的资料就应该找到一个就仔细看一个,搞不懂的暂时不要下载。你有过这样的经历吗?下载了一大堆资料,放几年后当垃圾扔了,一次也没有时间看过!浪费网络资源和硬盘空间啊! 所以,有了基本知识后再去有针对性地找资料;不懂的时候不要随便下资料;下的资料就应该马上去研究;尽量不要制造人为的垃圾。 -
初学自动测试工具之我见
2008-10-31 22:13:24
很多初学自动测试工具的人不知道使用测试工具的关键问题是什么。我觉得主要问题是下面几点:1、首先必须进行完善的用例设计和测试过程设计
使用测试工具进行测试工作的第一步并不是录制脚本。而是应该在理解被测对象的基础上,进行用例设计和测试过程设计。用例设计包括用例数据、用例测试过程、预期结果等。然后将用例测试过程录制成测试脚本,将用例数据进行参数化。
完成一项功能或多项相关功能的测试时,需要设计合理的测试过程。不同的测试场景使用独立的一项测试操作实现(表现为一个独立的测试脚本文件)。多项相关功能测试时,按设计的测试过程进行测试操作的组合(如使用QTP的操作调用)。这样,每一个测试场景使用不同的测试数据,且各个测试场景独立存在,但有有机地结合起来形成一个完整功能的测试。
2、检查点是需要进行判断的
初学者大多会按照教程设置各种检查点,但并不会看测试结果中检查点的结果。其实,许多检查点只表明了两种结果:“通过”或“失败”。
关键的问题是:失败的理由、场景、状态等在结果中很难看出来。所以,在设置检查点后,还必须对检查点结果按照测试过程的业务逻辑进行判断,然后输出更为详细的结果。具体示例见我的上篇日志中的“ reporter.ReportEvent 1,"新增学生信息错误","信息存入数据库,但数据没有在保存后立即显示,数据编号:"+ DataTable("stu_ID", dtLocalSheet)
”。此外,检查点的参数化至关重要,因为只有参数化检查点,才能真正体现系统运行过程中动态的变化!
3、测试工具不能解决所有问题
许多初学者总希望测试工具能帮助他们解决所有问题。其实许多测试项目是必须靠手工完成的。如:界面布局的合理性、系统使用的方便性等。
自动工具永远只是辅助手段!所以测试工作的关键还是对测试对象的理解、测试用例与测试过程的设计。有了完善的用例,不管是手工测试还是自动测试,都是可以很好地完成测试任务的。
4、录制测试与编写测试脚本的目的是便于重复测试
既然是为了重复测试,那么就必须认真考虑和设计每个测试活动的前置条件(如在什么样的数据环境下才能开始这个测试活动?)和后置条件(如:本测试活动所录入的数据是否需要保留?)。否则就会很容易出现问题(如:录入数据时关键字重复!)。
-
QTP数据库检查和WEB表格数据检查
2008-10-25 15:46:33
一、前提
使用QTP测试数据输入是否成功。
在本例中使用三个办法:1、检查页面显示的记录条数;2、根据关键字检查数据库中数据;3、检查页面显示的最后一行数据是否为新增的数据。
二、方法及过程
1、录制正常数据录入并保存过程的脚本
2、在数据保存完,数据列表显示出来后进行检查,定义文本检查、数据库检查(内容见脚本中的说明)
3、修改脚本,实现数据库数据按数据表关键字检查
如输入编号为001的学生,检查是否存入了数据库,并使用脚本依次取得数据表的关键字进行数据库检查。
4、当数据库数据保存成功时,检查数据是否正常显示
三、测试脚本
'开始录入新增数据,所需要录入的数据存放在数据表中,循环执行测试,输入多组数据Browser("学生信息管理系统").Page("学生资料列表首页").Link("新增").Click
Browser("学生信息管理系统").Page("新增学生资料页面").WebEdit("studID").Set DataTable("stu_ID", dtLocalSheet)
Browser("学生信息管理系统").Page("新增学生资料页面").WebEdit("studName").Set DataTable("stu_name", dtLocalSheet)
Browser("学生信息管理系统").Page("新增学生资料页面").WebEdit("age").Set DataTable("stu_age", dtLocalSheet)Browser("学生信息管理系统").Page("新增学生资料页面").WebButton("保 存").Click
'保存后即回到列表显示页面
Browser("学生信息管理系统").Refresh '保证新录入数据后显示出来,正常情况下,不需要该刷新显示的操作
'检查页面显示的记录数是否新增,根据页面下端显示的记录数进行文本检查,正确数据存放在数据表中
Browser("学生信息管理系统").Page("学生资料列表最后一页").Check CheckPoint("8")rem 检查数据库检索结果是否与输入的数据一致
Browser("学生信息管理系统").Page("学生资料列表首页").Link("最后一页").Click
' 根据数据表的数据,设置数据库检索参数
Dim sql
' 取得数据库检查点的SQL语句
sql = DbTable("DbTable").GetTOProperty ("Source")
Dim e_w
' 取得SQL语句中条件的位置
e_w = inStr(sql,"=")
' 使用DataTable("stu_ID", dtLocalSheet)取得当前参数表中的关键字,使用该关键字在数据库中检索数据
sql = mid(sql,1,e_w ) + "'" + DataTable("stu_ID", dtLocalSheet) + "')"
DbTable("DbTable").SetTOProperty "Source", sql' 可以使用msgbox sql查看SQL语句是否正确
Dim row
Dim stu_id,stu_name
'数据库检查点建立时,以任意关键字检索一行需要检查的数据,本例检查编号和姓名
If DbTable("DbTable").Check (CheckPoint("DbTable_5")) Then '如果从数据库检索的数据和数据表的数据一致'从表对象(设计此程序前,手工从页面获取该WEB表对象)的最后一页取得最后一行的编号和姓名
row = Browser("学生信息管理系统").Page("学生资料列表最后一页").WebTable("学生资料").RowCount
stu_id = Browser("学生信息管理系统").Page("学生资料列表最后一页").WebTable("学生资料").GetCellData(row,3)
stu_name = Browser("学生信息管理系统").Page("学生资料列表最后一页").WebTable("学生资料").GetCellData(row,4)
'将取得的表对象的编号和姓名与数据表中的数据进行比较
If stu_id = DataTable("stu_ID", dtLocalSheet) and stu_name = DataTable("stu_name", dtLocalSheet) Then
Else
reporter.ReportEvent 1,"新增学生信息错误","信息存入数据库,但数据没有在保存后立即显示,数据编号:"+ DataTable("stu_ID", dtLocalSheet)
End If
Else
reporter.ReportEvent 1,"新增学生信息错误","信息没有存入数据库,可能是关键字重复或其他问题,数据编号:"+ DataTable("stu_ID", dtLocalSheet)
End IfBrowser("学生信息管理系统").Page("学生资料列表最后一页").Sync