####项目名称:一起聊
#####实现功能:
类似于多人聊天室,用户在终端输入昵称等个人信息进入聊天室,该用户发送一条消息,在线所有的好友都可以收到,任意在线好友发送的消息,该用户也都可以收到。
#####使用技术:
socket编程,json,ncurses,生产者消费者模型
#####开发环境:
Linux(Centos7),C++(C98,C++11),g++(4.8.4),gdb(7.6.1)
#####网络传输协议:UDP
#####自定义协议:
采用json格式处理发送的数据和接收的数据
Json::Value value;
value["name"] = name; //用户昵称
value["gender"] = gender; //用户性别
value["age"] = age; //用户年龄
value["cmd"] = cmd; //标志字段,判断是否下线
value["words"] = words; //用户真实要发送的消息
######服务器端功能介绍:
(1)负责接收所有用户的消息
接收到用户发送消息时,就将该消息保存在一个阻塞队列中
(2)将一条消息对所有的用户进行广播
从阻塞队列中取出一条消息,然后更新在线好友列表,对在线所有用户发送消息
######客户端功能介绍:
(1)负责向服务器发送消息
获取用户输入的消息,将数据格式化,向服务器发送消息
(2)负责接收服务器发来的消息
接收到来自服务器的消息时,就将消息保存在双端队列中,然后更新在线好友列表,显示聊天框
######整体设计思想:
代码实现链接:https://gitee.com/zhoudandandandanzhou/review/tree/master/chat
项目拓展:
在自己现阶段所学的软件测试基础上,对该项目进行测试
(a)功能测试:前提条件:网络状态良好 + 输入正确的[IP+Port]
(1)输入昵称,性别,姓名,按下回车后出现聊天界面
(2)可以多个用户进入聊天室
(3)在多个用户进入聊天室后,该用户发送一条消息,其他用户都可以收到
(4)在多个用户进入聊天室后,其他所有用户发送的消息,该用户都可以收到
(b)性能测试:
(1)最多有多少个用户可以进入聊天室(最大用户数)
(2)多个用户同时发送消息时,收到消息的延时(服务器的平均响应时间)
(c)界面测试:
(1)在不同的窗口下,仍然可以正常显示聊天界面
(2)消息框和好友列表框大小分布合理够用
(d)易用性测试:
(1)无需注册账号,用户可以用不同的个人信息进行聊天
用到的编写测试用例的方法有,按照需求进行编写测试用例,等价类、边界值、推测法等
完。