美文网首页
4、页面对象自动生成&测试数据自动生成&无头浏览器

4、页面对象自动生成&测试数据自动生成&无头浏览器

作者: 小敢敢不憨a | 来源:发表于2021-12-07 15:36 被阅读0次

1、页面对象自动生成技术,属于典型的“自动化你的自动化”的应用场景。它的基本思路是,你不用在手工维护Page Class了,只需要提供WEB的URL,它就会自动帮你生成这个页面上的所有控件的定位信息,并自动生成Page Class。

但是,需要注意,那些依赖于数据的动态页面对象也会包含在自动生成的Page Class里,而这种动态页面对象通常不应该包含在Page Class里,需要手动删除,

工具:商用UFT,免费Katalon Studio

https://blog.csdn.net/weixin_43664254/article/details/89375298

有些场景是无法录制的,如Web表单处理,多个框架(画面)切换,切换窗口,处理验证码、图像识别、视频回馈。这些页面比较复杂,还有一些元素定位需要我们自己去定义Xpath / CSS

使用手册:https://www.jianshu.com/p/8df8b4755185

2、GUI测试数据自动生成,指的由机器自动生成测试用例的输入数据。

(1)根据GUI输入数据类型,以及对应的自定义规则库自动生成测试输入数据。

eg:界面“书名”输入框,它的数据类型是string。那么基于数据类型就可以自动生成诸如Null,SQL注入、超长字符串、非英语字符等测试数据。

同时,根据自定义规则库,还可以根据具体规则生成各种测试数据。这个自定义规则库里面的规则,往往反映了具体的业务逻辑。比如,对于“书名”,就会有书名不能大于多少个字符、一些典型的书名(比如,英文书名、中文书名等)等等业务方面的要求,那么就可以根据这些业务要求来生成测试数据。

根据自定义规则生成测试数据的核心思想,与安全扫描软件 AppScan 基于攻击规则库自动生成和执行安全测试的方式,有异曲同工之处。

(2)对于需要组合多个测试输入数据的场景,测试数据自动生成可以自动完成多个测试数据的笛卡尔积组合,然后再以人工的方式剔除掉非法的数据组合。

但是,这种方式并不一定是最高效的。对于输入参数比较多,且数据之间合法组合比较少或者难以明确的情况,先自动化生成笛卡尔积组合,再删除非法组合,效率往往还不如人为组合来得高。所以,在这个场景下是否要用测试数据自动生成方法,还需要具体问题具体分析。

更常见的用法是,先手动选择部分输入数据进行笛卡尔积,并删除不合法的部分;然后,在此基础上,再人为添加更多业务上有意义的输入数据组合。

比如,输入数据有 A、B、C、D、E、F 六个参数,你可以先选取最典型的几个参数生成笛卡尔积,假设这里选取 A、B 和 C;然后,在生成的笛卡尔积中删除业务上不合法的组合;最后,再结合 D、E 和 F 的一些典型取值,构成更多的测试输入数据组合。

无头浏览器

无头浏览器,即 Headless Browser,是一种没有界面的浏览器。

什么?浏览器没有界面,还叫什么浏览器啊?别急,我将为你一一道来。

无头浏览器,其实是一个特殊的浏览器,你可以把它简单地想象成是运行在内存中的浏览器。它拥有完整的浏览器内核,包括 JavaScript 解析引擎、渲染引擎等。

与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是你依然可以用 GUI 测试框架的截图功能截取它执行中的页面。

无头浏览器的主要应用场景,包括 GUI 自动化测试、页面监控以及网络爬虫这三种。在 GUI 测试过程中,使用无头浏览器的好处主要体现在四个方面:

(1)测试执行速度更快。 相对于普通浏览器来说,无头浏览器无需加载 CSS 以及渲染页面,在测试用例的执行速度上有很大的优势。

(2)减少对测试执行的干扰。 可以减少操作系统以及其他软件(比如杀毒软件等)不可预期的弹出框,对浏览器测试的干扰。

(3)简化测试执行环境的搭建。 对于大量测试用例的执行而言,可以减少对大规模 Selenium Grid 集群的依赖,GUI 测试可以直接运行在无界面的服务器上。

(4)在单机环境实现测试的并发执行。 可以在单机上很方便地运行多个无头浏览器,实现测试用例的并发执行。

但是,无头浏览器并不完美,它最大的缺点是,不能完全模拟真实的用户行为,而且由于没有实际完成页面的渲染,所以不太适用于需要对于页面布局进行验证的场景。同时,业界也一直缺乏理想的无头浏览器方案。

在 Google 发布 Headless Chrome 之前,PhantomJS 是业界主流的无头浏览器解决方案。但是,这个项目的维护一直以来做得都不够好,已知未解决的缺陷数量多达 1800 多个,虽然支持主流的 Webkit 浏览器内核,但是依赖的 Chrome 版本太低。所以,无头浏览器一直难以在 GUI 自动化测试中大规模应用。

但好消息是,2017 年 Google 发布了 Headless Chrome,以及与之配套的 Puppeteer 框架,Puppeteer 不仅支持最新版本的 Chrome,而且得到 Google 官方的支持,这使得无头浏览器可以在实际项目中得到更好的应用。

也正是这个原因,PhantomJS 的创建者 Ariya Hidayat 停止了它的后续维护,Headless Chrome 成了无头浏览器的首选方案。

那什么是 Puppeteer 呢?Puppeteer 是一个 Node 库,提供了高级别的 API 封装,这些 API 会通过 Chrome DevTools Protocol 与 Headless Chrome 的交互达到自动化操作的目的。

Puppeteer 也是由 Google 开发的,所以它可以很好地支持 Headless Chrome 以及后续 Chrome 的版本更新。

相关文章

  • 4、页面对象自动生成&测试数据自动生成&无头浏览器

    1、页面对象自动生成技术,属于典型的“自动化你的自动化”的应用场景。它的基本思路是,你不用在手工维护Page Cl...

  • Selenium Page Object Generator

    用途 一款自动生成页面对象元素代码的Google浏览器插件工具,只需简单编辑或者不编辑就能放到selenium自动...

  • C++类的构造器

    构造器——在生成对象的时候,自动初始化。 一、构造器的特点 与类名相同,无返回 系统生成对象的时候被自动调用,用于...

  • Front-end 学习笔记

    1. 自动生成头: html+ tab键 2, 自动生成 连接css 的link link + tab键

  • 高级排序算法实现与优化

    本文用到的测试数据生成的代码和分析:《测试数据自动生成》 文章图片来源于 GitHub,网速不佳的朋友请点我看原文...

  • 封装

    构造方法: 无参构造方法,若没有写系统自动生成,若自己构造,则系统不再自动生成。 public classMonk...

  • 二 开发一个ionic4.0简单页面

    1 使用ionic cli新生成一个简单页面: home ionic会自动生成一个home目录及页面组件在生成的h...

  • 内存管理总结

    +array 方法并不是生成持有的对象 而是 通过生成并持有对象后加入autoreleasePool(自动释放池)...

  • 测试数据之自动生成

    最近在学习排序算法的时候,需要利用程序自动生成测试数据,代码和思路整理在这篇文章里面。 文章图片来源于 GitHu...

  • BOM

    BOM: 即页面会自动帮你生成 表单,图片等的数组集合

网友评论

      本文标题:4、页面对象自动生成&测试数据自动生成&无头浏览器

      本文链接:https://www.haomeiwen.com/subject/nntnoltx.html