七牛云工程效率部测试服务如何为 70 万+ 客户保驾护航?

2024-02-28 21:20

本文主要是介绍七牛云工程效率部测试服务如何为 70 万+ 客户保驾护航?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

七牛云工程效率部测试服务如何为 70 万+ 客户保驾护航?

七牛云发展至今,累积已服务于 70 多万家客户,产品矩阵愈发清晰丰富,围绕富媒体场景推出了对象存储、融合 CDN 加速、容器云、大数据平台、深度学习平台、智能日志分析平台等产品,并提供一站式智能视频云解决方案。而如何保障这些产品的质量,是七牛云工程效率部测试服务一直从事和探索的问题。接下来,我将简要的介绍下我们的具体实践以及一些方向上思考,希望对大家有所帮助。

整体的测试策略,我们主要落实到四个方向: 

• 保障基础代码质量
• 构建业务测试覆盖
• 增加质量监测环节
• 普及与改进流程规范

保障基础代码质量


首先明确,产品质量并不是简单的测出来的,它依赖于软件生命周期中的各个环节,且越是早期进行质量保证活动,效果会越好。所以在提测之前的基础代码质量上,我们非常看重。在把控上,我们会重点参与到三个交付物环节的 review,具体包括需求评审、架构评审,以及我们的测试设计评审,确保产品从规划、实现和验收标准上就符合整个团队的预期。

同时我们也在推广和探索测试技术应如何更好的自动化保障基础代码。比如我们会通过静态扫描周期性的检查所有代码库,为开发人员提供反馈,让其知道哪里做的有问题。同时通过收集语言层面的编程规范,推广 code review 最佳实践。当然,单元测试层面也会重点强化基础服务建设。

在七牛云,核心业务库的单测覆盖达到了 80%+,比如核心纠删码存储系统,自研 HTTP 缓存服务等。同时我们会把单测覆盖率统计自动化做到每个 github PR 的统计上,让大家清晰的看到,本次提交的覆盖率详情如何,为研发和 code review 人员提供清晰指引:

七牛云工程效率部测试服务如何为 70 万+ 客户保驾护航?

构建业务测试覆盖


有了基础代码的质量保障,我们还要从业务角度关注产品质量到底怎么样,做好质检和验收。

先说迭代模式,我们在接到研发的提测需求时,首先会检查这一阶段的准入标准,比如单测是否符合标准,代码是否有人 review 过,不符合标准会被打回,符合标准的,就会进入待测试阶段。之后会在充分把握需求的同时,对具体技术实现细节,进行深入理解和分析,在此基础上进行具体测试场景的设计或者补充,再到最终的测试执行。之后研发在拿到我们输出的验收结论时,也要 review 这个结果,是否有明显遗漏。通过这种互相检查机制,再加上深入到代码细节的白盒测试,确保整个交付的质量严格把控。

其次在测试执行的具体策略,也是遵循分层理念,不光验收单个服务的接口行为,还要确保多个服务之间的集成测试,以及最终系统层面的场景验收通过。

当然除了常规测试手段,在云服务测试上,还有几个点是我们比较看重的。

 

常态化并发场景下的测试验收


云服务一般都是分布式,高可用架构,我们在测试一个接口时,一次请求没问题,不代表这个接口就没问题。很多时候,问题都需要在并发场景,一定压力下才会暴漏。所以在平时的测试验收上,这一点需要特别注意。当然在过往的经验中,我们也积累较多的 go 语言并发模型及相关测试框架的使用经验,能让我们在平时的迭代中,轻松自如的做到这一点。


 

高可用测试


常规的测试验收是保证系统在正常的情形下做正确的事,而高可用测试,考量的则是如果服务所依赖的环境不符合预期了,系统还能正常工作吗?实践发现,在面对多机房,海量机器的场景下,云计算基础设施出问题的概率是非常大的。比较常见的如磁盘损坏、网络故障、机器宕机等等,可能时时刻刻都在发生,每一种故障都有可能引发数据丢失、系统雪崩等重大灾难,对业务造成难以估量的损失。所以云服务的高可用测试尤其重要。

有一个很典型的例子,就是我们在验证七牛云存储核心存储引擎的删除回收功能时,需要在测试环境不间断的模拟各种文件的上传与下载,以及随机删除请求,同时还要对整个存储系统注入各种随机的异常场景,如服务挂掉,磁盘损坏等,然后在这样的场景下,连续不间断的测试一个月以上,确保所有预期数据不丢失,不损坏,方才算验收通过。其标准之苛刻,可见一斑。

 

尽可能提高测试覆盖率


云服务都是服务海量用户,任何的严重错误都是不可容忍的。但是我们知道测试矩阵又是无穷尽的,在有限的测试人力下,不能盲目地投入到无限测试中去。所以在如何提高测试覆盖率方向上,我们也是一直在探索。目前主要从两大方向着手。一是精准测试,我们内部研发了 go 语言的系统测试覆盖率统计系统,能够精确从源码层面反应测试覆盖程度,来辅助我们日常的迭代。另一方面,通过复制线上真实流量来验收每一个版本迭代,确保无回归问题。这一方案,已运用在七牛云 CDN 缓存系统的常规质量保障上,效果显著。

质量监测体系


前面我们从代码质量和业务验证角度,描述我们如何保障质量。但实践中发现,还有些场景和问题,上述场景并不能很好的覆盖到。比如句柄泄露,内存泄露等问题,这种问题需要一定的时间的发酵,且单纯的从业务角度,感知也不会太明显。而质量监测体系就帮我们解决这个问题,所以我们将业务质量的监测结果提升到常规的迭代验收层面。

在平时,我们不仅验收服务的对外行为,还需要关注业务调用链是否健康,服务的自身运行时是否有问题,业务性能指标是否有退化等等。通过这些手段,尽可能的在测试阶段就检出更多的问题,减少问题遗漏到线上的几率。如果说业务验收从用户角度来考虑,那么业务质量监测就是从整个系统端来度量。各有各的优势,在质量保证体系里,二者缺一不可。

流程规范普及与改进


技术在不同阶段总有其局限性,任何环节出问题,影响产品最终服务客户的质量都是不可容忍的。所以在常规的技术保障之外,我们也会推动和普及一定的流程规范, 确保全流程,各个环节的质量有效把控,比如典型的迭代规范,发布和线上操作规范,以及事故处理流程等等。

 

牛人说


「牛人说」专栏致力于技术人思想的发现,其中包括技术实践、技术干货、技术见解、成长心得,还有一切值得被发现的内容。我们希望集合最优秀的技术人,挖掘独到、犀利、具有时代感的声音。

转载于:https://blog.51cto.com/7741292/2159760

这篇关于七牛云工程效率部测试服务如何为 70 万+ 客户保驾护航?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/756658

相关文章

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过