大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

不只是黑盒测试:测试工程师如何识别和消除代码坏气味?

  • 2023-04-19
    北京
  • 本文字数:1265 字

    阅读完需:约 4 分钟

不只是黑盒测试:测试工程师如何识别和消除代码坏气味?

具备适当的编程基础有助于改进你的测试自动化,使维护测试代码变得更容易,并减少测试压力。掌握编程的理论和基本原则有助于让测试自动化水平更上一层楼。面向对象编程原则有助于消除代码坏气味。


Christian Baumann 在2022年敏捷测试日上谈到了测试自动化。


Baumann 提到,许多测试人员在不具备深厚的编程背景或没有接受过任何适当培训的情况下就被“扔”进了测试自动化领域。他们在一定程度上知道使用什么工具,并用它们创建了一些自动化测试。Baumann 说,到了某个阶段,他们发现他们的自动化系统可能不太对劲。代码看起来很混乱,维护它们要花费很多时间,而且非常令人沮丧。


Baumann 说,如果每个做自动化测试的人都在编程理论和基本原则方面有一定的基础,那就太好了。这样也有助于提高自动化代码的质量。


Baumann 给出了一个如何在测试自动化中使用面向对象编程原则的例子:


我们可以使用对象母亲(Object Mother)模式,这个模式基于面向对象的“抽象”原则。这意味着它隐藏了内部实现细节,只暴露出使用它所必需的方法。测试对象是如何被创建、如何从数据库中删除、在测试期间如何被修改——所有这些对于用户来说都是不需要知道的,用户只需要知道这些方法存在并且可以被调用。


Baumann 说,使用面向对象编程原则也有助于消除代码坏气味:


消除代码坏气味就是在不改变代码行为的情况下修改代码,基本上就是重构。对于重构,我们需要将单元测试作为安全网,这样就可以知道我们所做的修改有没有破坏了任何东西以及代码是否仍然按照预期那样运行。


Baumann 建议我们对测试自动化代码给予充分的重视,并将其视为应用程序的产品代码,以防止遇到类似的问题。


InfoQ 就测试自动化人员需要具备编程基础的问题采访了Christian Baumann


InfoQ:面向对象编程能带来什么好处?


Christian Baumann:在测试自动化代码中应用面向对象编程原则有很多好处,它让代码更不容易出错,更容易阅读、理解和维护。


InfoQ:怎样才能管理好测试数据?


Baumann:在测试自动化中,我相信处理测试数据最好的方法是让每个测试管理好自己的数据。这意味着每个测试都会创建它所需要的测试数据,在测试结束时从系统中删除它们,让测试环境处于干净的状态。


对于这个过程,对象母亲模式可以为我们提供很大帮助。它以工厂模式为基础,通过简单的方法调用为测试提供了可使用的预制对象。但它又不局限于工厂模式,因为创建的对象可以被自定义。此外,测试对象可以在测试期间被更新,而且——如果必要的话——在测试结束时从数据库中删除。


InfoQ:我们如何识别和消除代码坏气味?


Baumann:要识别代码坏气味,我们需要了解它们。因此,作为程序员(如果我们编写测试自动化代码,我们就是程序员),我们需要学习和研究它们。


对于某些代码坏气味,可以用“食谱”来消除它们。例如,面向对象原则“多态性”有助于消除“switch 语句”和“太多参数”坏气味。


原文链接

https://www.infoq.com/news/2023/03/programming-foundation-test/


相关阅读:

如何评估代码质量:反馈回路、文化、代码质量、技术债务、部署管道

如何用数据来提升系统质量

开发者如何看待分布式系统中的不确定性

2023-04-19 08:002627

评论

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

倒计时丨3天后,我们直播间见!

谷云科技RestCloud

零代码

线上JAVA应用平稳运行一段时间后出现JVM崩溃问题 | 京东云技术团队

京东科技开发者

Java 定时任务 JVM 企业号11月PK榜

Golang面试题从浅入深高频必刷「2023版」

王中阳Go

Go golang 面试题 大厂面经 最新面试题

安全好用的远程协同运维软件重点推荐-行云管家

行云管家

远程运维 运维软件 远程系统 远程协同 协同运维软件

解决Lightroom无法使用修改照片的问题

Rose

Lightroom Classic 2022 Mac破解软件 Lightroom无法使用 LR2024 Mac中文

Mac日程管理软件Fantastical 中文破解版 让日程管理更加便捷!

Rose

日程管理App Fantastical Mac中文版 Fantastical下载 Mac日历软件

如何为Affinity Publisher或Designer创建条形码?

Rose

Affinity Publisher 条形码设计

Mac窗口管理软件合集|告别混乱屏幕,一切井井有条

Rose

mac窗口管理软件 Mac破解软件 苹果电脑分屏软件 Mac软件下载站

扒一扒互联网Markdown的那些事儿

Java研究者

互联网 markdown 发展趋势

Eudic欧路词典 for Mac英语学习工具

展初云

Mac 欧路词典 英语学习软件

UUID意想不到的block

FunTester

什么是大模型?一文读懂大模型的基本概念

九章云极DataCanvas

用友全球司库十问(六)|新一代票据能力如何实现赋能企业票据管理?

用友BIP

全球司库 票据管理

架构实战营 - 模块四作业

王朝阳

架构实战营

ps2021一键换天空教程

Rose

ps2021破解版 一键换天空 ps2021下载 ps2021天空替换 Photoshop Mac破解版

图像处理软件Photoshop 2024 (ps) for Mac v25.1

展初云

Mac ps Mac软件 Photoshop 2024

如何使用 Loadgen 来简化 HTTP API 请求的集成测试

极限实验室

集成测试 loadgen 极限科技

微前端无界机制浅析 | 京东物流技术团队

京东科技开发者

前端 源码剖析 微前端 无界 企业号11月PK榜

助力工业数字化!TDengine 与恩菲 MIM+ 工业互联网平台实现兼容性互认

TDengine

tdengine 时序数据库

云工作流 CloudFlow 重磅发布,流程式开发让云上应用构建更简单

Serverless Devs

阿里云 Serverless 函数计算FC

endnote x9怎么和word关联?Word中用EndNote X9教程

Rose

Word 2021 许可证 endnote x9 文献写作管理软件

Paste for Mac剪切板管理工具

展初云

Mac Mac软件 剪切板

大家都在用的数据安全运维管理系统是哪家?有什么功能?

行云管家

数字化 数据安全 数据运维

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

京东科技开发者

性能优化 前端 前端性能 企业号11月PK榜 Qwik.js

专业终端SSH工具 SecureCRT注册码正式版

胖墩儿不胖y

Mac软件 终端SSH仿真工具 终端仿真器

不只是黑盒测试:测试工程师如何识别和消除代码坏气味?_软件工程_Ben Linders_InfoQ精选文章