NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何做自动化测试?

  • 2017-12-19
  • 本文字数:1905 字

    阅读完需:约 6 分钟

测试的自动化需要占用一些时间和精力。但如果开展的方式正确,这些投入物有所值。自动化不能过度,而是应按 Karishma Kolli 的建议,聚焦于需求和要求上。编写干净且易阅的代码,对于保持测试套件的可维护性是很重要的。

Karishma Kolli 是一位软件开发工程师。在 2017 秋季在线测试大会(Fall Online Testing Conference)上,Kolli 的报告关注了如何正确认识测试自动化。InfoQ 以问答、总结和文章覆盖了本次大会。

InfoQ 采访了 Kolli,内容涉及测试工具和技能、测试自动化,以及测试自动化中一些值得关注的进展。

InfoQ: 您对如何选取适合的测试工具有哪些建议?我们应该遵循什么原则?

Karishma Kolli:选择测试工具这一过程,主要依据的是你的业务或测试需求。例如,一些应用主要关注的是性能,但是对于其它应用,性能也许并非主要关注点。对于负载、UI 等,也是一样的。

测试取决于所针对的对象和业务影响。

在确定测试工具过程中,技能集的可用性、预算和时间因素也发挥了次要的作用。软件工作中总是具有时间线和截至日期。如果我们的时间线很紧张,那么我们可以选择一些更简单的事情,甚至是使用商业工具。

InfoQ: 不同类型的测试需要不同的工具。我们如何管理各种各样的工具和测试技能集?

Kolli:非常简单。一旦我们能理解并洞悉不同测试工具的需求,那么工具的管理就不是问题。既然我们能管理各种各样的开发工具和技能集,那么各种各样测试工具和技能集的管理也大同小异。

在“在敏捷项目中实施自动化测试之我见”一文中,Rajneesh Namta 介绍了为什么我们应该慎重决定哪些测试需自动化:

不要因为自动化而自动化。在添加新的测试之前适当的考虑可维护性和执行时间。每个加入到自动化测试集合的测试,都成为了产品基线的一部分,也需要同其他基线一样维护—在整个应用的生命周期中。添加复杂和难维护的测试,最终结果是减慢组内反馈循环,这个应当避免。

InfoQ: 团队应在测试自动化上投入多少时间?我们如何知道已投入了足够的时间,而非过多的时间?

Kolli:在一开始,测试自动化将占用更多的时间。但是一旦框架准备好了,我们将不必在此上投入过多的时间。通常,如果一个团队具有一到两名手工 QA 人员,那么一名 SDET(软件测试开发人员)就应该可以处理所有的自动化需求。当然,根据自动处理测试数量的不同,以及应用的不同类型,人员也会有相应的变化。

如果所有事情都是在 UI 上自动化进行的,那么所花费的时间机会比所需的时间更多。

在“在持续交付中加入自动化验收测试支持”一文中,Dave Farley 建议,我们不应该使用“UI 录制回放”(Record-and-playback)系统:

本质上,在 UI 录制回放系统中,测试的关注点是 UI,而不是用户所期望的系统行为。这也就意味着 UI 录制回放系统的测试关注点在于技术本身,而不在于系统行为。这就导致这样的测试用例总是很脆弱的,并且更容易由于目标测试系统中相对较小的改动而失效。因为从长远来看,它会带来很多额外的工作,因此我会避免使用这种测试。

InfoQ: 您对于在测试中使用 UI 录制回放系统怎么看?

Kolli:就我个人而言,我对录制回放并不感冒。对于我们大多数人而言,它和“一招鲜”的方法一样,在现实中并非能很好的适用。录制恢复并不能解决我们的剪裁需求。它们是最为片面的测试,将导致我们无法对自己的自动化测试套件建立信心。

InfoQ: 在测试自动化中,您有哪些主要的经验教训?

Kolli: 多年的经验使我意识到,人们非常容易沉溺于自动化中,并过度地开展自动化。

重在聚焦于需求和要求。

例如,如果我们的要求是测试一些对客户十分关键的区域,那么在这种情况下,我们不必将时间投入那些只有 2%的用户所使用的功能上。

如果我们需要同时支持一万名用户,那么我们不必测试一万一千名用户。

维护自动化套件可能听上去是一件不费吹灰之力的事情,但是随着代码量的不断增长,更新和维护代码变得越来越复杂。因此,编写干净而易读的代码是非常重要的。

我们往往忽视诸如报告和配置等微小的细节问题,但如果我们对这些微小的细节给予适当的关注,那么它们就会变成宝贵的资产。

InfoQ: 您认为在测试自动化中有哪些值得关注的进展?你期望在不久的将来测试自动化会是什么样的?

Kolli:每天都有越来越多的公司认识到自动化测试的重要性。测试自动化已经从在个人的本地计算机上做记录和回放,演进为在云上运行整个定制测试套件。

随着人工智能的发展,测试自动化将更为可靠和有效。一个我们所熟悉的例子就是 Siri 和 Google。通过学习和进化,它们实现了对语音差异的识别等功能。在软件开发中,人工智能可以使用同样的方式去识别代码模式、常见的错误区域等。

借助于人工智能,测试自动化将成为开发的一个组成部分。

查看英文原文: How Do We Automate Testing?

2017-12-19 18:002511
用户头像

发布了 391 篇内容, 共 127.1 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

公司需要同步大量数据,如何缓解传输压力提高同步效率?

镭速

数据同步 数据同步工具 数据实时同步

搭建期货合约币币交易所,挖矿APP开发

V\TG【ch3nguang】

钟燕清 | AI+开源时代,金融行业的机遇与挑战

开源雨林

香港多IP站群服务器,构建多站点网络的强大支持

一只扑棱蛾子

站群服务器

2023数字化转型发展大会暨首届数字原生大会在京召开

信通院IOMM数字化转型团队

数字化转型 IOMM 数字化转型峰会

灞桥康养论坛成功举行 多方聚力共创康养文旅产业高质量发展新篇章

联营汇聚

融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?

融云 RongCloud

AI 娱乐 社交 AIGC AI Agent

程序编译运行时,提示找不到某些组件

矩视智能

机器视觉

《可观测性成熟度模型白皮书》正式发布,龙蜥致力打造更好用户体验

OpenAnolis小助手

开源 云原生 可观测性 白皮书 龙蜥社区

PAI BladeLLM推理引擎: 超长上下文、更高性能

阿里云大数据AI技术

阿里云

穿越人海遇见你:精细化运营神器Mobpush是如何实现智能化精准投放的

MobTech袤博科技

人工智能 大数据 智能投放 智能推送

国产自主研发,完全可控 IDE!

桑小榆呀

推进史

OpenHarmony AI框架开发指导

OpenHarmony开发者

OpenHarmony

使用 Amazon EC2 预留实例最大限度地节省成本和提高灵活性

亚马逊云科技 (Amazon Web Services)

云计算 sdk Amazon EC2

浅谈USDToch(优多趣)模式系统开发源码搭建(成熟技术)

西安链酷科技

DAPP系统开发

DAPP去中心化模式应用开发 | 智能合约模式系统搭建

V\TG【ch3nguang】

Mysql中的InnoDB和MyISAM

程序员万金游

Java MySQL 程序员 后端

Python程序设计实例 | 学生管理数据库系统的开发

TiAmo

Python sqlite 数据库

使用 Amazon Lightsail 的优势:为初创企业简化基础架构并提升运营效率

亚马逊云科技 (Amazon Web Services)

数据库 Linux API

亚马逊云科技 Amazon Lightsail :在云服务器上使用 14 个区域个全球控制台

亚马逊云科技 (Amazon Web Services)

Amazon EC2

亚马逊云科技 Amazon Lightsail :一种在云服务器上运行容器的简单方法

亚马逊云科技 (Amazon Web Services)

容器

JavaScript 循环:拥有最佳性能的最佳实践

树上有只程序猿

JavaScript break continue

优化Java代码效率和算法设计,提升性能

互联网工科生

Java 并发编程 性能测试 数据结构和算法

实时云渲染,元宇宙核心支持技术之一

3DCAT实时渲染

元宇宙 实时云渲染

云原生DevOps思考

薛猫

DevOps 云原生 kubernetes 运维

HarmonyOS 管理页面跳转及浏览记录导航

HarmonyOS开发者

HarmonyOS

微服务是个坏主意吗?

这我可不懂

微服务 单体

区块链链游合约系统开发项目模式技术方案

西安链酷科技

DAPP系统开发 区块链开发DAPP开发

哈希竞猜游戏开发源码部署方案(成熟技术)

西安链酷科技

哈希竞猜 区块链开发链游开发

数字货币swap交易所逻辑系统开发分析方案

西安链酷科技

交易所开发 swap链游 swap开发

Proxyman for mac(HTTP调试代理工具) 4.11.0永久激活版

mac

苹果mac Windows软件 Proxyman 网络代理工具软件

如何做自动化测试?_软件工程_Ben Linders_InfoQ精选文章