学会针对永洪API接口的性能测试,工作效率提升百倍

举报
BI最前线 发表于 2021/06/02 15:46:20 2021/06/02
【摘要】 性能测试是指针对产品的业务场景,通过设计场景和压力,对产品进行高并发量、大数据量的测试,主要目的是为了确定产品在高并发情况下的各项指标:平均处理时间,QPS,网络IO,磁盘读写等。永洪BI具有高耦合性、海量数据、大计算量、复杂逻辑等特点,因此性能测试尤为重要,对于用户实际使用场景,性能问题可能要比功能问题更多。对于性能测试,常见的工具有很多,对于永洪BI这类产品,更适合使用的工具为LoadR...

性能测试是指针对产品的业务场景,通过设计场景和压力,对产品进行高并发量、大数据量的测试,主要目的是为了确定产品在高并发情况下的各项指标:平均处理时间,QPS,网络IO,磁盘读写等。永洪BI具有高耦合性、海量数据、大计算量、复杂逻辑等特点,因此性能测试尤为重要,对于用户实际使用场景,性能问题可能要比功能问题更多。


对于性能测试,常见的工具有很多,对于永洪BI这类产品,更适合使用的工具为LoadRunner和JMeter


LoadRunner是最经典的性能测试工具,支持功能较全面,但是最主要的问题是比较贵,需要购买Licence,因此市场占用率已经大不如前。另外一个可选工具是JMeter,此工具为开源工具,完全免费,虽然支持功能不像LoadRunner那么全,但是完全可以通过添加各种组件的方式进行功能扩充。


引入原因

当前性能测试主要是基于LoadRunner,最主要的问题是脚本编写比较复杂,返回数据很难进行判断,因此不能满足所有性能测试场景的覆盖。


实际使用过程中,现场部署人员和支持人员常常会被用户提出以下需求:

1.能不能用JMeter进行测试。

2.能不能把报表中的数据取出,进行判断,用于确定性能测试脚本确实没问题。

3.批量添加测试用户、赋权(对于8.6前的老版本无法通过Excel导入的方式进行添加)。


为了客户现场支援人员和客户更加容易进行性能测试,以另外一个思路使用JMeter作为压测工具编写基于API的性能测试。这种测试方式最大的好处是用户能够加判定条件,返回数据以报文的方式进行验证,使用工具比较简单。熟练使用基于API的性能测试对于现场支持人员和测试人员非常有帮助,可以大幅度提高工作效率。


这种测试方法主要是基于永洪BI的API接口,以当前的API接口完全满足性能测试需求。这种方法的优点是脚本编写比较简单、工具免费、除了常规性能测试还可以通过API接口进行一些其他工作,比如删除无用报表、批量添加数据源、并发创建大批报表等。


使用前提

WebAPI是基于servlet实现,API所有的方法的调用需要构建xml格式的请求内容,post到这个servlet,并且返回xml格式的字符串作为响应。想要基于API做集成开发需要构建和解析xml格式字符串,并通过http协议进行通讯。


修改web.xml

使用WebAPI首先需要修改Yonghong/tomcat/webapps/bi/WEB-INF/web.xml,在其中添加如下报文:

<servlet>

<servlet-name>YonghongWebApi</servlet-name>

<servlet-class>g5.sv.httpapi.YonghongWebApi</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>YonghongWebApi</servlet-name>

<url-pattern>/api</url-pattern>

</servlet-mapping>


设置系统权限

需要交系统设置问文件权限系统,进入管理系统-系统设置-权限管理系统配置,选择文件权限管理系统并点击应用按钮,如下图所示:


图片


脚本编写

脚本编写过程中,基本需要以下几个接口来进行:

  1. 权限验证

  2. 退出权限

  3. 批量获得仪表盘中表格、交叉表、图表、文本组件的数据


权限验证接口:


http://ip:port/bi/api?action=login&adminv=xxxx&passv=xxxx


此接口调用比较简单,主要是需要在url里边拼接用户账户和密码,adminv后接用户账户,passv后接密码,需要注意的问题如下:


1.密码不可设置为特殊字符”"“和”<“,其他特殊字符需要转义登录


2.权限验证返回的token代表一个http session,不需要每次调用API时都调用这个接口。token的失效时间由属性:secure.session.timeout=1800000的值控制,单位为秒,默认失效时间为30分钟


3.最后一定要调用“退出权限”接口,否则可能会导致短期内出现用户数过多,无法权限验证的情况。并且此接口只是用来进行api验证用,不能用来进行单点登录


4.需要传一个xmlData,值为空,否则接口调用不能通过验证。


图片


退出权限:

http://ip:port/bi/api?action=logout&token=xxxx


请求参数只在url上添加token信息或者post传入token信息


批量获得仪表盘中表格、交叉表、图表、文本组件的数据:

http://ip:port/bi/api?action=getElemDatas&token=xxxx

xmlData中对应的报文如下:

<?xmlversion="1.0" encoding="utf-8"?>

<info>

  <dbpath>test/Data_4G_100W_vooltdb</dbpath>

  <elements>

      <element>

          <name>图表1</name>

          <page>

              <pageSize>25</pageSize>

              <pageNow>1</pageNow>

          </page>

      </element>

  </elements>

</info>


其中各项参数的意义如下:

  1. DBPATH:仪表盘路径

  2. NAME:要访问仪表中的元素

  3. PAGESIZE:分页每页多少行数据

  4. PAGENOW:获取第几分页的数据


需要注意的是脚本中需要将此xml报文进行要,去掉这些换行符,压缩后形式如下:

<?xmlversion="1.0"encoding="utf-8"?><info><dbpath>test/Data_4G_100W_vooltdb</dbpath><elements><element><name>图表1</name><page><pageSize>25</pageSize><pageNow>1</pageNow></page></element></elements></info>


JMeter脚本报文如下:


图片


基于API性能测试的方法大概就是这样,活用API接口,对于很多工作都有帮助,比如添加用户、赋予权限等等,对于用户希望能够获取报表中所有数据的需求(希望压测时可以通过返回数据来判断是否成功)可以通过基于API接口的性能测试,另外编写demo作为参考。


图片


更多的API接口可以从在线帮助的系统集成部分进行查找:

https://www.yonghongtech.com/help/Z-Suite/9.1/ch/topic292.htm

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。