少年智则国智,少年富则国富,少年强则国强,少年独立则国独立,少年自由则国自由,少年进步则国进步,少年胜于欧洲,则国胜于欧洲,少年雄于地球,则国雄于地球。红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,矞矞皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;前途似海,来日方长。美哉,我少年中国,与天不老!壮哉,我中国少年,与国无疆!
HP Quality Center OTA API实例 [附源码]
众所周知,HP Quality Center宣称的OTA(开放式测试架构)可以实现对QC软件的完全自定义和二次开发;OTA的实现就是依赖QC强大的API接口,掌握这些API接口,企业针对QC的一切扩展想像,即可化作现实;而恰巧QC API的强大让人感觉无所不能,横扫天下!51Testing软件测试网
gyI#\R4M}e
本文以QC9.2为蓝本,通过一个QC扩展功能的实现,来演示如何使用QC的API接口。
#d J*e)eW0实例简介
([rWK0k+]!s0 QC软件分为站点管理员和QC应用二部分,在企业使用QC的过程中,有时候一个客户端在使用QC应用的时候,会在后台的站点管理员占用二个License连接;如果你的公司QC License比较紧张,这种情况更要避免!我们能够想到的办法是在站点管理员里的Site Connections里将重复的用户连接断开,但是如果QC软件频繁发生这种情况,即便公司的QC管理员也不想随叫随到的去删除这些重复的QC连接;因此,这里我们自然想到QC宣称的无所不能的OTA API,通过编程手段自动定期删除重复连接。51Testing软件测试网W:L:R%` N x1mCW
前置条件51Testing软件测试网&HptP sYz-|
Dim QCConnection As Object51Testing软件测试网;lR x{6P4K}&p*Z,[q
Dim sReply As Integer51Testing软件测试网)}D ^/v] UmnL
Dim i As Integer51Testing软件测试网7gCz)VK#F K,gB,|/e$T
Dim strCons As String
n.x6|#E5?A&e$I?0 Dim strUnavailSessions As String51Testing软件测试网"o(z9OZ a
Dim arrUnavailSessions() As String51Testing软件测试网&QrJ`[ c v:_&L'R
Dim strConfig As String51Testing软件测试网bD_dn X ^
Dim arrConfig() As String
.Bkc_hR+E&yJ^;\ ~8@0
a-M7UBoVt4f.P0 Open "./property.conf" For Input As #3
#Af9jFve:p1a{qCd0 Line Input #3, strConfig
/P$u*Mi8Rc0 Close #3
e8WK8D'r;J b3]Z0 arrConfig = Split(Trim(strConfig), ",")51Testing软件测试网&|#h?P,tFN~u
S(R-IMyC(r0}0 Set QCConnection = New SACLIENTLib.SAapi
(Ym;v ip0 QCConnection.Login arrConfig(0), arrConfig(1), arrConfig(2)51Testing软件测试网Z;eU/y6HP-ReQ
sReply = QCConnection.GetConnectionsCount("DEFAULT", "FlightDemo")
G%D I2b6s+k$H0 strCons = Trim(QCConnection.GetConnections)51Testing软件测试网](y#d.wT,_0{!s6s
Sf$~a-})KmZu0 Open "./qcconnections.xml" For Output As #1
x'vlu"]$qm0 Print #1, Trim(strCons)51Testing软件测试网C6g/_? T
Close #1
},_2}N9aT4e)o)Z0 51Testing软件测试网 U0~*r)A2p tB/_
Open "./QCLicenseCleanUp.log" For Append As #251Testing软件测试网(\H,dIm hp!W|
Print #2, "**************************************************************************"51Testing软件测试网&XXv&_N pj K
Print #2, "作者:叶赫华 运行时间:" & Now()51Testing软件测试网@xf6UJ&IjB
Print #2, "当前QC服务器共有" & CStr(sReply) & "个连接."51Testing软件测试网-LCB$~{0V~
6OcW"H3M s7~R0 strUnavailSessions = GetQCUnavailSessions("./qcconnections.xml")51Testing软件测试网\9[:kU$P,d
arrUnavailSessions = Split(strUnavailSessions, ",")51Testing软件测试网L*h%wEMxH{Z#|a
51Testing软件测试网 {+sIf0_&o!^P*z
If Trim(strUnavailSessions) = ":" Then51Testing软件测试网3V1]WnD
Print #2, "没有重复的连接需要断开!"
4@)c"[l:kJr8_0 Else
@hv6ax#L0 Print #2, "开始在叶赫华本机清理重复连接..."
9Hq&yOo0 For i = 0 To UBound(arrUnavailSessions)51Testing软件测试网+P+k?.@R4_I
QCConnection.Disconnect CLng(Split(arrUnavailSessions(i), ":")(0))51Testing软件测试网?hkE:g au1B
Print #2, "删除重复连接[SessionID:UserName] [" & arrUnavailSessions(i) & "] 成功..."
B9c{6q3l@;e/Q0 Next51Testing软件测试网KX3qAx$W
Print #2, "连接清理完毕!"51Testing软件测试网(|9HK.lq6m4|n
End If51Testing软件测试网F-KhgJN"P:P
`!L(\C W#r _0 Print #2, "作者:叶赫华 结束时间:" & Now()51Testing软件测试网#s1H:DWdTn@
Print #2, "**************************************************************************"51Testing软件测试网+J6BzOm$t)?5]
Print #2,51Testing软件测试网`Q~6r4bWZ!t%f
Close #251Testing软件测试网 I DkF&V,\ P
Set QCConnection = Nothing51Testing软件测试网mq{&e"f7_
End
s[oJZ k tGG0End Sub
E y#{z ]gH051Testing软件测试网~.b1io9QL Q#j5tg
Public Function GetQCUnavailSessions(strConFilePath As String) As String
}MvC$C0 Dim arrSessionId() As String51Testing软件测试网I `i-b'FS!A ]3Q
Dim arrUserName() As String
本文以QC9.2为蓝本,通过一个QC扩展功能的实现,来演示如何使用QC的API接口。
#d J*e)eW0实例简介
([rWK0k+]!s0 QC软件分为站点管理员和QC应用二部分,在企业使用QC的过程中,有时候一个客户端在使用QC应用的时候,会在后台的站点管理员占用二个License连接;如果你的公司QC License比较紧张,这种情况更要避免!我们能够想到的办法是在站点管理员里的Site Connections里将重复的用户连接断开,但是如果QC软件频繁发生这种情况,即便公司的QC管理员也不想随叫随到的去删除这些重复的QC连接;因此,这里我们自然想到QC宣称的无所不能的OTA API,通过编程手段自动定期删除重复连接。51Testing软件测试网W:L:R%` N x1mCW
前置条件51Testing软件测试网&HptP sYz-|
- 公司已经安装好Quality Center9.2服务器
- 本机客户端可以正常访问该服务器
- 本机安装Visual Basic6.0
- 本机具有QC站点管理员登录帐号
G7q4Z Y!i"F)\1mZ k0
- 打开VB6,新建一个标准EXE程序
- 从VB6项目菜单里选择References,打开项目参考窗口
- 从项目参考窗口,找到以下二个COM组件,【SAClient Type Libray-Quality Center Site Administration】和【Microsoft XML V6.0】,并勾选它们,OK关闭该窗口
- 双击当前的Form1窗体,出现编程界面
- 拷贝以下代码到编程窗口:
Dim QCConnection As Object51Testing软件测试网;lR x{6P4K}&p*Z,[q
Dim sReply As Integer51Testing软件测试网)}D ^/v] UmnL
Dim i As Integer51Testing软件测试网7gCz)VK#F K,gB,|/e$T
Dim strCons As String
n.x6|#E5?A&e$I?0 Dim strUnavailSessions As String51Testing软件测试网"o(z9OZ a
Dim arrUnavailSessions() As String51Testing软件测试网&QrJ`[ c v:_&L'R
Dim strConfig As String51Testing软件测试网bD_dn X ^
Dim arrConfig() As String
.Bkc_hR+E&yJ^;\ ~8@0
a-M7UBoVt4f.P0 Open "./property.conf" For Input As #3
#Af9jFve:p1a{qCd0 Line Input #3, strConfig
/P$u*Mi8Rc0 Close #3
e8WK8D'r;J b3]Z0 arrConfig = Split(Trim(strConfig), ",")51Testing软件测试网&|#h?P,tFN~u
S(R-IMyC(r0}0 Set QCConnection = New SACLIENTLib.SAapi
(Ym;v ip0 QCConnection.Login arrConfig(0), arrConfig(1), arrConfig(2)51Testing软件测试网Z;eU/y6HP-ReQ
sReply = QCConnection.GetConnectionsCount("DEFAULT", "FlightDemo")
G%D I2b6s+k$H0 strCons = Trim(QCConnection.GetConnections)51Testing软件测试网](y#d.wT,_0{!s6s
Sf$~a-})KmZu0 Open "./qcconnections.xml" For Output As #1
x'vlu"]$qm0 Print #1, Trim(strCons)51Testing软件测试网C6g/_? T
Close #1
},_2}N9aT4e)o)Z0 51Testing软件测试网 U0~*r)A2p tB/_
Open "./QCLicenseCleanUp.log" For Append As #251Testing软件测试网(\H,dIm hp!W|
Print #2, "**************************************************************************"51Testing软件测试网&XXv&_N pj K
Print #2, "作者:叶赫华 运行时间:" & Now()51Testing软件测试网@xf6UJ&IjB
Print #2, "当前QC服务器共有" & CStr(sReply) & "个连接."51Testing软件测试网-LCB$~{0V~
6OcW"H3M s7~R0 strUnavailSessions = GetQCUnavailSessions("./qcconnections.xml")51Testing软件测试网\9[:kU$P,d
arrUnavailSessions = Split(strUnavailSessions, ",")51Testing软件测试网L*h%wEMxH{Z#|a
51Testing软件测试网 {+sIf0_&o!^P*z
If Trim(strUnavailSessions) = ":" Then51Testing软件测试网3V1]WnD
Print #2, "没有重复的连接需要断开!"
4@)c"[l:kJr8_0 Else
@hv6ax#L0 Print #2, "开始在叶赫华本机清理重复连接..."
9Hq&yOo0 For i = 0 To UBound(arrUnavailSessions)51Testing软件测试网+P+k?.@R4_I
QCConnection.Disconnect CLng(Split(arrUnavailSessions(i), ":")(0))51Testing软件测试网?hkE:g au1B
Print #2, "删除重复连接[SessionID:UserName] [" & arrUnavailSessions(i) & "] 成功..."
B9c{6q3l@;e/Q0 Next51Testing软件测试网KX3qAx$W
Print #2, "连接清理完毕!"51Testing软件测试网(|9HK.lq6m4|n
End If51Testing软件测试网F-KhgJN"P:P
`!L(\C W#r _0 Print #2, "作者:叶赫华 结束时间:" & Now()51Testing软件测试网#s1H:DWdTn@
Print #2, "**************************************************************************"51Testing软件测试网+J6BzOm$t)?5]
Print #2,51Testing软件测试网`Q~6r4bWZ!t%f
Close #251Testing软件测试网 I DkF&V,\ P
Set QCConnection = Nothing51Testing软件测试网mq{&e"f7_
End
s[oJZ k tGG0End Sub
E y#{z ]gH051Testing软件测试网~.b1io9QL Q#j5tg
Public Function GetQCUnavailSessions(strConFilePath As String) As String
}MvC$C0 Dim arrSessionId() As String51Testing软件测试网I `i-b'FS!A ]3Q
Dim arrUserName() As String