软件测试52讲
茹炳晟
eBay中国研发中心,测试基础架构技术主管
立即订阅
13367 人已学习
课程目录
已完结 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讲
登录|注册

05 | 你知道软件开发各阶段都有哪些自动化测试技术吗?

茹炳晟 2018-07-09
在前面的文章中,我介绍了为什么要做自动化测试,以及什么样的项目适合做自动化测试,那么现在我来说说软件开发生命周期的各个阶段都有哪些类型的自动化测试技术。
说到自动化测试,你可能最为熟悉的就是 GUI 自动化测试了。比如,早年的 C/S 架构,通常就是用自动化测试脚本打开被测应用,然后在界面上以自动化的方式执行一系列的操作;再比如,现今的 Web 站点测试,也是用自动化测试脚本打开浏览器,然后输入要访问的网址,之后用自动化脚本识别定位页面元素,并进行相应的操作。
因此,说到自动化测试时,你的第一反应很可能就是 GUI 自动化测试。然而,在软件研发生命周期的各个阶段都有自动化测试技术的存在,并且对提升测试效率有着至关重要的作用。
今天这篇文章,我将会以不同的软件开发阶段涉及的自动化测试技术为主线,带你了解单元测试、代码级集成测试、Web Service 测试和 GUI 测试阶段的自动化技术,希望可以帮助你更深入地理解“自动化测试”的内涵以及外延。

单元测试的自动化技术

首先,你可能认为单元测试本身就是自动化的,因为它根据软件详细设计采用等价类划分和边界值分析方法设计测试用例,在测试代码实现后再以自动化的方式统一执行。
这个观点非常正确,但这仅仅是一部分,并没有完整地描述单元测试“自动化”的内涵。从广义上讲,单元测试阶段的“自动化”内涵不仅仅指测试用例执行的自动化,还应该包含以下五个方面:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件测试52讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(56)

  • 康美之心 淇水之情
    Rest-assured是一个非常适合,非常好用的API开源测试框架,我已经在我们项目里基于Spring-boot,Rest-Assured,Ccucumber开发了一个标准通用的微服务API自动化测试框架,我们项目里的所有微服务API都可以基于框架快速高效的在各个测试环境无缝切换进行自动化测试,并且完全集成到了公司的CICD Jenkins平台,以前从开发到单元测试,FVT测试,UAT测试,回归测试到MTP需要3天左右时间的Size的Story,现在相同工作量Size的Story只需不到一天时间就可以全部完成,期间除了产品代码开发和少部分特殊数据的准备,部分新增用例的开发外,全部都是在Jenkins上自动完成。

    作者回复: 厉害,非常棒的实践,我们也在做类似的事情,但是我们暂时没用cucumber。高手👍

    2018-07-09
    66
  • fekgih
    Postman也可以集成到cicd,通过Postman+newman+jenkins。在实际项目中使用过,非常方便。平常积累的测试数据,在Postman导出一个json文件,在另一个服务器部署newman(命令行纸执行Postman导出的json文件),然后直接在服务器是用newman工具一行命令就能执行测试并生成测试报告,这样很方便集成的cicd里。

    作者回复: 非常棒的分享,我们以前也用过和你说的完全一样的方案,但是最终鉴于用例需要更多的灵活性,比如数据准备,更方便通用的assert等,所以我们最终还是选择了全代码的实现。👍

    2018-07-10
    20
  • 西海
    老师,可以谈谈Katalon Studio这个软件吗?国内使用的人很少,不知道国外使用的人多吗?

    作者回复: Katalon Studio的确是个好东西,它结合了selenium和appium,而且提供了很简单易用的IDE环境,关键还支持录制和object spy,有点像uft的感觉,无论是资深的测试开发还是初级的自动化工程师,都能比较好的上手,但是这个工具比较新,目前国内的确好像没看到有人用,中文的资料非常少,再加上它天生不支持中文。但是我觉得好东西一定会发光的,我相信很快就会慢慢普及起开。另外一个就是这个版本更新现在非常快,基本每个月都会有版本发布,我个人还是看好的

    2018-07-09
    16
  • 才子
    我们日常工作更多的是关注测试用例的自动执行,对于其他方面,如测试脚手架、相应判断和测试数据准备的自动化生成都没有关注。还是对于自动化的理解太片面了。

    现在项目,由于组内没有统一的测试脚手架,每次新项目来时,很多精力用来制作脚手架。由于人员水平的不同,导致每个项目的测试脚手架设计水平不一,可读性差,重复率高,通用性差等问题。

    我们利用python制作了一个api自动化测试平台,根据开发提供的swagger页面,自动抓取api接口,根据其中的参数类型,和设置的规则如输入参数的必须非必需,参数的等价类,边界值,参数间的依赖等自动生成用例。
    对于预期响应,我们根据生成的正确用例,连续三次请求的返回值,取不变的字段作为预期响应。
    对于需要依赖的接口,提供mock功能。
    对于用例执行结果,自动生成html页面和一个通过率的返回值,用于ci/cd。
    目前已在部门推广。

    对我们测试现状的反思:没有真正理解自动化的概念,过去只是片面的认为用例执行的自动化就是自动化,也是为自动化而自动化。其实自动化贯穿了整个测试过程,从用例设计,数据准备,用例生成,响应判断,用例执行,执行结果分析,都包含了自动化的内容。现在devops的流行,让自动化的占据了更多的比重。个人认为自动化最重要的是思想,当现在宏观的角度看待项目,看待整个测试过程,自动化应该是我们工作的指导思想,就是通过一切手段高质量、高效率、低入驻成本的守护产品的质量。

    测试主要精力放在用例设计和业务的理解上,自动化的实现只是一种手段,不能过于追求自动化实现,反而忽略了测试用例的设计,这样不仅本末倒置,而且失去了自动化的意义。
    2018-08-14
    14
  • Cynthia🌸
    对于测试来说,并没有接触到代码级测试。经历过的公司,有的即使做了,也是由开发自行做单元测试或者代码评审之类。
    其他的自动化技术,有做过gui和api的自动化测试。但是gui自动化测试呢,在产品更迭迅速的互联网公司,经常页面,产品逻辑有微小变化,大多数用例就要推倒重来,维护成本太高。

    作者回复: 你说的太对了,相信很多人都会有你这种感觉,后面我讲gui测试的时候,会重点来看怎么缓解你说的问题

    2018-07-09
    11
  • 齐涛-道长
    我们采用robot framework+requestslibrary的方式来做API自动化测试。个人觉得比较适合团队编程能力不是太强的团队
    2018-07-22
    1
    6
  • 红娟
    回答问题,我所在的部门没有代码级别的测试,但是也是在努力过程中,现在是统一的环境编译,有静态代码扫描,推广自动化测试。对员工也是各种培训,有代码风格培训,有如何编写单元测试代码。
    关于自动化测试,还是要回到目的上来,自动化测试是为了提高测试效率,节约成本。解放重复劳动。所以在工作的任意阶段,只要符合这些要求,都可以用自动化来做。

    作者回复: 你说得非常对,一切都是经济利益导向的

    2018-07-10
    5
  • huahuan bigbrother
    我们团队在Response的自动化上花了很多功夫,但是目前来看还是有很多人工去输入要检验的字段值,检验这块如果不全面和不够自动化和易维护,结果就不可信,而且写测试用例起来也麻烦,导致很难全面取代手动测试的。
    2018-07-09
    4
  • 阿甘
    目前公司用的是jmeter接口自动化初级阶段,想要更进阶的,跟着进步学习中

    作者回复: 嗯嗯,我们也用jmeter

    2018-07-09
    3
  • yiluo
    希望看到更多的讲解,关于用例框架代码和自动生成数据。谢谢
    2018-07-09
    3
  • Geek_84a77e
    文章中提到了很多自动化生成,不管是单元测试还是GUI测试,都涉及了自动化生成,这个是代码实现的自动化工具么?后期会和我们分享吗?

    作者回复: 这个并不是一个现成的工具,而是方法,很多项目都会自己开发这种工具,比如前段时间我就在做把postman的测试用例,就是json文件转换成代码

    2018-07-09
    3
  • yunfeng
    系统测试这一块,对着代码的某个接口测试,实际测试过程中仅仅是根据开发编写的逻辑来验证是否流程ok,结果是否符合预期就可以了,实际很难全面去测试,因为成本很大,而且每次测试模块都会变,接口的业务功能复杂在一次测试过程中很难了解全面,很想了解下系统测试这一块该如何形成一个比较全面的测试框架呢?

    作者回复: 往往接口测试是在单元测试完成后,当然有些也有不做单元测试而直接做接口测试的,理论上讲,接口测试关心的问题是接口的功能需求,而不用过多关注接口内部的覆盖率,但有时候也会具体代码覆盖率来指导用例设计。两者的边界不是太严格,所以我们往往往往会把这种测试称为灰盒测试,介于白盒和黑盒之间

    2018-07-12
    2
  • 一笑而泯
    自动生成response期望的想法不谋而合,我们也在做这方面的尝试,期待后面的课程详细介绍。

    作者回复: 现在已经有工具直接支持了,不过好像不是开源的

    2018-07-10
    2
  • family
    很期待后续的具体讲解自动化

    作者回复: 后面最先会讲的是GUI自动化

    2018-07-09
    2
  • rh
    现在公司正在实行Selenium+Python自动化,主要是对主流程进行,后期还要进行接口自动化,希望在这里能学到有帮助的知识,有问题会留言,希望大神赐教…😃
    2019-05-30
    1
  • 口水窝
    由于没有亲自实践过单元测试和代码级集成测试,对于单元测试,还停留在函数测试的程度上,而代码级集成测试就是接口测试,Postman的界面就是输入接口参数,来获得验证码是否在正确的过程,不知道理解的是否正确?
         但是不明白后面说的,输入json格式的参数,输出符合API测试框架的测试用例,具体的怎样和CI/CD集成,麻烦老师给予指点一二?
    2019-03-04
    1
  • sylan215
    1.单元测试我感觉很少公司能做到吧,目前国内还是偏功能为主,速度迭代,甚至允许带 bug 上线,这个单元测试的要求相悖,单元测试的发展趋势应该是和 Google 一样,开发成了质量保证的第一环;
    2.代码级集成测试,这个怎么说,开发代码联调其实算这个类型,但是他们联调的时间点和关注点,好像仅仅是和功能相关,和质量无关;
    3.Web Service 测试的话,对于 Web 端和服务端应该涉及的比较多,也是目前出现自动化框架最多的地方,如果按照前一篇文章提到的自动化的要求,这部分是最符合要求最可能实现的部分;
    4.GUI 测试是目前大家最关注的,最关注是因为他是大家最想做的,最想做并不是说一定是最需要的,而是从感觉上来说,是最能体现自动化价值的,但是,他又恰恰是最不好做的,所有软件的 UI 各式各样,所有软件的 GUI 自动化问题可能又是千篇一律。

    以上,欢迎沟通交流。
    2019-02-12
    1
  • 幸福花开李小七
    最近公司项目需求,需要在移动端通过不同浏览器打开一些网址,不知道采用什么技术实现自动化。请大神指导,多谢

    作者回复: appium+selenium

    2018-09-05
    1
  • 阿东
    老师,请教几个问题。1,测试脚手架代码的自动化生成。这句可不可以理解成主要是测试框架生成的测试模板,比如Python的unittest的测试模板2.部分测试输入数据的自动化生成。这一点是测试人员自己写脚本生成,还是借助测试框架?能否举几个例子?谢谢
    2018-08-28
    1
  • Cynthia🌸
    重读一遍,写一下自己对本文整体的心得感受吧。
    作者很好的梳理了软件开发不同阶段,对应的主流自动化测试技术。尤其是代码级测试的部分,相信不少公司这一块做的并不是十分完善,或者并不清楚应该怎样开展,从作者的文章中就能找到方向感了。
    至于大部分小伙伴比较熟悉的接口测试和GUI测试,也梳理的特别清晰。使那些对自动化测试一知半解,或者只听说过几个自动化测试工具或者名词的小伙伴,看清楚了相对应的知识技能树,就不会在学习的道路上感到迷茫。
    2018-07-14
    1
收起评论
56
返回
顶部