混沌工程 - 软件系统高可用、弹性化的必由之路

随着摩尔定律的终结,单机计算性能已达到了极限,然而,我们的软件系统不论是规模还是复杂度一直在增长,所以软件系统都不约而同的朝着分布式化方向发展。近年来,随着云服务、容器的出现,某些分布式系统也更容易微服务化。抛开这些形形色色的分布式技术,我们对系统可靠性的述求却是一致的:分布式系统需要高可用,即使出现了单点或集群故障,也希望系统具备自我恢复或优雅降级的弹性能力、容错能力。我们在合理的架构,高质量的代码,完善的测试等等方面做了很多努力,然而很多分布式系统仍旧达不到高可用、弹性化,为了尽可能发掘系统中存在的弱点,很多大型软件公司都引入了混沌工程,如国外的谷歌、网飞,国内的京东等等。…

Read More

增量代码覆盖率工具

背景 目前有赞共享技术团队测试介入的微服务应用有几百个,大部分底层应用的单测覆盖率在 70% 以上,同时测试组提供的多纬度集成测试自动化的覆盖率也在 70% 以上。有赞的业务发展非常快,当存量代码较多时,新项目功能测试的整体覆盖率偏低是正常现象,另外开发提测时,并不能依据已有的全量覆盖率来判断对新增代码的自测完成度,基于这个背景,我们研发了增量代码覆盖率工具,作为项目质量的参考纬度之一,支持统计功能测试、单测和集成测试,并集成到了 DevOps 平台。 方案设计 有赞的 JAVA 代码覆盖率工具用的是…

Read More

基于动态代理 Mock dubbo 服务的实现方案

序言 背景概述 公司目前 Java 项目提供服务都是基于 Dubbo 框架的,而且 Dubbo 框架已经成为大部分国内互联网公司选择的一个基础组件。 在日常项目协作过程中,其实会碰到服务不稳定、不满足需求场景等情况,很多开发都会通过在本地使用 Mocktio 等单测工具作为自测辅助。那么,在联调、测试等协作过程中怎么处理? 其实,Dubbo 开发者估计也是遇到了这样的问题,所以提供了一个提供泛化服务注册的入口。但是在服务发现的时候有个弊端,就说通过服务发现去请求这个…

Read More

WEB-UI 自动化实践

概述 Bee 是由有赞 QA 开发的 UI 自动化工具,并以此实现了 web 端和 wap 端的核心业务的自动化。旨在简化开源工具提供的接口,方便 UI 自动化测试用例的设计。 Bee 整个框架是基于 selenium 和 selenide 设计的。框架对 selenium 和…

Read More

自动化接口用例从 1 到 1000 过程中的实践和思考

引言 当一个新人刚加入公司的时候,我们通常告诉新人怎么去写一个自动化用例:从工程配置到如何添加接口、如何使用断言,最后到如何将一个用例运行起来。 而在实际工作和业务场景中,我们常常面临着需要编写和组织一堆用例的情况:我们需要编写一个业务下的一系列的自动化接口用例,再把用例放到持续集成中不断运行。面临的问题比单纯让一个用例运行起来复杂的多。 本人加入有赞不到一年,从写下第 1 个 case 开始,持续编写和运行了 1000 多个 case ,在这过程中有了一些思考。在本文中,和大家探论下如何编写大量自动化接口用例以及保持结果稳定。 一、…

Read More