UI 自动化测试框架 _ 地图测试如何开展呢?
一、现状及痛点:
1.道路地图测试的现状
地图测试的重点主要是围绕"数据"展开,包括要素制作、数据检查、数据批处理、数据提交流转等等。每一个业务测试点都需要从业务易用性、业务功能性、业务交互性、业务性能等多方面验证。
2.道路地图测试的痛点
道路地图的业务逻辑比较复杂且繁琐,每一个业务点发生变更,就会导致需要大量回归。对于每一个测试人员,每天大部分工作无非是:新需求的测试逻辑点点点+交互回归点点点、版本发布后场景回归点点点、模型变更后的回归点点点、生产问题对应等等。为了节省测试人员的回归成本时间,则提出用代码替换手工点点点。
二、自动化框架涉及的关键技术工具
1.关键技术工具:
python+selenium+unittest+pynput+HTMLTestRunner
2.相关技术工具解释:
python+selenium:因本人比较熟悉 python 开发语言,且 python 自带好多插件包,则采用 python 语言进行自动化开发。当然其他同学也可采用 java+selenium 编写自动化框架。
unittest:unittest 中具有基本类 TestCase、test_suite,用于创建对应的测试用例和测试套件,且 unittest 中测试用例方法均以 test 开头的,且执行顺序会按照方法名的 ASCII 值排序。
pynput:此插件用于模拟鼠标+键盘的各种操作。
HTMLTestRunner:用于最终的测试报告模板展示
三、自动化框架开发的若干疑问
1.如何捕捉地图位置用于要素制作?
地图相关的 UI 自动化比传统网页 UI 自动化要特殊且复杂的多。首先:地图界面的抓取及定位,现有插件是无法处理的。其次:用界面 element 定位的方式也不可取。经过思考,则采用屏幕鼠标位置捕捉的方式进行地图定位及相关操作。采用鼠标位置捕捉的原因如下:屏幕是固定不变的,则地图界面在反复拖动后,屏幕鼠标 position 还是不变的;
举例:新增一条道路 link,起终终点的 position 已知。
import 的插件截图如下:
新增道路线 link 的部分代码如下:
2.如何进行数据的清理?
对于地图自动化而言,清理数据是比较重要的一部分。当前可用的数据清理方式有两种:
(1)调用数据清理接口直接清理库中的数据;
优点:速度快
缺点:调用接口删除数据时,容易产生死锁,从而导致接口 down 掉。最后要花费人力反复分析接口 down 调的原因;
(2)利用平台的数据删除按钮进行数据批量删除,或者循环单根删除;
优点:出现删除失败的概率比较小,若失败可直观观察失败原因,从而判断是否为 bug
缺点:速度慢,且删除数据时需要给具体的删除范围
结合 UI 自动化的运行时机及场景,则采用第二种方式(平台按钮批量删除数据)
批量删除方法封装如下图:
3.如何进行地图等级的调整?
一般进入地图界面后,地图会存在默认等级,如何通过程序调节地图等级呢(手动测试是直接手工拖动地图等级),代码实现如下图:
4.如何 debug 调试某一个场景?
调试 UI 自动化框架时,若每次 debug 都需要登陆开始,那就相当浪费时间。那如何绕过登陆呢,以 chrome 浏览器为例:
四、UI 自动化框架的整体结构
1.check_basic_data:封装基础数据的构建方式
2.config:公共参数均统一写到配置文件中
3.Db_process:存放数据库的公共配置
4.Environmental_detection:封装自动化前的环境检测方法
5.pageobject:封装一些常用的动作,例如:要素新增、执行检查等等
5.report:测试报告的存放
6.test_case:测试用例方法封装
五.结束语
UI 框架的介绍先罗列这么多,至于封装的细节有疑问的可以私信沟通及讨论。
版权声明: 本文为 InfoQ 作者【小小娃爱吃甜食】的原创文章。
原文链接:【http://xie.infoq.cn/article/9e223ce3b932792a11c053bcf】。未经作者许可,禁止转载。
评论