1、微服务测试体系建设鲁四喜腾讯2023 深圳站目录CONTENTS云原生与微服务云原生与微服务01 微服务架构下的测试挑战微服务架构下的测试挑战02 微服务测试体系建设微服务测试体系建设03 总结04 2023 深圳站01云原生与微服务2023 深圳站云原生:定义“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。”-云原生计算基金会(CNC
2、F)2023 深圳站云原生:技术栈供给层供给层运行时层运行时层编排和管理层编排和管理层应用定义和开发层应用定义和开发层可可观观测测和和分分析析工工具具集集2023 深圳站微服务:定义微服务-也称为微服务架构,是一种架构风格,它将应用程序构建为服务的集合-可独立部署-松耦合-由一个个小团队拥有-高度可维护和可测试微服务架构支持快速、频繁和可靠地交付大型、复杂的应用程序。-https:/microservices.io/2023 深圳站单体架构优点:-应用开发比较简单,调试容易-部署比较容易缺点:-代码复杂性增加,代码难于理解和维护-容灾能力差-研发效率降低-不利于技术栈的升级2023 深圳站微服
3、务架构优点:-降低了代码的复杂度-容灾能力强-提升研发效率-技术栈的升级更容易2023 深圳站02微服务架构下的测试挑战2023 深圳站微服务架构下的挑战分布式特性引入了开发的复杂性分布式特性引入了开发的复杂性-服务生命期管理:服务注册、服务发现等-服务间的通信机制-服务的不稳定性-网络延迟、网路异常-数据一致性、协议一致性等部署更复杂-多实例部署测试难度加大2023 深圳站微服务架构下的测试重点2023 深圳站03微服务测试体系建设2023 深圳站微服务的日志聚合2023 深圳站微服务的分布式追踪2023 深圳站微服务测试体系:单服务接口测试功能测试协议字段测试字段类型取值范围是否必填默认值
4、字符编码安全测试前置条件关键字段失效性防篡改能力重入验证敏感字段是否存在越权查询接口是否防遍历2023 深圳站微服务测试体系:单服务接口测试性能测试协议升级测试新老接口协议的兼容性新老接口的数据兼容性PB协议消息字段序列号变更bug2023 深圳站微服务测试体系:微服务生命期测试服务注册:注册后是否能够被及时发现,异常退出后再注册,服务假死服务注销:正常/异常退出,是否有服务降级处理2023 深圳站微服务测试体系:微服务实例漂移测试有状态服务无状态服务VS实例漂移实例漂移2023 深圳站微服务测试体系:微服务配置测试配置项测试:类型、长度、缺失、默认值等,配置异常时是否影响主流程。配置来源:环
5、境变量/配置中心等配置加载时机:启动时加载并验证合法性上下游关联配置的合理性:timeout配置、错误码配置、加解密算法等.2023 深圳站微服务测试体系:中断重入测试中断重入测试为什么重要?-支付100块,退款流程中断,再次发起退款,结果到账200块?-提现100块,提现流程中断,再次发起提现,到账100块两次?存在资金风险!2023 深圳站微服务测试体系:中断重入之幂等性测试幂等性幂等性:简单说就是对一个接口,相同的请求不管调用多少次,对系:简单说就是对一个接口,相同的请求不管调用多少次,对系统的影响与一次执行是相同的,对调用方的返回每次也是相同的。统的影响与一次执行是相同的,对调用方的返
6、回每次也是相同的。微服务AcceptOrder返回order_time字段。-第一次返回:2022-10-25 15:08:14-重入时返回:2022-10-25T15:08:14+08:00举例举例1:微服务AcceptServer返回记账状态。第一次返回:记账失败(记账单已经落DB)重入时返回:记账成功(记账单的DB状态未变更)举例举例2:2023 深圳站微服务测试体系:服务间强弱依赖测试假定我们有两个微服务假定我们有两个微服务A和和B,A会调用会调用B。强依赖:如果微服务强依赖:如果微服务B出现故障不可用时,微服务出现故障不可用时,微服务A也不可用。也不可用。弱依赖:如果微服务弱依赖:如