TDD
Sleeping-Cat
这个作者很懒,什么都没留下…
展开
-
三种TDD开发模式
首先了解一下这三个开发模式都是什么意思:TDD:测试驱动开发(Test-Driven Development)测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需转载 2017-01-19 11:38:08 · 11108 阅读 · 0 评论 -
如何上手EasyMock?
简单上手EasyMock原创 2017-02-22 17:02:45 · 593 阅读 · 0 评论 -
CPPUTest 判断的宏
CPPUTest 提供的用于判断的宏如下: Assertion 宏含义CHECK(boolean condition)condition==True则成功; 反之失败CHECK_TEXT(boolean condition, text)condition==True则成功; 反之失败, 并且失败时输出 text信息转载 2017-01-31 22:52:24 · 836 阅读 · 0 评论 -
在团队中进行单元测试/TDD的12 条经验
摘要:测试可以帮助项目团队找出代码中存在的问题,TDD方式更是将测试放在了开发工作的首位。那么在团队中该如何应用单元测试和TDD呢?开发者Paulo Ortins结合自身经历给出了本文中的12个经验教训。测试可以帮助项目团队找出代码中存在的问题,TDD方式更是将测试放在了开发工作的首位。那么在团队中该如何应用单元测试和TDD呢?开发者Paulo Ortins结合自身经历给出了本文中转载 2017-02-15 11:27:52 · 462 阅读 · 0 评论 -
有硬件依赖或其他依赖的测试驱动开发
有硬件依赖或者操作系统依赖的TDD相对来说,要麻烦一些。需要写Fake,Spy,Mock等这些DOC(Dependency On Component)测试替代,来帮助测试。即便是有一些TDD经验的同学,或许面对复杂的系统的TDD开发,也会感到有些无从下手。(一)首先,整个程序架构必须了然于胸,清楚需要开发哪些MOCK模块(下文中Spy,Fake统称为Mock)。见下面的例子(来自月原创 2017-02-15 10:42:00 · 375 阅读 · 0 评论 -
如何写Fake和Mock的方法
https://dotblogs.com.tw/hatelove/archive/2012/11/29/learning-tdd-in-30-days-day7-unit-testing-stub-mock-and-fake-object-introduction.aspx.aspx这里我总结下如何写Fake的方法:1,在代码中有依赖,比如代码依赖ABC.cpp文件里的方法。这些方原创 2017-02-01 12:11:46 · 3076 阅读 · 0 评论 -
深入理解Mock工作原理
Mock的作用不同于Spy,Fake。Mock主要用于测被测体与外部的交互逻辑。一般是指在不同的场景下多次的与外部交互。当外部依赖是硬件,或者外部程序不ready的情况下,Mock就能帮助完成单元测试。以下图为例,FlashDriver与IO系统有多次的交互,交互函数是read,和write。在一次烧写操作中,先调用两次write,然后根据read回来的数据不同情况,完成后续不同的操作。每个C原创 2017-02-15 20:30:31 · 16206 阅读 · 0 评论 -
测试的FIRST原则
程序员应该在写Code前,完成快的,独立的,可重复的,自己验证的测试Case。F Fast: Tests are fast, so fast that developers run them with everysmall change without waits that break the flow.I Isolated: Tests are isolated. One test does not set up the next test.T转载 2017-01-23 17:04:07 · 2808 阅读 · 0 评论 -
Mock的好处是什么?
https://sanwen8.cn/p/44aKIXY.html1. 团队可以并行工作有了Mock,前后端人员只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;后端与后端之间如果有接口耦合,也同样能被Mock解决;测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;不会出现一个团队等待另一个团队的情况。这样的话,开发自测阶段就可以及早开展,从而转载 2017-04-12 14:04:36 · 20489 阅读 · 1 评论 -
一分钟前办公室每个程序员的代码能工作,代表什么?
这篇文章很好的讲清楚了TDD的好处。一分钟前代码是可以工作的,意味着什么?1. 意味着你的debug花的时间会很少。 错误就是在这一分钟内新代码造成的。2. 每天增加几个测试case,一年下来就有很多回归测试case。今后做refactoring,就有保障。3. 测试case胜于文档,始终保持和code一致。它能告诉你如何使用该软件4. 为保障代码可以通过测试,自然代码就具备了可测转载 2017-01-17 13:30:23 · 785 阅读 · 0 评论 -
James Grenning访谈录:关于测试驱动开发及代码异味
[转自] http://www.infoq.com/cn/articles/TDD-code-smells-Grenning在OOP 2015大会上,敏捷宣言的签署人James Grenning,就技术卓越和嵌入式C的测试驱动开发做了两场报告。InfoQ就以下几个问题采访了James Grenning:为什么开发者没能有效地或足够好地从事技术实践、为什么会认为TDD是有趣的、单元测转载 2017-01-17 09:32:32 · 500 阅读 · 0 评论 -
TDD Benifit (转James Grenning - TDD Embedded C)
待翻译Fewer bugsSmall and large logic errors, which can have grave consequencesin the field, are found quickly during TDD. Defects are prevented.Less debug timeHaving fewer bugs means less翻译 2017-01-21 22:04:12 · 322 阅读 · 0 评论 -
TDD是如何解耦合的?
借用Bob大叔的《敏捷软件开发 原则,模式,实践》中的图程序员要实现Payroll系统,与Payroll交互的外部系统是支票打印机和员工数据库。当程序员在开发Payroll系统时候,有可能外部系统也在开发,也有可能让外部系统支持联调耗时很大。比如,给数据库灌可测试的数据,也是不小的工作量。 TDD是如何解决这个问题的呢?见下图,定义接口,准备Mock Object。Payroll系原创 2017-02-06 11:09:13 · 387 阅读 · 0 评论 -
TDD好处在哪?是否与自动测试好处混淆
TDD是测试驱动开发,简单理解就是先写测试后写代码。测试case必然是TDD的副产品。传统的瀑布开发模型,是先写代码再写测试。两者开发方式不一样,但是最终都会留下测试集。能自动运行的产品代码测试集就是对于新增代码或重构代码的保护。所以如果只是简单看是否有自动测试集保护代码这个角度来说,保证代码重构,并不是TDD测试现行的独有好处。那TDD的好处在哪?这个问题把它转化成先写测试的好处在哪原创 2017-01-21 21:04:45 · 1004 阅读 · 0 评论 -
JUnit常用断言及注解
断言核心方法assertArrayEquals(expecteds, actuals)查看两个数组是否相等。assertEquals(expected, actual)查看两个对象是否相等。类似于字符串比较使用的equals()方法assertNotEquals(first, second)查看两个对象是否不相等。assertNull转载 2017-02-08 14:01:08 · 329 阅读 · 0 评论 -
TDD最常见的误区
在敏捷大师们的眼里TDD是灰盒测试,像白盒测试一样TDD能够看到代码,但是TDD却不关注代码里的内部逻辑,只是关注代码的对外接口。然而有些公司把TDD当做白盒测试,要求测试必须达到一定覆盖率。这让程序员感到TDD做了许多没有价值的事。有些内部逻辑是相当简单直白的,没有必要写测试Case测试。更重要一点是,外部接口相对来说比较稳定,针对外部接口写的测试Case也就比较稳定。而内部代码是很原创 2017-02-08 16:29:24 · 613 阅读 · 0 评论 -
如何理解TDD的三条规则
如何理解Bob大叔的TDD三条规则?第一条和第三条讲的是只有和只要。只有Case False的情况下才能写Code。只要新写的Code使得Case通过了,就不要写任何新功能代码了。重构是可以的。第二条是说只允许编写Case失败的代码。这一条操作起来有个疑惑。比如为写一个算法,先把写一个验证功能的Case,然后写代码。Case通过以后,想验证下特殊值情况,又写一个Case,结果Case也幸运的Pas原创 2017-02-09 15:45:10 · 3815 阅读 · 0 评论 -
Unit Test Harness(用具)应该具备什么功能?
1. 一套自己语言写测试case2. 一套自己语言描述期望结果3. 有自己途径去访问目标语言4. 可以集中所有测试case5. 可以部分运行或全部运行case6. 可以report 某一个测试集,和每一个测试case运行成功还是失败翻译 2017-01-23 09:45:31 · 2331 阅读 · 0 评论 -
写测试Case的通常4步
• Setup: Establish the preconditions to the test. • Exercise: Do something to the system. • Verify: Check the expected outcome. • Cleanup: Return the system under test to its initial state af转载 2017-01-23 10:29:37 · 4013 阅读 · 0 评论 -
测试驱动开发中的Dummy, Stub, Spy, Mock, Fake
测试哑元(Dummy) - 只是帮助测试项目编译通过,不在具体测试里面起任何作用。测试桩(Stub) - 只是能返回帮助测试的值测试间谍(Spy) - 目的是测试被测单元传过来的值,也能返回值。Test Spy里肯定是要增加取参数的函数,用于测试仿制对象(Mock object) - 主要目的是测试函数调用,调用顺序。同时具备Stub, Spy功能。仿冒对象(Fake): 用能更简原创 2017-02-15 11:24:42 · 5652 阅读 · 0 评论