Web系统与后台Server的socket接口测试
Posted 松勤软件学院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web系统与后台Server的socket接口测试相关的知识,希望对你有一定的参考价值。
2.3 发送数据
建立了连接之后,下一步就是web端发送请求数据了。发送的请求数据根据不同的功能,有不同的数据格式,以下列出发送请求的主要测试点:
发出的请求格式是否正确。黑盒角度:直接看对端日志和返回结果;白盒角度:截取发出的请求,检查结构体中数据填充是否正确
发出的请求结构体如果不是定长,需要以设计的最大长度作为边界值进行测试。
从功能角度,填充结构体中的不同块的内容(也就是覆盖到不同的业务功能逻辑),检查是否能够正常发出,对方是否能够正常处理。
2.4 接收数据
发送请求之后,web端必然会接收到返回结果。返回的结果数据根据不同的功能,也是有不同的数据格式,一下列出通用的主要测试点:
检查返回结果是否正确。黑盒角度:检查web端是否正常解析,有无报错;白盒角度:截取返回的数据,检查结构体中数据填充是否正确
如果返回的结构体不是定长,需要以设计的最大长度最为边界值进行测试
如果返回的结果体中的循环数据有很多,需要检查与发送出去的数据是否一一对应。
【例9】某web系统向某后台server模块批量发送100个词的合法性验证请求,server模块返回结果中针对每个词都有对应的检查结果标识,在测试中需要检查该server模块返回的是否是100个词,100个词返回结果是否与发出的待检查数据对应等。
从功能角度,设计覆盖到不同业务功能逻辑的数据,发送并接收解析,从web端和server端分别检查处理是否正常。
在并发情况下或者在传输大的数据包情况下,检查是否会出现收包未收完就关闭了连接的情况。这种情况在测试环境不太容易测到,但在java程序中却比较常见,需要做的是防患于未然,在RD设计和开发时,提醒web的RD注意接收数据流的读取方式,一定要循环读取到最后一个字节才关闭连接。
【例10】某web系统向某server发数据查询请求,在测试过程中发现web系统偶尔会出现查询请求报错。Web系统报错提示server返回数据不完整,而server的提示比较奇怪,有时会提示数据传输完成,有时提示连接被意外关闭数据传输失败。经过使用截包工具追查,找到原因是web系统在关闭连接时没有判断server返回的数据是否接收完成,所以当server返回数据量比较大时,web系统会接收到不完整数据导致报错。
3 常用工具
3.1 桩
在测试过程中,有时候为了方便构造数据,或者在server未就绪的时候web就可以进行测试,需要以桩模块的形式设计一个桩模块,用于模拟server 的功能,以特定的结构体返回数据给web。
桩模块在测试接口非常有用,常见应用场景:(1)web系统测试开始时,server模块尚未达到测试条件,web系统与server模块的测试无法进行下去,可以使用桩模块进行测试;(2)web系统与server模块的测试数据难于构造,尤其是边界值、特殊数据等,可以通过桩模块构造数据方便测试;(3)web系统测试需要一套长期稳定的server模块用于测试(此测试非该web系统与server模块的接口测试),但server模块无法提供这样的环境,可以通过桩模块来保证web系统正常功能测试进行。
3.2 截包工具
在测试过程中,有时候为了追查问题,或者需要白盒角度测试结构体内容填充是否正确,需要把web与server之间的交互数据都截取下来进行分析。截包工具截取到的数据,可以用于功能正确性验证、bug分析、自动化结果验证等。
截包工具的原理比较简单,所以在实际测试中,也可以用自己熟悉的变成语言字节编写一个类似的工具,并结合数据解析或者自动化验证的功能,可以加大测试的深度。
4 总结
上文介绍了从web测试角度测试web系统与server模块的接口在测试各阶段需要关注的点,需要说明的是,本文中介绍的测试关注点是根据笔者实际项目测试实践总结的较为通用的检查点,并非web系统与server模块接口测试的全部检查点。在实际测试中,除了通用的检查点之外,更重要的是接口功能检查,因为这才是接口的核心价值所在。
总而言之,Web系统与server的socket交互方式广泛存在于web系统中,为了保障web系统服务稳定,需要从项目设计阶段就开始关注接口的各测试点,以使得问题更早暴露更早解决,同时在测试设计和测试执行阶段需要多方面测试接口,最终交付接口交互稳定高效的web系统。
软件测试免费视频观看链接:https://ke.qq.com/course/159919#tuin=ba4122
松勤网:www.songqinnet.com
以上是关于Web系统与后台Server的socket接口测试的主要内容,如果未能解决你的问题,请参考以下文章
Python Socket Client及Server简单编程