2.测试用例管理方案设计
若再加上边界数据要测试的数据组数就更多了,一般CXXUNIT系列编写的测试代码是每组测试数据(其实一组数据就对应一个测试用例)都要编写初始化代码,然后调用相应功能函数测试。这样导致:
在自动测试的整个过程中,测试用例的可维护性会影响到将来测试用例增加的难易度,良好的自测程序应能很方便的扩充测试用例。
在采用CXXUNIT系列测试工具开发测试代码时,对于一些简单的测试可以测试用例就嵌在测试代码中。但当某一个功能或函数要进行很多组数据(如边界数据)的测试时使用这种方法就得重复编写测试代码,可能每增加一个测试用例就要编写大量的重复测试代码。
举例:要测试周期会议预约功能的代码,要测试以下几组数据:
1)每日召开的周期会议
1.1)按召开次数预约的周期会议
1.2)按开始时间、终止时间预约的周期会议
2)每周召开的周期会议
……(内容和1.1、1.2一致)
3)每月召开的周期会议
……(内容和1.1、1.2一致)
4)每年召开的周期会议
……(内容和1.1、1.2一致)
随着测试数据组数的增加,将出现大量做重复动作的测试代码,这些测试代码之间唯一的不同是由于初始化的数据不一样而已。
当一个功能只需一两个测试用例时,测试用例嵌入在测试代码中可以进行控制和管理,当一个功能测试时需要大量的测试用例时(见举例),大量的测试用例嵌在代码中将很难管理,你要知道某个用例是否已经有了还得去遍历测试代码比较麻烦。
2.1测试用例目录结构
为此很有必要设计一套能良好管理和添加测试用例的体系结构。
当一个功能有很多组测试数据时,我们可以将测试用例数据全部存放在文件中,使测试用例和测试代码分离开。由于测试用例脱离测试代码而存在,可以很方便的进行管理和维护。我们可以为每个要测试的函数(或功能)建个目录,每个测试用例放在一个单独的文本文件中,将所有对应于该函数的测试数据文件全部放入该目录下,当测试数据量很大时还可以在目录下再创建相应的子目录,分类进行管理。这样可以方便测试用例的管理,而测试程序也只用专注于测试逻辑。还以测试周期会议预约功能的例子为基础进行讨论。
图2-1 测试用例目录结构图
由图2-1上可以看到,当某个函数(或功能)的测试用例很多时,还可以在“某功能测试用例总目录”下再使用子目录来划分,若觉得划分不够细还可以继续加深目录层次,直到分类比较清晰为止。
由于测试用例数据和测试代码进行了分离,以后对于某个函数(或功能)有了新的测试用例时不用再去修改测试代码,只需在该功能的测试数据目录下添加新的测试用例文件即可。该功能的测试程序每次运行时对于相应测试数据目录下的每个测试用例文件(包括各级子目录下的用例文件)都要执行一遍。
使用了目录结构对它们进行了分门别类方便了以后的管理,正如良好的程序应具有好的可读性和维护性一样,良好的测试数据也应具有好的可读性和维护性。