热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

重读《从菜鸟到测试架构师》测试还能驱动开发

上回说到,小艾明白了单元测试的重要性之后,也明白了单元测试需要测什么,这让他的开发效率明显有了提高,而bug密度有了明显下降

上回说到,小艾明白了单元测试的重要性之后,也明白了单元测试需要测什么, 这让他的开发效率明显有了提高,而bug密度有了明显下降。但是,小艾的代码依然保持着高耦合的风格,因此编写单元测试的时候遇到了不少的阻碍,导致了测试覆盖率偏低,但是他却发现组长的测试覆盖率居然能逼近100%。

最让小艾讶异的是,产品负责人带来的用户反馈要求将已有代码进行较大幅度的变更,这个情况他简直没办法相信。就在这时,小艾听到组长说不用担心,TDD能够应付这种情况。TDD? 小艾对这个隐约有印象,似乎曾经听组长提起过,但自己对此一无所知,于是,他又来到了组长面前。

组长看到小艾对此十分感兴趣,于是也细心地讲了起来……

什么是测试驱动开发,测试驱动的工作流程

测试驱动开发每次针对一个很小的功能点,通常是小到一个单独的方法。流程:

    在实现新功能之前,先考虑代码的使用需求(包括功能、过程、接口等),为其编写测试代码。

    让新写的测试代码和已有的测试代码一起运行。

    为新功能编写最少的实现代码,切记,是最少的实现代码。

    再次让新测试代码和已有代码一起运行,根据运行结果调整实现代码,直到全部测试代码通过。

    在此过程中,积极地对代码进行重构,优化代码。

    重复上述操作,直到完成全部功能的开发。

概念

测试驱动开发是一种编写软件的模式,是一种敏捷开发实践。其指导思想就是让开发人员在编写功能代码之前,根据需求编写测试代码。思考如何对将要实现的功能进行验证,并完成单元测试脚本的编写,然后编写足够,仅仅是足够的功能代码满足这些测试用例,直至测试通过。

递增地在迭代中增加新功能的单元测试和功能代码编写,直到完成全部功能的开发。

 

目的

测试驱动开发已经不再是单纯的测试行为,而是上升到了一种设计行为,或者说,测试驱动开发的目的不是为了验证代码实现,而是为了描述一段代码的用途和用法的设计规格说明。且这种描述是无二义的,是可执行验证的。

 

测试驱动开发与先开发后测试的异同

相同点:

    都对底层功能进行验证

    都得到了单元测试资产

    使项目容忍变化,可通过单元测试来保证引入的变化不会带来负面影响。

 

不同点:

    测试覆盖率不同:测试驱动开发要求考虑全部可能的测试,几乎可达100%覆盖率。后者则相对较低。

    代码可测性不同:测试驱动开发中的代码天生具有可测性,后者则不能保证。

    对需求的明晰程度不同:测试驱动开发编写测试代码的过程就是从代码级别对需求逐渐明晰的过程。

 

测试驱动开发好处多

从上述的异同点中就可以看到,测试驱动开发所倡导的可测试的代码、单元测试覆盖、重构和更优化的设计之间,是互为因果、良性循环的行为。测试优先使得代码天生具有可测性,因此保证了近乎100%的测试覆盖率,因而bug密度较低,有利于更早发现bug。

而最大的好处在于它对代码的重构,重构可以消除重复设计,优化设计结构,使接口更简单,产生高内聚,低耦合的代码,代码复杂度的降低,也让其更便于维护。这也意味着能够最终从设计层面对代码做出改进。

测试驱动开发是敏捷开发的基础,而测试优先的方式,也能够让代码更好地适应多变的需求。

 

听完组长一席话,小艾明白了测试驱动开发的好处,但是很好奇,既然这么好用为什么好像没有被广泛使用呢?因为测试驱动开发相对传统开发来说,是一种观念的改变,需要时间让大家慢慢来接受。

尾声

小艾回想起在开发组的这段时间,从第一次做不正规的单元测试,到后面的测试驱动开发,既增长了自己的见识,又长了自己的本事。

第四章的内容到这里也要告一段落了,小艾协助开发人员的日子也走到了末期,应该回到自己的测试岗位去了,对代码有一定了解的小艾,相信在接下来的测试工作中,会更加得心应手~

 

想要第一时间看到这一系列文章的更新及更多精彩内容可以扫描下面二维码关注微信公众号: 倚楼听风雨的如月

转:https://www.cnblogs.com/Ribbon/p/6268373.html



推荐阅读
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
  • 未来五年的AI领域科技亮点,都在这里了
    当AI正式成长为推动世界第四次工业革命的潜在力量之一,我们的生活也在悄然发生着变化,当AI渗透到人们的生活中,引爆着一场又一场的行业变革& ... [详细]
author-avatar
淡忘那曾经的你_953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有