去年11月,我加入了N记,紧接着进入新员工训练营。
这次训练营体验给我的感觉就是:大公司不愧是大公司,这回我终于可以安心学点核心技术了。
任务:
这个训练营有两个任务,一是熟悉这边的敏捷开发流程;二是在训练营里做一定的编码,用python编写一个测试工具(桩,stub)。
我们要做的这个工具,是用来测试我们一种通信设备(B)上运行的程序(某种中间件),这个工具模拟另一种通信设备(A),发送一些按特定协议编码的消息给另一种通信设备B,并能反编码设备B返回的消息,也就是说要测设备B上的程序在收到一些消息时能否做出正确的回应。
设备B对于不同消息的不同回应有一系列的业务场景,每种业务场景可能包含几种正确的情况,几种异常的情况。这些场景,类似于我们做黑盒手工测试时经常看到的业务场景。
而我们的工具要做的事情,就是:
1.读取用户输入
2.把用户输入组装成待编码的文本
3.对待编码的文本以需求规定的协议进行编码,编码成特定的由0101构成的8位元组串,通常就是类似这样:0101010111010000110101011010100 一大串大家肉眼看不懂的东东
4.让我们工具跟指定的ip地址通过3次握手建立TCP链接
5.在建立好TCP链接后,通过发送/接收指定的登录消息完成两种设备在我们自定义的协议层面上的连接
6.把第3步编码好的消息发到目标ip,并且接收对方返回的消息,把收到的消息压入消息队列。最后从消息队列中提出我们期望收到的反馈消息
7. 再把结果反馈给用户。
整个过程,这么多步骤,以一定的规则分别封装成robot关键字,以便自动化测试组成员进行调用。
所有以上这些步骤,均以python实现。
此外,还有附带的单元测试脚本,也是必须的。
现有代码大概三四千行的样子,实现了两种设备之间通信的模拟,我们这一期,除了要增加一些这两种设备之间的消息类型和场景之外,还要实现第三种设备的模拟器。
当然,第三种设备C和待测设备的通信B的通信,同样遵循A和B的通信的那套协议和规则,只是客户端和服务端的角色有所变化。
也就是说,A是B的服务端,B是A的客户端。一个A可以和多个B同时通信。同时B又是C的服务端,C是B的客户端。
有一个导师帮我们解答一些疑难问题,帮了大忙了~
还有一份详细定义了协议和消息场景的文档也帮了不少忙。