京东技术:Web自动化测试 | 充分利用浏览器记录的信息

PHP是最好的 2018-09-10 13:32:36 ⋅ 1042 阅读

>>>>  前言

一切和效率提升,质量提高相关的工具/脚本都隶属于自动化的测试范围,所以这里要介绍的不是单纯的UI自动化和接口测试脚本。


Web页面的展示依托于浏览器,当用户请求一个URL的时候,浏览器会记录下从HTTP请求到页面渲染成功这个过程的所有信息。我们通过开发者工具可以看到:元素信息、CSS、网络、性能等方面的所有数据。所以如果可以拿到浏览器记录的信息加以利用,一定会对测试有巨大的帮助。

>>>>  如何与浏览器进行交互获取数据

我们可以通过很多方式和浏览器进行交互,这里以Tampermonkey(油猴)为例,将一一介绍。

>>>>  一、什么是油猴?

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome、Microsoft Edge、Safari、Opera Next 和 Firefox。

>>>>  二、油猴能够实现哪些功能?

从Greasyfork中搜索和jd.com相关的代码,可以看到如下几个:



我们打开一个名为京东每日签到助手的脚本,可以看到核心思路是通过脚本打开不同的页面如会员签到页面,店铺抽奖页面等等,定位并点击对应的签到/抽奖按钮。



至此,我们大概了解到Tampermonkey能实现以下几个功能:

  1. 获取页面信息

  2. 操作页面元素

  3. 改变DOM结构

  4. 引入自定义JS脚本,CSS等

>>>>  三、油猴的内置API?

在Tampermonkey的官网中可以查看到该工具自带的API:

这里不一一介绍每个API的使用方法,可以在官网自行查看

(https://tampermonkey.net/documentation.php?version=4.6)

>>>>  四、如何在测试过程中使用油猴

这里举几个例子来展示,在实际测试中如何使用油猴提升一定的测试效率。


1、Web页面的性能数据展示

这张图展示了页面请求过程以及对应的计算方式, 那么数据本身可以从API中获取,在console窗口中输入window.performance.timing即可查看所有数据:

这些基础数据稍加处理就可以拿到页面的性能数据, 我们可以通过chrome插件或者油猴的方式来进行获取和计算,这里重点介绍油猴的方式。下面的例子展示了页面加载完成之后打印对应的性能数据,如果有数据超过期望的可以做alert提示。

2、事件代码展示

这里以一个实际测试过程中的Demo为例,下图展示的是查询/操作商品的后台页面:

测试人员在测试过程中无外乎常见的两种方法:手工和自动化测试。手工输入各种条件进行查询或者操作并验证实际的结果,自动化测试编写UI自动化脚本来进行回归测试。


现在通过油猴编写了一个辅助工具来帮助大家更好的测试这里的业务逻辑,优化测试用例的设计。

  1. 这里的按钮点击后有的会触发一个接口请求,或者触发form的提交。如果测试人员通过JS代码来校验这里的功能,可以直接定位到基础的处理逻辑和究竟调用了哪些接口。

  2. 测试人员如何来查看对应的代码呢?

    在审查元素(Chrome)中获取元素的定位信息,比如这里使用的是name属性。

    在Sources中搜索该属性的值,找到对应的click事件,确认代码:

    代码展示如下,这里描述了在提交之前做的基础数据处理,并调用了网络接口。

  3. 通过以上的步骤我们可以顺利的拿到对应事件的处理代码,但是整个过程还是略显繁琐,现在通过编写油猴脚本可以解决这个问题。

    首先,获取所有关心事件绑定的元素,比如change事件的元素使用绿色虚线框,click事件的元素使用红色虚线框。

    添加move事件,鼠标移到绑定事件的元素上时直接显示源代码:

  4. 可以看出测试人员/开发人员可以非常方便的看到元素的事件源代码,大大提升了工作效率。 这里我们测试的域名一般包含 jd.com, 所以在油猴脚本上添加匹配URL的规则即可,这样所有满足规则的URL都会以这种方式展示。

3、网络接口访问

使用油猴脚本中的GM_xmlhttpRequest可以解决跨域请求,所以这意味着我们可以通过在浏览器中请求接口来做数据处理,比如请求接口和前端内容进行比对,比如获取页面数据并传输给测试服务等等。


这里举一个简单的例子,使用百度翻译接口对页面元素进行翻译。

  1. 这里以ware.jd.com为例,按钮原始显示的是中文重置

  2. 注册百度翻译API并获取相关用法。

  3. 将翻译的结果替换到页面上。

>>>>  总结

以上就是Tampermonkey在测试中使用Demo,结合自己的业务测试需求可以实现更多的测试功能提升测试效率,这篇文章就作为抛砖引玉之用。


---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦



全部评论: 0

    我有话说:

    京东到家订单中心系统mysql到es转化之路

    原文:https://www.toutiao.com/i6796507988602389006 京东到家订单中心系统业务中,无论是外部商家订单生产,或是内部上下游系统依赖,订单查询调用量都非常

    京东技术:APPUI自动化测试框架及平台化探索

    UI自动化测试,即通过模拟手动操作用户UI界面方式,以代码方式实现自动操作和验证一种自动化测试手段。

    DrissionPage WEB 自动化测试集成工具

    软件简介 DrissionPage,即 driver 和 session 合体,是一个基于 python Web 自动化操作集成工具。 requests 爬虫面对要登录网站时,要

    京东技术:单元测试高效之路——持续集成

    持续集成概念与好处互联网软件开发和发布,已经形成了一套标准流程,最重要组成部分就是持续集成(Continuous integration,简称CI)。

    「轻阅读」推荐系统中信息增强技巧

    实用推荐系统构建经验,如何进行信息增强。

    京东技术京东风格移动端Vue组件库NutUI2.0来啦

    移动端 Vue 组件库 NutUI 自发布以来受到了广泛关注。据不完全统计,目前至少有30多个京东 web 项目正在使用 NutUI 。

    精品推荐:Docker与自动化测试及其测试实践

    Docker 本身并不会直接加速测试执行。在串行执行测试时,在容器中执行测试反而会带来约 5% 左右性能衰减。

    京东技术京东系统架构师如何让笨重架构变得灵巧

    京东系统架构师,从事架构设计与开发工作,熟悉各种开源软件架构。在Web开发、架构优化上有较丰富实战经历。

    「小米技术」Soar一键优化工具--SQL优化和改写自动化工具

    SOAR(SQL Optimizer And Rewriter)是一个对SQL进行优化和改写自动化工具。由小米人工智能与云平台数据库团队开发与维护。

    京东技术:如何实现百万TPS?详解JMQ4存储设计

    JMQ是京东中间件团队自研消息中间件,诞生于2014年,服务京东近万个应用,2018年11.11大促期间峰值流量超过5000亿条消息

    京东数据库智能运维平台建设之路 | 解除运维自动化痛点

    从用户角度去思考数据库能够产生价值~

    京东技术:用最小图片格式,打造最优用户体验

    DPG图片压缩技术能够有效减少图片大小50%,并且减少50%CDN带宽流量!

    京东技术:多数据模型数据库 | 应用实例解析

    作 者 简 介吕信,京东商城技术架构部资深架构师,拥有多年数据产品研发及架构经验。

    SourceTree里GitFlow使用

    这几天看详细了一下Git Flow模型介绍,感觉“很好很强大”,这个开发模型利用GIT易于分支和合并特点,能够比较容易地将开发、发布、部署、bug修复分隔开来。 正准备在自己团队内部推广

    京东技术:使用JDReact小程序双向转换

    JDReact是京东商城前台产品研发部推出多端融合开发框架。

    京东技术:Hystrix 分布式系统限流、降级、熔断框架

    Hystrix是Netflix开源一款容错框架,包含常用容错方法:线程隔离、信号量隔离、降级策略、熔断技术

    京东技术:如何实现靠谱分布式锁?(附SharkLock设计选择)

    分布式锁,是用来控制分布式系统中互斥访问共享资源一种手段,从而避免并行导致结果不可控。

    京东技术:开发属于自己插件 | IDEA & Android Studio插件开发指南

    是否曾经被ide重复繁琐操作所困扰,又或者没有心仪UI控件而难受。那么请阅读这篇文章,掌握idea插件开发流程,开发属于自己插件,造福开源社区。

    京东技术:Sieve—Android 内存分析系统 | 解决你内存溢出问题

    内存问题是个老大难,对用户来说,泄漏或者不合理内存使用最终会反映到性能和体验上,并且极易造成 OOM( Out Of Memories ) 而闪退, 而对开发者来说更为头疼......