软件测试自动化的最新趋势

2019 年 4 月 04 日

软件测试自动化的最新趋势

本文将回顾 2018 年的趋势,并阐述对 2019 年的期望。


过去几年,QA 行业的一个持续趋势是测试自动化和持续测试。这一趋势也将在 2019 年继续下去。虽然 CI/CD、DevOps 和测试框架在未来一年仍将是突出的主题,但一些新技术正在影响我们测试的内容和测试方法。


人们期待在 JavaScript 领域看到更多的开源测试框架,在使用的工具中嵌入更多的人工智能功能,以及来自商业工具供应商的更多创新。另一个持续的趋势是功能测试和性能测试的结合(你可以将其看做 Selenium 与 JMeter 测试相结合)。此外,人们还期望看到更多行为驱动开发(Behavior Driven Development,BDD 测试)的发展,以及在敏捷组织中如何采用它。自动测试场景生成是我们与几个客户合作的另一个领域。


以下是目前软件测试自动化水平的完整概述。


物联网测试


物联网(Internet of Things,IoT)正对测试领域产生显著的影响。像 Selenium 这样的传统自动化方法在嵌入式环境中变得毫无用处。我们已经看到越来越多的基于 Python 和 C/C++ 的测试框架执行单元测试、集成测试和系统测试。大多数测试框架都是测试由这些嵌入式库导出的 API,其中相当多的框架调用嵌入式代码来执行单元测试。这需要具有重要软件开发经验的专业测试工程师,但我们看到更多的软件开发人员将被部署到自动化测试的角色。Python 可能是物联网测试框架开发的首选语言,因为它能够直接使用 ctypes 包来调用 C 代码。


另一个新趋势就是物联网的 DevOps 环境开始标准化。到目前为止,我们看到的大多是 CI 环境的 Ad-hoc 实现。我们已经预先构建了解决方案,用于构建管理、测试管理、镜像加载、物联网镜像在不同设备上的部署、不同构建物联网设备的 A/B 测试等。


持续测试


持续测试是从去年至今仍在继续的另一个趋势。我们在过去已经看到了 DevOps 和 CI/CD 框架的爆炸式增长,而今年这种趋势,将随着新的框架(如 Nevercode 和 Codefresh)的出现而继续。


持续测试的另一个趋势是对每个版本进行基于人工智能的风险评估。以前,这种操作是手工执行的,以确定能为应用程序部署哪些版本。我们已经实现了几个 CI/CD 平台,它们执行应用程序基于人工智能的自动 A/B 部署。


基于人工智能的测试


基于人工智能的测试方法已不仅仅是时髦语,现在已经进入了主流测试实践。人工智能和自动化是测试的两个并行方面:自动化用于功能测试,而人工智能则用于视觉测试。基于人工智能的视觉测试,包括视觉测试和感觉测试,并快速浏览每个构建版本的视觉变更,是一个非常有用的发布验证方法。我们已经在 Denver 的不同客户中实施了基于 Applitools 的视觉测试解决方案。


虽然严格来说,视觉测试目前并不是基于人工智能的。图像比较算法是基于传统的梯度分类。


我们所使用的其他几个独特的工具很少能够智能地自动化许多任务。


  • 测试套件优化:我们开发了一些工具来分析日志模式,并确定哪些测试用例是重复的。

  • 使用日志分析进行缺陷识别:根据日志分析突出显示软件缺陷。

  • 自动测试场景生成类似于 Swagger。


开源测试框架


在过去的几年里,我们看到的不断增长趋势之一是,从传统的企业测试解决方案(如 HP QC、ALM、UFT、IBM 等)迁移出来。我们看到各种规模的组织越来越多地采用开源测试平台。我们亲自将客户的几个测试框架从 HP QC/UFT 迁移到其他开源解决方案。尽管这些开源解决方案涉及到编码,但从长远来看,它们具有高度可定制性和可维护性。我们预计,随着 2019 年的到来,这些开源解决方案将继续获得更大的吸引力。



敏捷开发和 DevOps 的合并


DevOps 的关键原则是开发团队、测试团队和运营团队协作,无缝发布软件。这意味着集中或隔离的 QA 部门现在必须与开发和运营团队合并,以便为各种版本提供按需测试服务。测试变得更加渐进、迭代,并与应用程序开发和部署过程集成。



译注:行为驱动开发(英语:Behavior-driven development,缩写 BDD)是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA 和非技术人员或商业参与者之间的协作。BDD 最初是由 Dan North 在 2003 年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。在过去数年里,它得到了很大的发展。

2009 年,在伦敦发表的“敏捷规格,BDD 和极限测试交流”中,Dan North 对 BDD 给出了如下定义:

BDD 是第二代的、由外及内的、基于拉 (pull) 的、多方利益相关者的 (stakeholder)、多种可扩展的、高自动化的敏捷方法。它描述了一个交互循环,可以具有带有良好定义的输出(即工作中交付的结果):已测试过的软件。


我们现在已看到基于 BDD 的测试机制的采用,它允许在 sprint 周期中开发的新功能进行迭代测试。BDD 代表行为驱动开发(Behavior Driven Development),它本身源自验收测试驱动开发(Acceptance Test Driven Development,ATDD)。BDD 迫使团队在收集需求的同时提出测试场景。测试场景被立即记录下来并签入 CI 系统,以强制 CI 系统显示这些场景的故障。在 Sprint 期间,开发和 QA 团队的目标现在变成了这些场景。这种测试框架开发机制在方法上是新颖的,非常适合敏捷环境。我们看到很多客户在敏捷实践中转向基于 BDD 的测试开发。


性能工程的性能测试


测试的关键趋势之一是将性能测试角色不断转变为成熟的性能工程角色。性能工程现在不仅包括测试方面,还包括监控系统性能。资源的自动伸缩、A/B 测试、ELB、数据库优化、瓶颈识别和监控。现在已有集中基于云端的工具可以准确地监控不同云资源上的各种性能参数,并且通过警报对所有资源进行仪表板监控是我们在各种客户端上工作的主要部分之一。


微服务测试


随着越来越多的应用程序转向微服务模型,测试架构也朝着微服务测试模型发展。以前,产品的 QA 遵循黑盒测试模型,但现在,通过微服务测试,我们正朝着灰盒测试模型迈进。


微服务测试包括 API 测试、数据库测试、身份验证服务 / 搜索服务测试等。我们可以将这个测试模型称为更多的组件测试模型,而不是测试集成产品。


微服务测试允许我们在所有变更进行大爆炸式的集成之前发现问题。 它仍然高于单元测试,因为组件必须完全定义,并且测试基于这些组件的外部 API。


测试即服务(TaaS)


测试即服务(TaaS)或 QA 管理服务是一种外包模式,其中组织的测试活动由外部团队而非员工来执行。在许多情况下,外部团队是一个离岸团队。但我们也有一些实例,我们为自动化开发和项目移交的初始阶段开发了离岸团队,然后是离岸团队进行 QA 维护。


测试即服务(TaaS)的优势包括:


  • 支持按需测试资源。测试是一种周期性活动,其中,资源利用率并不是恒定的。测试即服务意味着客户只需为测试资源使用的时间支付费用。

  • 离岸资源降低成本:由于与离岸组织相关的劳动力成本较低,

  • 自动化服务包含在内:测试即服务包括测试自动化框架、CI/CD 框架以及性能测试和监控,从而降低了组织的各种成本。




原文链接:


https://medium.com/@priyesh_96398/latest-trends-in-software-test-automation-660af0166724


2019 年 4 月 04 日 08:004048
用户头像

发布了 229 篇内容, 共 81.9 次阅读, 收获喜欢 850 次。

关注

评论 2 条评论

发布
用户头像
自动化测试除了TDD和可测试性架构设计的深度熟练应用外,其他都是鸡肋...人工智能测试就如以前的基于图形的编程(UML建模自动生成代码),想法很好,但不切实际,工具永远无法代替人的思考,毕竟人使用工具而非工具使用人,社会性属性由人构成而非工具构成。
2019 年 08 月 09 日 14:38
回复
没有更多评论了
发现更多内容

Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台

Phodal

DevOps 敏捷开发 软件开发 研发效能

思维导图学《Linux性能优化实战》

Yano

Linux 后端

以为是青铜,没想到是王者的dubbo标签路由

小楼

dubbo

MySQL死锁与Spring事务

Dean

MySQL

Docker运行常用软件:MySQL,Redis,Nginx,RabbitMQ,Neuxs,Gitlab

读钓

MySQL nginx Docker gitlab

SpringBoot中如何优雅的使用多线程

读钓

Java spring Spring Boot

centos7.6操作系统安装

桥哥技术之路

#linux

如何在非 sudo 用户下运行 docker 命令?

愚一

Docker DevOps

C++数组可以为变量吗

程序喵大人

c++ 互联网 编程语言

要不要重新认识一下递归与迭代?

西了意

编程

广告与数据算法系列1.1.1: 什么是广告

黄崇远@数据虫巢

互联网 算法 广告

当dubbo多注册中心碰上标签路由

小楼

dubbo

LeetCode 前1000题二叉树题目系统总结

Yano

面试 算法 LeetCode 二叉树 刷题

一次漫长的dubbo网关内存泄露排查经历

小楼

dubbo 内存泄露

MacOS配置网络命令

编程随想曲

macos network

项目实施要避免哪些坑?

顾强

项目管理

格局不行,有机会也抓不住

池建强

创业 格局 MacTalk

Sentinel在docker中获取CPU利用率的一个BUG

小楼

Java sentinel cpu

一个工程师向电信公司的维权

Linux系统优化

桥哥技术之路

#linux

什么是物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

Apache Beam 大数据处理一站式分析

李孟

Java 大数据 数据中台 数据交换 Beam

零基础应该如何学习爬虫技术?

极客时间

Python 编程 爬虫

skywalking内存泄露排查

小楼

dubbo 内存泄露

身为程序员,怎么接私活赚外快?

爱看书的小代码

IPFS 星际传输协议的入门(二)

AIbot

区块链 分布式数据库

在Kubernetes上运行SpringBoot应用

铁花盆

Docker Kubernetes Spring Boot

用jdk8的stream实现斐波那契数列

编号94530

jdk stream 斐波那契 fibonacci

Django 中如何优雅的记录日志

AlwaysBeta

Python django Web 后端

记一次spring注解@Value不生效的深度排查

小楼

spring Spring Boot dubbo

nacos的一致性协议distro介绍

小楼

nacos

软件测试自动化的最新趋势-InfoQ