项目背景
在高并发量的情况下,针对某一台服务器的访问量激增就可能导致该服务器“宕机”,造成难以估量的损失。因此,就需要我们自己设计一个MQ来进行“削峰填谷”保证服务器能够平稳运行。在我们的MQ中通过对虚拟主机、交换机、队列、绑定的管理来控制对消息的接收和转发。我们一共分为三个模块来进行功能实现:
-
公共模块:约定网络通信协议、进行消息的序列化和反序列化
-
服务器模块:实现对虚拟主机、交换机、队列、绑定、消息的内存管理和硬盘管理
-
客户端模块:建立生产者和消费者的网络通信连接、通过信道进行数据传输
测试计划
因为我们的“消息驿站”项目是一个纯后端项目,我们要对每个模块分别设计测试用例来进行单元测试/黑盒测试。
服务器模块
设计测试用例
-
数据库管理:
测试交换机的测试用例:testExchange,ExchangeType.DIRECT,true,false,[“aaa”,1],[“bbb”,2]
测试队列的测试用例:testQueue,true,false,false,[“aaa”,1],[“bbb”,2]
测试绑定的测试用例:testExchange,testQueue,testBindingkey -
文件管理:
测试目录创建:“/data/queue_data.txt”,“/data/queue_stat.txt”
测试修改统计消息文件:totalCount=100,validCount=50
测试插入与删除消息:null,”testMessage“,”testRoutingKey“
测试取出所有消息:null,”testMessage+i“,”testRoutingKey“
测试GC消息文件:null,”testMessage+i“,”testRoutingKey“ -
内存管理
测试交换机的测试用例:testExchange,ExchangeType.DIRECT,true,false
测试队列的测试用例:testQueue,true,false,false
测试绑定的测试用例:testExchange,testQueue,testBindingkey
测试消息的测试用例:null,”testMessage“,”testRoutingKey“
进行单元测试/黑盒测试
- 数据库管理
- 文件管理
- 内存管理
客户端模块
设计测试用例
-
client测试用例:
测试交换机的测试用例:testExchange,ExchangeType.DIRECT,true,false,null
测试队列的测试用例:testQueue,true,false,false,null
测试绑定的测试用例:testExchange,testQueue,testBindingkey
测试消息的测试用例:null,”testMessage“,”testRoutingKey“ -
broker server测试用例:
测试交换机的测试用例:testExchange,ExchangeType.DIRECT,true,false,null
测试队列的测试用例:testQueue,true,false,false,null
测试绑定的测试用例:testExchange,testQueue,testBindingkey
测试消息的测试用例:null,”testMessage“,”testRoutingKey“
进行单元测试/黑盒测试
- client
- server
转发规则模块
设计测试用例
进行单元测试/黑盒测试
测试总结
我们的”消息驿站“就是通过对虚拟主机、交换机、队列、绑定的管理来控制消息的接收和转发。因此,在测试时应该重点关注它们内部的方法执行是否正确。我们在上述介绍的测试过程中,通过对消息所处的各个环境里对交换机、队列、绑定、消息的管理设计对应的测试用例,全面的检测了消息传递过程中的各种情况,最终保证了消息传输的正确性,也就保证了项目的正确性。