普元统一测试平台(Primeton UTP)软件使用

4年前

用例出错较多时,异常信息全部是展开的,不利于查看,可以通过开关隐藏或者显示异常。 一、点击“功能区”,隐藏或者显示异常 (略) 二、双击异常row,隐藏或者显示异常,如图蓝色框的位置 (略)

1.1 开发测试用例


1.1.1 开发Junit用例


一、新建Java项目test.com.primeton.utp.sample;


步骤:(略)


二、给项目classpath下添加Junit jar包或com.primeton.utp.annotation.jar包依赖


三、新建测试类,如test.com.primeton.utp.sample.DemoTest;


四、新建测试方法


这里新建的测试方法,没有测试对象,没有断言信息。对Junit用例来说,测试方法不抛出异常即是成功,抛出异常即是失败。


package test.com.primeton.utp.sample;

import com.primeton.utp.annotation.Before;
import com.primeton.utp.annotation.BeforeClass;
import com.primeton.utp.annotation.Test;
import com.primeton.utp.assertion.Assert;

/**
* 测试用例样例
*
*/
public class DemoTest {
@Before
public void setUp(){
//TODO 单个用例执行前逻辑
}

@After
public void tearDown(){
//TODO 单个用例执行后逻辑
}

@BeforeClass
public static void beforeExecute(){
//TODO 用例集执行前逻辑
}

@AfterClass
public static void afterExecute(){
//TODO 用例集执行后逻辑
}

@Test
public void testNormal(){
//TODO 测试用例逻辑
}

@Test
public void testException(){
//TODO 测试用例逻辑
throw new RuntimeException("模拟抛异常");
}
}


注意:


l 测试用例中标记是普元统一测试平台软件提供的Annotation,测试用例的编写可以使用原生的Junit进行编写,也可以使用平台提供的Annotation进行编写,本组件中还含有丰富的测试断言(Assert)和验证(Validate)的方法,可以方便的对测试结果进行判定。


五、编写测试用例描述文件


在测试项目源代码目录下新建用例描述文件cases-sample.xml,如图所示:


用例描述文件的写法可以参考附录 cases.xsd,示例cases-sample.xml的内容如下:


<?xml version="1.0" encoding="UTF-8" ?>
<testcasefont-family:宋体;mso-ascii-font-family: Arial;mso-hansi-font-family:Arial">测试样例" caseType="junit">
      <testcase font-family:宋体;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial">测试用例Demo"
action="test.com.primeton.utp.sample.DemoTest"/>
</testcase>



1.1.2 部署Junit用例


可以将开放好的测试用例直接导出jar或者按如下规则打成zip包:


sampl.zip

--classes //测试用例项目编译产物全置于该目录

--lib //测试项目依赖的第三方类库置于该目录(UTP引擎已有的去除,避免冲突)

对于非嵌入式环境,可以通过UTP管理控制台部署打好的zip文件。对于嵌入式环境,需要手工将导出的jar和依赖的第方法类库拷贝到被测环境的classpath下。


1.1.3 开发逻辑流用例


一、创建EOS项目,如test-demo;


步骤略


二、导入UTP技术组件,如:com.primeton.test.engine.commons.ecd;


三、创建逻辑构件,如testcomonent;


三、创建运算逻辑测试用例,UTP技术组件提供断言逻辑


四、创建逻辑流测试用例,,UTP技术组件提供断言逻辑可以添加多个校验点,逻辑流不抛异常可通过校验点判断逻辑流用例执行的成功或是否,逻辑流用例执行异常则直接断言失败。


1.1.4 开发Web逻辑用例


一、创建EOS项目


步骤略


二、创建逻辑构件


三、在EOS项目属性里添加外部引用库,导入


com.primeton.utp.webtest.commons4eos-3.0.0.0.ecd。该ecd里提供了一系列Web测试的公用方法,使Web测试用例编写简单化。


四、创建测试逻辑流,使用com.primeton.utp.webtest.commons4eos-3.0.0.0.ecd里提供的构件进行逻辑流的用例编写。逻辑流没有抛出异常即为测试正确,否则为测试失败。


五、配置test.web.bpm.commons.ecd/lib/com.primeton.test.web.webtest.jar 目录下的config/WebTest_config.xml


<?xml version="1.0" encoding="UTF-8"?>
<configure>
       <serverHost>127.0.0.1</serverHost> //WebTestServer机器IP
       <serverPort>4444</serverPort>     //WebTestServer 启动端口
       <explorer>*iexplore</explorer>      //WebTestServer 浏览器类型
       <browerURL>http://201.4.1.208/</browerURL>  //被测目标地址
</configure>



六、通过governor部署test.web.bpm.commons.ecd


七、解压WebTestServer-2.0.zip,执行WebTestServer-2.0/startWebTest.cmd


八、配置拦截器


修改%install_path%\eosserver\working\eos-default\config下的handler-engine.xml,添加以下内容


<handles>
...
<handle

      match-pattern="*"
      handle-class="test.web.bpm.commons.handler.WebTestHandler"

      nodeType=""
      nodeID=""/>
...
</handles>



注意:


l WebTest运行使用JDK1.6及以上的版本


1.1.5 部署逻辑流用例


一、在EOS项目下的配置里新建用例描述文件cases.xml,用于配置用例。


cases.xml内容为:


<?xml version="1.0" encoding="UTF-8"?>
   <testcase  caseType="biz" name="开发部软件开发流程-软件纠错">
   <testcase caseType="biz" name="010提交问题报告环节" >
       <testcase   action="test.web.bpm.kfb.J001_RJKFWH_RJJC.RJJC_TJRJWTBG_010.instanceTopicVerify" name="标题校验" description="校验为空,字符长度过长 "/>
       <testcase   action="test.web.bpm.kfb.J001_RJKFWH_RJJC.RJJC_TJRJWTBG_010.rjjcWtfxrq_inputVerify" name="问题报告日期校验" description="为空,不符合要求格式校验 "/>
</testcase>

	


二、 把项目导出成ecd,通过governor进行部署


1.2 搭建测试环境


1.2.1 搭建UTP管理控制台


本文演示中使用了Tomcat5.5.35,可以安装在任意目录。将平台管理系统部署包utp.war部署到webapps目录下,应用名为utp,访问入口为:http://_ip:port_/utp/login.do。


1.2.2 搭建UTP引擎环境


UTP核心引擎支持独立部署,即完全脱离被测环境而独立存在,测试用例可通过UTP管理控制台进行部署,典型的应用场景是:Web的自动化测试。也可以和被测应用部署在一起,方便测试用例与被测应用引擎的底层交互,典型的应用场景是:被测应用核心引擎及API的自动化测试。UTP核心引擎可以使用UTP管理控制台进行管理,也可以和UTP的CI进行无缝集成。


1. 非嵌入式环境搭建

将utp.zip解压到一个独立的目录下,解压后的目录结构如下:


简要说明如下:

bin:执行脚本程序目录

conf:系统配置、用户配置和日志配置目录

lib:引擎相关及第三方类库

license:License文件存放目录

log:日志生成目录

report:测试报告存放目录

temp:临时目录

work:工作目录,主要存放测试用例脚本,包括classes和lib两个子目录

start.bat|start.sh:启动引擎脚本


注意:

l 引擎启动时默认会占用两个端口,管理性端口和引擎间的通信端口。如果启动时发生冲突,请到conf目录下的utp.system.config.xml中进行修改。


2. 嵌入式环境搭建


这里主要讲的是与EOS系统产品的集成,使用EOS Governor将com.primeton.utp.core.ecd部署到被测EOS应用运行环境。测试用例也是通过EOS Governor进行部署,如果是独立Jar包,也可以通过拷贝的方式拷贝到EOS应用的classpath目录,通过UTP管理控制台进行管理。


1.3 平台软件配置


1.3.1 配置介绍


UTP引擎的配置主要包括系统配置和用户配置。


系统配置(utp.system.config.xml)主要内容如下:



<?xml version="1.0" encoding="UTF-8"?><configuration>

<module description="test case loader mode:file or db">

<group description="被管实例管理">

<configValue key="name">defaultServer</configValue>

<configValue key="ip">127.0.0.1</configValue>

<configValue key="port" description="管理端口">19999</configValue>

<configValue key="auth">false</configValue>

<configValue key="user"/>

<configValue key="password"/>

<configValue key="communication.protocol" description="HTTP|TCP">HTTP

</configValue>

<configValue key="communication.port" description=”引擎的通信端口”>29999

</configValue>

<configValue key="mode" description="CONCURRENT|SERIAL,默认串行执行">SERIAL</configValue>

<configValue description="是否嵌入式部署(与其他系统集成)" key="embeded">true</configValue>

</group>

<group description="线程池配置">

<configValue key="MaxSize">60</configValue>

<configValue key="QueueCapacity">1000</configValue>

<configValue key="KeepAliveSeconds">60</configValue>

<configValue key="CoreSize">5</configValue>

<configValue key="RejectionPolicy">CALLER_RUNS</configValue>

</group>

</module>

</configuration>



配置说明:


managed_server:被管理实例的相关配置,包括被管理实例名称、绑定的IP和管理端口、引擎的通信协议和端口等

thread_pool:测试用例并行执行时使用了线程池,这是线程池的配置,可以根据测试用例的规模进行调整

用户配置(utp.user.config.xml)的主要内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<module description="用户配置信息">
<group description="远程用例执行实例,每个实例对应一个节点"
name="remote_intstance">
<configValue key="instance1">127.0.0.1:19999</configValue>
<configValue key="instance2">127.0.0.1:20099</configValue>
</group>
<group description="测试 配置">
<configValue description="测试报告存放路径,绝对路径" key="report.path">$
Unknown macro: {UTP_HOME}
/report</configValue>
<configValue description="测试报告访问URL前缀" key="report.url">http://127.0.0.1:8088/utp</configValue>
<configValue key="email.switch" description="on|off">off</configValue>
<configValue key="coverage.type"
description=”NONE|SIMPLE|DETAIL”>NONE</configValue>
<configValue key="coverage.resources">com</configValue>
</group>
<group description="邮件地址信息">
<configValue key="mail.subject">Automated Testing Report</configValue>
<configValue key="mail.smtp.host">mail.primeton.com</configValue>
<configValue key="mail.smtp.port">25</configValue>
<configValue key="mail.auth">true</configValue>
<configValue key="mail.user">xxx@primeton.com</configValue>
<configValue key="mail.password" />
<configValue key="mail.from" />
<configValue key="mail.to" />
</group>
</module>
</configuration>



配置说明:


remote_intstance:如果需要分布式部署,为了方便实例间的通信,远程实例信息需要在此配置

test_config:测试配置


  • 定义UTP执行实例保存测试报告的路径,路径支持使用系统变量
  • 测试报告访问的URL定义,配置的是UTP管理控制台访问地址
  • 邮件发送的开关控制,默认不发送邮件,配置项可配置为on或off
  • 测试覆盖率类型配置及覆盖的构件包资源配置,支持正则表达式,覆盖率类型包括NONE、SIMPLE和DETAIL三种类型,默认为NONE


email:


  • 用例自动化执行后,邮件发送相关的配置,自动化执行时需要修改



注意:

l 如果不存在多实例,则不需要配置远程实例

l 开发期执行用例时,建议邮件开关关闭,避免邮件泛滥

l 测试覆盖率目前只支持逻辑流的测试覆盖率


1.3.2 配置修改


在UTP管理控制台可以对系统配置进行修改,包括用户配置和系统配置,用户配置修改支持热更新,系统配置修改成功后要求重启UTP引擎。


1、测试配置修改:


2、邮件配置修改:


3、被管实例信息修改:


4、线程池配置修改:


1.4 测试用例运行


1.4.1 启动引擎


如果是非嵌入式部署,则直接执行start.bat或start.sh启动,如果是嵌入式部署则直接动部署了UTP引擎的EOS即可。


1.4.2 启动管理系统


进入%CATALINA_HOME%\bin,执行startup.bat脚本


1.4.3 登陆管理系统


访问页面http://localhost:8080/utp/login.do,输入用户名和密码:sysadmin/000000,点击登录,登录成功后显示如下页面。


1.4.4 手工执行用例


在左边菜单中点击【测试管理-测试执行】,在右边窗口会以树形方式显示所有测试用例,选择要执行的用例,然后点击【执行】按钮即可。


后台打印执行日志


/******** Test Started *************/
2014-04-10 14:28:33,213 [INFO] com.primeton.utp.core.runner.AbstractRunner.onRunnerStart(AbstractRunner.java:329) -On runner start.
2014-04-10 14:28:33,213 [INFO] com.primeton.utp.core.report.TestResultListener.onRunnerStart(TestResultListener.java:42) -TestResultListener start.
2014-04-10 14:28:33,213 [INFO] com.primeton.utp.core.report.xml.XmlLogger.onRunnerStart(XmlLogger.java:58) -XmlLogger start.
2014-04-10 14:28:33,228 [INFO] com.primeton.utp.core.report.stream.StreamLogger.onRunnerStart(StreamLogger.java:59) -StreamLogger start.
[serial] Starting 自动化测试用例
2014-04-10 14:28:33,228 [INFO] com.primeton.utp.core.report.html.HtmlLogger.onRunnerStart(HtmlLogger.java:48) -HtmlLogger start.
TestSuite: 自动化测试用例
2014-04-10 14:28:33,228 [INFO] com.primeton.utp.core.runner.AbstractRunner.onClassStart(AbstractRunner.java:347) -On class start.
TestCase: A用例
=====Before A Class=====
=====Before A Method=====
A sleep 300000000
=====After A Method=====
testSleep : com.primeton.utp.test.ATest.testSleep - [2991.770147ms,597792.0bytes,3237.766153ms]
=====Before A Method=====
======test A1====
=====After A Method=====
testA1 : com.primeton.utp.test.ATest.testA1 - [1.175827ms,0.0bytes,231.631791ms]
=====Before A Method=====
test A2
=====After A Method=====
testA2 : com.primeton.utp.test.ATest.testA2 - [0.561784ms,0.0bytes,223.082784ms]
=====Before A Method=====
test A3
=====After A Method=====
testA3 : com.primeton.utp.test.ATest.testA3 - [1.004585ms,0.0bytes,227.006872ms]
=====Before A Method=====
test A4
=====After A Method=====
testA4 : com.primeton.utp.test.ATest.testA4 - [0.574382ms,0.0bytes,211.046891ms]
=====Before A Method=====
test A5
=====After A Method=====
testA5 : com.primeton.utp.test.ATest.testA5 - [7.30319ms,0.0bytes,216.088482ms]
=====Before A Method=====
test A6
=====After A Method=====
testA6 : com.primeton.utp.test.ATest.testA6 - [0.985921ms,0.0bytes,232.254699ms]
=====Before A Method=====
test A7
=====After A Method=====
testA7 : com.primeton.utp.test.ATest.testA7 - [5.556714ms,0.0bytes,250.733842ms]
=====After A Class=====
2014-04-10 14:28:38,213 [INFO] com.primeton.utp.core.runner.AbstractRunner.onClassEnd(AbstractRunner.java:356) -On class end.
2014-04-10 14:28:38,228 [INFO] com.primeton.utp.core.runner.AbstractRunner.onRunnerEnd(AbstractRunner.java:338) -On runner end.
2014-04-10 14:28:38,228 [INFO] com.primeton.utp.core.report.xml.XmlLogger.onRunnerEnd(XmlLogger.java:69) -XmlLogger end.
Creating D:\UTP_HOME\bin\..\report\REPORT_20140410142833103-304.xml
2014-04-10 14:28:38,244 [INFO] com.primeton.utp.core.report.stream.StreamLogger.onRunnerEnd(StreamLogger.java:78) -StreamLogger end.
total: 8, failures:0 (GREEN) - 5017.642533ms
2014-04-10 14:28:38,244 [INFO] com.primeton.utp.core.report.html.HtmlLogger.onRunnerEnd(HtmlLogger.java:53) -HtmlLogger end.
2014-04-10 14:28:38,603 [INFO] com.primeton.utp.core.db.ConnectionManager.init(ConnectionManager.java:190) -Create connection pool completed.
2014-04-10 14:28:38,805 [INFO] com.primeton.utp.core.db.ConnectionPool.getConnection(ConnectionPool.java:127) -Get a connection from [db],have 1 conne
ctions in used!
2014-04-10 14:28:38,805 [INFO] com.primeton.utp.core.db.ConnectionManager.getConnection(ConnectionManager.java:94) -Get a connection.
2014-04-10 14:28:38,916 [INFO] com.primeton.utp.core.db.ConnectionPool.getConnection(ConnectionPool.java:127) -Get a connection from [db],have 1 conne
ctions in used!
2014-04-10 14:28:38,931 [INFO] com.primeton.utp.core.db.ConnectionManager.getConnection(ConnectionManager.java:94) -Get a connection.
/******** Test Completed ***********/


用例执行结束后,显示结果信息


1.4.5 自动执行用例


自动执行用例,UTP引擎为持续集成提供了接口,方便完全自动化地执行测试。


如果UTP引擎配置的通信协议为HTTP,则接口为:


自动化执行用例接口(Get请求):
http://*ip:communicationPort/_UTP_AGENT/AUTO_RUN/requestId_*
说明:
ip:UTP引擎安装环境的IP地址
communicationPort:UTP引擎的通信端口
requestId:请求编号,必须提供
示例:[http://127.0.0.1:29999/__UTP_AGENT/AUTO_RUN/20140410181946509-797]
获取测试报告接口(Get请求):
http://*IP:communicationPort/_UTP_AGENT/reportType/requestId{*}变量说明:
ip:UTP引擎安装环境的IP地址
communicationPort:UTP引擎的通信端口
reportType:报告类型,包括自动化测试报告与覆盖率报告,值为REPORT_HTML或COVERAGE_HTML。
requestId:请求编号,必须提供
示例:*http://127.0.0.1:29999/__UTP_AGENT/REPORT_HTML/20140410181946509-797*


如果UTP引擎配置的通信协议是TCP,则可以使用如下接口:


public class TcpClient {
public TcpClient(String address,int port){ }
/**
* 发送请求并返回响应
*
* @param message
* @return
*/
public String sendAndReceive(IMessage message)
Unknown macro: { //...... }


/**
* 发送请求并返回响应
*
* @param message
* @return
*/
public String sendAndReceive(String message)


}
报文为JSON格式:
{"body":null,"headers":{"$request_id":"fcdccea66ca14e359c75c1689ff7f136",
"$command_code":"200"}}
说明:$command_code值为200表示自动化测试



无论UTP引擎配置的通信协议是HTTP还是TCP,都可以使用JMX接口:


com.primeton.utp.communication.client.JmxClient <command> <requestId>
说明:
1、command取值可以为run或get,run表示自动化执行用例,get表示获取测试报告
2、还需要修改classpath下startup.properties中的配置信息:
jmx.address=127.0.0.1
jmx.port=19999
jmx.auth=false
jmx.user=test
jmx.password=test
issyn=false //执行用例是同步还是异步,true表同步
report.out=d:/temp //测试报告保存路径


测试执行结束,测试报告可发送给邮件接收者


1.4.6 隐藏/显示异常


用例出错较多时,异常信息全部是展开的,不利于查看,可以通过开关隐藏或者显示异常。


一、点击“功能区”,隐藏或者显示异常 (略)


二、双击异常row,隐藏或者显示异常,如图蓝色框的位置 (略)

COMMENTS

需要 后方可回复
如果没有账号可以 一个帐号。