如何判断网站有cdn加速,asp网站连接数据库,wordpress漏洞 4.7,网站图片上传功能怎么做的UI 自动化技术架构选型
UI 自动化是软件测试过程中的重要一环#xff0c;网络上也有很多 UI 自动化相关的知识或资料#xff0c;具体到 windows 端的 UI 自动化#xff0c;我们需要从以下几个方面考虑#xff1a;
开发语言
毋庸置疑#xff0c;在 UI 自动化测试领域网络上也有很多 UI 自动化相关的知识或资料具体到 windows 端的 UI 自动化我们需要从以下几个方面考虑
开发语言
毋庸置疑在 UI 自动化测试领域python 是最被广泛使用的编程语言拥有的三方类库、自动化相关材料也是非常多因此是我们开发 UI 自动化的首选编程语言。
选择使用 py 开发自动化脚本需要提前在电脑中配好对应的 py 环境最好再配置好开发工具 PyCharm并配置 pip 安装三方库的国内镜像源方便后续开发本文不再详细阐述读者可自行查阅相关材料进行配置
应用驱动框架
相比移动端或 Web 端的 UI 自动化windows 应用的 UI 自动化方面的资料相对较少。被广泛使用的 windows 应用 UI 驱动有Aotolt、WinAppDriver、PyAutoGUI、PyWinAuto、Airtest(底层基于PyWinAuto)、CodedUI、UIAutomation、TestWriter、QTP 等详细的框架介绍见windows桌面应用程序UI自动化工具_windows自动化工具-CSDN博客
PyWinAuto 作为一款使用简单执行效率高、API 方法完善的 UI 驱动满足我们的项目需要本文使用该框架作为应用的驱动PyWinAuto 的使用教程可见windows UI 自动化测试框架 pywinauto 使用教程_pywinauto官方文档-CSDN博客
用例管理框架
UI 自动化的目标在于开发自动化脚本替代人工执行测试用例生成测试报告
应用驱动框架选定后可以确保开发自动化脚本后应用可以非人工的运行起来。但如何控制测试用例的执行驱动框架没有办法做到。对于 python 开发的 UI 自动化项目pytest 是用例管理的首选框架pytest 是一种单元测试框架可以对测试方法提供强大的逻辑控制及丰富的三方插件从而被广泛使用pytest 使用教程可见【汇总】pytest简易教程 - 全栈测试笔记 - 博客园
测试报告
选定 pytest 作为用例管理框架后测试报告可以使用三方插件 allure生成信息详细、页面美观的测试报告
整体设计思路 首先我们需要整理需要开发成 UI 自动化的测试用例建议冒烟用例不建议全量用例均使用 UI 自动化替代一方面 UI 自动化本身的局限只能识别页面元素进行逻辑校验可能无法满足另一方便 UI 自动化开发成本较高收益相对较低。
整理完毕的测试用例可以使用 excel 进行存储对于每条用例需要包含用例名称、前提条件、操作步骤、预期结果等。同时我们可以在该测试用例文档中新建一个 sheet以 key、value 的形式保存测试执行过程中需要的业务数据
对应于于 UI 自动化我们可以使用三方库 pandas 读取这些功能用例和业务数据接下来设计测试方法在测试方法中调用驱动框架 pywinauto 相关 API实现功能用例操作。应用操作完成后获取应用页面进行预期结果断言。所有测试方法执行完成后allure 生成测试报告
项目实战
以网易云音乐windows 版v3.0.5为例我们简单设计几条用例来实现以上设计。
项目整体结构 项目整体设计采用 PO 模式PageObject将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类并以页面为单位来写测试用例实现页面对象和测试用例的分离详细说明可以见UI 自动化测试框架PO 模式数据驱动 【详解版】_po设计模式框架-CSDN博客
data 目录存放测试用例 excel 文件该 excel 中通过不同的 sheet 分别存放业务数据、各模块用例见图 model 目录抽象化每条测试用例的实体类将符合相同字段的测试用例例如每条用例都包含用例名称、测试前提、测试步骤、预期结果、用例编号、校验文本等我们可以对这样的一系列用例进行抽象化使用 case_model 来保存、管理从 excel 中读取的测试用例数据 page 目录存放不同页面对页面中的元素、方法进行封装对外提供一系列功能场景操作的接口方便测试 case 直接调用 test_01_login/test_02_song 目录存放不同模块的测试 case通过编号进行人工排序 测试 case 是整个自动化测试的核心以上图为例test_xx 是具体的测试方法一般与 excel 中的测试用例进行一一对应这里同样可以通过编号对测试方法进行排序。通过 pytest 提供的 fixture我们可以非常灵活的对测试方法进行控制包括测试方法执行前需要进行的操作例如初始化业务数据、测试用例测试过程中调用 page 页面封装的操作传入业务数据。场景操作完成后查找页面元素使用 assert 进行断言测试执行结束后如果需要进行测试环境清理例如回到首页、退出账号等根据实际业务处理可在 fixture 的 yield 关键字后调用相关代码
utils 目录存放一些公用方法提升代码复用性、可读性 conftest.py 文件pytest 提供的特殊文件如果多个模块使用的 fixture 相同我们可以将 fixture 写在conftest.py 中达到跨模块的效果详细说明见pytest简易教程07fixture跨模块共享conftest.py - 全栈测试笔记 - 博客园 项目运行
测试代码开发完成后通过 pytest 提供的命令可以分别按模块、按类、按方法级来执行测试 case
例如pytest ./ 执行全部 case
其他命令使用见pytest简易教程02用例查找规则 - 全栈测试笔记 - 博客园
如果执行测试完成后生成美观的测试报告可在项目中安装 allure 插件生成测试报告allure 使用可见pytest简易教程35pytest常用插件 - allure报告allure-pytest - 全栈测试笔记 - 博客园
运行用例并收集测试结果pytest -s -q --alluredir./result --clean-alluredir
打开测试报告allure serve ./result
测试报告效果 测试项目源码
更详细的逻辑设计参阅代码https://github.com/liuweiqiang2016/windows_ui_test