如何激励同事编写单元测试?

简介:

从管理人员到开发者,每个人都在说单元测试,但是却很少有人执行。有关单元测试的好处相信大家也能例举出一二,但很多时候,开发者面对自己的项目代码却无从下手。

  Lurkerbelow在公司里是唯一执行单元测试的一名开发者,他深知单元测试带来的好处,也积极提倡单元测试。他甚至与公司的管理层人员、开发者都讨论过单元测试,但却无人对此感兴趣。 为了与开发人员形成一条战线,Lurkerbelow甚至“被迫“提交了代码审查(Gerrit)和持续集成开发(Jenkins)。

  无奈之下,Lurkerbelow在 Stack Exchange发出上“求救”,抛出《“如何激励同事进行单元测试?》的话题,引发了众多开发者的关注,纷纷献策。

  对此,我们从中摘译了几个较为重要的观点与大家分享,希望能引起大家的共鸣。

  实质的文档或许有帮助

  jimmy_keen:我注意到几乎很少有公司在谈论TDD。人们更乐意看到最终结果。人人都说“编写单元测试将缩短开发时间”,这是似乎是真的,但这并不足以让人们相信。

  我与你处在相同的位置(但不像你这么糟糕),开发者在代码问题上都能够自行解决(这里的代码是指单元测试)。某个项目停止更新时,本地的调查自然就会更进,进而找出问题所在。

  然后,当我们进行单元测试时,如果测试被通过了,大多数问题会出现在最新的、未测试的代码中。如果不是,测试通常能够发现问题(至少找出了正确的方向)。我们修复Bug,再进行测试。

  一句话,如果发生类似这样的情况,将会有超过2名开发者变成可TDD 测试爱好者(我们希望更多人参与)。

  建议,你可以选择TDDkata将使用测试作为首选方法。

  根据任务的复杂程度,非测试方法进程通常较为缓慢,尤其是当增量编码器需求发生更改时。

  ● Roy's string calculator

  ● Bank OCR

  找出问题所在,“对症下药”

  HLGEM:首先,要弄清楚为什么他们不喜欢写单元测试。 通常严格的时间进程表是导致其最大的原因。

  其次,现有的大型未测试的代码基,编写单元测试工作量巨大。因此,开发者本能认为:“这太麻烦了,我得跳过去。”

  另一个原因可能是,他们骨子里认为测试是个好方法,但他们在如何写测试上没有信心,尤其是他们从未接触过。究其根本原因,是开发者根本不会写单元测试!

还有一大原因是,他们没有看到这项额外的工作所带来的好处(利润)故放弃,即便是他们想提供这样的服务。

  那么,对于以上这些情况该如何处理呢?

  Reason 1:向开发者展示案例,如何节省开发时间。

  Reason 2:告诉开发者在一年内能编写多少测试,代码基覆盖了多少比例。

  算算这一年里他们写了多少测试,明年他们依然愿意这么做。一旦他们发觉每天都会进步一点点,思想上就会潜移默化了,从而产生质的变化。

  如果可以的话,把系统数据拉出来,让他们知道在未经测试的代码中有多少重复Bug?进行单元测试的代码中又有多少重复bug?

  Reason 3:培训,让开发者在培训班中编写测试。

  Reason 4:这是问题的关键所在,首先,选择一个痛点,比如在某个项目中这些Bug被多次返回。在上述过程中,向管理部门提出建议,如果他们在这个项目中进行单元测试,那就不会出现不想见而又偏又见到的代码。

  当然,作为开发人员,我们首先要学会自我管理。

  写好单元测试,学会重构很重要

  ElYusubov:我想先说说TDD的好处。

  从正常人类的角度思考,开发者都是以利益为主,因为他们不想进行工作意外的事情。单元测试意味着更少的工作;意味着与朋友相处的时间更多;意味着有更多的乐趣,因为你无须每个夜晚编码工作到11点;也就意味着可以舒心的度过假期。

  想要写好单元测试,学会重构是很重要的。这里补充几点:

  1、编写测试代码建立基本的防护网;

  2、在单元测试和功能测试之间要有取舍,如果单元测试实施成本很高,可以先加功能测试;

  3、通过增加中间层来打破依赖,不是为了去掉依赖,而是为了后续的修改以及测试的便利;

  4、将第一步中编写的功能测试换成单元测试。

  TDD最大的好处之一是,你可以重构程序获得更好的设计或者只需改变某个项目的名称……只要这种设计没有破坏测试,前提是你有100%的信心保证你的改变没有破坏任何东西。

  TDD为遗留代码创建单元测试,这将出现重构。从长远的来说,这将有有助于改善你的代码基础知识,了解其优缺点以及代码中现有的的硬编码业务模块,为你提供一个良好的开端,为提高产品质量向前迈进。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
测试技术 开发者
【软件测试基础理论】看到同事变量用abc命名,我上去就是一jue (非功能-可维护性)
【软件测试基础理论】看到同事变量用abc命名,我上去就是一jue (非功能-可维护性)
|
20天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
72 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
71 3
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
86 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
285 7
Jmeter实现WebSocket协议的接口测试方法
|
4月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
294 3
快速上手|HTTP 接口功能自动化测试
|
4月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
62 5
|
3月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
50 0
|
5月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
6月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
240 5
Postman 接口测试配置 Pre-request Script