网易首页 > 网易号 > 正文 申请入驻

接口测试代码覆盖率实操演示

0
分享至

前面的文章里我们讲了代码覆盖率的理论知识以及代码覆盖率的工具介绍,接下来的文章我们介绍一下代码覆盖率的实际应用。

单元测试我们不可能一直本地化地这样执行,我们找一个Jekenis,把代码传到gitte、github、gitlab等代码仓库中。在Jenkins上配一个任务,把代码拉取下来之后,进行打包、编译、出覆盖率报告,出完了覆盖率报告之后,推送到Jenkins前段去进行展示。

这个对于开发人员来说可能都比较熟悉了,咱们测试人员接触的可能少一些,但是我们要知道这个原理。总体来说就是把代码放到Jenkins上去,拉取之后先运行,编译,执行单元测试,统计代码覆盖率,然后代码覆盖率到达一个值之后,才允许你进行下一步的构建,这也是我们现在很多流水线上都做的一个操作。

下面是两个很简单的例子,拉取代码,执行shell文件,执行之后出报告,出报告之后把这个代码跑起来,在服务的架设上把代码的覆盖率推送给前端去展示。

后面这部分内容是我们本系列代码覆盖率系列文章的重点内容,我们前面说了单元测试的覆盖情况,我们现在说一下功能测试的覆盖情况。

我们这里说的功能测试其实也包含接口测试。回到一开始我们提到的内容,运行测试的方式不同,覆盖率关心的东西也不同。

刚才我们说的是运行单元测试用例,所以我们关心的是单元测试的覆盖率。现在我们说的是接口测试,我们运行的是接口测试的测试用例,那我们统计的也是覆盖率,我们叫接口测试测到的代码覆盖率情况。
但实际上统计的都是代码。如果我们再进一步,我们测的是功能,我们在页面上点点点,那我们最终统计的是功能测试的代码覆盖率情况。

最终的落脚点还是统计代码,只不过你的测试手段不一样。不管是接口还是功能,其实都一样。
有很多朋友会问,接口测试代码覆盖率是什么意思?接口测试代码覆盖率也是代码覆盖率,只不过你运行测试用例的手段是运行接口测试用例,所以没有区别。

操作流程:gitte拉取---> maven编译、打包--->启动event.jar并添加jacoco-agent监听 --->关联接口自动化项目开始执行--->向event项目发送dump指令--->生成jacoco覆盖率报告

下面我们来演示一下。我现在找了一台Linux主机,在这个主机上提前放好了一个项目。


这个项目是我们以前写的一个做性能测试和持续集成时候的项目。这个项目是一个纯接口的一个项目,没有页面。我执行Maven命令的时候,会把它打包成一个jar包,我们先把这个jar包运行起来。


一运行这个jar包就相当于这个Java的服务也就起来了,但是我在运行这个服务的同时,把Jacoco也执行起来,换句话说就是我启动这个服务的同时,让它不停给我监听、监控着代码的覆盖统计的情况。
他是怎么监控的呢?一个是对你程序里的java配置进行一些小的变更,其实不用污染代码,是需要加一个jar包就可以,加一些依赖就可以。加好之后,启动项目的时候要加一个额外的辅助命令:

nohup java-javaagent:jacocoagent.jar=includes=*,output=tcpserver,address=192.168.0.188,port=12345 -jar event-0.0.1-SNAPSHOT.jar &

这个jacocoagent.jar的包去哪下呢?刚才咱们展示的官方的那个包里就有这个jar包。这个jar包放在你的服务器上,启动项目的同时,连同这个jar包一起启动。

并且对外指定一个协议类型是tcp协议,地址是你的服务器的内网的地址,端口号随便写一个,比如说示例这里写的是12345,Jacoco的官方也是推荐你使用12345,它的示例里面也是这样写的。
也就是说我在启动原始的服务的同时,启动一个server,这个server是用来出代码覆盖率报告的,也就是说我们同时启动了两个服务,一个是我的服务本身,还有一个是代码覆盖率统计的服务,这个服务依然在本地,端口号是12345。


放在服务器之后,我们可以看到大概花费了10秒钟的时间把它起来了。起来之后,我们去访问一个接口,然后看一下代码覆盖率到底覆盖了哪些代码。


然后我们在这个项目的本地,找到jacococli.jar,我们用这个包来出覆盖率的报告。刚才的服务我们起来了,并且开了一个端口号,用于出覆盖率,那我们现在就应该访问刚才那个地址和12345端口,把刚才报告统计的信息输出出来。


dump结果文件:

现在执行第二个命令:java -jar jacococli.jar dump --address localhost --port 12345 --destfile ./jacoco-demo.exec

注意我们不是在一台电脑上执行的,这个是在本地执行的,我们填的是刚才那台服务器的外网地址,12345端口。出一个覆盖率的报告,这个文件就放在我们当前的路径下就可以。
它的含义是,访问远端的服务端口,出具这一段时间(从代码起来到目前为止)的代码覆盖的情况。 生成报告:java -jar jacococli.jar report ./jacoco-demo.exec --classfiles ./target/classes --html ./report
我们有了这个路径了,接着要出一个覆盖率的报告了,还在这个路径下,通过刚才那个文件生成了一个报告,把报告保存在当前路径下一个叫report的文件夹里,这叫远端出报告。


我们一起看一下这个报告,我们先来看一下controller控制器里面的东西。


我们可以看到有这么多的接口,其中有一个接口叫 findAllCity,这个接口被测到了,所以这个接口是百分之百。其他的接口都没有被测到,那我们现在再测一个,findCityByName。

我们再访问这个接口的地址,我们再重复刚才的动作,再出一个报告,看看是否有变化,我们可以看到报告已经跟上面的不一样了。


也就是说,只要我们不停地去测,我们就可以看到在测接口的过程中代码覆盖率的情况了。

很多朋友可能会问了,如果要是测功能测试,页面测试呢?
我们现在测的是接口,假设现在有一个页面,我们在页面上点点点,出来一个报告,报告里同样会展示哪里被测到了,哪里没有被测到,测试过多少代码都可以被看到。

问题又来了,有时候开发测试团队并没有遵循那么标准的流程,我先上一班,都改完后再上一版,这就是我们经常所说的全量覆盖率对于日常迭代,尤其是敏捷开发模型下面其实是没有什么价值的。

什么意思呢,张三可能在下午4点的时候测了一版,他的覆盖率是80%,这时候李四是一个开发,就改了一点代码,但张三没有必要把所有代码都改一遍了,他只测李四的修改就可以了,这个时候他的代码覆盖率可能从第一个全量版本的80%一下子跌到下一个版本可能只有10%。

所以说我们在很多实际情况下要统计增量代码的覆盖情况,这个就需要我们自己来写脚本,来做代码库的diff,来对比两个代码库diff的不同点,来看是否被统计,我们要二次渲染、修改这个报告。
以上就是我们本系列文章分享的所有内容了,给大家展示了什么是代码覆盖率,代码覆盖率的价值是什么,怎么做单元测试代码覆盖率的集成,怎么做功能测试代码覆盖率的一个简单演示。

(本系列文章根据《优品软件培育计划》公益直播内容整理,观看直播回放可以评论区留言,获取观看链接。)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
38岁辛芷蕾瑜伽照,腰间没有一丝赘肉,还有腹肌!

38岁辛芷蕾瑜伽照,腰间没有一丝赘肉,还有腹肌!

瑜伽解剖学
2024-06-04 17:35:10
箖儿惹事了露面了,而且狂喊杨阿姨,大S的19告又要来了

箖儿惹事了露面了,而且狂喊杨阿姨,大S的19告又要来了

娱乐的小灶
2024-06-05 12:39:34
《歌手2024》第五期官宣歌单,对应演唱歌手揭晓,1位补位曝光

《歌手2024》第五期官宣歌单,对应演唱歌手揭晓,1位补位曝光

音乐钢琴娱乐咖
2024-06-05 16:22:18
直面历史!台“去蒋化”遇上黄埔军校校庆,不敢提“两岸属一国”

直面历史!台“去蒋化”遇上黄埔军校校庆,不敢提“两岸属一国”

陆弃
2024-06-05 11:21:10
拜登:中国经济“正处于崩溃边缘”,网友反击:就看谁先倒下了

拜登:中国经济“正处于崩溃边缘”,网友反击:就看谁先倒下了

大风文字
2024-06-05 16:37:14
重庆张波杀子案通灵!灵媒大师连接被害姐弟冤魂:他们仍在遭受折磨

重庆张波杀子案通灵!灵媒大师连接被害姐弟冤魂:他们仍在遭受折磨

古今档案
2024-05-31 16:59:32
山西一公职人员遇刺身亡后续,死者身份曝光,凶手摊上大事

山西一公职人员遇刺身亡后续,死者身份曝光,凶手摊上大事

皖声微言
2024-06-05 16:05:20
帅位争夺战落幕!山东男篮惊天选择,鞠维松凭啥超越巩晓彬郭士强

帅位争夺战落幕!山东男篮惊天选择,鞠维松凭啥超越巩晓彬郭士强

影视仓库
2024-06-05 18:03:25
队长,别走!安帅劝34岁老将留下:皇马备好合同,等他签字

队长,别走!安帅劝34岁老将留下:皇马备好合同,等他签字

叶青足球世界
2024-06-05 16:07:37
铁头事件,中韩两国网友态度天差地别,韩国人点赞鼓掌要请他吃饭

铁头事件,中韩两国网友态度天差地别,韩国人点赞鼓掌要请他吃饭

辣条小剧场
2024-06-05 08:55:02
三年战争,打出一个军事强国,乌克兰如今的军力足以跻身世界前5

三年战争,打出一个军事强国,乌克兰如今的军力足以跻身世界前5

史政先锋
2024-06-02 19:22:00
杭州市教育局答“将购房合同作为入学依据之一”建议:会慎重考虑

杭州市教育局答“将购房合同作为入学依据之一”建议:会慎重考虑

澎湃新闻
2024-06-05 14:58:26
看了辛芷蕾黢黑的脚,我不由得慨叹,这真是女明星的脚?

看了辛芷蕾黢黑的脚,我不由得慨叹,这真是女明星的脚?

九米妈妈
2024-06-04 23:24:44
“日本承受不起失去中国市场的代价”

“日本承受不起失去中国市场的代价”

参考消息
2024-06-04 20:33:08
安徽泾县人民政府办公室党组成员、副主任、二级主任科员郑光华接受审查调查

安徽泾县人民政府办公室党组成员、副主任、二级主任科员郑光华接受审查调查

鲁中晨报
2024-06-05 16:11:05
A股刚刚突传大消息,重要会议透露一个强信号,A股明天剧本已定

A股刚刚突传大消息,重要会议透露一个强信号,A股明天剧本已定

静守时光落日
2024-06-05 14:45:17
贵州两地人大常委会原党组书记、主任被查!

贵州两地人大常委会原党组书记、主任被查!

鲁中晨报
2024-06-05 17:47:03
抖音“一哥”换人了,血赚7亿力压董宇辉、小杨哥!

抖音“一哥”换人了,血赚7亿力压董宇辉、小杨哥!

品牌营销官
2024-06-05 18:12:33
俄乌第832天:俄军哈尔科夫面临失败,援乌升级,舒尔茨态度转变

俄乌第832天:俄军哈尔科夫面临失败,援乌升级,舒尔茨态度转变

山河路口
2024-06-04 16:56:23
帅爆了!《庆余年3》筹拍中,四大宗师全部露面,四大戏骨来演?

帅爆了!《庆余年3》筹拍中,四大宗师全部露面,四大戏骨来演?

娱乐八卦木木子
2024-06-05 13:56:50
2024-06-05 19:18:44
道普云
道普云
深耕软测行业二十年。可帮助企业和组织建立软件测试体系,提供软件测试cnas/cma认证咨询服务。
137文章数 2关注度
往期回顾 全部

科技要闻

9家车企拿到自动驾驶落地入场券,没特斯拉

头条要闻

菲总统在"香会"批中国言辞激烈 上演"气到说不出话"

头条要闻

菲总统在"香会"批中国言辞激烈 上演"气到说不出话"

体育要闻

赴美试训的崔永熙,表现究竟怎么样?

娱乐要闻

《青春有你》胡文煊被曝孕期出轨

财经要闻

员工证实周大福关闭深圳工厂

汽车要闻

又一个水桶车 试驾新“卷王”极狐阿尔法S5

态度原创

艺术
教育
房产
公开课
军事航空

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

教育要闻

“你的名字那么好听”一定要出现在新学校录取通知书上.

房产要闻

新房交易再冲高!三个月1.7万套、157万㎡,海口楼市又行了!

公开课

近视只是视力差?小心并发症

军事要闻

乌方:俄乌冲突升级 所有“红线”不复存在

无障碍浏览 进入关怀版