• 接口自动化平台—企业级项目


    目录

    1:简介

    2:登录、注册

    3:首页面

    4:问题工单页面

    5:新建用例页面

    6:用例列表页面

    7:服务配置页面

    8:Header配置

    9:批量运行用例并生成测试报告

    10:部门部门小工具集成


    1:简介

             接口自动化平台,主要用于产品需求提测及产品整体回归测试时进行运行提升测试效率及产品质量的一个工具,同时可以使相关测试人员在不接触代码的基础上快速高效的将自己所负责服务的接口录入到平台中。测试人员 不接触代码的基础上快速录入接口,且接口可以支持单接口及场景使的判断及多接口依赖,包含查询、配置等相关页面实现管理方便等。

    2:登录、注册

    登录页面:输入用户名、密码点击登录、可重置表单         

     注册,点击注册按钮跳转到注册页面,填写必填项提交。用户名已存在时无法注册

    3:首页面

    首页面:包含相关展示当前登录人用例数量、总用例数量、增加用例数量排行榜前四、项目用例数量统计图、近七天新增用例统计图

    4:问题工单页面

    问题工单:测试人员记录相关BUG统计信息,支持多条件查询、添加、编辑、删除、导出等功能

    5:新建用例页面

    1:组件区域:目前支持HTTP组件、Assert组件、DB组件,主要应用于接口录入及接口请求判断

    2:接口录入:http组件、assert组件中相关输入内容区域要求都需要填入

                1)用例名称:描述整个用例场景的功能或要验证的功能点描述。

                2)步骤描述:每个步骤要做的事情的描述(选填)。

                3)服务模块:通过下拉选择的方式,选择相关服务,服务支持可配置。

                4)请求方法:通过下拉选择的方式,选择接口的请求方式。

                5)接口路径:接口的请求路径,get请求的参数可以连接在接口路径后。注意:不包括域名,域名在配置服务模块时已绑定。接口路径举例:/db/select。

                6)请求参数:文本域内参数必须是json格式,只要是json格式参数通用与get、post请求。

                7)header:因相关请求方式不同例如application/json、form格式,通过配置header进行选择,若没有特殊方式则选择默认。

                8)output:定义变量名及变量值类似于(key:value),其中变量名自定义,变量值则指定的是接口返回json数据的键。(支持定义多个)

                            举例:例如一个接口的返回参数是{ "status": 200, "msg": "查询用户登录信息成功"},则定义的变量值body指的则是整个返回数据,body.status指的则是200。

                                      若想获取到接口返回的json数据中的内层数据通过body.status这种 .  的方式一级一级获取,若碰到集合模式的则获取不到目前不支持

                     

                     9)添加断言:①选择断言方法,目前只支持包含、等于。

                                       ②填写用例返回值,指的是测试中的实际值,此处调用的是在录入http组件内容时定义的变量名。

                                       ③填写期望值,指的是测试中的预期值,用例判断时会拿到实际值与预期值进行判断,来决定用例是否通过。

                                       ④支持填写多个断言

                                       ⑤预期值、实际值都支持引用变量

                     10)选择DB库:此功能在DB组件中,主要选择要运行的数据库,选中的值会绑定数据库的库名、用户名、密码、ip、端口等信息,用来后台连接数据库

                     11)sql语句:此功能在DB组件中,支持多条sql语句,若是多条语句时,每条sql后加;进行分割,其中sql中相关查询字段还可以根据 ${} 标记进行依赖值(如图)。

                      12)output变量:此功能在DB组件中,主要用于取值指定到定义的变量值

                               首先,后端运行查询的sql返回的数据格式是 List<Map<String, Object>>,另外此功能支持多条运行多条sql,所以运行最终格式为list< List<Map<String, Object>>>。

                        根据最终返回的格式,取变量时则有相对应的规则,如下图        

                             总之:list[*]对应的是取第几条sql的返回数据,list[*][*]对应的是取第几条sql运行的数据,指定的第几条。

                      13)接口依赖:若录入http组件内容时,接口参数可能依赖上一个接口请求返回的数据,我们需要提前在上一个接口定义好变量名、变量值, 然后在第二个接口录入时的请求参数中通过${}方式进行依赖,其中花括号中编写的是我们之前定义好的变量名

     

                        应用变量池中的用户变量,用户维护到表中,通过代码维护到redis中,当库中新增用户变量时,调用同步接口将变量同步到redis中。

                        接口为:http://10.1.1.50:8088/redis/special/user

                        接口参数中引用时,通过#{redis的key}获取值。

     

                      14)页面整体接口举例:

                     15)用例的运行与保存:

                             ①用例运行:当编写好用例场景,想尝试运行时,先点击下方的冒烟按钮,弹出选择环境,选择环境点击发送请求按钮,则可测试发送编写的用例

                             ②用例保存:当测试发送判断编写的用例场景运行成功,则点击提交保存按钮将用例保存到数据库中

     

                      16)运行结果展示:

                     17)DB组件中的选择DB库,选择数据库配置信息:

                                  通过在mock模块维护一个接口,访问返回规定格式响应数据,响应数据则是数据库配置,进行下拉选择配置。

                     18)dubbo组件

      五:方法名:getAccountList(List<AccountCommonReq> req)

             请求语句:invoke AccountRemoteService.getAccountList([{"application": "shangcheng","certNo": "130984198907103019""class": "com.juzifenqi.acm.dubbo.req.AccountCommonReq"},{"application": "shangcheng","certNo": "130984198907103019""class": "com.juzifenqi.acm.dubbo.req.AccountCommonReq"}])

             参数格式:[{"application": "shangcheng","certNo": "130984198907103019""class": "com.juzifenqi.acm.dubbo.req.AccountCommonReq"},{"application": "shangcheng","certNo": "130984198907103019""class": "com.juzifenqi.acm.dubbo.req.AccountCommonReq"}]

                    19)redis组件:

    ------String类型操作方法-----
    public String get(String key),获取
    public void set(String key, String value),添加、修改----
    public long del(String... keys),删除

    ------Hash类型操作方法-----
    public String hget(String key, String fieid) (推荐)-------
    public long hset(String key, String fieid, String value),添加,如果fieid存在则更新(推荐)
    public long hdel(String key),删除整个key(推荐)

    6:用例列表页面

    用例列表页面:查询用例数据,支持多条件查询、编辑(跳转到编辑页面)、发送测试、删除等操作

    7:服务配置页面

      服务配置页面:配置服务模块相关信息,其中服务模绑定着测试、pre、线上等域名,在新增用例页面可以通过下拉选择进行选择,支持查询、编辑、删除

    8:Header配置

    Header配置页面:配置Header相关信息,Header配置信息可以根据自己的接口需求进行添加,在新增用例页面可以通过下拉选择进行选择,支持添加、查询、编辑、删除

    9:批量运行用例并生成测试报告

    概述:批量运行用例通过调用接口查询相关用例并批量运行,运行完毕后返回报告地址链接,访问链接打开测试报告。(测试报告保存在nginx静态文件目录下)

          接口:批量运行测试用例的接口:

    接口路径/form/batchfunction?bcode=SHOPH5_YEWUXIAN&pcode=SHANG_CHENG_H5&radio=测试
    请求方式Get
    接口描述根据服务名称、测试环境运行相关用例,并生成测试报告
    接口参数bcode:业务线编码 pcode:服务编码 radio:测试环境(测试、pre、线上)
    返回数据
    {"status":200,"msg":"用例批量执行完毕","data":{"报告地址:":"http://10.1.1.50:89/auto-test-web-report/20200516140756_report.html"}}

          实现:通过接口调用,从数据库中查询出符合条件的接口用例,进行批量运行。然后通过freemerker框架模板生成测试报告并输出到linux服务器中的nginx配置好的静态文件目录下,并通过接口返回接口访问链接。

          nginx记录:服务器:http://10.1.1.50:89     源码目录:/var/temp/nginx-1.8.1        nginx启动配置目录:/usr/local/nginx                 启动:./nginx       停止:./nginx -s quit     刷新配置文件:./nginx -s reload

          测试报告输出目录:/data/scripts/deploy/auto-test-web-report,生成的测试报告在此目录

          清空报告脚本:/data/scripts/deploy/auto-test-web-report,在此目录下有  clear-report.sh  脚本,执行脚本可删除生成时间超过两个月的测试报告。 脚本内容:find /data/scripts/deploy/auto-test-web-report -mtime +60 -name "*report.html*" -exec rm -rf {} \;

          定时任务:作用— —定时执行 清空报告报告脚本,在/etc/crontab目录下的root文件中添加定时任务。       任务内容:10 1 1 * * /data/scripts/deploy/auto-test-web-report/clear-report(表示每个月1号凌晨1点10分执行清理报告脚本)

          读取数据:批量执行读取的数据是从redis中获取到的数据,redis中数据根据定时任务与数据库中数据同步,同时添加用例与修改用例时用例数据会同步到redis中。

          redis记录: 服务器:http://10.1.1.50:6399     源码目录:/var/temp/redis/redis-3.0.0       nginx启动配置目录:/usr/local/redis/bin        关闭:redis-cli -p 6399 shutdown    启动:./redis-server redis.conf

          测试报告模板:

    10:部门部门小工具集成

    部门提高效率小工具:

    sql工具:

    联调小工具:

     

    Mock接口维护:

     

  • 相关阅读:
    vue中不同情况下的通讯方式
    bootstrap 主题
    语音交友APP:搭建部署流程及主要功能介绍
    Apache Log4j Server (CVE-2017-5645) 反序列化命令执行漏洞
    JTS:02 使用WKB操作数据
    JVM调优-JVM调优实践一
    esxi 6.7下安装openwrt(iStoreOS)网卡直通
    Scrapy基本概念——Item Pipeline
    Echarts案例网站(由于https://www.makeapie.com/关闭了,所以找了一些替代的)
    ES6的模板字符串使用
  • 原文地址:https://blog.csdn.net/qq_34811445/article/details/125367645