10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

评论

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

智能手持测温枪接入阿里云IoT物联网平台实践——实践类

阿里云AIoT

小程序 监控 物联网 开发工具 消息中间件

今天 4 点,龙蜥自动化运维平台SysOM 2.0的诊断中心功能介绍 | 第 66-68 期

OpenAnolis小助手

开源 系统运维 龙蜥大讲堂 SysOM 诊断

ModStartBlog v6.8.0 博客置顶功能,界面样式优化

ModStart

企业级应用建设之道:高代码+低代码开发

力软低代码开发平台

UEditorPlus v2.9.0 文档仓库开源,修复若干问题

ModStart

热点面试题:聊聊对 this 的理解?

Immerse

JavaScript 手写代码 this 前端面试题 #热点问题

AI绘图绘画NFT数藏系统开发(成熟案例)

I8O28578624

Mysql都有那些最需要掌握的原理?

Java MySQL 数据库

百度工程师漫谈视频理解

百度Geek说

人工智能 视频理解 企业号 2 月 PK 榜 视频动作分析

SQL 层功能改进 - lookupJoin 的优化

KaiwuDB

SQL优化 KaiwuDB lookupJoin

MySQL性能指标TPS\QPS\IOPS如何压测?

Java MySQL 性能压测

5大特性,带你认识化繁为简的华为云CodeArts Deploy

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

又火了!GitHub标星百万的并发编程手册(彩图版)竟是从阿里流出

Java 并发编程 高并发

企业如何落地DevOps(上)

老张

DevOps 软件工程

IoT物联网平台:网关与子设备开发实战——实践类

阿里云AIoT

Java 物联网 开发工具

面试半年,总结了1000道2023年Java架构师岗面试题

小小怪下士

Java 程序员 面试 后端

云原生 AI 的资源调度和 AI 工作流引擎设计分享

百度Geek说

人工智能 云原生 企业号 2 月 PK 榜

详解数仓的网络调度与隔离管控能力

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

声网

flutter RTC 直播技术 RTE ChatGPT

强将带新兵?试试少代码!

世开 Coding

开发框架 快速开发平台 Jmix

Java微基准测试神器JMH初探

FunTester

esp8266 读取 modbus 类型数据在 Grafana 展示

jupiter

IoT esp8266 #Grafana Arduino ESP32-C

Zebec被评选为BNB Chain 2023年40佳DAPP

西柚子

东数西算下,液冷数据中心为何日趋重要?

GPU算力

数据中心 高性能计算 东数西算 液冷散热

智能AI量化现货合约跟单交易机器人软件开发

开发微hkkf5566

设备用私有CA签发的X.509证书接入IoT物联网平台——实践类

阿里云AIoT

小程序 网络安全 物联网 智能硬件 数据格式

3M互助盘dapp系统开发源码部署

开发微hkkf5566

如何在IoT物联网平台注册私有CA证书,来实现X.509方式设备身份认证?——实践类

阿里云AIoT

小程序 算法 物联网 智能硬件

我是学生,想要参与 OpenCloudOS,该怎么做?

OpenCloudOS

Linux

企业研发治理转型利器:华为云发布流水线服务CodeArts Pipeline

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟 华为云CodeArts

基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

阿里云AIoT

云计算 网络协议 物联网 数据采集 定位技术

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