[toc]
1. 测试项目
测试项目来自于”基于Socket编程接口实现网络通信”的所有要求
要求:
一、基于Socket编程接口实现网络通信
- 基本要求(70分):单Client端 C 向Server S 发送了一个文件名 test.txt,Server检查当前目录(可自行定义)下是否有这个文件。如果有这个文件,Server将这个文件发送给Client端 C;如果不存在这个文件,Server S发送文件不存在的错误信息到Client端。
- 附加要求(10分):Client端在成功接收到文件后需要自动向Server发送一个确认(自行定义)。
- 附加要求(10分):Server设置超时重传机制。即Server在发送完文件后的3秒内没有收到Client端发送过来的确认,或者确认的内容与规定不符,重新发送文件(一次即可)。
- 附加要求(10分):用多线程实现多Client端,即Server可以同时为多个Client端的请求提供服务。
同时本人附加了
- 客户端接收文件持久化到本地磁盘并改名防止覆盖同名文件
2. 测试用例
本次测试使用黑盒测试方法,遍历实现的功能路径.设计实现的功能路径图可表示如下:
可以看到主要有四个测试用例,主要是在并发环境下考察各个设计功能是否正常.考虑到本机难以实现客户端不回写或者回写错误的情况,这一用例通过更改源代码实现.表示如下:
-
并发1000个客户端—有”test.txt”文件—,人为改变服务端接收错误,模拟客户端发送错误声明,如下图所示:
-
并发1000个客户端—有”test.txt”文件
-
并发1000个客户端—有”test.txt”文件—人为将客户端接收文件的状态改为false
4. 并发1000个客户端—无”test.txt”文件
2.1. 并发测试说明
想要做到多个客户端真正并发访问Server来测试,需要多个Client同时运行,因为是个人单台机器能力有限,使用一个主java类通过多个线程来并发启动Client来替代.
3. 预期测试结果(分析说明)
对于前面的四个测试用例,预期应实现图中路径表示的各个功能:
实现原理请见附录部分.
4. 实际测试结果(说明原因)
4.1. 1
4.2. 2
4.3. 3
4.4. 4
5. 总结
- Client端和Server对本地硬盘读写,使用自己创建的字节流对象(本地流)
- Client端和Server之间进行读写,必须使用Socket中提供的字节流对象(网络流)
6. 附录