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

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

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

评论

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

Keycloak 13 自定义用户身份认证流程(User Storage SPI)

Zhang

MySQL spi keycloak 13.0.0 user storage spi

打破思维定式(十一)

Changing Lin

2021金三银四面试经历:阿里七面(已拿offer),面试经历+真题分享

Java 编程 程序员 架构 面试

爱奇艺世界大会|开幕式速览:智能制作助推影视工业化,匠心构筑行业健康生态

爱奇艺技术产品团队

用ABAP 生成二维码 QR Code

Jerry Wang

二维码 SAP abap

CRM Transaction处理中的权限控制

Jerry Wang

CRM SAP abap

腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享

Java架构师迁哥

新融合,新跳板:智能云网如何让企业数字化转型,起步即领先?

脑极体

数据挖掘从入门到放弃(四):手撕(绘)关联规则挖掘算法

数据社

机器学习 5月日更

如何给产品定价

石云升

创业 产品 职场经验 5月日更

Flink消费Kafka

大数据技术指南

大数据 flink 5月日更

Netty常用解码器学习笔记

风翱

Netty 5月日更

进大厂的iOS程序员,原来是这样“跳槽”的!

iOS猿_员

被解救的代码 - 代码即服务时代来了!

阿里巴巴云原生

容器 微服务 开发者 云原生 开发工具

业界率先支持 MCP-OVER-XDS 协议,Nacos 2.0.1 + 1.4.2 Release 正式发布

阿里巴巴云原生

容器 微服务 云原生 k8s 中间件

爱奇艺世界大会|刘文峰:科技创新如何为用户和艺术家服务?

爱奇艺技术产品团队

终于来了!这份阿里P9纯手写的Java并发核心手册,把我没学会的高扩展、高性能、高可用全部讲清楚了

Java 程序员 架构 面试

中国区块链第一村的价值裂变

CECBC

从基础到实战一应俱全,这份全网首发的Kafka技术手册,超详细!

Java架构师迁哥

2021最热门的20个数据库学习总结,你会用哪几个?

北游学Java

Java MySQL 数据库 后端

4年Java开发经验,经常被问到高并发、性能调优方面的问题,该怎么办?

Java架构师迁哥

ElasticSearch架构剖析

五分钟学大数据

大数据 elasticsearch 5月日更

基于Agora Web SDK自定义直播画面

dajyaretakuya

WebRTC 声网 Agora 数字合成

图说丨一图看懂浪潮云“1231”业务战略

浪潮云

“碳中和”目标下的绿色金融探索

CECBC

金融

5分钟速读之Rust权威指南(三)

wzx

rust

五岳核心版上线!这份阿里开发手册核心版又将被多少人疯狂转载?

Java 编程 程序员 架构 面试

关于打的 umd 包在使用时,报 require is not defined 错误的问题出处

blueju

有无社保缴纳识别接口

ALone

架构实战营模块四总结

竹林七贤

“技术+应用”驱动金融科技创新融合

CECBC

金融

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