PO模式
PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性!
- V1:不使用任何设计模式和单元测试框架
- V2:使用caselist管理用例
- V3:使用方法封装的思想,对代码进行优化
- V4:采用PO模式的分层思想对代码进行拆分
- V5:对PO分层之后的代码继续优化
- V6:PO模式深入封装,把共同操作提取封装到父类中,子类直接调用父类的方法
目录详解
- case:测试用例,一个py表示一个测试用例
- common:公共类,里面编写公共使用到的方法。
- data:存储测试使用到测试数据。
- download:测试过程中下载的推流版本
- logs:保存测试过程中用例的运行日志、容器的logcat日志、服务器的dmesg日志以及测试过程中的截图
- report:测试报告目录,主要用来存放测试报告。
- source:测试资源
- utils:工具类,存放通用的工具类方法
- caselist:待执行的测试用例集,每一行表示一个测试用例
- run:执行器,执行文件
- setting:配置文件。
一、用例调度
- 用例获取:手动将用例名称写入caselist,执行器会默认每一行为一个用例名称,到case文件夹中查找对应的py文件
- 用例执行:执行器main.py, 运行run函数,执行 python 用例名称.py
- 用例格式检查:每一个py文件执行前,通过类装饰器对用例格式进行检查,但因为每一个用例都是继承basecase,所以只要参照模版格式都是对的
- 用例继承BaseCase: python 运行py文件时,会通过if __name__ == "__main__"运行Basecase.py 中的run(),从而依次运行用例的setup(), test_step(), teardown()函数,并在basecase中对三个函数中进行装饰,处理每一个步骤运行异常的情况、用例测试时间以及用例测试结果的逻辑在这里面
二、用例设计
- 容器环境准备
- 解压软件版本包
- 安装kmd驱动
- 配置文件
- 容器清理
- 启动容器
- 容器检查
- 推流环境准备
- 下载推流软件包并解压
- 方案1:采用python selenium 模块通过模拟点击的方式下载对应版本,缺点是耗时长,依赖第三方库,还需要下载对应的浏览器驱动
- 方案2:(curl -u用户名:密码 -o 本地文件绝对路径 下载链接)
- 本地推流,修改配置文件
- 异地推流
- 方案1:ssh传输文件到推流机,然后启动socket服务,调用cmd执行推流脚本,只能对指定的推流机操作
- 方案2:go 语言编写的agent服务,可以灵活配置推流机,异地推流的环境准备业务逻辑在推流机测操作,简化了用例步骤
- 本地推流/异地传送推流文件,并推流
- 下载推流软件包并解压
- 云游戏操作
- 多线程运行游戏
- 根据全局变量,启动脚本获取关键性能数据
- 收集容器logcat日志和服务器dmesg日志
- 预期结果检查
- 推流状态检查
- 游戏运行状态检查
- 性能数据检查
- 日志关键字检查
- 环境清理
- 服务器容器环境清理
- 推流环境清理
三、结果呈现
载入前端HTML模版
- 记录版本信息
- 记录测试时间
- 记录测试用例数,测试用时,用例pass数,失败数
- 记录每一条用例的关键信息,失败的用例记录失败原因
- 保存用例的log下载链接
四、日志处理
- 用例的关键步骤的日志采用print打印,显示在终端
- 用例中涉及多路容器运行的,容器的运行日志用logging日志,不显示在终端,但保存在用例logs文件中
- 单个用例调试运行时,关键步骤打印和容器日志打印都显示在终端,方便debug调试