目录
关于精准测试
精准测试是一种软件测试方法,它旨在通过使用先进的工具和技术来提高测试的效率和效果。精准测试的核心思想是通过精确的数据分析和测试结果来指导测试过程,确保测试工作能够更加有针对性和高效。
精准测试的目标是减少不必要的测试工作,提高测试的针对性和效率,从而在保证软件质量的同时,减少测试成本和缩短上市时间。这种方法特别适用于复杂的大型软件系统和快速迭代的开发模式。在精准测试的实施过程中,测试团队需要具备较强的数据分析能力和熟练使用各种测试工具的技能,并且充分发挥测试左移、右移。
非流水线单独部署学习
这里使用的Super-jacoco属于代码覆盖率分析工具
代码覆盖率统计Super-jacoco在公司级容器化项目中的具体应用方案-CSDN博客
Jacoco代码覆盖率报告详解_jacoco报告怎么看-CSDN博客
superjacoco缺点:没有体现代码执行频次/执行时间,但用于精准测试场景,可不用关心这两个问题。
准备工作
使用Super-jacoco作为代码覆盖率统计工具。准备了2台服务器:Super-jacoco服务宿主机(232.101)确认宿主机 git、jdk、maven。被测视频服务机器(236.42),确保2台服务器直接网络通畅。
安装参考资料进行数据库配置,application.properties配置(注意数据库驱动需对应版本),pom文件依赖配置。
进入super-jacoco-master\jacoco下,把org.jacoco.cli-1.0.2-SNAPSHOT-nodeps文件放到宿主机(232.101)的root目录下,用于获取报告文件
mv org.jacoco.cli-1.0.2-SNAPSHOT-nodeps.jar /root
在Super-jacoco目录下打包,执行命令。
※注意:运行Maven命令时一定要进入pom.xml文件所在的目录!
mvn package '-Dmaven.test.skip=true'
解决打包时依赖问题:1、远程仓库超时。2、编译时无权限。等
打包时可能会遇到报错:jdk.internal.org.objectweb.asm 未找到,此时在superjacoco代码中把jdk.internal.org.objectweb.asm替换为org.objectweb.asm即可
部署 super jacoco 服务
完成打包后启动服务,执行命令
nohup java -jar super-jacoco.jar &
检查是否启动成功
lsof -i:8899
监控被测项目
来到被测视频服务机器(236.42)
把super-jacoco-master\jacoco下,org.jacoco.agent-0.8.5-runtime放到被测视频服务机器(236.42)指定目录下
与参考文件不同的是视频服务是由run.sh文件通过找到主类启动,因此需要修改run.sh,在start方法中 -Dname=$Tag 前加上 -javaagent:/usr/local/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,port=18513,address=*,append=true
function start() {
#nohup java $JVM -Dappliction=$Tag -Djava.ext.dirs=$Lib:$JRE_HOME/lib/ext $MainClass >> $Log 2>&1 &
nohup $JRE_HOME/bin/java -javaagent:/usr/local/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,port=18513,address=*,append=true -Dname=$Tag -cp $JAVA_CP ${JVM} ${MainClass} >>$Log 2>&1 &
spid=$(ps -ef | grep -v 'grep' | egrep $Tag | awk '{printf $2 " "}')
echo "$Tag start success pid:$spid"
}
保存后run.sh start,查看18513 端口的服务是否启动成功
lsof -i:18513
最后再来到宿主机(232.101)查看是否能访问到 236.42的18513端口
telnet 10.80.236.42 18513
启动收集、获取覆盖率
启动覆盖率收集URL:
http://super-jacoco所在服务器地址:8899/cov/triggerEnvCov
POST数据:
headers = {'Content-Type': 'application/json'}
data = {
"uuid": "可自定义",
"type": 1, # 1全量; 2增量
"gitUrl": "被测服务的git克隆地址",
"subModule": "模块(com.XXX),非必填",
"baseVersion": "被对比的git分支(dev/master/或分支ID)",
"nowVersion": "同上",
"address": "被测服务器",
"port": "18513"
}
分支id:
覆盖率结果URL:
http://super-jacoco所在服务器地址:8899/cov/getEnvCoverResult
GET数据:
params = {
"uuid": "之前定义的uuid值",
}
执行测试、生成报告
执行和被测服务shot-video-manage-service相关的功能测试,jacoco会记录代码覆盖率。如果jacoco pom中未定义报告路径的话。报告文件默认在org.jacoco.cli-1.0.2-SNAPSHOT-nodeps.jar 的同级目录下:
宿主机(232.101)/root/report 找到uuid同名文件夹
蓝鲸流水线加入superjacoco
未完待续………………