AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

评论

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

Java ArrayList 与 LinkedList

码语者

Java

1024程序员:算法&仓鼠&创业

博文视点Broadview

推荐7款超实用的推特推特下载器,包括电脑和手机上使用(小伙伴们快快收藏起来)

So...

twitter 推特视频下载 推特

云图说 | 分布式缓存服务DCS—站在开源Redis前辈的肩膀上,扬帆起航

华为云开发者联盟

redis 缓存 分布式 华为云 DCS

美团的动态线程池,不依赖中间件可以实现么?

马丁玩编程

Spring Boot ThreadPoolExecutor

微信业务架构图 & 学生管理系统架构设计

Steven

架构实战营

Java面试过了京东五面之后,发现掌握了这些技术也没有那么难

Java 编程 程序员 面试

netty系列之:netty对http2消息的封装

程序那些事

Java Netty 程序那些事 http2

谐云边缘计算大规模落地实践,带你见证边缘的力量!

谐云

云计算 边缘计算

明道云在建筑工程行业的应用场景

明道云

Python代码阅读(第44篇):寻找符合条件的元素的位置

Felix

Python 编程 Code Programing 阅读代码

架构设计六 如何设计业务的微服务架构

nydia

微服务 架构设计

零信任能力成熟度模型白皮书发布!内附下载资源

华为云开发者联盟

安全 隐私保护 华为云 网络架构 零信任

模块一作业

doublechun

「架构实战营」

微信业务架构图和学生管理系统架构

Geek_cb2b43

华为首次采用数字人全程实时手语直播,并宣布全面开放手语服务能力

叶落便知秋

实现服务器和客户端数据交互,Java Socket有妙招

华为云开发者联盟

socket 进程 服务器 客户端 java

2021年秋季明道云伙伴大会,邀您参与!

明道云

1024程序员节的正确打开方式

云智慧AIOps社区

程序员 开源技术 1024我在现场 飞鱼 云智慧

按照网络规模来分,服务器分为哪几类?

行云管家

云计算 网络 服务器 IT运维

你分库分表的姿势对么?——详谈水平分库分表

vivo互联网技术

MySQL 分库分表 hash Range 数据库表

Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法

杨清强

Vue进阶(幺伍零):巧用 key 提升页面渲染性能及触发生命周期函数

No Silver Bullet

Vue 渲染性能 10月月更

第 23 章 -《Linux 一学就会》- expect - 正则表达式-sed-cut的使用

学神来啦

Linux Shell linux运维 linux云计算 linux一学就会

顶会VLDB'22论文解读:多元时序预测算法METRO

华为云开发者联盟

数据库 华为云 多元时序预测算法 VLDB'22 华为云数据库创新Lab

阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

Java 编程 程序员 面试

华为在HDC2021发布全新HMS Core 6 宣布跨OS能力开放

叶落便知秋

农业CRM系统帮助建设新农村和休闲农业

低代码小观

系统 CRM 农业 管理工具 农业管理

爱奇艺联合WSDM发起用户留存预测挑战赛

爱奇艺技术产品团队

新征程、新时势、新聚变——2021一亩地儿合作伙伴大会在京成功举办

徐州等保测评公司有哪些?联系电话是多少?在哪里?

行云管家

网络安全 等级保护 过等保 徐州

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