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框架的介绍先罗列这么多,至于封装的细节有疑问的可以私信沟通及讨论。