美文网首页
GUI测试:Page Code Gen + Data Gen +

GUI测试:Page Code Gen + Data Gen +

作者: 倔强的潇洒小姐 | 来源:发表于2019-07-28 11:07 被阅读0次

    GUI 测试中三个比较有意思的知识点

    一、页面对象自动生成

    属于典型的“自动化你的自动化”的应用场景,非常适用于需要维护大量页面对象的中大型 GUI 自动化测试项目

    页面对象模型,是以 Web 页面为单位来封装页面上的控件以及控件的部分操作,而测试用例基于页面对象完成具体操作。
    最典型的模式就是:XXXPage.YYYComponent.ZZZOperation。

    基本思路是,不用再手工维护 Page Class 了,只需要提供 Web 的 URL,它就会自动帮你生成这个页面上所有控件的定位信息,并自动生成 Page Class。

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

    注:对于页面对象自动生成,商用测试软件已经实现了这个功能。但是,如果你选择开源测试框架,就需要自己实现这个功能了。

    二、GUI 测试数据自动生成

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

    此处说的概念仅针对以下情况:
    1、根据 GUI 输入数据类型,以及对应的自定义规则库自动生成测试输入数据。
    比如,GUI 界面上有一个“书名”输入框,它的数据类型是 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、在单机环境实现测试的并发执行
    可以在单机上很方便地运行多个无头浏览器,实现测试用例的并发执行。

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

    无头浏览器的首选方案:Headless Chrome结合 Puppeteer
    补充说明:Puppeteer 是一个 Node 库,提供了高级别的 API 封装,这些 API 会通过 Chrome DevTools Protocol 与 Headless Chrome 的交互达到自动化操作的目的。

    相关文章

      网友评论

          本文标题:GUI测试:Page Code Gen + Data Gen +

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