写点什么

UI 自动化测试框架 _ 地图测试如何开展呢?

发布于: 2021 年 02 月 26 日
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

新增道路线 link 的部分代码如下:

新增道路线的封装方法


2.如何进行数据的清理?

对于地图自动化而言,清理数据是比较重要的一部分。当前可用的数据清理方式有两种:

(1)调用数据清理接口直接清理库中的数据;

优点:速度快

缺点:调用接口删除数据时,容易产生死锁,从而导致接口 down 掉。最后要花费人力反复分析接口 down 调的原因;

(2)利用平台的数据删除按钮进行数据批量删除,或者循环单根删除;

优点:出现删除失败的概率比较小,若失败可直观观察失败原因,从而判断是否为 bug

缺点:速度慢,且删除数据时需要给具体的删除范围

结合 UI 自动化的运行时机及场景,则采用第二种方式(平台按钮批量删除数据)

批量删除方法封装如下图:

批量删除数据时,方法封装的部分代码


3.如何进行地图等级的调整?

一般进入地图界面后,地图会存在默认等级,如何通过程序调节地图等级呢(手动测试是直接手工拖动地图等级),代码实现如下图:

地图等级调整模块封装


4.如何 debug 调试某一个场景?

调试 UI 自动化框架时,若每次 debug 都需要登陆开始,那就相当浪费时间。那如何绕过登陆呢,以 chrome 浏览器为例:

浏览器debug调试的方法

四、UI 自动化框架的整体结构

1.check_basic_data:封装基础数据的构建方式

2.config:公共参数均统一写到配置文件中

3.Db_process:存放数据库的公共配置

4.Environmental_detection:封装自动化前的环境检测方法

5.pageobject:封装一些常用的动作,例如:要素新增、执行检查等等

5.report:测试报告的存放

6.test_case:测试用例方法封装

UI自动化整体结构

五.结束语

UI 框架的介绍先罗列这么多,至于封装的细节有疑问的可以私信沟通及讨论。

发布于: 2021 年 02 月 26 日阅读数: 30
用户头像

原始的小鸟,期待强大 2018.11.23 加入

希望做好眼前的每一件事情

评论

发布
暂无评论
UI自动化测试框架_地图测试如何开展呢?