【自动化测试】go自动化测试代码覆盖率

背景:公司的后端大部分是go写的,只有数据模块是java,调研了一下发现go的自动化代码覆盖率测试的实施比java复杂一点,因为go自带的覆盖率测试工具go test只适用于单元测试,而我们测试的对象是守护进程,需要在服务部署后去执行自动化测试用例(当然这个方案也适用于系统测试覆盖率统计),在用例执行完后实时去获取覆盖率结果,所以最后是选择了七牛云团队开源的goc工具去做。

  1. 下载goc文件
    因为我们研发环境连不上外网,所以是需要通过离线安装,去github上面下载最新的goc文件
    https://github.com/qiniu/goc/releases/tag/v1.4.5
    如果是自己调研或者能连外网的可以直接通过在线安装,
# Mac/AMD64
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-darwin-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin

# Linux/AMD64
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-linux-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin

# Linux/386
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-linux-386.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin

  1. 给二进制文件插桩
    把goc放到编译的路径下,编译命令加上 goc build . 编译目标服务即可,我们公司实际情况是会同时起好几个服务,所以会加上agentport去区分每个服务。
    在这里插入图片描述

  2. jenkins执行部署服务及自动化测试,替换插桩后的二进制文件
    jenkins上触发自动化测试,因为我们的自动化是一键部署,我这边没有权限去修改部署脚本,只能在部署后去替换二进制文件。
    下面是替换二进制文件的部分代码
    在这里插入图片描述

  3. 执行自动化测试,先通过goc server开启goc监控服务,再开始执行测试用例
    在这里插入图片描述
    我是把开启的命令写进了启动脚本里,如下
    在这里插入图片描述

  4. 测试用例执行完成后回收测试结果test.cov文件

 goc profile -o test.cov

代码实现如下
在这里插入图片描述
6. 输出覆盖率测试结果:将test.cov文件放到编译的路径下,执行命令go tool cover -func=test.cov生成txt后缀的覆盖率报告

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值