介绍
KunLun AutoTest是基于命令行的测试自动化平台。
平台通过终端连接待测产品(DUT), 发送命令行指令对产品进行激励, 并自动采集产品的反馈日志, 用户根据测试业务需要对反馈的日志进行分析、判断, 并决策下一个动作(继续发送或是停止测试), 如此反复, 直到所有的命令行指令发送完毕。
平台采用WEB形式的操作界面, 自动保存测试全流程日志, 同时提供接口函数, 支撑用户快速二次开发。
测试主界面
上图展示的是 Container 工位界面。
平台采用三层结构表述测试环境架构, 分别是: Station(工站)->Container(工位)->Connection(连接) ,
一个工站可以包含多个工位, 一个工位可以包含多个连接。
Station工站 是指一个测试工序, 一台物理测试主机可以配置若干个相同的或是不相同的测试工序, 不同的测试工序完成不同的测试业务。
Container工位 是指完成测试业务的具体执行单元(任务), 一个测试工序包含若干个测试工位,
多个测试工位可以并行执行多个测试任务, 即同时测试多个产品。
Connection(连接) 是指一个虚拟终端, 一个测试工位可以包含多个连接, 以满足产品多元化测试的需求。
例如: 手机测试中需要使用程控电源, 综测仪, 蓝牙连接模组, 声音测试模组等, 可以建立多个连接, 连接之间相互配合、协同完成整个测试流程。
测试用例示例
通常一个测试用例包含:
配置测试环境, 连接产品
发送一系列测试命令行
对产品反馈的日志进行解析, 判断测试结果是通过或是失败
重复第2步与第3步
关闭连接, 清理测试环境
假设有如下测试用例: 进入Python交互界面, 通过 sys.platform 查询当前主机的操作系统类型, 并打印结果,
若结果不为 linux, 测试失败。反之, 测试通过:
from kunlun import lib
log = lib.get_event_logger()
class Test:
def test_01(self):
uut = lib.cn.ref
uut.send("python\r", expect=">>>", timeout=10)
uut.send("import sys\r", expect=">>>", timeout=10)
uut.send("sys.platform\r", expect=">>>", timeout=10)
log.debug(uut.buf)
if "linux" not in uut.buf:
raise Exception("platform should be [linux], go to fail")
uut.send("exit()\r", expect="$", timeout=10)
以上为测试用例的代码实现, 接下来先对代码进行分段解释。
从平台导入接口函数库:
from kunlun import lib
实例化
事件日志, 获得event log实例, 后续可用log.debug(),log.error()等记录事件日志:log = lib.get_event_logger()
写一个标准的pytest用例, 用例名必须以
test_开头:def test_01(self):
在用例中打开一个终端(连接):
uut = lib.cn.ref
通过连接send()下发指令, 举例进入python交互界面:
uut.send("python\r", expect=">>>", timeout=10) uut.send("import sys\r", expect=">>>", timeout=10)
6. send()方法完成后, 对应的日志输入将保存在 uut.buf 中,
可使用 log.debug() 将日志打印至 事件日志 EVENT界面:
uut.send("sys.platform\r", expect=">>>", timeout=10)
log.debug(uut.buf)
对日志进行分析, 以判断测试是否通过, 若失败, 触发异常, 测试将停止:
if "linux" not in uut.buf: raise Exception("platform should be [linux], go to fail")
需要说明的是, 用户可以使用 raise 触发异常, 也可以采用断言 assert 触发异常:
assert "linux" in uut.buf, "platform should be [linux], go to fail"
清理测试环境, 回到虚拟终端主界面:
uut.send("exit()\r", expect="$", timeout=10)