【《重构 改善既有代码的设计》学习笔记4】构筑测试体系

本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理并且加上自己的浅显的思考总结!如果想要进行重构,首要前提是 拥有一个可靠的测试环境。1、 自测代码的价值完成一个功能:设计+开发+调试,认真分析,程序员最多花费的时间不是开发(编码),而是用来调试。调试可能花费无数个小时,甚至通宵达旦。修复错误是快速的,而找出错误却是恶梦一场。当修复好一个错误,总是会有另一个错误的出现。而引…

大家好,又见面了,我是全栈君。

本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理并且加上自己的浅显的思考总结!

如果想要进行重构,首要前提是 拥有一个可靠测试环境。

1、 自测代码的价值

完成一个功能:设计+开发+调试,认真分析,程序员最多花费的时间不是开发(编码),而是用来调试。调试可能花费无数个小时,甚至通宵达旦。

修复错误是快速的,而找出错误却是恶梦一场。当修复好一个错误,总是会有另一个错误的出现。而引入的错误可能要很久之后才能注意到它。【排查错误,定位错误花费的时间更多,并且在改bug的过程,又引入新的bug】

在做测试的时候,确保所有的测试都完全的自动化,让它们检查自己的测试结果。【做到这一点不容易,我目前所在的公司单元测试都不规范,更不要说完全自动化,后面还是多多学习,搞一套标准,推广起来】

正常的开发过程是,写好一个功能,就立即添加测试。 一套测试就是一个很强大的bug侦测器,能够大大缩减查找bug所需的时间。

推广自测或者要做起来,难度是很大的。 因为编写测试程序,意味着要写很多额外的代码。那就 要花费更多的时间,很多人可能觉得这没有提高编程开发速度,就不去做。或者因为需求进度问题,也省略不做。

【公司中的一些开发人员,根本也没有这方面的意识,因为没有强制的要求制度,甚至没有考虑过写自测代码】

2、JUnit测试框架

目前JUnit版本迭代都到5了,JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

JUnit5[简单了解]

JUnit Platform是在JVM上启动测试框架的基础。它还定义了TestEngine API,用于开发在平台上运行的测试框架。此外,该平台还提供了一个Console Launcher,用于从命令行启动平台,以及一个基于JUnit 4的Runner,用于在基于JUnit 4的环境中运行平台上的任何TestEngine。JUnit平台的一流支持也存在于流行的IDE中(如IntelliJ IDEA,Eclipse)

JUnit Jupiter是用于在JUnit 5中编写测试和扩展的新编程模型和扩展模型的组合.Jupiter子项目提供了一个TestEngine,用于在平台上运行基于Jupiter的测试。

JUnit Vintage提供了一个TestEngine,用于在平台上运行基于JUnit 3和JUnit 4的测试。

重构书中的示例都是在 JUnit很老的版本,很多用用法和目前新版已经完全不一样。

相信进行java开发的程序员们,一定都是用过Junit这个优秀的单元测试工具。这里也就不说具体的用法了。

单元测试和功能测试

单元测试的目的: 提高程序员的生产率。

至于上QA(质量保证)部门开心,那是附带效果。单元测试是高度局部化的东西,每个测试类都隶属于单一包。能够测试其他包的接口。

功能测试的目的:保证软件能够正常运作。

从客户角度保证质量,不关心程序员的生产力。由一个喜欢寻找bug的独立团队(测试团队)来开发。

【在公司单元测试可以没有,功能测试一定是有的。单元测试还是要程序自身提高意识和行动起来】

3、添加更多的测试

观察类该做的所有事情,然后针对任何一项功能的任何一种可能失败情况,进行测试。【学习的标准和榜样】

测试的要诀是: 测试你最担心出错的部分。

测试也要考虑可能错误的边界条件,把火力集中到那儿。

不要因为测试无法捕获所有bug就不写测试,因为测试的确可以捕捉到到大多数bug。

总结

构筑测试体系,这个强调多少次都不为过,我根据个人所待过的公司,发现 大家都是一直强调单元测试,但是真正开发功能,最后落到实地的单元测试代码少之又少。一个是需求进度问题,一个程序员自身的问题

如果你今天看到了我的这篇博文,我希望我们应该有这样一个意识,在开发完一个功能后,一定要想着些单元测试。写测试代码,能写出好的测试代码你一定会从中获益很多。

我会整理一套规范先在自己的项目组用起来,后续推到公司其他项目组中,后续测试的东西也会分享出来。一起学习,一起成长。


如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到,谢谢!

如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客和关注的个人微信公众号!

愿你我在人生的路上能都变成最好的自己,能够成为一个独挡一面的人。

【《重构 改善既有代码的设计》学习笔记4】构筑测试体系

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页 : http://blog.csdn.net/u010648555

© 每天都在变得更好的阿飞

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121051.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mysql删除外键约束

    mysql删除外键约束1.查看数据库表创建的sql语句showcreatetablevip2.查看外键的约束名CREATETABLE`vip`(`id`int(11)NOTNULLAUTO_INCREMENT,`address`varchar(255)DEFAULTNULL,`code`varchar(255)DEFAULTNULL,

  • docker下载安装教程_安卓安装docker

    docker下载安装教程_安卓安装docker前言Docker提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D

  • LVS实现负载均衡「建议收藏」

    LVS实现负载均衡「建议收藏」一、LVS1、LVS是什么?LVS(LinuxVirtualServer)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分…

  • 华为私有云的搭建方案_华为私有云解决方案

    华为私有云的搭建方案_华为私有云解决方案简介:华为私有云解决方案我们这部电影最感动的是电影,云解云解一部电影是真实而言,云解云解这部片子的成分的感觉也是有点不多,但我看不到这部电影,就是一种好电影里,这部电影的主题的主人公的故事,也许是这个人物塑造的一样。但是这部电影的原型是真实,这部电影有现实主义,是一个人物的故事也让人感受到了一种感情的转变。我不是药神,他们也不会想到一个人的生活,这部作品,也许这样的影片的最后我觉得这。我们就要吃饭…

  • 软件激活成功教程入门_软件激活成功教程修改内容

    软件激活成功教程入门_软件激活成功教程修改内容大家好我是长生第一次开通博客主要是为了记录我在激活成功教程学习中遇到的问题以及解决办法 激活成功教程初级入门第一步有壳查壳无壳直接载入OD 第二步 先打开OD 右键搜索ASCII 第三部crtl+f 搜索 注册失败关键提示字符第四步       返回OD主界面 在提示注册失败字符上方 寻找关键je 与关键jne,一般大跳即为关键跳,这个时候右键nop填充,在保存文件 这个时候…

  • Oracle11g安装教程「建议收藏」

    Oracle11g安装教程「建议收藏」oracleScott

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号