自学内容网 自学内容网

【自动化测试】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后缀的覆盖率报告


原文地址:https://blog.csdn.net/wyqvong/article/details/136043037

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!