介绍这是Dapr的特色项目,具体参见: https://github.com/dapr/test-infra/issues/11 ,在全天候运行的应用程序中保持Dapr可靠性至关重要 。在部署真正的应用程序之前,可以通过在受控的混沌环境中构建,部署和操作此类应用程序来实现这种信心 。
测试应用程序【Dapr 长程测试和混沌测试】所测试应用程序将模拟在社交网络中发布的消息,以便通过情绪分析进行评分 。不采用外部依赖来更好地控制环境 。可以删除某些组件,并实现相同的结果 。另一方面,这个测试设计是有意地执行Dapr的所有构建块 。此应用程序中的所有组件使用相同的存储库和相同的编程语言实现,以便快速开发 。由于此应用程序也使用 Actor 功能,因此可以用 .Net 或 Java 编写 。鉴于当前的项目维护者更熟悉 C#,因此使用带有 C# 的 .Net SDK来实现这个项目 。存储库应与现有存储库分开 。建议创建一个名为“长程测试”的新存储库 。

文章插图
Feed 流发生器生**工社交网络消息帖子,例如:“Dapr很棒 。#DaprRocks #Kubernetes“ 。将在预定义的模板中自动生成这些消息“ is . <Hashtag 1> <Hashtag 2>” 名词和形容词的列表是预定义的,并且是随机选择的 。与主题标签列表相同 。该消息使用 UUID 生成器获取随机生成的消息 Id 和相关 Id,并使用 Dapr 的 PubSub API 以下列格式发布:
{"correlationId": "<UUID>","messageId": "<UUID>","message": "<message>","creationDate": "<creationDate>"}消息分析器该组件通过Dapr 的PubSub功能订阅主题,查找形容词与情绪类型(正面,中性,负面)的映射,并使用识别的类型(或未知,如果找不到)并将该内容附加到消息中 。最后,通过 Dapr 的输出绑定API 发布新的标记有效负载 。标记的有效负载采用以下格式:
{"correlationId": "<UUID>","messageId": "<UUID>","message": "<message>","sentiment": "<sentiment type>","creationDate": "<creationDate>"}Hashtag 计数器此组件将通过 Dapr 的输入绑定调用接收消息 。从邮件中提取主题标签 。对于每个hashtag标识的# 标签,它都会进行一个Actor方法调用:标识为“HashtagActor”的执行组件实例中的方法increment(sentiment) 。
Hashtag Actor 服务此组件对于在 Dapr 中练习“Actor ”功能非常有用 。它注册主题HashtagActor 程序类型,其中hashtag是标识符 。这个Actor 有一个方法increment(String sentiment), 其目标是保持每个主题标签 - 情绪组合的计数器 。在状态键中传递的情绪和状态值是前一个值(如果未找到,则为零),增量为 1 。
Hashtag 快照服务此组件将执行 Dapr 的状态 API(而不是在Actor 的上下文中) 。它每分钟唤醒一次,并从 Redis 状态存储中检索所有Key - 不使用 Dapr 的状态 API,因为 Dapr 不提供 API 来从另一个 Dapr 应用程序的状态存储中查询一系列状态 。预计只有几十个Key,因为此组件中预定义了主题标签列表 。现在,为所有状态生成键值对,并通过 Dapr 的状态存储 API 保存 。此服务还提供了一个 API,用于通过 GET 方法检索所有密钥 。
验证Worker此组件将对应用程序的结果执行运行状况检查 。鉴于最终的一致性和人为注入的故障,验证必须是模糊的 。Worker应执行以下验证:
- 每5分钟唤醒一次 。
- 通过在Hashtag 快照服务上调用 API 来获取所有键值对 。
- Sleep 2分钟 。
- 通过在Hashtag 快照服务上调用 API 来获取所有键值对 。
- 计算已更改的计数器数的比率 。
- 以 JSON 格式向标准输出指标:
{ "longhaul-counters-changeratio": "<ratio>"}
经验总结扩展阅读
- 软件测试周期
- 使命召唤手游:测试版如何下载安装?
- 静电测试仪的使用方法
- 面试时如何测试公文写作能力
- 24 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
- 有什么表测试电瓶好坏
- iPhone13ProMax续航测试_续航时间测试
- 中间测试是什么意思?
- 25 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇
- 微信人生成绩单怎么测试?