写点什么

从忽略到重视,Stack Overflow 改变了对单元测试的态度

  • 2022-07-09
  • 本文字数:948 字

    阅读完需:约 3 分钟

从忽略到重视,Stack Overflow改变了对单元测试的态度

在很长一段时间里,Stack Overflow 都忽略了单元测试,但现在 Stack Overflow 正在努力改变这种状况。

 

在早期的时候,Stack Overflow 是一个以快速精益运营为主的网站,像所有初创公司一样,优先考虑对企业最重要的质量属性,单元测试这样的事情被搁置到一旁。如果存在 Bug,主要靠用户在使用中发现并报告给他们,Stack Overflow 开发人员再进行修复或解决。 

 

Stack Overflow 认为单元测试是一种自动化测试,测试最小的代码片段以确保其正常运行,不会与进程外的依赖项对话。企业最佳实践是应该有大量的单元测试,中等数量的集成测试,并且只有少数端到端测试。 但以前 Stack Overflow 几乎没有单元测试, 虽然 Stack Overflow 有集成测试套件,但测试基础设施尤其是单元测试,远远落后于产品的成熟度。 

 

几年前,Stack Overflow 为 Teams Enterprise 推出了付费产品,企业用户并不愿意在生产时发现并报告错误了。而且在未来规划中,Stack Overflow 需要一个弹性代码库,在必要时重构代码,测试代码是让开发者创建干净代码的基础,而且 Stack Overflow 未来还想强制执行代码“clean beach rule”来保持代码的干净整洁。另外,编写良好的测试可作为一种文档形式,新加入的成员也可以通读测试并准确了解相关代码在做什么。所以他们不得不改变策略,对单元测试予以重视。

 

Stack Overflow 开始完善软件开发流程,但也并没有试图突然对已经部署在生产中的每一段代码进行测试覆盖,毕竟之前大部分代码都经过了开发者社区的实战测试。 

 

Stack Overflow 针对未来发展规划,在数据库层面提供了一种方法来指示测试何时提取模拟数据。因为使用 Dapper 和.NET 中的实体框架来管理数据库连接,因此 Stack Overflow 创建了一个扩展接口 DbContext,以便可以将模拟数据视为数据库连接。 另外还引入了一个 builder 而不是 constructor,为测试创建模拟站点数据。并且在前端实现了一个Jest来测试代码,并将它引入了所有的前端代码中。最后,他们还在 Stack Overflow for Teams 实例中设置了一个测试手册,详细介绍了如何编写良好的单元和集成测试。

 

Stack Overflow 表示编写一个好的单元测试并不是那么难,这些改变也意味着他们的代码质量变得越来越重要。

 

了解更多:

https://stackoverflow.blog/2022/07/04/how-stack-overflow-is-leveling-up-its-unit-testing-game/

 

2022-07-09 16:335364

评论

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

深入Spring Boot :web.xml去哪了

会踢球的程序源

Java Spring Boot

押题率90%!2023Java岗面试99题(含答案):JVM+Spring+MySQL+线程池+锁

程序知音

Java 后端 java面试 Java进阶 Java面试题

软件测试/测试开发丨接口测试APIObject 模式、原则与应用

测试人

软件测试 自动化测试 接口测试 测试开发

建设司库管理体系,数智化转型打破数据壁垒

智达方通

全球司库 司库体系建设 司库管理体系 智达方通

互联网工程师Java面试八股文及答案整理(2023最新版)

会踢球的程序源

Java springboot java面试

【七千字】教你如何用MySQL分析查询语句Explain

会踢球的程序源

Java MySQL

TIME_WAIT累积与端口耗尽

阿泽🧸

TIME_WAIT 三周年连更

软件测试/测试开发丨搞定多环境下的接口测试

测试人

软件测试 自动化测试 接口测试 测试开发

推进数字化转型进程,AntDB数据库协同神州云动共促新发展

亚信AntDB数据库

AntDB AntDB数据库 企业号 4 月 PK 榜

精选AI工具合集,效率神器!不止ChatGPT

Finovy Cloud

人工智能 AI

TitanIDE 新版本来袭,全新“效能看板”上线

行云创新

ide

为什么要使用CDN?CDN有什么优势?

海拥(haiyong.site)

三周年连更

小红书2024届实习生招聘一直在等着你!

小红书技术REDtech

招聘 实习 小红书

开源正当时,共赢新未来 OpenHarmony开发者大会成功召开

科技汇

OneFlow源码解析:Eager模式下Tensor的存储管理

OneFlow

OSPFv3与OSPFv2的对比

穿过生命散发芬芳

三周年连更 OSPFv3

《中国企业软件研发管理白皮书》发布会倒计时1天|精彩抢先看

万事ONES

支持多种数据库管理系统:Valentina Studio Pro Mac激活版

真大的脸盆

软件 Mac 数据库管理 管理数据库

小红书广告智能创意能力构建过程详解

小红书技术REDtech

人工智能 广告 小红书

阿里内部 SpringCloud Alibaba(全彩版)开源,P8 大牛纯手打造

架构师之道

Java 微服务

【安全运维】小微企业的安全运维工具用哪款好?

行云管家

运维 安全运维

CANN开发实践:4个DVPP内存问题的典型案例解读

华为云开发者联盟

人工智能 华为云 CANN 华为云开发者联盟 企业号 4 月 PK 榜

10分钟带你徒手做个Java线程池

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

OpenHarmony 3.2 Release版本到来,全面提升复杂带屏设备体验

Geek_2d6073

如何实现多存储文件传输,镭速提供多存储文件传输解决方案

镭速

如何一招搞定PCB阻焊过孔问题?

华秋PCB

工具 电路 阻抗 PCB PCB设计

软件测试/测试开发丨流程封装与基于加密接口的测试用例设计

测试人

软件测试 自动化测试 接口测试 测试开发 测试用例

当GPT-4化身主考官:与ChatGPT处于同水平的有这些

Openlab_cosmoplat

OpenHarmony开发者大会召开 携手共建使能千行百业的数字底座

Geek_2d6073

LED显示屏如何做到节能环保?

Dylan

经济 设备 LED显示屏

2023JAVA架构师面试130题含答案:JVM+spring+分布式+并发编程》...

程序知音

Java java面试 后端开发 java架构 Java面试题

从忽略到重视,Stack Overflow改变了对单元测试的态度_架构_Tina_InfoQ精选文章