踏实,努力向上!

发布新日志

  • 我回来了

    2011-11-30 13:45:02

    2011年11月30号,我重新回来51testing网。
    此时我已经是一个两年的游戏测试人员了,已经是一个妈妈级人物了。
    为了我的宝贝,我要努力。
  • WinRunner与QTP——我们该选择谁

    2009-11-14 12:03:48

    区别

    1.工具试用环境(功能自动化测试工具的选择与开发语言有关系,性能测试工具选择与协议有关系)的区别,这个区别很重要是自动化实施选择的第一步:
    qtp 和 wr都适用的范围:Web-Related Environments, IE, Netscape, AOL JDK, Java Foundation Classes, AWT Symantec Visual Café ActiveX Controls ERP/CRM: Oracle: Jinitiator, 11i, NCA Custom Client Server: Windows C++/C Visual Basic Operating Systems: Windows 98, 2000, NT, ME, XP Legacy: 3270, 5250 Emulators VT100
      仅仅 wr试用的
    Custom Client/Server :PowerBuilder Forte Delphi Centura Stingray SmallTalk ERP/CRM: Baan PeopleSoft Windows Siebel 5, 6 GUI Clients Oracle GUI Forms PowerBuilder
    Forte Delphi Centura Stingray SmallTalk ERP/CRM: Baan PeopleSoft Windows
    Siebel 5, 6 GUI Clients Oracle GUI Forms
      仅仅qtp试用的范围:
    ERP/CRM SAP Siebel 7.x PeopleSoft 8.x.Net WinForms WebForms .Net controls Web Services XML, HTTP WSDL, SOAP J2EE, .Net Multimedia RealAudio/Video Flash

      自动化测试工具的选型第一步就是看该工具是否适用于本软件系统的开发语言环境,否则自动化实施就会功败垂成。如:我们有学员去一家公司,该公司 是用的是c#开发的软件,他们在用wr座自动化测试,经常会遇到识别对象的问题,脚本运行失败等,就是一个典型例子,工具选型错误。
    从上边来看,现在大多数说wr做c/s架构,qtp做b/s架构的测试这是一种错误的说法,应该说他们更适用于什么架构的测试,因为适用环境决定了他们可以做这些事情。

    2.工具本身特点:
      验证点问题:wr有四种验证点,qtp有9种验证点(题外话 robot有13种验证点),这种验证点的类型越多提供的验证方式越多,就越减少验证脚本的开发难度,而且有些验证点类型是qtp独有的,比如xml验证 点,wr就没有,所以从这点上来看,验证点多其实简化脚本开发难度,让软件更容易使用,那么和你的团队状况有关系,比如你的团队是技术人员欠缺的话,那么自动化测试工具的易用性更加重要。


    3.脚本开发的特点:
      wr是tsl脚本,类c,qtp是vbs脚本,从脚本的难度来看,vbs更容易上手,c要上手周期比较长,所以根据一个团队的人员技术情况,会选择一个更加符合实际情况的工具


    4.脚本的可扩展性
      脚本开发过程中对脚本的稳定性,识别对象的能力,脚本的可维护性等都有要求,wr是c的脚本他没有办法直接调用window底层的com对象(这些对象的调用弥补了脚本开发的不足),只能通过两种办法一种是通过其他工具(vc,delphi等)开发相应的dll(vb除外,因为vb开发的也是com),这样加大了团队技术人员的要求;一种方法是写vbs,然后再wr中调用,这种方法的缺点是脚本的衔接性不好。而qtp利用的是微软的脚本引擎,直接可以调用vbs语句,可以直接调用底层com对象,对脚本开发能力 大大的增强了
    这里要说的是wr可以做到qtp的效果,但是需要绕行,增加了脚本开发的难度,不是说他不能做。

    5.脚本对象的维护
      在脚本开发过程中,这两个工具都有一个很重要的特点,脚本与测试对象分离,wr把对象保存在gui map中,qtp把对象保存在对象库里 repository.
    在 实际脚本开发过程中很多情况都用到了,对想描述,在wr中其实也可以做到对想描述,只是没有和qtp一样那么好听的名字“可描述编程语言”(qtp的叫 法)而已。wr的gui map就是一个文本文件,qtp的repostory是个xml描述。实际项目开发过程中,qtp更多的是把对象描述出来,而wr在脚本开发过程中限于环 境应用都把他保存在gui map里,因为描述出来的对象不象qtp那样好维护,wr描述出来的就是一个字符串而已


    6.脚本的可维护性
      他们都可以和td(qc)整合,通过td(qc)来维护脚本,搭成自动化测试框架。但是td(qc)调用wr可以直接调用,调用qtp需要安装插件。

      还有更多的不同,以上随手写出,提供大家参考,希望大家在实际项目中更多的体会,你们在培训过程中学到的自动化测试脚本开发的技术完全满足其他工具的应用,不要因为工具而工具,而是更多的脱离工具,手中无剑,心中有剑。

  • 测试的基础知识

    2009-09-15 17:22:43

    1、QA 和QC 的区别

    QC:Quality Control,品质控制,产品的质量检验,发现质量问题后的分析、改善和不合格品控制相关人员的总称。
    QC所关注的是产品,而非系统(体系)这是它与QA主要差异,目的与QA是一致的,都是“满足或超越顾客要求。”
    QA:Quality Assurance,品质保证,通过建立和维持质量管理体系来确保产品质量没有问题。
    总结说明一下,QC:主要是事后的质量检验类活动为主,默认错误是允许的。期望发现并选出错误。QA主要是事先的质量保证类活动,以预防为主。期望降低错误的发生几率。

    2、软件生命周期(SDLC)的六个阶段

    1、问题的定义及规划 2、需求分析 3、软件设计 4、程序编码 5、软件测试 6、运行维护

  • Yahoo!网站性能最佳体验的34条黄金守则(转)

    2009-03-28 13:27:46

  • CMMI五个等级

    2009-03-27 11:36:31

    1. 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
    2. 已管理级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
    3. 已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
    4. 量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
    5. 优化管理级 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
  • 各类兼容性测试

    2009-03-27 11:13:26

    1、系统兼容性:

    xp sp2,xp sp3,2000 sp4, vista, 20003,2003 sp1,sp2

    2、浏览器兼容:

    IE6,IE7,IE8,maxthon,filefox,TT

    3、杀毒软件的兼容性:

    norton,金山,江民,kaspersky,瑞星(杀软,卡卡),360(安全卫士,保险箱),macfee

    4、软件之间的兼容

    公司内部所有的软件,同类软件

  • ipod同步歌曲不断弹u盘提示的问题

    2009-03-27 11:09:46

    是因为ituns这个软件不断的模拟插拔u盘造成的
    360现在的u盘保护是不提示没问题的u盘插拔,但QQ医生会不停地提示安全。

  • winrunner,QTP录制模式

    2009-03-19 23:19:27

    winrunner 两种录制模式:
    context sencetive recording:主要是以gui对象为基础,识别使用者点选的GUI对象(如窗口,菜单,按钮等),以及执行的操作(如按下,移动,选取等)
    Analog recording:记录鼠标的移动,点选与及键盘输入的操作

    QTP 三种录制模式
    正常录制:是QTP的默认录制模式,充分利用了 QuickTest 的测试对象模型,它能够识别应用程序中的对象,而不管它们在屏幕上的位置如何。它通过识别程序中的对象来代替以前屏幕坐标的形式。但是正常模式并不能保证程序中所有的对象都能够被录制识别,因此还需要其它两种模式来补充。

    模拟录制:它是录制所有的键盘和鼠标的操作,但是用该模式录制的步骤不能够被编辑。

    低级录制:录制的对象都以Window和WinObject的形式存在,它们在 Active Screen 中显示为标准 Windows 对象,这类方式适用于QTP不能正常识别对象时应用。假如你需要录制应用程序屏幕上录制操作的精确位置,使用低级录制模式。

  • 网络管理之TCP/UDP篇(转)

    2009-03-19 20:17:08

    我们学习过什么是“数据包”。理解数据包,对于网络管理的网络安全具有至关重要的意义。比如,防火墙的作用本质就是检测网络中的数据包,判断其是否违反了预先设置的规则,如果违反就加以阻止。图1就是瑞星个人版防火墙软件设置规则的界面。细心的读者会发现,图1中的“协议”栏中有“TCP”、“UDP”等名词,它们是什么意思呢?现在我们就来讲讲什么是TCP和UDP。

    面向连接的TCP

    “面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

    图1

    TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

    TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

    图2

    我们来做一个实验,用计算机A(安装Windows 2000 Server操作系统)从“网上邻居”上的一台计算机B拷贝大小为8,644,608字节的文件,通过状态栏右下角网卡的发送和接收指标就会发现:虽然是数据流是由计算机B流向计算机A,但是计算机A仍发送了3,456个数据包,如图2所示。这些数据包是怎样产生的呢?因为文件传输时使用了TCP/IP协议,更确切地说是使用了面向连接的TCP协议,计算机A接收数据包的时候,要向计算机B回发数据包,所以也产生了一些通信量。

    图3

    如果事先用网络监视器监视网络流量,就会发现由此产生的数据流量是9,478,819字节,比文件大小多出10.96%(如图3所示),原因不仅在于数据包和帧本身占用了一些空间,而且也在于TCP协议面向连接的特性导致了一些额外的通信量的产生。

    面向非连接的UDP协议

    “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

    UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

    图4

    UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

    附表:tcp协议和udp协议的差别

    TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。TCP协议和UDP协议之间的差别如附表所示。

  • QTP 注释多行

    2009-03-19 20:07:15

    选择多行按CTRL+M 来注释.

    CTRL+SHIFT+M来恢复注释代码

  • SQL的一些总结

    2009-03-03 21:08:50

    SQL分类:
    DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
    DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
    DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
    1、说明:创建数据库
    CREATE DATABASE database-name
    2、说明:删除数据库
    drop database dbname
    3、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    根据已有的表创建新表:
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only
    4、说明:删除新表
    drop table tabname
    5、说明:增加一个列
    Alter table tabname add column col type
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    6、说明:添加主键: Alter table tabname add primary key(col)
       说明:删除主键: Alter table tabname drop primary key(col)
    7、说明:创建索引:create [unique] index idxname on tabname(col….)
    删除索引:drop index idxname
    注:索引是不可更改的,想更改必须删除重新建。
    8、说明:创建视图:create view viewname as select statement
    删除视图:drop view viewname
    9、说明:几个简单的基本的sql语句
    选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围
    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
    排序:select * from table1 order by field1,field2 [desc]
    总数:select count * as totalcount from table1
    求和:select sum(field1) as sumvalue from table1
    平均:select avg(field1) as avgvalue from table1
    最大:select max(field1) as maxvalue from table1
    最小:select min(field1) as minvalue from table1
    10、说明:几个高级查询运算词
    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
    EXCEPT 运算符
    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
    INTERSECT 运算符
    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
    11、说明:使用外连接
    A、left outer join:
    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行
    QL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
    full outer join:
    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

    其次,大家来看一些不错的sql语句

    1、说明:复制表(只复制结构,源表名:a 新表名:b)
    法一:select * into b from a where 1<>1
    法二:select top 0 * into b from a
    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
    insert into b(a, b, c) select d,e,f from b;
    3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)
    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
    4、说明:子查询(表名1:a 表名2:b)
    select a,b,c from a where a IN (select d from b )
    或者: select a,b,c from a where a IN (1,2,3)
    5、说明:显示文章、提交人和最后回复时间
    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title)
    6、说明:外连接查询(表名1:a 表名2:b)
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    7、说明:在线视图查询(表名1:a )
    select * from (SELECT a,b,c FROM a) T where t.a > 1;
    8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between 数值1 and 数值2
    9、说明:in 的使用方法
    elect * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
    10、说明:两张关联表,删除主表中已经在副表中没有的信息
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
    11、说明:四表联查问题:
    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
    12、说明:日程安排提前五分钟提醒
    SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
    13、说明:一条sql 语句搞定数据库分页
    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    14、说明:前10条记录
    select top 10 * form. table1 where 范围
    15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
    16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)
    17、说明:随机取出10条数据
    select top 10 * from tablename order by newid()
    18、说明:随机选择记录
    select newid()
    19、说明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
    20、说明:列出数据库里所有的表名
    select name from syscolumns where id=object_id('TableName')
    21、说明:列出表里的所有的
    select name from syscolumns where id=object_id('TableName')

  • Windows Media Player 11破解补丁或破解的方法

    2009-03-03 20:53:06

    Windows Media Player11下载和安装

    http://www.microsoft.com/windows/windowsmedia/cn/player/download/download.aspx

    迅雷直接地址:

    http://download.microsoft.com/download/3/9/6/39691B06-7BFA-4736-89E4-2738E6023B6C/wmp11-windowsxp-x86-zh-cn.exe

    下载的文件名为:wmp11-windowsxp-x86-zh-cn.exe 是自解压文件,双击它后自动运行:setup_wm.exe文件,弹出的是验证页面。我们要跳过验证,不能运行此文件。因此可以把这个文件解压缩,右键点击这个下载的文件名:wmp11-windowh-csxp-x86-zn.exe ,从右键菜单中比如选择压缩程序winrar然后指向:“释放到wmp11-windowsxp-x86-zh-cn”,打开这个文件夹,依次运行除setup_wm.exe以外的所有后缀名为.exe的程序文件共6个。

    在运行这些程序时点下一步后会出现几个选项,点l Agree(我同意)最后出现一个方框后有英文:do not yes tart now(现在不重新启动)在前面打勾。装完全部程序后,重启动电脑,在开始、程序里打开Windows Media Player11,选择自定义安装,全选全部项目,点完成后在开始菜单里注销一次当前用户,重新登录即可使用,桌面上即出现快捷方式图标。打开后可见过去曾收录在我的播放列表里的歌曲。
  • sql基础语句(转)

    2009-03-03 13:09:16

    Select
    SELECT "栏位" FROM "表格名"

    Distinct
    SELECT DISTINCT "栏位"
    FROM "表格名"

    Where
    SELECT "栏位"
    FROM "表格名"
    WHERE "condition"

    And/Or
    SELECT "栏位"
    FROM "表格名"
    WHERE "简单条件"
    {[AND|OR] "简单条件"}+

    In
    SELECT "栏位"
    FROM "表格名"
    WHERE "栏位" IN ('值1', '值2', ...)

    Between
    SELECT "栏位"
    FROM "表格名"
    WHERE "栏位" BETWEEN '值1' AND '值2'

    Like
    SELECT "栏位"
    FROM "表格名"
    WHERE "栏位" LIKE {模式}

    Order By
    SELECT "栏位"
    FROM "表格名"
    [WHERE "条件"]
    ORDER BY "栏位" [ASC, DESC]

    Count
    SELECT COUNT("栏位")
    FROM "表格名"

    Group By
    SELECT "栏位1", SUM("栏位2")
    FROM "表格名"
    GROUP BY "栏位1"

    Having
    SELECT "栏位1", SUM("栏位2")
    FROM "表格名"
    GROUP BY "栏位1"
    HAVING (栏位)

    Create Table
    CREATE TABLE "表格名"
    ("栏位 1" "栏位 1 资料种类",
    "栏位 2" "栏位 2 资料种类",
    ... )

    Drop Table
    DROP TABLE "表格名"

    Truncate Table
    TRUNCATE TABLE "表格名"

    Insert Into
    INSERT INTO "表格名" ("栏位1", "栏位2", ...)
    VALUES ("值1", "值2", ...)

    Update
    UPDATE "表格名"
    SET "栏位1" = [新值]
    WHERE {条件}

    Delete From
    DELETE FROM "表格名"
    WHERE {条件}

     

  • 镜像劫持

    2009-02-23 20:27:27

    镜像劫持是什么意思?
     
    镜像劫持这个词,总是和病毒木马有关系. 所谓的镜像劫持,就是通过修改注册表的方式,使在启动某些程序时,另一个程序却启动了,本应该启动的程序却没有成功启动。
    比如有时要打开一个exe文件,但点击运行时却打开了其它的文件或运行了木马。

    原理:运行程序的第一步是按名称找到程序文件,但是WinXP可以通过注册表把程序名称映射到另一个文件去,就是镜像。基本上是木马修改文件镜像指向木马程序,这就叫劫持。
    镜像劫持通常被黑客用来使杀毒软件被屏蔽,达到将攻击电脑变为肉鸡的效果。
     
    通常的劫持对象:taskmgr.exe  regedit.exe  msconfig.exe  cmd.exe 这几个工具程序是通常的劫持对象,启动的时候其实是先运行木马然后木马再帮你调用这些程序。

    举个例子:
    修改注册表项镜像劫持QQ医生。
     
    方法如下:
    1、在注册表中的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options]处新建一个以杀毒软件主程序命名的项,QQDoctor.exe。
    2、再创建一个子键“Debugger="C:\\windows\\system32\\notepad.exe"”(路径为病毒路径,即你要运行的木马文件路径)。
    3、只要用户双击 QQDoctor.exe就会运行C:\\windows\\system32下的notepad.exe,类似病毒关联的效果。

    解决方法:镜像劫持是很容易对付,劫持仅对默认名称有效,改文件名就避开了,比如qqdoctor.exe改为qqdoctor1.exe,再运行qqdoctor1.exe就不会打开木马文件,而打开正常的qqdoctor了。

  • 录制点击右键菜单

    2009-02-23 20:14:41

    '打开记事本
    Window("Program Manager").WinListView("SysListView32").Activate "假木马.txt"
    '最小化记事本
    Window("记事本").Minimize
    Dialog("AA").Activate
    Dialog("AA").WinButton("Button").Click
    Dialog("AA").WinButton("Button_2").Click
    Dialog("AA").WinButton("Button_3").Click
    wait(10)

    '鼠标右键从第二个开始,各个都点击一次
    For  idx =2 to 5

    Dialog("AA").WinListView("WinListView").Select "Win32.Trojan.GrayPigeon.c", micRightBtn

    Set wshshell=createobject("wscript.shell")

       For i=1 to idx
       wshshell.sendkeys"{DOWN}"         '按下方向键N次
       Next
       wshshell.sendkeys"{ENTER}"       '点击此键
       Set wshshell = nothing

    Next

    备注:

    如果只是想点右键的某一个菜单,如右键的第四个菜单,则在录制右键点击后,得到如下脚本:

    Dialog("AA").WinListView("WinListView").Select "Win32.Trojan.GrayPigeon.c", micRightBtn

    添加如下脚本就能点击右键的第四个菜单

     Set wshshell=createobject("wscript.shell")

       For i=1 to 4
       wshshell.sendkeys"{DOWN}"         '按下方向键N次
       Next
       wshshell.sendkeys"{ENTER}"       '点击此键
       Set wshshell = nothing

     

  • 重新学习QTP一个月后

    2009-02-15 22:30:05

    离上次的“QTP令我很痛苦”快要一个月了。在这个月中,我进步了很大,QTP不再令我痛苦了。

    很多东西已经掌握了,已经知道怎么去写代码,去得到自己想要的东西。之前觉得同事高深的想法已经不在存在,在我轻易编写出他们能实现的东西后,才觉得如此的简单。

    这说明了我进步了,不再有恐惧感,我要努力,继续研究下去,假以时日,一定能达到一个高水平的。才一个月不到,我就已经进步了这么多。

    继续加油!

  • 从实际的网页得到 HTML

    2009-02-15 20:47:37

    import urllib.request
    f = urllib.request.urlopen('http://www.python.org/')
    htmlSource = f.read()
    #htmlSource = f.read(100)                          
    f.close()                                       
    print(htmlSource)

    从实际网页中得到html代码。

    提取用 urlopen 函数取回的网页的整个文本。打开一个 URL打开一个文件相似。urlopen 的返回值是像文件一样的对象,它具有一个文件对象一样的方法。

    使用由 urlopen 所返回的类文件对象所能做的最简单的事情就是 read,它可以将网页的整个 HTML 读到一个字符串中。这个对象也支持 readlines 方法,这个方法可以将文本按行放入一个列表中。

    当用完这个对象,要确保将它 close,就如同一个普通的文件对象.

  • QTP的基本使用函数(转)

    2009-02-14 18:47:53

    QTP的基本使用函数:

    1,获取对话框相应的文字:GetVisibleText

    2,查找相应的字符串:instr(1,查找目标字符串,所查找的字符串)

    3,随机数的获取:Randomnumber.Value()或cstr(int(Rnd*10) 1)

    4,等待函数:Wait(秒数)

    5,获取数组下标:UBound(数组名)

    6,拆分数组:Split(MyString,",",-1,1)

    7,可执行步骤:OptionalStep

    8,报告信息:Reporter.ReportEvent3,"SaveStep","Outofcycle!"

    9,判断对话框是否存在:.exist

    10,事件过滤函数:Reporter.Filter=过滤条件(0,1,2,3),0代表显示所有的error和warning,1,显示error,2,显示waining,3,任何error和warning都不显示。

    11,循环函数:do…loopuntil,for…to…thennext,while.

    12,数据表格:DataTable,向外赋值,Dimaa=DataTable.value(“CellingName”,”ActionName”).

    13,获得对象属性的三种方法GetTOProperty,GetTOProperties,GetROProperty,GetTOProperty获得程序中对象当前的属性,GetTOProperties获得当前属性所有集合,GetROProperty获得的是录制时对象所获得的属性。

    14,检查点方法check和输出指定属性值output。

    15,函数Descrīption,可以获得某页面同标签的属性进行操作。

    16,函数nagative可以随便跳转页面到指定的URL。

    17,函数Object可以获得当前页面同属性的控件。

    18,函数Focus可以让控件获得焦点,函数Blur则是失去焦点,click单击,dbclick双击。

    19,函数setAttribute可以设置控件属性,getAttribute可以获得属性。

  • WinObject的GetVisibleText(取值)

    2009-02-14 18:44:18

    #点击主界面
    Dialog("AA2.0").Activate  
    #点击工具tab
    Dialog("AA2.0").WinButton("Button_2").Click
    #点击卸载软件tab
    Dialog("AA2.0").WinButton("Button").Click
    #定义变量
    Dim i,aa,bb,cc,dd
    #循环,一个接一个地取软件的信息
    For i=0 to 5
    #点击winlistview中的第I行。
    Dialog("AA2.0").WinListView("WinListView").Select i
    #取得这行的第(i,0)的值。即软件名称
    dd=Dialog("AA2.0").WinListView("WinListView").GetSubItem(i,0)
    #取得winobject的值。由于是标准控件,可以完全取出值来。
    aa=Dialog("AA2.0").WinObject("上次使用时间:2004-1-5  使用频率:有时").GetVisibleText
    #创建文件对象
    Set bb=createobject("scrīpting.FileSystemObject")
    #以追加的方式打开文件。如果没有此文件,则创建文件。
    Set cc=bb.opentextfile("d:\aa.txt",8,true)
    #表示第几条信息的标志。直接写入I变量
    cc.write(i)
    cc.write(":")
    #写入winlistview取得的值。即软件名称
    cc.write(dd)
    #写入一行空行。为了AA的代容不会直接接着dd写下去。
    cc.writeline( )
    #写入AA的代容。
    cc.writeline(aa)
    #关闭文件
    cc.close()
    Set cc=nothing

    Next

    Set cc=nothing

     

    WinObject的GetVisibleText(取值).完全取出来,由于控件是标准控件.把内容写入到TXT中,以追加的形式写入.如果此文件不存在则创建.

     

  • 一个定时测试的方法(转)

    2009-02-08 22:43:17

    用Schedule定时运行QTP脚本

    创建一个.vbs,在控制面板的Schedule里面定义自己的task就好

    vbs的脚本如下:

    Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
    Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
    Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
    Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
    qtApp.Launch ' Start QuickTest
    qtApp.Visible = True ' Make the QuickTest application visible
    ' Set QuickTest run options
    qtApp.Options.Run.ImageCaptureForTestResults = "OnError"
    qtApp.Options.Run.RunMode = "Fast"
    qtApp.Open "C:\ Your Test Path Here", True ' Open the test in read-only mode
    ' set run settings for the test
    Set qtTest = qtApp.Test
    qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform next step when error occurs
    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object
    qtResultsOpt.ResultsLocation = "C:\Your Results Path Here" ' Set the results location
    qtTest.Run ' Run the test
    'qtTest.Close ' Close the test
    Set qtResultsOpt = Nothing ' Release the Run Results Options object
    Set qtTest = Nothing ' Release the Test object
    Set qtApp = Nothing ' Release the Application object

    这种方法还没试过,先收藏起来,侍有用时,再试下。

     

    出处来自:
    http://butestnote.spaces.live.com/blog/cns!58DD013E49E92756!144.trak
781/41234>
Open Toolbar