浅谈唯品会测试覆盖率平台

发表于:2018-3-27 17:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李梦    来源:唯品会质量工程

  浅谈唯品会测试覆盖率平台
  项目背景
  唯品会作为一家年轻的互联网电商公司,近年来业务呈现爆炸式增长。业务的迅猛发展给公司带来收益的同时也给后端支撑业务的应用系统带来了前所未有的压力。如何保证业务系统的正常运转离不开质量管控,而质量管控离不开软件测试
  在敏捷所主导的今天,功能和回归测试作为快速迭代的软件过程中必不可少的一部分,为系统能否上线提供了必要的数据支撑。然而一直以来,功能和回归测试是否充分却无法保证,各团队尽管通过Jenkins和Sonar等工具对单元测试有一定的覆盖,但大多各自为战、缺乏统一管理、更无法提供系统级别的数据。公司并没有一个系统的数据指标与平台来对测试本身进行度量。在这种背景下,唯品会测试覆盖率平台(以下简称覆盖率平台)应运而生。
  本文将对覆盖率平台的架构,特点和优势进行一个简单的介绍。
  系统架构
  如图所示,覆盖率平台由CovServer、CovAgent以及开源的JacocoAgent组成。CovServer通过命令与消息队列对CovAgent进行控制,每个宿主机上只有一个CovAgent,可以监控多个被测应用,各应用通过端口进行区分。覆盖率平台目前支持tomcat,osp与纯java应用。CovAgent通过JacocoAgent获取到覆盖率原始数据,进行分析、生成报告后,将报告与覆盖率数据上传回CovServer进行展示和持久化。
  要想在被测应用中激活覆盖率收集功能,CovServer下发激活命令给CovAgent,后者通过修改被测应用启动参数的方式将JacocoAgent注入到被测应用中。用同样的方式可以关闭覆盖率收集功能,对用户来说是透明的,不会污染被测应用。
  每个CovAgent对应一个轻量化的本地存储BerkeleyDB,对未处理的消息及其他数据进行临时存储,主要用来数据同步和故障恢复。
  覆盖率收集与报告生成的远程化减轻了CovServer的性能压力。
  服务与测程
  在覆盖率平台中,每个被测应用即一个服务。覆盖率平台可以为每个服务创建多个测程。所谓测程即一次测试,比如要针对某个版本代码进行为期5天的回归,那么可以创建一个持续5天的测程来专门收集本次测试的覆盖率数据。每个测程彼此独立,因此可以对一个被测应用同时进行功能和回归等测试而不会互相影响。
  测程创建后,每隔5分钟进行一次数据收集,每隔1小时系统自动生成一份报告,同时用户可以通过界面或Api随时生成一份报告。报告会以一个趋势图的方式进行展示,方便用户查看历史数据。详细报告即Jacoco原生报告,我们还对Jacoco原生报告进行了优化以支持差异化报告。
  差异报告
  所谓差异报告即两个不同版本之间增量代码的覆盖率报告。很多团队都有这个需求,比如用户想知道最新提交的代码是否被测试覆盖到。我们通过改造JacocoAgent对差异报告进行了支持,首先通过git拉取基线提交与被测提交之间的差异代码,然后生成覆盖率报告时仅对差异代码进行计算。
  与其他系统对接
  覆盖率平台采用前后端分离技术,后端提供Restful Api作为接入点,方便与其他平台进行对接。前端采用AngularJs进行页面展现,路由等交互功能。


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号