随笔分类 -  单元测试

单元测试之道
摘要:OpenCppCoverage是Windows平台下开源的C++代码覆盖率工具,使用简单,功能齐全而强大。2014年才推出的,只恨没有早点发现。使用起来非常简单,它不需要在编译时插桩,只需要有pdb文件,运行时插桩,通过OpenCppCoverage启动进程即可。 阅读全文
posted @ 2015-04-11 10:33 CoderZh 阅读(18007) 评论(7) 推荐(2) 编辑
摘要:我不知道Test Double翻译成中文是什么,测试替身?Test Double就像是陈龙大哥电影里的替身,起到以假乱真的作用。在单元测试时,使用Test Double减少对被测对象的依赖,使得测试更加单一,同时,让测试案例执行的时间更短,运行更加稳定,同时能对SUT内部的输入输出进行验证,让测试更加彻底深入。但是,Test Double也不是万能的,Test Double不能被过度使用,因为实际... 阅读全文
posted @ 2010-01-31 19:56 CoderZh 阅读(6250) 评论(0) 推荐(4) 编辑
摘要:这几节我看的比较快一些,因为内容之间其实是有联系的,所以合在一起做一个笔记。6-10节主要介绍了什么是Fixture,如何保证一个Fresh Fixture,如何使用Setup,Tearndown,如何进行验证(Verify),等等。 什么是Fixture? The test fixture is everything we need to have in place to exercise t... 阅读全文
posted @ 2010-01-24 17:13 CoderZh 阅读(10439) 评论(1) 推荐(10) 编辑
摘要:软件测试中的“设计模式”,细细品味,然后实践之 阅读全文
posted @ 2010-01-23 12:45 CoderZh 阅读(5295) 评论(0) 推荐(3) 编辑
摘要:在前面的玩转gtest - 断言中,我们提到了ASSERT_*系列的断言只是在当前函数返回,并非退出当前测试案例,因为ASSERT_*系列是通过return来实现的(因此 ASSERT_*系列不能在返回值不为void的函数内出现)。要退出当前测试案例,一个最简单的方法就是通过抛异常,然后让gtest捕获这一异常。 阅读全文
posted @ 2009-08-02 14:07 CoderZh 阅读(10783) 评论(2) 推荐(1) 编辑
摘要:可理解的代码非常重要,测试代码也是如此。在我看来,优秀的测试代码,必须做到一个重要的事情就是保持测试逻辑的清晰。作为测试开发人员,我们有机会使用最前沿,最先进的技术去解决问题。我们可以使用BDD所使用的自然语言描述方法来编写我们的测试案例。优美的测试代码,就是一个个优美的故事。 阅读全文
posted @ 2009-07-26 23:29 CoderZh 阅读(15725) 评论(7) 推荐(8) 编辑
摘要:在之前的代码覆盖率浅谈中其实已经谈到了关于行覆盖的缺陷,但由于行覆盖足够简单,还是被广泛使用着。另我惊讶的是,作为一个商业的C++代码覆盖率工具CoverageMeter,它明确指出,不提供行覆盖数据,因为他们认为行覆盖不准确。 阅读全文
posted @ 2009-07-11 23:26 CoderZh 阅读(2217) 评论(2) 推荐(0) 编辑
摘要:市面上的C++代码覆盖率工具大都收费,Coverage Validator也不例外。Coverage Validator应该少有人听过,我也是在stackoverflow里听别人介绍的。Coverage Validator,不需要重编被测代码,只需要提供被测二进制程序的pdb文件,就能统计其代码覆盖率。它能同时统计行覆盖,分支覆盖,函数覆盖等…… 阅读全文
posted @ 2009-07-11 22:25 CoderZh 阅读(8656) 评论(5) 推荐(0) 编辑
摘要:上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest 阅读全文
posted @ 2009-04-12 14:47 CoderZh 阅读(72885) 评论(11) 推荐(6) 编辑
摘要:本文通过分析TEST宏和RUN_ALL_TEST宏,了解到了整个gtest运作过程,可以说整个过程简洁而优美。之前读《代码之美》,感触颇深,现在读过gtest代码,再次让我感触深刻。记得很早前,我对设计的理解是“功能越强大越好,设计越复杂越好,那样才显得牛”,渐渐得,我才发现,简单才是最好。我曾总结过自己写代码的设计原则:功能明确,设计简单。了解了gtest代码后,猛然发现gtest不就是这样吗,同时gtest也给了我很多惊喜,因此,我对gtest的评价是:功能强大,设计简单,使用方便。 阅读全文
posted @ 2009-04-11 22:23 CoderZh 阅读(80272) 评论(6) 推荐(7) 编辑
摘要:使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。 阅读全文
posted @ 2009-04-10 01:10 CoderZh 阅读(105228) 评论(1) 推荐(5) 编辑
摘要:“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。 阅读全文
posted @ 2009-04-08 23:56 CoderZh 阅读(66398) 评论(5) 推荐(1) 编辑
摘要:在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少写代码,多复用代码。Google的程序员也一样,他们考虑到了这个问题,并且提供了一个灵活的参数化测试的方案。 阅读全文
posted @ 2009-04-08 02:05 CoderZh 阅读(95122) 评论(17) 推荐(5) 编辑
摘要:gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCae级别的,每个TestCase前后。 阅读全文
posted @ 2009-04-06 19:02 CoderZh 阅读(122458) 评论(5) 推荐(4) 编辑
摘要:这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列 阅读全文
posted @ 2009-04-06 18:17 CoderZh 阅读(198374) 评论(9) 推荐(5) 编辑
摘要:本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。 阅读全文
posted @ 2009-04-06 18:16 CoderZh 阅读(243179) 评论(31) 推荐(14) 编辑
摘要:Google Test (gtest)是Google的开源C++测试框架,希望我的总结能给你带来帮助。 阅读全文
posted @ 2009-04-06 18:14 CoderZh 阅读(335490) 评论(22) 推荐(38) 编辑
摘要:在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。 阅读全文
posted @ 2009-03-29 14:45 CoderZh 阅读(89451) 评论(33) 推荐(19) 编辑
摘要:BullseyeCoverage Kind of Tool Code Coverage Analyzer for C++/C Organization Bullseye Testing Technology http://www.bullseye.com/ Software Description BullseyeCoverage is a full-featured code covera... 阅读全文
posted @ 2009-03-21 14:28 CoderZh 阅读(11703) 评论(4) 推荐(1) 编辑