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

从忽略到重视,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:335340

评论

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

读:《Google软件工程》 之 “软件工程”

术子米德

软件工程

幸福之道,就在其中

少油少糖八分饱

生活 读书感悟 幸福 阅读笔记 被讨厌的勇气

高效数据传输:轻松上手将Kafka实时数据接入CnosDB

CnosDB

kafka CnosDB Telegraf

C++使用new来初始化指向类的指针

智趣匠

Nginx 安装与部署

timerring

nginx

Jump Desktop 8 for Mac(远程桌面连接软件) 8.9.23中文版

mac

苹果mac Windows软件 Jump Desktop 远程桌面连接软件

浅谈中小企业为何做不好自媒体营销

石头IT视角

DxO PhotoLab for mac(raw图像后期处理工具) 5.13.1.95中文版

mac

raw图片处理软件 苹果mac Windows软件 DxO PhotoLab 5

Boxy SVG for Mac(矢量图编辑器) 4.5.1中文版

mac

苹果mac Windows软件 Boxy SVG 矢量图形编辑软件

开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验

汀丶人工智能

人工智能 自然语言处理 nlp 对话机器人 智能对话

ProsperEx 的野望:借势 RWA 浪潮,构建全新的链上衍生品体系

股市老人

Docker容器相关命令指南。

百度搜索:蓝易云

Docker 云计算 Linux 运维 命令

微信业务架构图

kylexy_0817

#架构实战营

全球劳动力革命,Papaya Global 打破薪资界限

CnosDB

Papaya Global 劳动力革命

代码随想录Day43 - 动态规划(五)

jjn0703

千帆大模型平台的海量 Prompt 模板库,带来了什么?

梦想橡皮擦

千帆大模型平台

Programming abstractions in C阅读笔记:p107-p110

codists

c

对话文本数据是培养大模型的智能与交流之源

来自四九城儿

前端新手必读:IndexedDB全面指北

星辰编程理财

数据库 前端 indexedDB 浏览器存储

基于smardaten无代码开发智能巡检系统,让无人机飞得更准

海拥(haiyong.site)

强化服务韧性:ChaosBlade磁盘故障模拟的原理与应用

柠檬汁Code(binbin0325)

混沌工程 系统调用 磁盘故障 Chaos 故障模拟

读:《Google软件工程》 之 “度量工程”

术子米德

软件工程

16. 练习:万年历

茶桁

Python 练习

工赋开发者社区 | 主数据管理体系建设与问题分析

工赋开发者社区

企业数字化转型的四个“有为”与六个“数字化

工赋开发者社区

代码随想录Day42 - 动态规划(四)

jjn0703

一键式文本纠错工具,整合了BERT、ERNIE等多种模型,让您立即享受纠错的便利和效果

汀丶人工智能

人工智能 自然语言处理 文本纠错

对话文本数据的珍贵贡献:训练大模型赋予智能与情感理解

来自四九城儿

linux系统服务器,nginx日志切割保存教程。

百度搜索:蓝易云

nginx 云计算 Linux 运维 logrotate

SpringBoot3集成Quartz

Java 架构 springboot quartz SpringBoot3

文心一言 VS 讯飞星火 VS chatgpt (75)-- 算法导论7.2 4题

福大大架构师每日一题

ChatGPT 福大大架构师每日一题

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