自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (3)
  • 收藏
  • 关注

原创 测试守护重构

作为程序员不得不接受的现实是,大多数系统在接手时就已经是遗留系统了。我在最近几年都没有参与新系统开发,不得不接手遗留系统的改造。改造遗留系统的成本实际上比写新的软件要大很多,毕竟就像给高速上飞驰的汽车换轮子。不仅不能引入新的错误,原来的错误在某种程度上也需要“将错就错”,否则对现有用户、现有数据而言顺手修复了一个 bug 反而会带来额外的问题。要想改造遗留系统不是这么简单地事情,需要考虑的事情很多,而测试就是其中很重要的部分。没有单元测试、E2E 测试的系统改造起来难度非常大,所以这也是我热衷于在每个项

2020-11-11 11:56:31 218 2

原创 测试驱动设计(TDD)

理解 TDD什么是 TDD?TDD,是测试驱动开发(Test-Driven Design)的英文缩写,就一句话解释来说,就是通过编写测试来驱动完成业务代码的完成。TDD 是 XP(Extreme Programming)的核心实践,它的主要推动者是 Kent Beck。TDD 写代码是什么样子的?一般的软件开发过程获取需求 做简单的设计 在大脑中规划需要那几个类,大概用什么设计模式 开始编写代码 发现有些类设计多余了,删除了,有些类不满足,增加设计 需求好像不清晰,和产品经理确

2020-11-11 11:54:16 772

原创 测试守护架构

有过大量经验的开发者都知道的一个事实是,软件项目和架构极其容易腐化。在没有很好地管控下,无论采用 MVC 三层架构还是 DDD 的四层架构,代码的结构会在几个月内变得混乱不堪。我曾经接手过一个项目,它的依赖关系非常混乱。比如之前的开发者常常将 DTO 中的 Request 等对象用于数据库、Redis 存储,为了偷懒,明显让架构的下层依赖了上层结构。我花费了大量的时间和精力进行了重构,并在每日 Codereview 强调包结构的重要性。另外,随着不熟悉项目的新人加入,也会造成一些代码的随意放置。实际

2020-11-11 11:53:00 218 1

原创 微基准性能测试

当我们在谈论某个 Java 语法特性的性能,或者一段业务代码的性能时,往往是凭经验或者写一个简单的循环来测试其是效果。实际上 JVM 的开发者们,已经有一个非常好的工具来做方法层面的基准测试(相对于 ab 测试和 jmeter)。JMH 是一个用于构建、运行和分析 Java 方法运行性能工具,可以做到 nano/micro/mili/macro 时间粒度。JMH 不仅可以分析 Java 语言,基于 JVM 的语言都可以使用。OpenJdk 官方运行 JMH 测试推的方法是使用 Maven 构建一个单

2020-11-11 11:51:31 408

原创 准备测试数据

在我过去参与的项目中,准备测试数据的方法各种各样。在给一些大型企业做咨询时,建议他们的开发团队使用单元测试或者 API 测试来守护代码。他们在编写测试的过程中遇到的第一个困难就是测试数据的准备。测试数据的准备往往会遇到几个问题:测试数据库表结构的更新和一致性,怎么和业务数据库保持同步? 测试间数据怎么隔离? 通过什么方式准备数据?这几个问题都没有唯一答案,下面就聊一下我在项目中采用过的方案,以及推荐比较好的方式。数据 DDL 更新如果是第一次编写单元测试我们可以将业务数据库中的数据库结

2020-11-11 11:51:00 292

原创 为 Spring Boot 项目编写测试

Java 开发中目前最流行的技术栈就是 Spring Boot 了,大部分讲解单元测试或者 TDD 的书籍围绕 Spring Boot 的讲解比较少,但是 Spring Boot 测试相关的内容比较多,也比较实用。这部分就是围绕 Spring、Spring Boot 来编写单元测试。这部分的代码位于:https://github.com/linksgo2011/java-unit-testing-book/tree/master/spring我当前使用的 Spring Boot 版本是 2.1.7.

2020-11-11 11:50:10 141

原创 增强测试: 静态、私有方法处理

mockito 已经很强大,能帮我们完成大部分 mock 工作,但是对于一些特殊方法来说,还是无能为力。例如,当我们使用系统获取当前时间戳的时候,可能会调用 System.currentTimeMillis()。对于这个方法来说,我们无法 mock。往往就会遇到一个有趣的现象,一些测试过了一段时间就通不过了,项目中可能有对时间进行检查的逻辑。我们有一个项目是做财务报销单,当费用产生后的几个月后报销就会失败,我们的模拟数据是一个固定的时间,因此几个月后重新运行这个项目的单元测试就不通过了。另外,项

2020-11-11 11:48:17 902

原创 测试替身: Mock、Spy、Stub

Test Double 简介对于一个应用程序或者一个系统而言,很难给你一个纯粹的类进行单元测试。对象之间的依赖往往交织到一起,需要拆成各个单元才能逐个击破,也是单元测试的目的。需要将这些交织到一起的对象拆开,需要一些工具,例如模拟一些数据、替换一些具有某些特定行为的类等。 网站 xunitpatterns.com 把这些工具称为 Test Double,翻译过来就是”测试替身“。Martin Fowler 为了让这些概念更容易理解,在他的网站上重新更加具体的定义了它们:Dummy被用来仅仅.

2020-11-11 11:47:46 861

原创 单元测试基础

什么是单元测试?在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 ——维基百科什么是一个单元?在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。因此“单元”是一个相对概念,因此对方法、类、模块、应用都可以被当作单元测试。简单来说,单元测试的初衷是对应用的一小部分及时的测试,而非等到所有的代码编写完成启动整个应

2020-11-11 11:46:17 375

C++域名查询工具源码(http + json 解析)

C++域名查询工具源码(http + json 解析)单线程界面不阻塞

2015-07-29

样式表滤镜中文手册

样式表滤镜中文手册,使用css滤镜可以进一步美化你已经做好的网站、

2011-11-24

计算机二级vf历年试卷

四川的计算机考试难度要比全国的大,试题的结构也不是很相同,全国的资料意义不大,计算机二级vf历年试卷,收集了历年的vf笔试试卷和答案.对四川的朋友希望有帮助.

2011-10-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除