本文章转载于搜狗测试
专注于黑盒测试过程中的一切,包括总结现有的工作成果,发掘新的工作方法,探寻高效的测试工具等,所有与黑盒测试相关的话题都可以在这里讨论
测试客户端与服务器交互的功能,如何进行测试,需要考虑哪些内容呢?下面我们分阶段来说明一下~
测试沟通阶段
需要跟客户端和服务器端开发沟通,确定客户端发送请求的样式,需要包含哪些参数值,参数值具体有什么样的作用。
跟服务器端确认是否需要添加特定的user-agent(添加user-agent的目的:确保服务器安全)。
确认客户端和服务器端交互时是否需要对文件进行加密操作。
跟开发确认请求时是否需要增加重试和具体的超时机制,有无下载的断点续传。
确认服务器的具体类型,是apache的还是Ngnix的。
对于需要客户端识别的参数,确认服务器端返回该参数是可能存在的返回值。
对于异常情况,跟服务器和客户端的开发确定相应的容错处理。
需要注意询问开发,与服务器之间的交互是用什么做的,标准的http协议还是自写的协议。
还要注意,交互时的http连接,是用get还是post。
需要和开发事先沟通清楚,是否需要特殊工具。
如果客户端与服务器端交互的配置文件为密文时,需要询问开发有没有需要特别关注测试的地方。
需要和开发对一下url中的参数,是否可以满足需求
需求了解时,要注意跟产品/开发确认好测试范围;
跟开发确认好,是否需要进行压力测试;
跟开发确认都哪些地方需要加防盗链;
如果涉及到网页相关,要确认好测试环境:xp、win7、Win8、Win10及IE版本等
跟开发确认好待测试的常规网络错误,以及测试方法;
对于服务器端策略,需要和该服务的运营负责人沟通清楚,是否需要测试关注
功能划分
如果一个功能同时涉及服务端和客户端的修改,首先从功能上就要分别对客户端和服务端分别进行测试。
测试准备阶段
尽量使用线上的服务器;如果需要搭建服务器则尽量保持跟线上或未来线上的服务器类型一致。
搭建测试服务器环境时,测试服务器的返回策略,尽量跟线上或未来线上的服务器端策略一致。
用例设计
写case的时候,详细了解客户端和服务端的逻辑后,要确认一下,之前定好的测试范围是否合理,是否有部分不需测试的逻辑可能会存在问题,如果有这种不确认的地方,需要再次确认测试范围;
要考虑不联网时,待测模块是否仍需支持某些功能;
执行阶段
1.1.客户端关注
尝试连接时,不联网,要有超时
对于本地无连接的测试,一定要区分断网和禁用网卡,这两种情况不同。
下载过程中,网络情况不佳或者断网,要有超时,最好也有三次重连机制,重连的时间不宜过短建议20ms
文件过大,建议需要有断点续传逻辑
要验证各种网络错误环境,最起码要包括200、302、403、404、417、500、502等错误和服务器超时、本地超时
测试时需要关注,每条url请求是否支持302跳转
需要模仿502跳转,确保调整后,客户端能够正常运行
服务器返回文件类型需要关注:文件格式错误、Html格式文件、空文件、0字节的文件。
服务器返回文件时,文件的储存路径,空间,路径的读写权限、储存路径是否已经存在文件,存在文件的数据(0字节,其他类型的文件、损坏的文件、下载的文件不完整)
服务器端返回的url值的类型、长度的容错,服务器返回文件的内容:是否加密,参数值为中英文、简繁体、特殊符号、数字、空、缺省、零、小数、负值、超长、乱码等,参数缺省,规定下载的文件个数与下载的文件实际个数不匹配。
发送的url内容,参数值中的特殊符号、中文是否已经转义;
需要测试时关注,交互时配置文件的编码问题,例如要覆盖到ASCII、unicode、ANSI等编码。
还要注意测试时,交互时配置文件中的换行与回车换行的问题,要保证这两种都可以测试通过
要注意在低权限进程中,该功能能够正常进行
该交互是否会被安全软件拦截;如果要打开浏览器访问,还要检查是否会被浏览器拦截
客户端发送的请求中是否带具有特性的User-Agent(具体根据与开发的沟通结果来验证)
基本功能测试完毕后,需要进行跟服务器端的联调。
客户端与服务器联调时,要注意确认联调case,多跟开发沟通;
1.2.服务器端关注
对于服务器来说,要进行压力测试
客户端、服务器端分别测试后,上线前要有联调,除了走主功能外、还要结合开发与运营的意见设计联调case
服务端需要考虑是否要做安全校验,以免被攻击
服务端和客户端均通过测试后,在上线前,需要客户端和服务端进行联调测试,确认服务端和客户端均ok
客户端发送请求的内容:是否加密,参数值为中英文、简繁体、特殊符号、数字、空、缺省、超长。
测试完成后
服务端上线后,如果有需要,需要验证服务端的服务正常上线,通过外网IP能够获取服务端的服务
公示客户端与服务器端交互时需要注意的相关事项及存在的风险,确保服务器端的策略能够与客户端正确匹配。