写点什么

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

  • 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:002619

评论

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

我写过的关于成长/面试/职场进阶的文章

王知无

架构实战营 模块八作业

Dylan

架构实战营

字节跳动Go 网络库netpoll源码解析

xumc

字节跳动 Go 语言

架构实战营 模块八作业

夏日

架构实战营

架构训练营模块八作业

Geek_e0c25c

架构训练营

架构训练营模块8作业

Neil43

架构训练营

Rust从0到1-并发-线程

rust 线程 并发 Thread Concurrency

如何理解领域驱动设计

escray

学习 极客时间 7月日更 如何落地业务建模

如何写好一份技术简历

慕枫技术笔记

面试 后端 简历

模块8作业 消息队列MySQL数据结构

TH

架构实战营

模块8学习总结

TH

架构实战营

Linux之tar命令

入门小站

Linux

模块八 作业

CR

在线标准程序员计算器

入门小站

工具

深入学习WebSockets概念和实践

devpoint

socket websocket 7月日更

悟了!树,二叉树,哈夫曼树...

Ayue、

数据结构

从HTTP到HTTPS

喵叔

7月日更

作业表设计

大肚皮狒狒

模块八:课后作业

菲尼克斯

架构实战营

微信架构图

Geek_36d3e5

【Flutter 专题】86 初识状态管理 Bloc (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

工业互联网赋能 浪潮云洲助力区域品牌“走出去”

工业互联网

如何打造高效好用的终端?拿来吧你!

童欧巴

大前端 iterm2 Oh My Zsh

【LeetCode】减小和重新排列数组后的最大元素Java题解

Albert

算法 LeetCode 7月日更

2.1如何设计可拓展的架构

Lemon

架构

数据治理方法论和实践小百科全书

王知无

一脚踢你进Go语言大门!入门者必看,万字长文,建议收藏!

微客鸟窝

Go 语言

What's JVM-垃圾收集器与内存分配策略

CodeWithBuff

Java JVM 垃圾回收机制

Python OpenCV 霍夫(Hough Transform)直线变换检测应用

梦想橡皮擦

7月日更

架构之:REST和RESTful

程序那些事

微服务 软件架构 程序那些事

我们在学习Spark的时候,到底在学习什么?

王知无

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