Bootstrap

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