概述

我们主要就接口功能自动化测试从两个方面做一些交流,一是何为自动化测试 ,二是为何自动化测试,同时包含关于下面三个问题自己的一些认识:

明确自动化测试开展原由
明确自动化测试开展方式
明确自动化测试开展评估
关于自动化基础的认知:

常见的错误认知

使用自动化完全替代手工测试。
使用自动化测试发现更多的新BUG。
应该形成怎样的认知

自动化测试的目的不单纯是为了减少或者替代手工测试,而是为了测试人员能够做更多更有意义的测试(也包含手工测试)。
自动化测试是用来验证以前能够正常工作的功能是否依旧可以正常工作。

为何自动化测试

不是为了自动化而自动化,而是为了实现一套解决方案来解决问题从而开展某种自动化 ,肯定是解决某些测试过程中的问题而引入自动化测试。

利与弊

既然选择自动化解决某些问题,首先要清楚自动化测试其本身的利弊。


1.关于成本

机器资源成本代替人力成本,一定程度解决了重复性的测试执行成本问题。
2.关于效率

提高测试执行效率,缩短测试周期,一定程度解决了测试周期随版本迭代次数的增加(功能点增加)而增长的问题。
3.关于测试覆盖

通过自动化测试工具的录制回放及数据驱动来测试功能,可以提高测试覆盖率,一定程度解决了回归测试中测试覆盖率低的问题。
4.关于发现问题

自动化测试具有较好的一致性和可重复性, 一定程度解决了手工反复执行过程中的一致性的问题。
5.关于流程

自动化测试工具作为一种角色引入到整个测试流程中,提高测试执行流畅性。

1.关于人员

额外要求测试人员具备定测试开发能力,引入了对测试人员能力要求较高的问题。
2.关于成本

自动化测试开发成本因选择自动化框架(或工具)而异,但都具有较高的开发成本,引入了开发成本的问题。
3.关于维护

随着版本迭代和功能变更,引入了自动化代码的开发维护的问题。
4.关于发现问题

受其本身的局限性(大多应用在回归测试、稳定版本场景中), 自动化测试发现问题较少。

我们在认识自动化优点的时候,是否思考过其弊端带来的影响,我们是否能够应对,如何应对?

工欲善其事必先利其器

通过上述,我们不难发现,自动化测试是一把双刃剑。 所以关于自动化是否开展,我们需要从以下几个方面进行考虑:

做与不做

IT行业甚至其它行业的产品都是能够做到自动化的,所以是否自动化不是能与不能的问题,而是是否存在合适的时间或阶段以及合适方式去做的问题,实施自动化测试之前需要对产品开发过程进行分析,通常需要同时满足以下条件:

软件需求变动不频繁(超过10%的变动是频繁变动,当然10%不是一个定值)
项目周期足够长
自动化测试用例可重复使用
通常适合于软件测试自动化开展的场景如下:

回归测试,重复单一的测试操作造成了不必要的浪费
上文中也提到肯定是解决某些测试过程中的问题而引入自动化测试,如果是为了自动化而自动化,无疑它将是失败的。

飞机与大炮

框架、工具的选择是我们确认开展自动化后首先面临的问题。之前网上有个梗,泡面煮着吃是没有灵魂的,当然这是一种调侃。自动化测试开展一定要结合被测系统的特点进行选择,不顾被测系统(系统框架)特性、场景而盲目选择自动化测试框架(或工具), 它是没有灵魂的,自动化失败概率会相对高很多。

下面我们先简单的介绍一下自动化开展的几种自动化测试驱动框架。

首先我们需要明白自动化测试框架更倾向于一种设计思想 ,这种思想指导工具的使用或者自研开发,并且不是只能使用仅仅一种框架,结合被测系统本身特性一般是选择多种测试框架的组合,来满足测试和设计需求(开发、维护角度)。

录制回放测试框架

录制回放测试框架所采用的原理是通过录制应用程序产生的线性脚本进行回放从而达到自动化测试的目的。

优点:对测试人员测试开发能力要求最低,通过录制就可以得到所需脚本。
缺点:一般不具有逻辑判断的能力 ,可维护性差 ,效率低。
适应场景:不推荐,传统的UI自动化测试逐步弱化。关于U自动化,一定要清楚 被测系统是否满足开展自动化的条件,在被测系统变动频繁的项目中,开展UI自动化无疑是挖了一个很大的坑,其后期维护工作足以让大心疲惫,被迫放弃自动化测试。
测试库构架框架(The Test Library Architecture Framework )

测试库构架框架的核心思想可以概括为系统功能操作和业务逻辑的解耦。将所有的针对测试系统支持的功能操作封装在测试库中,测试脚本调用测试库的同时传递外部的测试数据,测试库的编写由自动化测试发工程编写(可以不懂业务),负责控件的变更和维护, 测试脚本的编写可由对业务比较掌握的自动化测试开发工程编写,负责业务逻辑、测试数据的变更和维护。

优点:被测试系统无论是哪层发生变化(代码层或业务层等),只需要相应的人员进行变更维护即可。
缺点:变更引起的维护工作同时附加在自动化测试开发工程师与业务测试人员身上,维护代码建级大。
适应场景:基于各种自动化开展方式(基于工具如Jemet或不基于工具的自研研发+持续集成)一般都会应用该框架。
数据驱动的自动化测试框架( The Data-Driven Testing Framework )

数据驱动的核心思想可以概括为数据(测试数据、配置数据)与代码解耦。该种框架的原理是采用了数据驱动脚本进行测试,数据驱动脚本是将数据输入存储在独立的数据文件中,脚本只存代码,运行时脚本的输入直接从文件中读取,如此相同的脚本(代码模版)可以运行于不同的测试用例中,实现了代码与数据的分离。

优点:对于业务人员由面向代码的开发转换为面向配置的设计(参数组合设计), 降低了开发难度与开发成本,同时提高了测试用例的易扩展性,可以快速扩展相似测试,实现了自动化代码不随用例的增长而增
缺点:测试脚本的维护由自动化测试开发工程师负责,要求懂自动化编程和业务逻辑,初始测试脚本设计成本较大,具有一定局限性 (针对相同的测试内容并具有相同的测试逻辑).
适用场景:更适应于测试内容测试逻相重复度高,被测对象对测试用例易扩展性、可复用性要求较高的场景。
关键字或表驱动的自动化测试框架(The Keyword-Driven or Table-Driven Testing Framework )

关键字驱动是对数据驱动的逻相扩展,它的核心思想可以概括为数据代码流程(逻辑)解耦,同时完成了代码与测试描述(针对被测对象的测试描述)的映射。该框架的原理是基于数据驱动的基础上,完成了对被测对象的拆分、抽象、 封装使之映射成个个“关键词” (测试描述),编写测试用例时,仅需要对关键词进行组合 ,即可完成不同场景的测试用例开发。

优点:对于业务手工测试人员,由面向代码或配置的开发转化为面向自然语言(测试描述)的开发,最大程度的降低了开发难度与维护成本,同时提高了测试用例的易扩展性、易组织性,实现了自动化代码不随用例的增长而增多。

缺点:对测试人员的测试开发能力以及业务了解程度要求很高。

适用场景:被测对象包含复杂业务流程(逻辑),当然复杂的能做简单的更ok。

何为自动化测试

关于自动化的认识

自动化测试是把以人为驱动的测试行为转化为机器执行代码的一种过程。

通常,在设计测试用例并完成评审之后 ,由测试人 员根据测试用例一步步执行侧试,得到实际结果与期盟结果的比较。

在此过程中,为了降低人力、时间或硬件资源的投入,提高测试执行效率,便引入了自动化测试的概念。

自动化开展的流程

自动化测试不仅仅是工具使用、代码开发,这一切都是围绕保障产品质量服务,自动化测试和手工一样其核心是测试分析与设计,自动化测试本身开展的好于环取决与是否选择合适的方式并且进行了充分的测试分析和覆盖。

测试分析与测试用例设计

关于如何进行测试分析、测试设计因为介绍篇幅过多,后续会开专项交流,此处不做说明,记得关注哦。

自动化测试预研

两个明确:

明确被测系统背景 (被测系统处于的开发或测试阶段、 需求变动情况、项目周期等)
明确自动化测试目标(具体哪些模块、自动化转换率、效率提升等)
测试框架选择

仅仅从实现上讲,很多种自动化测试框架(或工具)都可以开展自动化,或者说任意一种也不是很勉强, 所以在自动化框架(或工具)的选择上,不是人为核心的(我会什么, 或有哪种框架比较好掌握),而是以被测对象为本来选择自动化框架(或工具)。

两个场景:

场景一:多维度的查询功能,类似于某宝商品的筛选查询。
场景二:较为复杂的业务流程,类似于某逐级审批流程系统。
思考:关于这两种场景,我们如何选择自动化测试框架(或工具) ?

场景一特点:类似于某宝WEB端, 不同关键词(衣服、足球)的多维度(品牌、发货地)组合查询,查询逻辑单一、复用性强。推荐使用:测试库架构框架+数据驱动框架。
场景二特点:类似于审批申请流程,包含复杂的业务逻辑和多用户角色。推荐使用:测试库构架框架+数据驱动框架(配置解耦)+关键词驱动框架
测试用例开发

两个注意

规范性和契合性:开发规范性以及开发过程一定要与其自动化测试框架思想相契合,比加选择测试库构架框架,那么在用倒编写的时候,发现还有需要进行封装的功能操作时,需要在测试库中开发,在用例中调用,而不是随手在用例中进行开发。
开发成本和维护成本:开发设计一定要考虑开发成本和维护成本问题,开发成本决定效率,维护成本决定这个自动化能否长明有效的运行下去,同时注意关于成本问题的解决思路是在对被则对象进行有效覆盖的前提下,通过框架设计和优化方案来降低成本,而不是靠少做一些做的粗一些来降低成本。
比如选择测试库构架框架,实现上述场景一查询业务的自动化时:

我们如果"关键词(鞋子) +品牌(耐克)“写一条自动化用例,“关键词(鞋子) +品牌(耐克)+发货地(南京)”又写了一条自动化用例,这种方式是否有需要优化的地方?

结合业务特点,我们在测试库构架框架的基础上再采用数据驱动框架,将其单的查询逻辑与测试数据分离,这样我们再开发其他用例时,只需要在数据文件中增加测试数据(输入、对应期望),避免了重复开发带来的开发、维护成本。

测试用例执行

一般使用Jenkins进行持续集成。

测试用例结果反馈

两个要求:

结果信息指向清晰:具体是由于什么原因导致的失败
结果信息表述清晰:具体是失败的原因
测试用例维护

一个警場

警惕当用例维护成本随着用例数量的增多而增大时, 需要及时优化用例设计框架, 避免用例维护成本过大,导致用例废弃或放弃维护。
思考:如何评价我们自动化测试开展的如何?
下面这几个维度,大家看看该如何选择呢?(多项选择题哦)

关于自动化测试动机

我们在什么背展下提出的自动化测试需求?

项目周期较长,老功能趋于稳定,项目人力紧张、需要做更多的事情,需要降低对重复测试的投入?
其它团队在做自动化,我们也跟风搞一决。
关于自动化测试目的

我们以什么目的来开展自动化测试?希望达到的目的是什么,这是在自动化预研阶段需要明确。

提高测试效率,降低重复投入,能够抽出时间做更多的事情。
做自动化的目的就是做完自动化。
关于自动化本身

选择的自动化测试框架(或工具)是否与被测系统相契合,是否评估开发成本、维护成本,以及提供的解决方案?

结合业务特性场景,选择适当的时机以及合适的方式开展自动化
在进行自动化开发之前,进行充分测试分析、设计,保证适当的测试覆盖(测试点测试结果)。
其他团队在使用XX工具,我们也可以学着用一下,把我们团队的自动化做起来。
造一两条测试数据覆盖一个接口就行 ,期望结果挑着验证一下。
关于自动化测试效果

是否达到了我们既定目标。
是否做了更多有价值的事情,如利用自动化节省的时间我们对核心业务做了更多深层分析,挖掘出些问题等等。动起来,不需要人力去做子。
这家伙维护起来真差,维护不子,算了手动测试吧。

共勉:【可能给予你助力的教程】

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号【程序媛木子】免费获取~

自动化测试——何为自动化测试,为何自动化测试相关推荐

  1. python自动化测试常用库_Python自动化测试常用库整理

    今天花了一些时间,过了一下这几年自己用Python开发的自动化测试框架,然后将其中常用到Python库抽出来,简单整理了一下它们的用处.我觉得,只要掌握了这些常用的Python库,足以应对大多数自动化 ...

  2. selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡

    selenium自动化测试 使用Selenium进行自动化测试一直是将萌芽的自动化测试人员培养为专业人员的生命线. Selenium是开源的,在全球范围内被广泛采用. 结果,您会得到社区的大力支持. ...

  3. 【自动化测试】在做自动化测试之前你需要知道的

    什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念 ...

  4. 2021年最全的自动化测试面试题及答案--看完后吊打面试官!自动化测试是什么?自动化测试学什么?

    一.前言 最近有童鞋和我抱怨,说网上很难搜到那些全面又合适的自动化测试面试题,这里根据我个人的经验以及收集整理的: 你没看错,不慌,慢慢来. 先从什么是自动化测试开始说起哈! 二.什么是自动化测试? ...

  5. 2020年最全的自动化测试面试题及答案--看完后吊打面试官!自动化测试是什么?自动化测试学什么?

    一.前言 最近有童鞋和我抱怨,说网上很难搜到那些全面又合适的自动化测试面试题,这里根据我个人的经验以及收集整理的: 你没看错,不慌,慢慢来. 先从什么是自动化测试开始说起哈! 二.什么是自动化测试? ...

  6. 软件自动化测试简介,1.1 自动化测试简介

    ***部分 基础篇 基础篇主要介绍两部分内容: 软件自动化测试概述和自动化测试工具QuickTest 的使用.目的是通过基础篇的学习, 使读者对软件自动化测试有一定的了解, 并能熟练使用自动化测试工具 ...

  7. 华为python自动化测试框架_10个自动化测试框架,测试工程师用起来

    摘要:快速实现质量是必要的,因此质量保证得到了很多关注.为了满足卓越的质量和更快的上市时间的需求,自动化测试将被优先考虑.对于微型.小型和中型企业(SMEs)来说,自动化自身的测试过程是非常必要的,而 ...

  8. 如何做自动化测试?什么是自动化测试?

    自动化测试究竟能给我们带来什么好处?更节省成本?测试更快?彻底取代手工测试?带着这些问题,我们一起来学习自动化测试怎么做. 什么是自动化测试?自动化测试,是指软件测试的自动化,软件测试就是在预设条件下 ...

  9. 什么是自动化测试?如何开展自动化测试你需要知道这些点

    目录 前言 什么是自动化测? 分层的自动化测试 我为什么要做自动化测试? 什么项目适合做自动化测试? 选择什么工具进行自动化测试 selenium 用前须知 selenium IDE selenium ...

最新文章

  1. s3c2410下利用TL16C554扩展4个全功能串口
  2. Checked ==true ? Y:N ;
  3. 年轻——塞缪尔.厄尔曼
  4. java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用
  5. react dispatch_记 react 项目在 TypeScript 化中的一个坑,以及相应的类型改动
  6. python学习if语句_python学习之if语句
  7. CSS3过渡、变形和动画
  8. python如何获得列表中某个元素的index
  9. 免费获取谷歌翻译api(Google Translate API)
  10. 抗战史上知名的戚家刀PK日本真三武士刀刀型
  11. python模块化导入
  12. 【论文阅读】DeepGauge: multi-granularity testing criteria for deep learning systems.
  13. Bombs CodeForces - 350C
  14. Java 11~~20
  15. Web(servlet) 应用程序将其发布在 Web AppServer 服务器(war包)
  16. 【Web技术】1274- 深入浅出前端监控
  17. 首页 干货教程 大数据动向 大数据应用 数据可视化 数据分析 投资并购 企业专区 注册 登录 随机森林入门攻略(内含R、Python代码)
  18. 考健身教练的要求有哪些?应该怎么做才好?
  19. 酒店WiFi覆盖-无线覆盖方案
  20. VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。未能将管道连接到虚拟机: 所有的管道范例都在使用中。

热门文章

  1. 小例子背后的大道理——Adapter模式详解
  2. 【解决】打印机只打印第一页纸的问题
  3. Java调用动态库 缺点,Java调用动态库所需要关心的有关问题
  4. 中国互联网公司员工平均年龄出炉,你怎么看?我躺着看
  5. 错误上报_PCIe错误的上报方式
  6. mysql 堆表_Mysql聚集索引和非聚集索引(堆组织表和索引组织表)
  7. HALCON 20.11:深度学习笔记(9)---异常检测
  8. java web listener_JavaWeb:Listener
  9. ELK实践(二):收集Nginx日志
  10. Hadoop MapReduce编程 API入门系列之wordcount版本3(七)