Team Test单元测试总结

 
单元测试是开发者编写的一小段代码,用于检验被测试代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,一个函数的功能是取得所指定范围数字内所有的素数,在测试代码中给一个测试数字范围,看函数的输出是不是你想要的结果,如果不是,则说明函数有问题。
 
编写代码时,一定会反复调试保证它能够编译通过。但通过编译代码的代码,只是说明了它的语法正确;却无法保证它的语义、所要完成的功能也一定正确,没有任何人可以轻易承诺这段代码的行为一定是正确的。编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。有了单元测试,我们可以自信的交付自己的代码,从而减少后顾之忧。
 
单元测试越早越好,早到什么程度?XP开发理论讲究TDD,即测试驱动开发,先编写测试代码,再进行开发。在实际的工作中,可以不必过分强调先什么后什么,重要的是高效和感觉舒适。个人觉得,先编写产品函数的框架,然后编写测试函数,针对产品函数的功能编写测试用例,然后编写产品函数的代码,每写一个功能点都运行测试,随时补充测试用例。所谓先编写产品函数的框架,是指先编写函数空的实现,有返回值的随便返回一个值,编译通过后再编写测试代码,这时,函数名、参数表、返回类型都应该确定下来了,所编写的测试代码以后需修改的可能性比较小。在代码完成后编写单元测试也可 
单元测试与其他测试不同,单元测试可看作是编码工作的一部分,应该由程序员完成,也就是说,经过了单元测试的代码才是已完成的代码,提交产品代码时也要同时提交测试代码。
以,只是当代码太多时对其要测试的内容可能会有所遗漏。
  
单元测试任务包括:
1. 模块接口测试:保存模块接口数据的输入和输出都是正确的。
2. 模块局部数据结构测试:保证临时存储在模块内的数据在程序执行过程中完整、正确,防止出现上溢、下溢、和地址异常。如果有必要还应该检查一下全局数据是否正确。
3. 模块边界条件测试:保证在边界值时,程序不会发生错误,可以针对边界值以及边界值左右设计测试用例。
4. 模块中所有独立执行通路测试:保证模块中每条语句至少执行一次,尽可能让测试用例经过每一个控制流和循环流。
5. 模块的各条错误处理通路测试:给出错误的测试用例,保证其能到达所需要的错误处理通路。
 
测试用例是单元测试的核心,它就是进行单元测试的输入数据,通过输入数
据判断实际值是否是预期值。用例设计方法有逻辑覆盖法和基本路径法。
u逻辑覆盖法
1.语句覆盖:设计若干个测试用例,使得每一可执行语句至少执行一次
2.判定覆盖:设计若干个测试用例,使得程序中的每个判断取真、假两个分支至少各一次。
3.条件覆盖:设计若干个测试用例,使得程序中每个判断的每个每个条件的可能值至少执行一次。
4.判定-条件覆盖:设计若干个测试用例,使得判断中的每个条件的所有可能值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。
5.条件组合覆盖:设计足够多的测试用例,使得每个判断的所有可能取值组合至少执行一次。
6.路径覆盖:覆盖程序中所有可能的路径。
 
u基本路径法
          基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
u构造测试用例的个人体会及经验
1.对上述两种方法的使用不会太明确,一般综合使用,构造尽可能全面的测试用例。构造测试用例前,先将程序方法所有的预期输入列出来,包括正确值、错误值、错误处理,根据结果去反构用例,一般对每一种情况至少构造出两个用例。
2.测试用使用,开始我是一条一条用,结果发现会多出很多重复的代码,后来我将用例值和期望值组织到两个列表中,使之一一对应,发现这样也不错。当然,可以根据实际情况来使用。
 
u 使用Team Test的一般步骤:
1.创建测试工程。对于要测试的项目建议将单元测试和程序分开,单元测试要建立单独的工程。
2.编写测试用例和测试代码。
3.运行测试程序,验证测试是否通过。
4.查看测试工程的代码覆盖率,理论要求代码覆盖率是100%。
5.如果代码覆盖率不能达到预期要求,重新编写更多的测试用例,直到达到要求为止。
 
u 通过实例演示Team Test如何进行单元测试
    Team Test可以针对类或类的属性、方法自动生成测试代码框架,下面以一
个类来说明如何使用Team Test来进行单元测试。
1.创建测试工程。创建测试工程时,可以从一个类或类中的属性、方法直接创建。当然当对其它类创建单元测试时,也可以指定到测试工程里。操作如下:在.NET编辑器中定位到类声明处,右键,在弹出菜单中单击Create Unit Test,在弹出窗体中选择要测试的类,在Output Project中可以创建一个新的测试工程,也可以指定到一个已存在的测试工程。另外可以通过Settings按钮来设置命名规则和测试单元的相关设置。设置好相关内容后,确定即可,这时系统会自动创建出测试工程以及测试单元框架。另一个方法是通过菜单中的Test->New Test来创建测试工程,大家自己尝试一下吧。
 
关于设置窗体中的选项说明:
Mark all test results Inconclusive by default:打开/关闭使所有测试结果在默认情况下为 Inconclusive 的功能。选择该选项将在每个生成的 Test() 方法中包含以下占位符语句。 Assert.Inconclusive("TODO: Implement code to verify target");
Eanable generation warnings:打开/关闭启用生成警告的功能 — 即,如果在代码生成过程中出现任何警告,都要进行报告。推荐使用此选项。

Globally qualify all types:在全局范围内限制所有类型。

该设置通知代码生成引擎将一个全局限定符(在 Microsoft Visual C# 2005 中是 global::)添加到变量声明中。当在多个命名空间中具有名称相似的对象时,请使用该设置。否则,代码生成引擎将创建逻辑来创建该对象,但是编译器不能确定创建哪个类,因此会产生错误。

Enable documentation comments:启用/禁用文档注释。

你可能感兴趣的:(杂项)