`
rysh0818
  • 浏览: 23851 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

培训测试驱动开发有感

 
阅读更多

由于所在的公司是互联网行业,很少接触到软件工程的概念,所以对于测试驱动这样的开发模式一直不感冒。由于本次项目中需要用到测试驱动开发来进行,就去听了测试驱动开发的培训,感触颇深

测试驱动开发的一般流程是:

  1. 快速新增一个测试
  2. 运行所有的测试(或者你自己新增的单元测试)
  3. 发现新增的单元测试不能通过(因为没有写代码),对代码进行一点点修改,需要尽快让测试代码通过
  4. 再次进行运行所有的测试,并且全部通过
  5. 重复3,4过程
  6. 对完成的代码进行重构,再次运行所有的测试

简单的一点就是 新增测试用例->修改代码->运行测试用例->在修改代码->运行测试用例->测试用例通过->重构

其中几个细节点:

  1. 对于未实现的方法,不要返回默认值,抛出异常 例如UnsupportedOperationException
  2. 可测性>封装性 ,尤其是内的内部状态或者内部方法需要测试时,要提供一个get方法获取内部状态,要么暴露把变量声明为public,而方法需要声明为public
  3. 采用测试驱动开发,一定会增加成本。测试驱动开发对于未来的重构有帮助。当产品的生命周期越长,这种开发模式的优势越明显,价值也越大。对于一个不断持续开发的产品来说,测试驱动开发前期投入会非常大,后期维护成本会逐步降低。如果对于生命周期很短的产品,比如一个营销活动开发的代码,由于后期很少会对其修改,则测试驱动开发的价值就比较低
  4. 测试驱动开发对后期的技术重构会有很大的帮助,但是对于业务重构的价值帮助不大。因为整个业务模式有了很大的变化,相当于重新开发了一套产品。测试用例全部都要重新实现
  5. 当单元测试覆盖率在60%以下的时候,对于整个项目的质量没有太大的帮助。因为项目主要的流程部分编码占整个项目编码的60%,而这一部分会进行重复性的测试。当单元测试覆盖率达到90%的时候,才能越来越多的发现许多隐藏很深的bug。
  6. 分支覆盖率重要性大于代码行覆盖率
  7. 先写代码,在补写用例的不是tdd开发模式。
分享到:
评论

相关推荐

    Introducting in Agile Process

    - **极限编程(XP)**:强调通过持续集成、测试驱动开发等技术实践,实现高质量的代码和快速的反馈循环。 - **精益开发(Lean Development)**:侧重于消除浪费,最大化价值流,提高效率。 - **水晶系列(Crystal)*...

    产品经理培训4.ppt

    "顾客行为"是研究消费者如何做出购买决定、使用产品和服务,以及他们对品牌和产品的感受。理解这些行为有助于产品经理设计更符合用户需求的产品。 "行销研究"则是一种系统性的收集、分析和解释数据的过程,目的是...

    嵌入式软件工程课程项目总结报告模板1

    我们采用敏捷开发模式,团队成员按技能特长分工,如UI设计、后端开发、测试等。通过定期会议和在线协作工具,确保了信息同步和任务分配的透明性。团队协同效果良好,每个人都积极参与并完成了各自的任务。 10. **...

    芬兰测试自动驾驶公交或改变未来公共交通系统.pdf

    Infinity AR公司开发的SDK(软件开发工具包)能够让开发者将虚拟图像叠加到真实场景中,为用户带来创新的交互体验。 在自动驾驶技术方面,芬兰正在进行自动驾驶公交的测试,展示了未来公共交通系统的另一种可能性。...

    行业分类-设备装置-一种新型六自由度驾驶模拟平台.zip

    在汽车行业,六自由度驾驶模拟平台被广泛用于新车型的开发测试,工程师可以在模拟环境中对车辆的动态性能、操控性、舒适性等进行评估,节省了实车测试的时间和成本。在驾驶员培训中,模拟器可以提供各种复杂和危险的...

    行业分类-物理装置-一种实体+虚拟的压水堆全工况仿真平台.zip

    实体仿真平台允许操作员进行实际操作,感受设备的触感,提高操作技能,同时也能在安全环境下模拟各种异常工况,进行应急演练。 三、虚拟仿真技术 虚拟仿真技术通过计算机软件模拟压水堆的运行状态,可以实现对反应...

    软件专业毕业实训报告

    3. 团队精神:软件开发和测试是团队合作的过程,与团队成员有效沟通,协同工作,对于项目成功至关重要。 4. 持续适应和改进:工作中会遇到未知问题,需要不断调整自己的思维方式和工作方法,以适应变化,持续提高...

    毕业设计:物流管理系统

    - **技术难题**:面对复杂的技术挑战时,团队成员会积极寻求外部资源的帮助,如查阅文献资料、参加技术培训等,共同解决问题。 #### 结论 通过上述介绍可以看出,该毕业设计项目不仅涵盖了物流管理系统的各个方面...

    6轴力反馈主手(Sens-Haption-6D)介绍

    通过USB接口,设备可以轻松连接到各种系统,为不同领域的应用提供便利,如虚拟现实游戏、人机工程学研究、产品功能测试、工作场景模拟、操作员训练,以及医疗培训和远程外科手术。 青岛政信通信息科技有限公司作为...

    参考资料-单片机在汽车驾驶模拟器中的应用.zip

    在汽车驾驶模拟器中,单片机通常作为核心控制器,负责处理传感器数据、执行控制算法并驱动显示设备。 2. **硬件系统设计**:驾驶模拟器的硬件包括运动平台、显示系统、输入设备(如方向盘、油门、刹车)等。单片机...

    工业元宇宙与智能服务协同发展.pptx

    这些技术共同打破了物理世界的空间限制,使得远程协作、虚拟培训以及基于数据驱动的智能决策成为可能。 3. **价值与意义**:工业元宇宙为工业领域带来了革命性的变化,通过虚拟场景的仿真、数据分析以及AI算法的应用...

    MW54 涡轮螺旋桨 MW54 涡轮螺旋桨

    2. **涡轮螺旋桨发动机**:涡轮螺旋桨发动机是一种航空动力装置,由涡轮喷气发动机驱动的螺旋桨提供推进力。它结合了喷气发动机的高效率与螺旋桨的低速推力,适用于需要较高巡航速度但起飞和降落距离有限的飞机,如...

    安徽财经大学815管理学2021考研专业课初试大纲.pdf

    - **创新的过程**:创意产生、创意筛选、开发实施、市场测试、商业化推广。 - **技术创新的源泉**:市场需求、科技进步、竞争压力等。 ### 二、考试题型解析 - **概念辨析**:例如比较“科学管理”与“行为管理”...

    元宇宙-工业元宇宙.docx

    - **虚拟试驾体验**:通过VR技术提供沉浸式的虚拟试驾体验,让消费者能够提前感受新车性能。 - **数字化销售展厅**:建立虚拟展厅,让消费者不受时间和地点限制地查看车辆细节。 - **智能驾驶培训**:利用模拟器对...

    专业技术人员的创新能力与创新思维答案精编版.docx

    - **研发流程:**企业需要建立健全的研发体系,包括市场需求调研、概念设计、原型测试等多个环节,确保新产品的成功上市。 **10. 管理创新的意义与实践** - **选项解析:**此题讨论了管理创新对于组织发展的重要性...

Global site tag (gtag.js) - Google Analytics