未知的新协议接口并不可怕
测试工程师的首要任务就是要测试接口的正确逻辑、错误逻辑是否满足最初的需求,因此,我们需要快 速地掌握验证手段。在时间紧迫的情况下,如果我们还是先学习新协议的基础知识,再学习 怎么使用它,就无疑压榨了测试的工期,也会让我们在真正开始工作时手忙脚乱。
所以,我们要从解决实际问题的角度出发,直接拿到开发工程师提供的调用客户端代码,这 样我们就可以快速完成工作了;在完成工作的后续时间里,我们也可以慢慢补充基础知识。需要你注意的是,我并不是说基础知识不重要,而是说在项目进行过程中,学习基础知识很多时候没有完成项目的质量保障工作重要。
自己写 WebSocket 测试代码
Python 提供了 WebSocket 的协议库,因此我只要用它完成客户端的撰写,就可以 进行接口测试了第一个 WebSocket 的调用代码(这里我们以http://www.websocket.org/demos/echo/ 为例)
代码语言:javascript复制#引入websocket的create_connection类
from websocket import create_connection
# 建立和WebSocket接口的链接
ws = create_connection("ws://echo.websocket.org")
# 打印日志
print("发送 'Hello, World'...")7 # 发送Hello,World
ws.send("Hello, World")
# 将WebSocket的返回值存储result变量
result = ws.recv()
# 打印返回的result
print("返回" result)
# 关闭WebSocket链接
ws.close()
区别是,WebSocket 是一个长连接,因此需要人为的建立连接,然 后再关闭链接,而 HTTP 却并不需要进行这一操作。
将 WebSocket 接口封装进你的框架
由于 WebSocket 是一个长连接,我们在 Common 类析构函 数中添加了关闭 ws 链接的代码,以释放 WebSocket 长连接。依据前面的交互流程,实现代码如下所示:
代码语言:javascript复制from common import Common
# 建立和WebSocket接口的链接
con = Common('ws://echo.websocket.org','ws')
# 获取返回结果
result = con.send('Hello, World...')
#打印日志
print(result)
#释放WebSocket的长连接
del con
现在,从改造后的代码中,你是不是更能体会到框架的魅力了?它能让代码变得更加简洁和 易读,将 WebSocket 的协议封装到你的框架后,你就拥有了一个既包含 HTTP 协议又包 含 WebSocket 协议的接口测试框架了,随着你不断地积累新协议,你的框架会越来越强 大,你自己的秘密武器库也会不断扩充,随着你对它的不断完善,它会让你的接口测试工作 越来越简单,越来越快速。
总结
借力开发工程师。你首先该借力就是开发工程师,但你不要进入开发工程师给你的那 种,从技术基础和理论开始学起,再逐步应用的学习脉络。你要一击致命,直接把他的 客户端代码拿来,尽最大可能挪为己用,将其变成自己的接口测试代码。
站在自己的技术栈之上,完成技术积累。如果开发工程师的代码并不能拿来使用,那么 你就需要站在自己的技术栈上寻求解决方法,这其中既包含了你已经熟悉的测试工具、 测试平台,也包含了自己的测试框架和编码基础。
归入框架,无论你使用哪一种方法,在完成测试工作后,你还是要掌握对应的理论基 础,同时想办法将这个一开始陌生的接口,通过自己熟悉的方式合并到你自己的框架 中,不断扩充自己框架的测试能力,不断丰富你自己的测试手段。