IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> TDD和单元测试 -> 正文阅读

[开发测试]TDD和单元测试

Test Driven Development。测试驱动开发,提倡在开发足够多的代码之前优先写单元测试,然后重构开发者编写的源代码。初学者会问,源代码都没有怎么写单元测试?请注意是开发足够多的代码之前,也就是会有少量源代码工作在单元测试之前,如功能模块骨架,方法定义、类依赖。

三个准则:

  1. 定律一、在编写不能通过的单元测试前,不可编写生产代码。(写生产代码前,先写针对其需求的单元测试,当然因为生产代码还没写,这个单元测试肯定是失败、无法通过)
  2. 定律二、只可编写刚好无法通过的单元测试,不能编译也算不过。(测试小步走,写一个单元测试不要一下子写太多测试功能,如编译不通过,如果生产代码还没写,那单元测试代码肯定编译不通过,这就够了)
  3. 定律三、只可编写刚好足以通过当前失败测试的生产代码。(生产代码小步走,生产代码要基于测试代码,先写测试代码再写生产代码,测试失败什么、生产代码才能写什么,)

测试代码要求:和生产代码一样重要,必须规范、必须有可读性。

TDD 生命周期。(遵守这六个步骤)

  1. 编写测试。(首次写一个测试类,此时没有写生产类,导致编译失败,再去创建生产类,就能编译通过)(或写其他逻辑条件的测试用例)
  2. 运行测试(生产类没有实现代码,测试不通过)
  3. 编写足够的实现代码以使测试通过(实现生产类,关注于实现功能)
  4. 运行所有测试(每次对类修改,?都要进行测试,测试不通过就回到步骤3)
  5. 重构(不断疯狂重构,每次重构运行单元测试,测试不通过就回到步骤3,重构可能会产生新类、新方法,如果有必要也应该增加单元测试)
  6. 重复(重复整个流程,直到所有测试条件都能通过,并且覆盖所有代码的逻辑分支、如ifelse分支)

以上6步是详细步骤,此外有名的 “TDD 红-绿-重构”是对步骤的总结。

单元测试细节:

  1. given-when-then,一个单元测试,遵守三个步骤,given构造数据,when什么条件、什么操作,then得到结果
  2. 包名、类名、方法名。包在src/test/下,包名最好和生产代码包名一样,类名在生产类名前+test,方法名可以用test+方法名+场景,或者直接用when、then

思考怎么在项目中使用TDD,步骤:

  1. 需求分析
  2. 设计(类图、流程图)
  3. 生成项目骨架,关键类、接口、方法(但不实现代码)
  4. 编写测试,开始TDD,红-绿-重构

光看概念可能不理解,结合代码看,在最下方参考链接中都有代码示例。

参考(代码案例):

ideaIDE文档,关于单元测试的功能、配合TDD:?idea 功能:Tutorial: test driven development | IntelliJ?IDEA

?????Test Driven Development (TDD): Example Walkthrough | Technology ConversationsTest Driven Development (TDD): Best Practices Using Java Examples | Technology Conversations

Test-Driven Development: Really, It’s a Design Technique??

《构建高质量软件》试读,对单元测试和TDD讲解,推荐?http://images.china-pub.com/ebook8080001-8085000/8083973/ch01.pdf

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:44:26  更:2022-01-04 13:45:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:48:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码