【《重构 改善既有代码的设计》学习笔记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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • H264解码器原理之一

    H264解码器原理之一H264的层次结构包括VCL(视频编码层)与NAL(网络提取层),具体的语法结构,在之前的文章已经提到过,这里就不再赘述了。NAL主要是把VCL的内容进行封装,帮助更好的适合复杂的网络环境。在解码端,NAL解码器又复杂拆分,进行图像重构建,如下图所示解码流程图。大致的解码流程为,解码器接收到压缩的码流,经过熵解码,再经过反量化,再反变换,得到残差数据,当解码器获得解码的头信息后构建一个预测块PR…

    2022年6月18日
    26
  • Microsoft Visual Studio 2012常用快捷键

    注释:Ctrl+K+C反注释:Ctrl+K+U生成解决方案:CTRL+SHIFT+B生成编译:CTRL+F7打开文件:CTRL+O打开项目:CTRL+SHIFT+O显示类视图窗口:CTR

    2021年12月25日
    54
  • layui表格自适应高度_css布局左侧固定右侧自适应

    layui表格自适应高度_css布局左侧固定右侧自适应//默认上下15px的边距高度,可根据需要修改functionlayuiDialogFitScreen(){varlayui_title_height=$(window.parent.document).find(“.layui-layer-title”).height();varborder_margin=30;varminH=150;var_margin=0;var_top=$(w…

    2025年7月5日
    3
  • selenium自动化测试报告_selenium自动化测试断言

    selenium自动化测试报告_selenium自动化测试断言自动化测试——selenium(完结篇)文章目录自动化测试——selenium(完结篇)一、元素操作方法二、浏览器操作方法三、获取元素信息操作四、鼠标操作(需要实例化鼠标对象)4.1鼠标右键及双击4.2鼠标拖拽4.3鼠标悬停【重点】五、键盘操作(不需要实例化对象)☆六、元素等待七、下拉框(需要实例化下拉框)八、弹出框九、滚动条十、切换frame表单☆10.1连续切换frame十一、多窗口的切换☆十二、截图操作十三、验证码前言:看这篇帖子,最好要在知道定位八大元素的基础之上才能够比较熟练

    2022年10月1日
    0
  • android studio怎么用真机调试_android studio调试

    android studio怎么用真机调试_android studio调试在使用androidstudio进行项目的调试的时候,模拟器真的有点慢,有时还很卡,大家可能还是更想使用真机进行调试,那么下面来看看androidstudio如何使用真机测试app的教程。第一大步,先对androidstudio进行设置:1、进入AndroidStudio界面,找到界面左侧工具栏的app2、鼠标点击app,在弹出的列表中选择EditConfigurations这一项3、在…

    2022年9月6日
    8
  • linux配置虚拟IP地址方法「建议收藏」

    linux配置虚拟IP地址方法「建议收藏」linux配置虚拟IP地址方法在日常linux管理工作中,需要为应用配置单独的IP地址,以达到主机与应用的分离,在应用切换与迁移过程中可以做到动态切换,特别是在使用HA的时候,这种方案可以保证主机与应用的隔离,对日常的运维有很大的益处.但在有些应用中还没有配置HA,后期需要配置HA时,我们可以先配置虚拟IP给在线的应用使用,这要后期的系统运维可以做到更好的可扩展性.本文主要是对IP地址

    2022年10月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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