快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰8455下载app:打造第二代测试框架TestDriven 2.0(一)—— Assert



------------------

媒介 Preface

------------------

本文是第二代测试框架系列文章,同时也是软件工程革命三部曲中的技巧文献。

本人对现有的测试技巧统称为第一代测试框架;本人总结他们的优毛病后,提出第二代测试框架理论并实现。

涉猎本文的门槛对照高,必要您掌握必然的测试技巧和理论,例如单元测试、回归测试、代码覆盖率等;同时必要掌握.net的IL,c#词法阐发等。

本文所提出的道理都邑附上源代码。

------------------

开篇 Introduction

------------------澳门新葡亰8455下载app

第一篇文章先定位是篇口水文,让大年夜家读起来不辛勤。

测试驱动历史不算悠久,以是海内很多兄弟并没有、也根本不想系统的进修。我小我感觉险些90%的人写代码都是一边写一边debug。经由过程掉落断点查看问题所在。

在testdriven.net出来之前,开拓是个对照苦楚的工作,纵然有了vs200x强大年夜的调试引擎,可是每澳门新葡亰8455下载app次调试都要F5运行全部项目,其实辛勤。于是我当时的做法便是开一个demo项目,把必要调试的代码copy以前,调好了在copy回来。后来Testdriven.net出来之后,写好代码之后,直接经由过程鼠标右键点击运行查看断点,基础上调试速率快了n倍。

彷佛到达这里,已经能够办理了大年夜部分人的需求了。以是看了所谓的测试先行,心里就想:的确弱智,代码还没有写好,就写什么测试代码,的确自己找抽!

不过本日,我已经读了大年夜部分测试框架的源码和理论,我的不雅点依然是: 的确弱智,代码还没有写好,就写什么测试代码,的确自己找抽!测试是必要的, 然则测试先行不是所有开拓都要遵照。准确的说,测试先行只有在极少数的环境下才有效果。

测试驱动是国外大年夜牛提出来的理论,他们提出的历史背景是已有一大年夜堆的代码库根基上,开拓额外的功能。换句话说,他们现在手头已经有了很多的营业逻辑代码,添加的新功能占了全部项目预计不跨越10%。

这个时刻,他们对代码的运行结果、影响范围等有了充分的预计,以是应用测试先行,让设计师写好接口和测试代码,再让部下的夷易近工完成营业逻辑。

虽然大年夜部分的测试驱动册本里面开篇就说的TD似乎神乎其神澳门新葡亰8455下载app,用了就腿不疼了、腰不酸了。然则他们却克意的逃澳门新葡亰8455下载app避了他们的历史背景,是以我们和书的作者不是在一条起跑线上。

我们,纵然是小公司(就算是大年夜公司,例如爱立信),在开拓中,常常都邑改动接口、改动public 措施,以致删除类。由于根本没有人能包管咱们一下手便是对的。 以是搞什么测试先行,结果连测试代码都要改动多次,麻烦!

以是,我的结论便是,新项目开拓,测试放在中心和着末。一旦新项目开拓完成进入稳定运行期后,完善测试用例;日后的迭代应用测试驱动。

这个才是可行的测试驱动。

------------------------------------------------------

第二代测试框架概述 TestDriven 2.0 Introduction

------------------------------------------------------

第二代测试框架,便是为了斟酌到80%的需求提出来的。除了是nunit+mock+ncover,我还引入了代码阐发、关联阐发、测试代码自动更新等技巧。

先瞻望一下美好的未来:

1. 我们开辟了一个新项目后,鼠标点击天生测试代码;就获得一个.testdriven文件夹,里面的测试代码自动根据您的代码之间关联排序,建立起根基到繁杂的关联测试。

2. 当我们完成第一个testcase的时刻,第二个已经自动筹备好了,而且完成了50%。逐步到着末最繁杂的测试代码,基础上已经自动完成了80%了。

3. 当我们发明项目开拓出来之后并不能相符实际需求,大年夜改之后,鼠标再轻轻右键点击更新测试代码,系统又自动阐发了代码的接口和上一次测试代码,自动合并更新出本次的测试代码;当然历史测试代码已经被打包归档了。

4. 当我们的系统稳定运行了n天之后,客户提出了新的需求,我们发明原有代码不能支持,必要改动接口。我们轻轻在必澳门新葡亰8455下载app要改动的措施点击查看影响范围,立即得到受到这个措施影响的dll。当改动完毕之后,系统自动根据影响范围自动对所有相关的测试用例进行回归测试;

这个便是我看获得的未来,也是到了今朝,微软还没有提出的未来!!收集有web 2.0,表现了各人之间的沟通,那么测试驱动也有2.0,表现了不合类之间的沟通。单元测试不再是自力的,而是互相关联的。

------------------------------------

Assert 2.0 技巧

------------------------------------

有人觉得我在吹,我可没有功夫花几个小时打一篇水文出来。接下来我就先容自己若何实现这个TestDriven2.0。首先最根基的,当然是Assert技巧,即所谓的断言。

传统我会应用Console.Writeline()进行测试。由于直不雅,直接从节制台看到结果。正如一名测试工程师说的,写一堆代码让系统判断,还不如直接打出来,人看。以是我先容的Assert技巧结合了nunit的优点和console的优点。

先看看效果,测试代码:

代码

namespace Pixysoft.TestDrivens

{

class Class1

{

public void test001()

{

new Assertion().IsEqual(123, new Class2().GetValue(null, 3));

}

class Class2

{

public Class2()

{

}

public double GetValue(Class2 value1, int value2)

{

return 123;

}

}

}

}

您可能还会对下面的文章感兴趣: