通过自动化单元测试的形式守护系统架构

1 背景

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:dbbe10c1-3f8f-468d-a1a4-696871f27264

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:de322de9-311a-4a4a-b184-8cae6c7f1e51

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:8956b0e2-05dc-4dde-9aa4-beac931993d8

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:baa9a59b-2054-4980-8dd7-73e641d13efc

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5c6b3697-8955-4968-9b14-10ae886e6af5

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:163abfa4-94bd-4c78-89d7-30ace4a8adc1

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:4be5ae1b-3125-43d1-8117-23d6055a5e76

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c025944b-f9a6-4ef1-a8ac-8044cbfe58e8

2 为什么选择Archunit

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:bed406d4-17b8-45ac-a486-da0b3d1de6cc

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6657c6ff-7f42-4fee-ac4d-3fe0e506bea8

  • 支持架构规则自动化检查
  • 轻量级,接入成本低
  • 结果及时反馈
  • 灵活扩展且扩展成本低

对于架构规则常见的验证方式:代码评审、代码质量分析工具或平台、Archunit

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:9938a9f7-6c90-4d41-978d-fd627c9e011a

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1ef7d3d0-a6d7-42eb-994e-5e6476dcdd79

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:afd568bc-210a-4a2e-a991-9d6ed2222ba4

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:9e0bd6a1-7e1e-4a00-806e-d50a584de717

优势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:fa699afe-654b-457f-a97d-519a5ab17ebb

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b928bb21-d886-4cfa-9974-d23252f0dd21

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b62cf554-4501-4cee-a91f-9b4e7d79ff16

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5ad1f220-6b44-4a29-8008-e81454fb6c59

劣势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:55a349bb-b224-47c5-8fd7-788193247b02

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c1aedb09-b093-4ffb-a2d4-4d3137352828

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:9cc467ec-c1b6-4ca0-af7f-5d0633029579

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:09539b82-bff5-4fd4-a218-5c6fbb36c778

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:20558bd8-9d33-45fc-ba05-08eab2f13af0

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:76c34e2f-8d5b-4b12-aca6-9bdbb25c1e1d

代码质量分析工具:比如Sonar、Checkstyle等

优势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:3d629045-f5cc-4a3e-b067-73f2f844923d

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b505c4d5-37bf-4544-b2cd-c5e895b2a016

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e329bd63-a9bf-4b06-ab75-1299c6cb6d60

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:944126e2-f1d6-427d-ac8e-a23e64b8acf2

劣势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e2972d4e-de25-49b7-ab09-4b8b1288882c

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:9e323ead-2869-45d1-bd0d-4d824fdeb988

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c2bc70b9-6b2a-4a10-859c-c266050a15d0

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:90e51cf5-3553-4270-a385-7070c24de282

* 定制规则有一定成本(因平台扩展能力而异)

Archunit:通过单元测试形式对架构规则自动化检查

优势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c569d365-cab2-4c65-9e74-5a888ea4c7b9

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5be44ff7-56bd-42b5-b2c9-c40e9bd66a78

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:0c16210f-cd0d-4917-92a3-186834feb3d9

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:686e1bdc-6bb1-49e6-a04b-79900c5f451a

* Archunit 提供的Java 流式API 易于理解,接入和使用成本低
* 使用纯Java单测框架以单元测试形式自动化执行,及时反馈单测结果

劣势

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:94f190cd-9c74-4ff1-88c4-75e7eb644ed4

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5dfd86a9-19d1-4bd1-a07d-a133a96d7d36

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:265b20a1-270d-4b80-8fde-34735f42a0f3

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:94745a67-d265-4386-83eb-bba71feab1a3

3 Archunit是什么

ArchUnit是一款免费、简单可扩展的类库,它可以使用任何Java单元测试框架来检查Java代码的架构约束。基于Archunit我们可以自动化检测:

  • 循环依赖
  • 包的包含关系
  • 类的依赖关系
  • 类和包的包含关系
  • 继承关系
  • 注解

Archunit和代码质量分析工具的关系如下图所示,二者都可以对代码进行分析,在功能覆盖上存在一定交叉。

Archunit不能解决所有的架构属性的约束自动化验证,其主要侧重于系统的演进性、可维护性、可测试性、可解释性等,也可以对耦合度、命名规范等进行验证。

4 引入Archunit

4.1 开始就是如此简单

使用Archunit编写架构规则约束非常简单,其提供了便捷的流式API,可以快速的构建规则。

示例1:RULE.01 所有的枚举类必须以Enum为后缀

示例2:对应用分层进行约束校验

在IDE下执行Archiunit单元测试结果示意如下图所示:

4.2 如何组织架构规则

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:99df44a6-8d52-4c23-9f9f-72b2f5401b9d

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:58e58cf8-d4a1-4ca6-8c5c-304683fa5c10

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:910655ed-28c5-48ed-89df-1231e8f2ef11

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6dc935f5-0018-4634-b292-b6e1eb6ea135

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:33638afb-054a-4bb5-a7eb-ba528a9f457b

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e14bfdc3-6e8f-4623-9315-8925f8568c5c

4.3 团队如何规范化

团队是否要引入Archunit本身也是一项架构决策,建议采用文档化形式对该决策进行记录,记录形式参考 《 轻量级架构决策记录机制 》

如果团队想要引入Archunit,从流程化和规范化视角可以基于准备-试点-优化-推广的模式进行实施:

实施准备:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:d3b071ea-0453-460f-a442-71ccf26015ee

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:cd20d519-d640-41f9-ad7d-56711a4b10a2

* 基于Archunit实现通用架构约束以便在不同项目间进行复用

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:eac723c8-1c3d-48ae-a3a0-d72aa4ea6b5e

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2b61d186-922b-4eb6-b0f2-4d6aca72410d

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e99c86b0-cd21-4ccf-9861-ded917db9eb3

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:488e455f-c8c8-4bd4-b56c-adc1d4eb242a

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c03a6cf7-e214-4852-bd11-46a9e01f9521

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:24362ab0-d8f9-40af-ba3a-a8aa419fa811

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:682d3a51-de35-4a5c-85b3-0e625e55378d

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:dd99b7d2-45fe-4a0a-aee6-b0c63a2daec0

5 结语

Archunit不能做什么:

  • 处理文件
  • 测试所有架构属性
  • 只支持JVM语言
  • SOURCE注解
  • 需要导入大量代码,加入CICD流水线后的时长影响
  • 不能保证自身的维护性

Archunit对架构约束的自动化检测极有价值,且具有较低的接入和定制化成本,强烈建议团队引入试点。引入Archunit进行架构约束自动化检查后,将对以下方面产生影响:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c8dcd1f1-7057-453e-9adf-54fd24af335f

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:db686568-a55e-4865-97ef-1ec282837eb3

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:215cf81c-a905-43bc-829b-06527cd0c167

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:4b4f6507-4e3f-4ade-9a47-2f66d379f95a

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:f8706e7b-9612-46e5-ae58-5ed5cd2fe2e6

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:3f3f5c7f-5bea-4b99-b912-b474d7b8164b

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:346043fd-0b84-48f0-b5ea-17c4d4b1e028

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:d54cb122-f772-46d2-be8a-4f241fbd58cf

Original: https://www.cnblogs.com/Jcloud/p/16707188.html
Author: 京东云开发者
Title: 通过自动化单元测试的形式守护系统架构

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562020/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球