软件测试52讲
茹炳晟
eBay中国研发中心,测试基础架构技术主管
立即订阅
13374 人已学习
课程目录
已完结 63 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从“小工”到“专家”,我的软件测试修炼之道
免费
测试基础知识篇 (11讲)
01 | 你真的懂测试吗?从“用户登录”测试谈起
02 | 如何设计一个“好的”测试用例?
03 | 什么是单元测试?如何做好单元测试?
04 | 为什么要做自动化测试?什么样的项目适合做自动化测试?
05 | 你知道软件开发各阶段都有哪些自动化测试技术吗?
06 | 你真的懂测试覆盖率吗?
07 | 如何高效填写软件缺陷报告?
08 | 以终为始,如何才能做好测试计划?
09 | 软件测试工程师的核心竞争力是什么?
10 | 软件测试工程师需要掌握的非测试知识有哪些?
11 | 互联网产品的测试策略应该如何设计?
GUI自动化测试篇 (10讲)
12 | 从0到1:你的第一个GUI自动化测试
13 | 效率为王:脚本与数据的解耦 + Page Object模型
14 | 更接近业务的抽象:让自动化测试脚本更好地描述业务
15 | 过不了的坎:聊聊GUI自动化过程中的测试数据
16 | 脑洞大开:GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)?
17 | 精益求精:聊聊提高GUI测试稳定性的关键技术
18 | 眼前一亮:带你玩转GUI自动化的测试报告
19 | 真实的战场:如何在大型项目中设计GUI自动化测试策略
20 | 与时俱进:浅谈移动应用测试方法与思路
21 | 移动测试神器:带你玩转Appium
API自动化测试篇 (3讲)
22 | 从0到1:API测试怎么做?常用API测试工具简介
23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
代码测试篇 (3讲)
25 | 不破不立:掌握代码级测试的基本理念与方法
26 | 深入浅出之静态测试方法
27 | 深入浅出之动态测试方法
性能测试篇 (7讲)
28 | 带你一起解读不同视角的软件性能与性能指标
29 | 聊聊性能测试的基本方法与应用领域
30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
31 | 工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介
32 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)
33 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
34 | 站在巨人的肩膀:企业级实际性能测试案例与经验分享
测试数据准备篇 (4讲)
35 | 如何准备测试数据?
36 | 浅谈测试数据的痛点
37 | 测试数据的“银弹”- 统一测试数据平台(上)
38 | 测试数据的“银弹”- 统一测试数据平台(下)
测试基础架构篇 (4讲)
39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
42 | 实战:大型全球化电商的测试基础架构设计
测试新技术篇 (5讲)
43 | 发挥人的潜能:探索式测试
44 | 测试先行:测试驱动开发(TDD)
45 | 打蛇打七寸:精准测试
46 | 安全第一:渗透测试
47 | 用机器设计测试用例:基于模型的测试
测试人员的互联网架构核心知识篇 (5讲)
48 | 优秀的测试工程师为什么要懂大型网站的架构设计?
49 | 深入浅出网站高性能架构设计
50 | 深入浅出网站高可用架构设计
51 | 深入浅出网站伸缩性架构设计
52 | 深入浅出网站可扩展性架构设计
特别放送篇 (8讲)
测试专栏特别放送 | 答疑解惑第一期
测试专栏特别放送 | 答疑解惑第二期
测试专栏特别放送 | 答疑解惑第三期
测试专栏特别放送 | 答疑解惑第四期
测试专栏特别放送 | 答疑解惑第五期
测试专栏特别放送 | 答疑解惑第六期
测试专栏特别放送 | 答疑解惑第七期
测试专栏特别放送 | 浅谈全链路压测
测一测 (1讲)
测一测 | 这些软件测试题目,你都掌握了吗?
结束语 (1讲)
结束语 | 不是结束,而是开始
软件测试52讲
登录|注册

16 | 脑洞大开:GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)?

茹炳晟 2018-08-03
在前面的几篇文章中,我介绍了 GUI 自动化测试的数据驱动测试、页面对象(Page Object)模型、业务流程封装,以及测试数据相关的内容。
今天这篇文章,我将从页面对象自动生成、GUI 测试数据自动生成、无头浏览器三个方面展开,这也是 GUI 测试中三个比较有意思的知识点。

页面对象自动生成

在前面的文章中,我已经介绍过页面对象(Page Object)模型的概念。页面对象模型,是以 Web 页面为单位来封装页面上的控件以及控件的部分操作,而测试用例基于页面对象完成具体操作。最典型的模式就是:XXXPage.YYYComponent.ZZZOperation。
基于页面对象模型的伪代码示例,如图 1 所示。
图 1 基于页面对象模型的伪代码示例
如果你在实际项目中已经用过页面对象模型,你会发现开发和维护页面对象的类(Page Class),是一件很耗费时间和体力的事儿。
你需要打开页面,识别出可以唯一确定某元素的属性或者属性集合,然后把它们写到 Page Class 里,比如图 1 的第 2 行代码 username_input=findElementByName(“username”),就是通过控件的名字(username)来定位元素的。
更糟糕的是,GUI 的页面会经常变动,如果开发人员开发前端代码时没有严格遵循可测试性的要求,Page Class 的维护成本就会更高。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件测试52讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(20)

  • Geek_84a77e
    老师,是每篇文章有时间限制吗?可否细致的讲解一下,如何自动化生成页面对象,如何自动化生成测试数据?我们现在的理解很大部分是停留在概念上,来这儿学习的理由也是老师能够给我们一个直观的认识关于这些技术,或者每篇文章能否提供个链接供我们看看源码,切身体验一下封装等其他文章中提到的技术,多谢

    作者回复: 关于页面对象自动生成的具体实现细节还是比较复杂的,因为采用不同前端开发框架的页面的生成还都不太一样,我看看是否有可能搞个git给点示例代码。至于测试数据自动生成主要是思想方法,用excel➕vba就能轻易完成大部分的功能,当然用代码实现也是可以的,但是文章本身还是以讲方法为主,不会去讲具体怎么写代码来实现这个功能。

    2018-08-03
    17
  • sylan215
    1.如果使用 selenium + xpath,应该可以解决大部分的控件识别,chrome 支持右键一键拷贝 xpath,贼方便;
    2.关于测试数据的自动生成,个人感觉目前测试中,场景测试重要性是最高的,但是自动生成可能解决不了场景覆盖的问题,不过如果借鉴最新的机器学习算法,说不定有新发现;
    3.对于无头浏览器,我的疑问是,既然是 GUI 测试,无头浏览器怎么保证测试效果的可靠性呢,测试结果是和常规浏览器一样可信么?毕竟自动化的目的还是为了测试,而不是为了自动。
    欢迎沟通交流,公众号「sylan215」

    作者回复: 高质量的留言。👍!自动测试数据生成的应用场景主要是覆盖边界值和典型易出错场景,应用价值还是比较大的。关于无头浏览器,目前的应用领域主要在爬虫和devops中的环境健康检查,就是去看一下网站基本的页面是否可以打开,最最基本的smoke用例是否可以通过,如果不行,那就会把环境健康状态标红,并从可用列表中移除

    2018-08-03
    15
  • 猪猪
    老师讲一下如何自动生成页面模型的原理,不要一带而过

    作者回复: 这个具体的我实现细节还是有点复杂的,如果是静态页面,那就好解析和分类页面元素的源代码,如果页面是react页面,那就要要基于react来做解析,不同前端框架的页面解析还都不同,有很多细节要处理。

    2018-08-03
    4
  • 杜艳
    建议可以不可以不要伪代码。写一个真实可用的java代码

    作者回复: 采用伪代码的目的是为了更简单直观的说明问题的本质以及代码的实现思路,而尽量避免过多的不相关细节,如果使用实际java代码,放在文档中你看到的就是大段的代码,说明问题本质的代码就会混在其中,不容易说明问题。另外,现在还有很多自动化测试是基于python和ruby的,所以说明原理的部分我还是倾向于使用伪代码。后续文章会有一些实际的例子,那时候我会采用真实可用的java代码。

    2018-08-03
    3
  • 我的summer
    GUI测试数据的自动生成中第二种情况,可以使用PICT小工具。使用一定限制条件对笛卡尔积结果筛选出已经剔除的部分组合,然后再人工确认,可以提高一些些效率
    2018-08-07
    2
  • 口水窝
    没有深入实践自动化测试,更无从谈起提高测试效率。
    2019-03-29
    1
  • 胖虫子
    为什么大家用类似katalon这样的工具热情不高,但自己去写自动化框架的热情高

    作者回复: 蛮同意你的观点的,很多也是处于测试人员自身技能发展的考虑

    2018-08-31
    1
  • 【涛涛】不绝
    katalon开始收费了,可以弃了,用久了缺点也是蛮多的
    2019-12-02
  • Geek_007
    你好 请问关于GUI测试 还有一些桌面应用软件(非浏览器),应该怎么来做自动化测试呢?
    2019-05-05
  • johnny
    老师,希望能在git提供部分章节的代码实现。比如第14节的内容看完还是只停留在概念,如果有示例代码就比较方便理解

    作者回复: 很好的建议,下次一定提供完整可运行的代码示例,但是讲解还是采用伪代码可以帮助更好的理解

    2018-11-20
  • 小老鼠
    1,"无头浏览器"、"页面对象自动生成",以及 "GUI 测试数据自动生成"这三个技术现在在企业中用得多吗?
    2、"selenium for Java中的htmlunit是不是属于无头浏览器?
    2018-10-24
  • subona
    希望老师能深入地讲解下怎么去做,感觉这几节课都是概念性的知识点,太表面了。听完对于怎样运用到项目中,把工作做得更好没有太多帮助
    2018-10-22
  • kaiserin
    Katalon Studio现在的普及率怎么样?感觉大多数人还是用的robotframework

    作者回复: 现在来看,对于互联网企业,你提的这两个框架的普及率都不算太高。

    2018-10-09
  • 欧晓鸥
    关于数据自动化生成有例子吗?
    2018-08-13
  • 欧晓鸥
    对于一个即将被替代的项目,要做自动化,覆盖率是最主要的吗?
    2018-08-13
  • 雪哥
    茹老师,请问自己实现页面元素自动生成,一般用什么技术,指点一下大概方向就可以
    2018-08-07
  • 如何生成页面对象?

    作者回复: 这个问题不是一两句话可以说清楚的,回头我去搞个git的代码示例。

    2018-08-05
  • soul
    Katalon Studio 已经操作 不错
    2018-08-04
  • 橄榄
    没有实际应用过

    作者回复: 没关系,知道有这些概念和方法就好,uft等商业gui自动化工具都已经实现了部分功能,使用起来还是很简单

    2018-08-03
  • Robert小七
    企业实战中,无头浏览器的应用程度如何?是否可以用多线程来替代grid集群

    作者回复: 无头浏览器的应用并不是太多,很多是用来做爬虫,自动化测试的应用相对比较少,是的,完全可以用selenium grid来代替。但是最近由于google官方发布了headless chrome和对应的测试框架,所以估计后面会有更多的应用。

    2018-08-03
收起评论
20
返回
顶部