来QCon北京,现场感受“纯血鸿蒙”的魅力!席位有限,抓紧报名 了解详情
写点什么

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

评论

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

什么是死信队列

Java旅途

RabbitMQ

22种超全用户触点采集,易观方舟SDK又更新了

易观大数据

Docker的Image

陈磊@Criss

如何有效防止sql注入

Java旅途

Docker的Image

陈磊@Criss

标新立异的日志归档:用更少的内存归档大规模测试日志

陈磊@Criss

Grafana和ES打造的Nginx的仪表盘

陈磊@Criss

高中生写LOL外挂1年狂赚500万,落网前刚买下120万保时捷...

程序员生活志

编程 程序员 外挂

PIP的报错Could not fetch URL https://pypi.org/

陈磊@Criss

Git删除仓库中的文件和文件夹

陈磊@Criss

第十周.总结

刘璐

作业二

Kiroro

弹性计算的内部概念:弹性扩张、弹性收缩、弹性自愈

陈磊@Criss

pipreqs:生成python项目的requirements

陈磊@Criss

微信小程序的自动化测试框架

陈磊@Criss

Nginx的容器部署

陈磊@Criss

jmeter 执行python脚本

陈磊@Criss

该了解一波了!零基础入门Nginx

程序员的时光

nginx Docker

最受欢迎的男友职业排行榜Top10

程序员生活志

程序员

原创 | 使用JPA实现DDD持久化-R:数据的世界

编程道与术

Java hibernate DDD JDBC jpa

Clover:解决Java8和Cobertura的问题以及解决方法

陈磊@Criss

欲速也可达:Battle接口测试训练系统的1分钟快速说明

陈磊@Criss

python判断文件和文件夹是否存在、创建文件夹

陈磊@Criss

Docker 容器连接

陈磊@Criss

看DLI服务4核心如何提升云服务自动化运维

华为云开发者联盟

Serverless 运维 运维自动化 华为云 DLI

作业一

Kiroro

架构师培训第10周练习

小蚂蚁

DockerFile 详解

陈磊@Criss

第十周.命题作业

刘璐

Web前端性能优化,应该怎么做?

华为云开发者联盟

运维 大前端 HTTP js

企业微信群消息机器人发送开源项目

陈磊@Criss

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