带你读《2022技术人的百宝黑皮书》——大淘宝用户平台技术团队单元测试建设(2)

简介: 带你读《2022技术人的百宝黑皮书》——大淘宝用户平台技术团队单元测试建设(2)

带你读《2022技术人的百宝黑皮书》——大淘宝用户平台技术团队单元测试建设(1)https://developer.aliyun.com/article/1338329?groupCode=taobaotech

单元测试编码提效

 

IDEA上有很多单元测试插件,能够半自动化生成单元测试类文件,这里重点推荐TestMe插件。TestMe插件可以   智能分析被测试类的依赖类,结合Mockito+Junit等单元测试框架,生成Mock/InjectMocks依赖关系,自动生成单 元测试类。

image.png

 

 


假设业务代码如下:

1

 

  1. @Component

2


public class DefaultMemberManager implements MemberManager {

3


@Autowired

4

 

private MemberDAO memberDAO;

5

 

@Autowired

6

 

private CacheManager cacheManager;

7

 

 

8

 

@Override

9

 

public Date queryActivationTime(long userId) {

10

 

Date activationTime = cacheManager.getActivationTime(userId);

11

 

if (activationTime == null) {

12

 

MemberDO memberDO = memberDAO.queryByUserId(userId);

13

 

if (memberDO != null) {

14

 

cacheManager.saveActivationTime(userId, memberDO.getActiveTime());

15

 

activationTime = memberDO.getActiveTime();

16

 

}

17

 

}

18

 

return activationTime;

19

 

}

20

}

 

 

则通过TestMe快捷键COMMOND+N, 可以极速自动生成如下的单元测试类

 

 

public class DefaultMemberManagerTest { @Mock
MemberDAO memberDAO; @Mock
CacheManager cacheManager; @InjectMocks
DefaultMemberManager defaultMemberManager;
@Before
public void setUp() { MockitoAnnotations.initMocks(this);
}
@Test
public void testQueryActivationTime() throws Exception { when(memberDAO.queryByUserId(anyLong())).thenReturn(null); when(cacheManager.getActivationTime(anyLong())).thenReturn(
new GregorianCalendar(2022, Calendar.MARCH, 5, 23, 2).getTime()); Date result = defaultMemberManager.queryActivationTime(0L);
Assert.assertEquals(new GregorianCalendar(2022, Calendar.MARCH, 5, 23, 2).getTime(), result);
)
)

 


团队单元测试建设

覆盖率概念

 

覆盖率是类JaCoCo插件通过javaagent挂载的方式,在单元测试命令运行时执行代码覆盖率检测,计算单元测试 执行过程中所覆盖的代码比例来生成覆盖率。常见的覆盖率指标,又可进一步细分为语句覆盖率,条件覆盖率,分支覆盖率,路径覆盖率等。这里我们当前更为关注语句覆盖率和分支覆盖率,尤其是增量代码的覆盖率,更能体现变更代码的单元测试覆盖情况。

 

如何进行单元测试

 

image.png

这里我们借助于阿里研发平台Aone的测试实验室功能,Aone实验室支持测试任务插件的编排组合,通过独立的测 试资源执行测试任务。所以我们将代码拉取插件,单元测试插件和覆盖率计算插件进行编排配置,形成最终的执行流:拉取代码;执行单元测试命令;单元测试结果解析;计算覆盖率。最终完成整个工程的单元测试覆盖率计算。

 

 

 


单元测试覆盖率结果示例如下:

 image.png



带你读《2022技术人的百宝黑皮书》——大淘宝用户平台技术团队单元测试建设(3)https://developer.aliyun.com/article/1338325?groupCode=taobaotech

相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
372 4
|
6月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
5月前
|
人工智能 Java 测试技术
单元测试覆盖率的自动控制技术
Jacoco是Java程序覆盖率工具,可以在pom.xml通过配置来自动控制程序的覆盖率
142 5
|
6月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
8月前
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。
|
数据采集 人工智能 自动驾驶
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
VSI-Bench是由李飞飞和谢赛宁团队推出的视觉空间智能基准测试集,旨在评估多模态大型语言模型(MLLMs)在空间认知和理解方面的能力。该基准测试集包含超过5000个问题-答案对,覆盖近290个真实室内场景视频,涉及多种环境,能够系统地测试和提高MLLMs在视觉空间智能方面的表现。
551 16
VSI-Bench:李飞飞谢赛宁团队推出视觉空间智能基准测试集,旨在评估多模态大语言模型在空间认知和理解方面的能力
|
测试技术 API 数据库
淘宝商品详情高级版 (item_get_pro)API如何测试
要测试淘宝商品详情高级版API(item_get_pro),需先阅读API文档,注册开放平台账号,创建应用获取密钥,搭建测试环境,选择测试工具。测试时设计用例,配置工具,发送请求,验证响应,记录日志。注意安全和数据格式。
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
611 4

热门文章

最新文章