能否在QC应用外部运行测试集?如何实现测试集自动化执行?
在QC/ALM外部运行测试集的实现方案
别担心,完全可以在QC应用程序外部运行测试集!你们团队要实现每日夜间自动执行测试集的需求非常普遍,下面给你详细拆解几种可行的方案:
1. 用命令提示符直接运行
QC自带了一个命令行工具ALMRun.exe,专门用来外部触发测试集执行,不需要写代码,配置参数就能搞定。
这个工具一般在QC客户端的安装目录里,比如C:\Program Files (x86)\HP\ALM-Client\ALMRun.exe,如果找不到,检查下QC客户端是不是完整安装了。
示例命令(替换成你们的实际信息):
ALMRun.exe -server "http://你的QC服务器地址/qcbin" -domain "你的域名称" -project "你的项目名称" -user "QC用户名" -password "QC密码" -testset "[测试集所在文件夹]/你的测试集名称" -run
参数说明:
-server:QC服务器的完整地址,记得带上/qcbin-testset:测试集的路径,文件夹要用方括号括起来,比如[自动化测试集]/夜间回归测试
如果要设置夜间自动运行,把这个命令保存成.bat批处理文件,然后通过Windows任务计划定时执行就行。
2. 用C#程序调用OTA库
OTA(Open Test Architecture)库完全支持C#,适合需要做更多自定义逻辑(比如运行前准备、运行后结果汇总)的场景。
步骤:
- 在Visual Studio里添加OTA的COM引用:右键项目→添加引用→COM→找到「HP Quality Center Open Test Architecture」(版本可能是8.0/9.0等,看你们QC的版本)
- 编写示例代码:
using TDAPIOLELib; using System; class QCNightlyTestRunner { static void Main(string[] args) { TDConnection qcConnection = new TDConnection(); try { // 初始化并连接QC qcConnection.InitConnectionEx("http://你的QC服务器地址/qcbin"); qcConnection.Login("你的用户名", "你的密码"); qcConnection.Connect("你的域", "你的项目"); // 定位到测试集所在的文件夹 TestSetFolder testSetFolder = (TestSetFolder)qcConnection.TestSetTreeManager.NodeByPath("[测试集文件夹名称]"); // 获取目标测试集 TestSet targetTestSet = testSetFolder.FindTestSets("你的测试集名称").Item(1); // 创建测试运行实例 Run testRun = targetTestSet.RunFactory.AddItem(null); testRun.Status = "Ready"; testRun.Post(); // 启动测试集执行 ITestSetExecution execution = targetTestSet.StartExecution(false); execution.RunAllLocally(); Console.WriteLine("夜间测试集执行完成!"); } catch (Exception ex) { Console.WriteLine($"执行出错:{ex.Message}"); } finally { // 清理连接 if (qcConnection.Connected) { qcConnection.Disconnect(); } qcConnection.Logout(); qcConnection.ReleaseConnection(); } } }
注意事项:
- 运行程序的机器必须安装QC客户端,或者至少注册了OTA的COM组件
- 如果是64位系统,需要把C#项目的编译目标设置为x86,因为OTA组件是32位的
3. 用VBS脚本调用OTA库
OTA同样支持VBS脚本,这种方式不需要编译,写好脚本直接运行,适合快速实现简单的自动化任务。
把下面的代码保存成RunQCTestSet.vbs,替换成你们的信息后,双击就能运行,也可以通过任务计划定时执行:
Dim qcConn Set qcConn = CreateObject("TDApiOle80.TDConnection") ' 连接QC服务器 qcConn.InitConnectionEx "http://你的QC服务器地址/qcbin" qcConn.Login "你的用户名", "你的密码" qcConn.Connect "你的域", "你的项目" ' 找到目标测试集 Dim testSetFolder, targetTestSet Set testSetFolder = qcConn.TestSetTreeManager.NodeByPath("[测试集文件夹名称]") Set targetTestSet = testSetFolder.FindTestSets("你的测试集名称").Item(1) ' 创建并启动测试运行 Dim testRun, execution Set testRun = targetTestSet.RunFactory.AddItem(Null) testRun.Status = "Ready" testRun.Post Set execution = targetTestSet.StartExecution(False) execution.RunAllLocally WScript.Echo "测试集执行完成!" ' 断开连接 qcConn.Disconnect qcConn.Logout qcConn.ReleaseConnection Set qcConn = Nothing
最后提醒
不管用哪种方式,要实现夜间自动运行,都需要:
- 确保运行脚本/程序的机器保持开机状态
- QC服务器在夜间执行时段是可用的
- 用来执行的QC账号有足够的权限(测试集运行权限、项目访问权限等)
内容的提问来源于stack exchange,提问作者Eitanos30
相关产品推荐
相关产品推荐

