网页自助建站,上海公司注册流程及费用标准,大型网站开发人员,邯郸教育行业网站建设很多公司在面测试中高级岗时#xff0c;都会不同程度地问到“有没有了解过TDD”“你认为TDD可以解决什么问题”或者“说说测试驱动开发的流程”等等#xff0c;即使公司并不会用到此开发流程#xff0c;面试官也会通过你对这个相对还比较“陌生”的概念的讲述来了解你对一些…很多公司在面测试中高级岗时都会不同程度地问到“有没有了解过TDD”“你认为TDD可以解决什么问题”或者“说说测试驱动开发的流程”等等即使公司并不会用到此开发流程面试官也会通过你对这个相对还比较“陌生”的概念的讲述来了解你对一些测试相关概念的熟知程度以及测试思想的见解。
什么是TDD(测试驱动开发)
百科中对测试驱动开发的介绍如下测试驱动开发英文全称是Test-Driven Development简称为TDD它是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写好测试代码然后只编写使测试通过的功能代码通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码并加速开发过程。
测试驱动开发并不是在近几年才发展起来的一种方法其最早是在极限编程方法论中就开始有了这种思想的实践过程 市面上很多《极限编程》、《持续集成》、《测试驱动开发》的书籍中都有不同角度的介绍。
简单来说测试驱动开发是针对一些小功能点甚至小到一个方法的敏捷开发实践。传统的开发模式是开发人员编写完业务代码后再开始编写单元测试脚本来验证上一步的业务功能代码而测试驱动开发的中心思想却是先根据需求文档来编写测试代码即先编写单元测试脚本并思考怎样对这些要实现的业务功能作验证等编写了足够的单元测试脚本后再继续编写业务功能代码通过测试后再继续迭代以上的过程一直到编写完成所有的业务需求功能模块。
单元测试
从上引出的一个概念-单元测试这里简单说明下。单元测试一般是由开发者在编写业务功能代码时 为了验证自己开发的每个代码单元而编写的一种独立的测试。完成单元测试后开发人员会出一份单元测试报告以及单元测试覆盖率报告 测试人员需要以以上报告作为设计功能测试用例的依据。
测试驱动开发的流程
可以从以下测试驱动开发周期图中清晰地看出核心流程节点。测试驱动开发的口号是不可运行/可运行/重构
测试驱动开发与传统开发的区别
传统开发模式下编写的单元测试脚本其实还是为了验证功能仍属于测试的一种形式。而测试驱动开发已经不再是一种简单的测试行为了准确地说它是一种设计行为。测试驱动开发类似于是对一段代码的用法而编写的设计规格说明可以从编写代码的内聚性、可测性、可复用性以及缺陷密度、接口的简易水平看出。在测试驱动开发中以需求的剖析、用户业务功能的理解都是层层递进的是可以逐步细化到代码级别的而这样的过程也恰恰提高了测试的覆盖率同时能从根本上解决一些因业务逻辑设计错误而导致的后期大量的缺陷修复工作。
测试驱动开发的优缺点
从以上的TDD周期图中也可以看出测试驱动开发最大的优点就是重构了不断迭代不断地对现有代码进行重构不断优化代码的内部结构最终实现对整体代码的改进。以此不断减少一些设计冗余、代码冗余、接口复杂度等等。
另外对于一些前期需求不明确甚至需求信息量特别少且后期又会有大量业务功能修改时传统的开发模式需要加班加点以此赶工开发测试缺陷修复人工、时间成本且不说最重要的产品质量也无法得到保证。当然 这种模式下也最适合采用原型法、敏捷开发模式了毕竟拥抱变化是敏捷的宗旨 。而测试驱动开发也是敏捷开发模式的基础这样无论是来自客户的紧急需求还是项目团队的一次技术改革都可以通过重构设计、增加测试脚本来实现了。
测试驱动开发的应用领域
以上分析了测试驱动开发的诸多优势但目前并没有被大量广泛的使用起来一来这是一种技术或管理方式上的变革需要慢慢被大众所熟知 二来需要足够专业技能、专业素质的人才来保证整个过程的通畅与专业 第三前期需要一定的投入而它产生的输出足以解决目前多数企业中遇到的质量、效率、成本等难题所以选择是一步真正能够严格执行下去的很少。
结尾
总之如果是在面试过程中可以通过以上几方面分步来讲解自己对测试驱动开发的认识如果恰巧自己也在敏捷团队里有过工作经历更可以添砖加瓦加上自己的亲自经验一定会给面试官一个思维清晰测试经验丰富的良好印象。 【整整200集】超超超详细的Python接口自动化测试进阶教程真实模拟企业项目实战