![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单元测试
yidangui
这个作者很懒,什么都没留下…
展开
-
《xUnit Test Patterns》学习笔记5 - xUnit基础
这几节我看的比较快一些,因为内容之间其实是有联系的,所以合在一起做一个笔记。6-10节主要介绍了什么是Fixture,如何保证一个Fresh Fixture,如何使用Setup,Tearndown,如何进行验证(Verify),等等。什么是Fixture?The test fixture is everything we need to have in place to exercise t转载 2013-06-06 23:32:42 · 1092 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记7(完) - 总结
总体来说,这本书是不错的。后面的第二部分和第三部分,主要针对Test Smells和Test Patterns进行了更加具体的描述,主要的内容和第一部分还是基本一致的。因此,我主要的精力都花在了第一部分,对于后面的第二部分和第三部分,我是跳着看完的。后面的内容当作字典来查询会比较好,因为写的比较详细。其中有一个观点我觉得是比较新颖的,如果你分不清现在做的测试是不是属于单元测试,就请参照一下下面转载 2013-06-06 23:34:08 · 1095 阅读 · 1 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言
一、前言这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。 2. EXPECT_* 系列的断言,当检查点失败时,继续往下执行。二、示例转载 2013-06-06 23:48:34 · 705 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
一、前言gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCase级别的,每个TestCase前后。二、全局事件要实现全局事件,必须写一个类,继承testing::Envir转载 2013-06-06 23:49:52 · 534 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试
一、前言“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。二、使用的宏Fatal assertionNonfatal转载 2013-06-06 23:51:21 · 479 阅读 · 0 评论 -
eclemma学习
关于eclemma的历史和怎么安装,请参考http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/index.html。下面我介绍的只是如何在eclipse里使用eclemma统计使用tentng测试框架单元测试覆盖率,这些都是建立在上面这篇文章的基础上的。我的目的就是让你不用在花费额外的时间研究怎么配置的问题了,如果你按照我下面的配置在统计单转载 2013-06-07 00:11:23 · 892 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
一、前言使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。二、基本介绍前面提到,对于运行参数,gtest提供了三种设置的途径:1. 系统环境变量2. 命令行参数3. 代码中指定FLAG因为提供了三种途径,转载 2013-06-08 10:18:36 · 495 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
一、前言“深入解析”对我来说的确有些难度,所以我尽量将我学习到和观察到的gtest内部实现介绍给大家。本文算是抛砖引玉吧,只能是对gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看gtest源码,如果你看过gtest源码,你会发现里面的注释非常的详细!好了,下面就开始了解gtest吧。二、从TEST宏开始前面的文章已经介绍过TEST宏的用法了,通过TEST宏,我们可以转载 2013-06-08 10:20:05 · 562 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架
一、前言上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest ,通过编写这个简单的测试框架,将有助于我们理解gtest。二、整体设计使用最精简的设计,我们就用两个类,够简单吧:1. TestCase类包含单个测试案例的信息。 2. UnitTest类负责所有测试案例的执行转载 2013-06-08 10:20:50 · 473 阅读 · 0 评论 -
使用 EclEmma 进行覆盖测试
简介: 覆盖测试是衡量测试质量的一个重要指标。在对一个软件产品进行了单元测试、组装测试、集成测试以及接受测试等繁多的测试之后,我们能不能就此对软件的质量产生一定的信心呢?这就需要我们对测试的质量进行考察。如果测试仅覆盖了代码的一小部分,那么不管我们写了多少测试用例,我们也不能相信软件质量是有保证的。相反,如果测试覆盖到了软件的绝大部分代码,我们就能对软件的质量有一个合理的信心。本文将介绍一个优秀的转载 2013-06-07 00:09:26 · 722 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest
一、前言本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。 二、下载如果不记得网址, 直接在google里搜gtest,第一个就是。目前gtest的最新版本为1.3.0,从下列地址可以下载到该最新版本:http://googletest.googlecode.com/files/gtest-1转载 2013-06-06 23:47:47 · 583 阅读 · 0 评论 -
优美的测试代码 - 行为驱动开发(BDD)
可理解的代码非常重要,测试代码也是如此。在我看来,优秀的测试代码,必须做到一个重要的事情就是保持测试逻辑的清晰。一个完整的测试案例通常包括三个部分:1. SetUp2. Exercise3. Verifiy4. TearDown一 个测试案例如果能清晰的区分这三个部分,其实已经成功了一半。但是,如果仅仅只是做到这一步,离我们的“可理解的”测试代码还有些距离。在我看来,要做到 测转载 2013-06-06 23:38:48 · 521 阅读 · 0 评论 -
玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化
一、前言在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少写代码,多复用代码。Google的程序员也一样,他们考虑到了这个问题,并且提供了一个灵活的参数化测试的方案。二、旧的方案为了对比,我还是把旧的方案提一下。首先我先把被测转载 2013-06-06 23:50:44 · 467 阅读 · 0 评论 -
JAVA代码覆盖率检测工具-EMMA
EMMA 是一个用于检测和报告 JAVA 代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便得得出覆盖率报告,而且适用于大型企业级别的项目。EMMA 有许多优点,首先你能免费得到它,并把它用于自己项目的开发。它支持许多种级别的覆盖率指标:包,类,方法,语句块(basic block)和行,特别是它能测出某一行是否只是被部分覆盖,如条件语句短路的情况。它能生成 text,xml,html转载 2013-06-07 00:16:56 · 1909 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记1 - Test Smell
这本书找来很久了,一直没读。关于软件测试的好书相当少,对于测试代码的重构及模式的书就更加难得了。虽然我才读了前几章,给我的感受是,这本书确实讲的很全面,并且给很多测试中的东西给出了专业的术语,相信当我读完并吸收完这本书后,会有更多的体会和收获。第一章是全书概述,直接跳到第二章开始我的笔记。Test Smell,测试的坏味道。和我们通常讲的Code Smell是一样的,不同的是Test Smel转载 2013-06-06 23:29:59 · 1203 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation
或许有人觉得单元测试可有可无,因为觉得需要付出太多的精力,而客户并不需要它。这就涉及到投资回报率的问题,其实所付出的用于测试的投资,往往会收获到更多回报。它让我们减少了Bug的数量,减少了调试代码寻找Bug的时间。看下图,有效的自动化测试投资下,测试和开发付出的努力的时间图:初期,随着测试的介入,开发付出的投入逐渐减少。后期,随着测试案例的完善和自动化,测试和开发所需要付出的投入都减少转载 2013-06-06 23:30:33 · 619 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记3 - Philosophy of Test Automation
这一章主要讲自动化测试的原则。前面的章节介绍了很多测试的思想,而思想的东西难免有点虚,这一章就是告诉你,遇到了具体的什么问题时,应该怎么办。作者咨询了很多的开发人员和测试人员,同时也和Martin Fowler就自动化测试的一些原则问题进行了交流,有些是显而易见的,有些又是让人把握不定。因此,这章主要讨论了以下几个问题:Test First or Last? Tests or Exampl转载 2013-06-06 23:31:09 · 632 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记4 - Principles of Test Automation
自动化测试过程中,有一些基本的原则,就如同宣言(Manifesto)。由于大部分的原则在前面其实都提到的,因此,有的不做太多说明了。原则:Write the Tests First原则:Design for Testability原则:Use the Front Door First意思是说,从最外层暴露的publish方法开始测试。原则:Communicate Intent转载 2013-06-06 23:31:38 · 722 阅读 · 0 评论 -
《xUnit Test Patterns》学习笔记6 - Test Double
我不知道Test Double翻译成中文是什么,测试替身?Test Double就像是陈龙大哥电影里的替身,起到以假乱真的作用。在单元测试时,使用Test Double减少对被测对象的依赖,使得测试更加单一,同时,让测试案例执行的时间更短,运行更加稳定,同时能对SUT内部的输入输出进行验证,让测试更加彻底深入。但是,Test Double也不是万能的,Test Double不能被过度使用,因为实际转载 2013-06-06 23:33:24 · 1040 阅读 · 0 评论 -
代码覆盖率浅谈
在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义:代码覆盖率 = 代码的覆盖程度,一种度量方式。转载 2013-06-06 23:15:00 · 774 阅读 · 2 评论