ASP.Net单元测试
作者:软件测试工程师 发布时间:[ 2010/8/27 11:39:42 ] 推荐标签:
3.2 单元测试代码的写法
在编写单元测试代码的时候需要认真的考虑以下几个方面:
l 所测试的方法的代码覆盖率必须达到100%。
2 所测试的代码内部的状态,例如执行了某个方法之后,该方法所在的类中某个属性或者返回值是否与预期相同。
3 被测试代码所使用的外部设备的状态,如数据库是否可读、网络是否可用、打印机是否可用、WebService是否可用等等。
每一段单元测试代码,必须考虑到以上的三个问题,并且对于这些问题都要有相应的测试。
3.2.1 代码覆盖率要求
在2.5小节中已经讲了什么是代码覆盖率和代码覆盖率查看的方法。在这里我们着重来讲怎样将代码覆盖率提升到100%。
一般情况下,代码覆盖率低,说明测试代码中没有过多的考虑某些特殊情况。特殊情况包括:
l 边界条件数据,比如值类型数据的大值、小值、DBNull,或者是方法中所使用的条件边界,例如a>100那么100变成了这个数据的边界。而且在测试的时候还必须把超出边界的数据作为测试条件进行测试。
2 空数据,一般空数据对应于引用类型的数据,也是Null值。
3 格式不正确数据,对于引用类型的数据或者结构对象,类型虽然正确但是其内部的数据结构不正确的数据。例如一个数据库实体对象,数据库中要求其某个属性必须为非空,但是这时我们可以属于一个空。这样这个对象属于一个不正确数据库。
这三种数据都是针对被测试方法中所使用的外部数据来说的。方法中使用的外部数据无非是方法参数传入的数据和方法所在的对象的属性或者字段的数据。因此在编写测试代码的时候必须将这些使用到的数据设置为上面这几种情况的数据来检测方法执行的情况。这才能保证方法编写是正确的。
在编写单元测试代码的时候先了解到被测试方法可能会使用的外部数据,然后将这些外部数据一次设置为上面规定的这几种情况,然后再执行方法。这样基本可以达到外部数据所有情况都能够正确测试到了。
通过这种方法编写的单元测试代码覆盖率一般可以超过80%。
3.2.2 预期值是否达到
在编写单元测试的时候,不能单纯的追求代码覆盖率。有时候代码覆盖率已经达到了100%,程序也能正常运行,但是可能会出现方法执行完毕之后某些数据并非预期的数值。这时必须对执行的结果进行断言。在.NET提供的单元测试模块中,可以在单元测试中直接使用一个类的一些静态方法来判断某个值是否达到了预期的情况。这个类是Assert。在这个类中公开了很多判断等效性、判断开关性、判断非空性等一系列方法。这些方法可以让你提前做出预测,一旦程序执行之后,如果这些断言不能通过,代表代码有错误。
在使用断言的时候,我们要求要达到平均5行测试代码要有一个断言。
通过添加断言,我们可以对程序执行过程中数据的正确性做一个检测,保证我们的程序不出现写错数据的情况或者出现错误状态的情况。
3.2.3 外部设备状态更改时测试是否正常通过
当代码覆盖率和预期值都达到了我们的要求之后,整个程序其实基本达到了质量标准。但是这样还不全面,因为很多程序都要使用到外部的设备或者程序,例如数据库、打印机、网络、串行口、并行口等等。当这些设备发生改变或者不可用的时候,程序可能出现一些不可预知的错误。因此一个健壮的程序也必须考虑到这些情况,这时通常都是通过将这些设备确定的设置为这些不正常状态来检测程序可能会出现的问题。然后再在测试程序中将这些条件加上。
上面所介绍的只是简单的单元测试的入门级别的要求,当然真正的单元测试还有很多更加复杂的要求和测试技巧。但是对于一个初学者而言,如果能达到上述的要求,那么你的代码的健壮性应该能够满足大部分要求了。只是在比较标准的工业化开发的时候,才需要将单元测试继续深化。如果有时间的话,我会在以后再详细阐述较深层次的单元测试方法。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11