这些年,自动驾驶的概念很火。

美国汽车工程师协会提出了六级(L0-L5)分层模型,用来衡量自动驾驶的能力和水平。许多人对这个分类模型耳熟能详。

自动化测试和自动化驾驶一样,也是人类的梦想。如何衡量自动化测试的水平呢?

有人就参考自动驾驶的分层方法,对自动化测试也进行了类似的分级(参见《人工智能测试的六个层次》、《测试工程师不懂AI,还有未来吗?》等文章)。

仔细看完具体的分类内容后,我发现这些分级方法存在模仿过度的问题。

由于忽视了软件测试的本质,由于脱离了自动化测试的实际,而划分出在我看来有些错乱的类型。 例如,将难度最高的测试检查点自动化划分为L1层次。

给自动化测试分等级,不能偏离测试的基本原理。软件测试是构造测试输入,作用于被测软件,然后观察其实际输出并与期望输出进行比较的过程。

软件测试依赖于(1) 测试输入和(2) 期望输出。其中测试输入与测试数据、测试步骤、测试操作序列等概念等价。

在已知测试输入和期望输出的情况下,自动化测试成为一个编程问题。无数通用或专用编程语言,例如Python、Java、Robot Framework等,能够帮助我们解决这个问题。

编程需要人工。编程之后,测试就可以实现自动化执行。相比完全手动的L0,这个层次的自动化测试是L1。这也是自动化测试领域当今的主流水平。

在L1基础上,要想更进一步,需要突破测试输入和期望输出的自动生成。这是两个问题。

#1,自动生成测试输入

在进行软件测试时,测试人员需要精心构造测试数据和测试步骤,以期实现更高的覆盖,发现更多的bug。

业界尝试了许多方法,来自动生成测试数据和步骤。例如随机方法、Fuzzing方法、基于搜索的方法、基于模型的方法、基于机器学习的方法等。

这些方法或多或少存在以下问题:(1) 生成的用例数量过多,(2) 生成的用例长度过长,(2) 产生的误报率过高,(4) 测试的覆盖率过低等。除了有成本低的优势之外,它们与人工设计相比,质量还相差甚远。

测试输入的生成处于研究阶段,可落地成果还较少。倘若突破了测试输入的自动生成,那么我们可以达到L2级的自动化测试。

#2,期望输出自动生成

写过测试用例的人都知道,用例的相当篇幅是关于检查点的。为了一个个检查点,我们需要对说明文档抠字眼,需要与用户、与产品经理、与开发人员反复核对。即使这样,有时候用例失败报bug,结果由于我们的检查点不合理而被打回。

这些现象从侧面反映了测试结果判定的难度。结果判定难,关键在于软件的期望输出获取难。这个难题又叫做oracle难题。这里oracle的意思是预言、神谕。可以说,做预言有多难,生成期望输出就有多难。人工都难,自动化就更难了。

oracle自动化之难,难于上青天。

过去几十年的研究表明,大家对测试oracle自动化基本还没多少办法。倘若突破了oracle生成的自动化,那么我们就可以实现L3级别的自动化测试。

只有用例生成、用例执行和结果判定都自动化了,软件测试才能够实现端到端、一站式的自动化。这是自动化测试的终极目标,是测试之巅,是真正的“解放”。

这张图就是我认为的自动化测试等级模型。这个模型很简单,也比较符合实际。说它符合实际,是因为自动化测试的现状就是:用例执行自动化80分,用例生成自动化20分,oracle自动化5分。

基于这个实际,任何的新技术、新工具,例如机器学习、人工智能,只有解决了测试真正的瓶颈问题(用例生成和oracle生成),才能算明显地推动了测试的进步。

如果你处于想学Python自动化或者正在学习Python自动化,Python自动化的教程不少了吧,但是是最新的吗?说不定你学了可能是一年前人家就学过的内容。

如果对python自动化测试、web自动化、接口自动化、移动端自动化、大型互联网架构技术、面试经验交流等等感兴趣的老铁们,可以关注我的博客。我会在博客不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。欢迎分享,欢迎评论,欢迎转发。需要资料的同学可以关注我的微头条获取资料链接。

测试之巅?自动化测试相关推荐

  1. python自动化测试之Appium自动化测试环境搭建

    [文章末尾给大家留下了大量的福利] 前言: 好几个小伙伴在问appium环境搭建咋整勒,这不就整出来了嘛,接下来几篇文章就把常用的所有的环境搭建都写完把 Appium 介绍 Appium是一个开源工具 ...

  2. android自动化测试之手机自动化测试工具基本原理,学习笔记之Android自动化测试工具Monkey...

    编辑推荐: 本文来自于网络,介绍了自动化测试工具Monkey使用过程,Monkey命令参数说明,注意事项等知识. 一.Monkey简介 Monkey测试是Android平台下自动化测试的一种快速有效的 ...

  3. 软件测试之Web自动化测试怎么做?Web自动化测试的详细流程和步骤

    1.什么是web自动化测试 自动化(Automation)是指机器设备.系统或过程(生产.管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测.信息处理.分析判断.操纵控制,实现预期的目 ...

  4. WEB UI自动化测试之AutoMagic自动化测试平台开源

    作者介绍: 网名: Ray 介绍:笑起来像个孩子,冷起来是个迷. 博客:http://www.cnblogs.com/tsbc/ 2018年3月29日,Ray说准备把AutoMagic自动化测试管理平 ...

  5. WEB UI自动化测试之AutoMagic自动化测试

    AutoMagic自动化测试平台 AutoMagic 是一个基于WebUI的自动化管理平台.为什么叫AutoMagic呢?因为自动化(Automation)在执行起来的时候是一个很神奇的事情,它可以无 ...

  6. 随行付微服务测试之静态代码扫描

    静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...

  7. coverity代码检测工具介绍_微服务测试之静态代码扫描

    静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...

  8. 【关于自动化测试那些事儿(1)】

    自动化测试之selenium 自动化测试 什么是自动化测试 单元自动化测 接口自动化 UI自动化测试 selenium selenium+python环境搭建 webdriver API 元素的定位 ...

  9. 传智播客软件测试学习视频汇总:

    课程名称 分类 URL 提取码 软件测试入门到精通 视频 http://yun.itheima.com/course/490.html?aoe cnj1 资料 https://pan.baidu.co ...

最新文章

  1. 文科生如何理解深度学习?
  2. 关于Android中工作者线程的思考
  3. switch语句格式_JavaScript流程控制语句_if语句(十一)
  4. [Leetcode][第78题][JAVA][子集][位运算][回溯]
  5. 搭建gitlab及部署gitlab-runner
  6. 用c语言设计程序设计查表温度传感器,基于18B20温度传感器+1602液晶显示器的C语言程序设计开发...
  7. django,项目,app,静态文件02,数据库
  8. 【D3.V3.js系列教程】--(十五)SVG基本图形绘制
  9. SpringBoot2线程池的创建以及执行异步任务
  10. ESP8285开发、比ESP8266好,利用率比ESP-01更好
  11. Opencv实现身份证OCR识别
  12. 衡水的高考2021年成绩查询,2021年衡水高考最高分多少分,历年衡水高考状元
  13. R语言寻找数据集缺失值位置
  14. 如何利用任意波形发生器创建你想要的波形并输出
  15. Harbor离线安装
  16. 【JS】js判断等号、等同(===、==)
  17. 微信公众平台开发最佳实践
  18. MacM1本地navicat无法连接本地docker的mysql。
  19. django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
  20. Codeforces Global Round 11 ABCD题解

热门文章

  1. 架构思想--基础架构
  2. 从左到右的流水灯单片机课程设计实验报告c语言版,流水灯_单片机课程设计-实验-LED流水灯.doc...
  3. selenium添加带有账密的socks5代理
  4. 基于jeecgboot的支持online表单审批的功能正式发布
  5. 按键精灵游戏血条横向保护代码
  6. matlab sapi.spvoice,matlab说话和唱歌
  7. 这是一个隐藏的(绝世武功)Java 学习路线图,祝你Offer拿到手软
  8. pyflink连接iceberg 实践
  9. stm32运行到delay停住不再继续运行
  10. python装饰器理解_python装饰器理解