51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1548|回复: 3
打印 上一主题 下一主题

测试驱动开发实践

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-12-26 10:53:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
导语:
传统开发模式与TDD开发模式的区别在哪里?TDD开发的优点是什么?TDD具体开发过程中又需要用到哪些技术知识点?本文作者通过实例来为你阐述TDD的开发流程,让你对TDD有一个大致的了解。


一.传统开发模式与TDD开发模式
1. 传统开发模式流程:
项目代码开发 -> 编写测试用例 –> 运行测试用例 -> 修复代码BUG
2. TDD开发模式流程
编写测试用例 -> 运行测试用例 –> 编写项目代码 -> 运行测试用例 -> 重构代码


二.TDD的优点
1. 保证代码质量,鼓励开发人员仅编写满足需求的代码。
李雷同学号称马虎王,经常各种物品丢失,比如女友(对象)丢失;借用物品(引用)丢失;使用“IO自来水之后不关阀门;去仓库(Database)取货,因为忘记某些物品,不得不频繁往返等等。
韩梅梅同学功力深厚,精心打造出了一段瑞士军刀般的代码,耗时5天(其实此功能客户无扩展需求仅要求1天时间完成)。
而在TDD实践中,我们需要注重代码质量,并编写刚好适量的代码。

2. 保证代码与业务需求的一致性
一般来讲程序员都愿意把功能完美的体现在代码上,可有时候天不随人意,心里免不得担忧,我这代码能满足业务需求么?但在TDD中,首先是进行测试用例的编写,然后再进行类或者用户界面的开发。由于要先开发测试用例,那么开发人员就必须清楚测试的目的,这样TDD确保了项目的代码与所需的业务是匹配的。

3. 创建简明有针对性的接口
一日,李雷接到韩梅梅发来的为某个功能准备的闯关宝典和核心步骤(类库与接口)。可读了3000遍还是没有能理解,一方面是韩梅梅采用了古代文言文与现代拉丁语的混搭来书写核心步骤,另一方面韩梅梅11000000的命名规则让李雷在读了30秒核心步骤后,已经不知道第几条是第几条,。
TDD实践中,我们要注重创建有意义的、简明的接口,因为这一点在与他人合作中尤其重要。

4. 与用户沟通,明确需求
在开发代码的过程中,我们总会有遇到不太明确的需求点,这个时候和需求人员沟通那是必不可少的,了解了功能的输入和输出才能保证完美的完成任务。在沟通的过程中也加深了与客户的信任和默契度,不知不觉中还能提高EQ,一举两得。

5. 回归测试,确保新的更改不影响现有功能
韩梅梅同学开发某个功能3个月后,李雷接到上级指示,客户要扩展该功能,但是原有功能保持不变。在苦心操劳了之后,李雷同学光荣的完成了任务,正准备接受大家赞誉时,韩梅梅跳出来向大家诉苦,那就是李雷为了做扩展功能把她之前做的功能给弄坏了,当时李雷那个心啊,拔凉拔凉的!
TDD的开发中加入了回归测试,这样就确保了之前的功能的正确与完整性,减少不必要的问题。

6. 提升系统的开放性和扩展性
一直以来我们做事都要讲先后顺序,软件开发也有着类似的工序。李雷韩梅梅被一起充军到某紧急功能模块上,并且李雷要等韩梅梅完成她的功能模块才能开始自己的模块。为了解决这个问题,项目组决定使用某些技术来解除他们的依赖关系,比如使用到IOC以及一些设计模式,让他们能够同时开发,之后再将两人的功能模块组装到一起。


三.TDD开发中需要使用到的技术知识点:单元测试、依赖注入框架和模拟对象
推荐博为峰网校精心打造的《测试驱动开发》课程
课程介绍:敏捷研发模式下的测试驱动开发原理,流程,原则,及核心测试技术,单元测试,注入模式及伪对象的介绍。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-20 11:42 , Processed in 0.068493 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表