03 事件驱动架构软件测试
Posted on Wed, 25 Dec 2024 17:12:01 +0800 by LiangMingJian
1.事件驱动架构概述
1.1 概念
- 事件是指状态的显著变化,例如有一个超链接,将鼠标放到超链接上是一个事件,点击超链接后又是另一个事件。
- 事件从来源来分,可以分为内部事件和外部事件。
- 事件从类型来分,可以分为业务事件和系统事件。
- 事件通知是将事件通知到架构其他部分的一种特殊消息,比如说点击按钮之后,要将点击的动作传到其他部分去响应,传递点击这个动作的特殊消息就是事件通知。
- 事件驱动架构就是指通过事件进行通信的一种软件架构,该架构关注的是事件的产生、识别、处理和响应的情况。
1.2 优点
- 天然为事件的发生和处理建立了模型
- 事件与事件处理逻辑、事件处理逻辑之间都得到了充分的解释
- 交互式的响应性能较好
- 一般很少出现维护性和可移植性问题
1.3 缺点
- 要考虑异步通信中的常见问题
- 开发相对复杂,与事件处理相关的点也非常常见
- 同时在实践中,此类缺陷导致的失效往往比较难以复现和定位
1.4 组成
- 通知队列:由于内外部事件引发或触发的特殊的消息被送到事件队列中
- 事件队列:接收事件的入口,同时存储事件
- 分发器:将不同的事件分发到不同的业务逻辑单元。包含流式处理方式或注册发布处理方式(订阅、推送)两种实现方式。
- 事件通道:分发器与处理器之间的联系渠道
- 事件处理器:实现业务逻辑,处理完成后会发出事件,触发下一步操作
- 对于简单的项目,事件队列、分发器和事件通道,可以合为一体,整个软件就分成事件代理和事件处理器两部分。
1.5 支持的功能
- 事件通知的编码解码(可选)
- 事件通知的发送与接收
- 事件队列的管理与维护
- 时间的注册/注销
- 事件的优先级(可选)
- 事件与注册记录的匹配和过滤
- 时间的广播/转发
- 事件通道的创建、管理与维护(可选)
- 事件处理机制的调用方法
- 事件处理后的返回和/或后续处理(可选)
2.事件驱动架构测试
2.1 功能性测试
- 功能完备性
- 功能正确性
- 功能适合性
2.2 可靠性测试
- 事件通知的编码解码,关注:编码解码库是否异常,编码解码缓存是否溢出。
- 事件通知的发送与接收,关注:消息的丢失,消息的重复。
- 事件队列的管理与维护,关注:队列的溢出。
- 事件的注册与注销,关注:事件的重复注册。
- 事件的优先级(可选),关注:优先级倒挂。
- 事件与注册记录的匹配和过滤,关注:对事件的识别,对事件的转发逻辑。
- 事件的广播和转发,关注:事件广播和转发异常后的稳定性。
- 事件处理后的返回/后续处理(可选),关注:未定义的处理逻辑,有错误的返回代码,对处理逻辑返回错误的代码。
2.3 性能效率测试
- 事件通知的编码解码,关注:编码解码库的容量。
- 事件通知的发送与接收,关注:消息延迟。
- 事件队列的管理与维护,关注:事件长时间得不到处理。
- 事件的注册与注销,关注:注册后未删除占用了一些资源。
- 事件的优先级(可选),关注:优先级的错误设置,代码逻辑出现错误而导致事件处理不及时甚至溢出。
- 事件与注册记录的匹配和过滤:关注:时间达不到要求。
- 事件的广播和转发,关注:占用资源比较多,超过系统的缓存容量。
- 事件通道的管理与维护(可选)
- 事件处理机制的调用方法
- 事件处理后的返回和后续处理(可选)
2.4 易用性测试
- 事件通知的编码解码,关注:对用户触发的事件的合法性的检查,以及出现编码规范的错误时能否返回正确的错误代码。
- 事件通知的发送与接收,关注:对异常的数据是否未做保护。
- 事件的注册与注销,关注:重复注册,未注册却收到注销请求。
2.5 信息安全测试
- 主要针对接口进行测试
- 事件通知的发送与接受
- 事件的注册与注销
2.6 兼容性测试
- 事件通知的编码解码,关注:编码或解码的逻辑不一致导致的误读,解码错误。
- 事件通知的发送与接收,关注:语义不一致。
- 事件的注册与注销,关注:多个子系统之间对注册注销以及它的内容格式不一致。
- 事件的优先级(可选),关注:架构系统内部和外部的优先级定义出现不一样。
- 事件的广播和转发,关注:事件进行广播和转发时系统之间出现兼容性问题,在不必要的范围内进行了事件的转发。
2.7 事件驱动架构测试策略
- 采用分层测试策略进行测试
- 单元测试:各个模块,函数通过功能和代码进行覆盖测试
- 集成测试:围绕核心功能进行设计
- 系统测试:一般不安排
- 采用业务逻辑测试策略进行测试
- 单元测试:集中围绕事件处理逻辑测试
- 集成测试:可跳过,围绕优先级机制测试
- 系统测试:基于规格说明书进行测试,通过用于界面或系统接口来实现测试执行