白盒测试环境主要有驱动、桩、测试用例和测试结果四个部分,测试环境模型如下:
上图可以看出,被测模块通过桩的支撑,被测试驱动通过预定的测试用例控制运行,由于被测模块的运行过程是可控状态下的,所以其结果是也可预期的,使驱动最终自动给出测试结果成为可能。
按上图的提示,完成一个简单的软件模块(比如单个函数或者几个函数)测试是比较轻松的事,但是事实上我们面临的测试往往是针对一个大的项目的,不是几个函数那么简单,大的项目中模块一般分好多种类并且可扩充的。所以我们在搭建测试环境的时候还需要考虑很多问题,比如测试驱动的扩展、用例的扩展、回归测试的自动实现等。下面基于IPLD平台测试项目,就如何搭建一个相对完美的测试环境进行技术的探讨。
1、被测项目分析
XLD平台是####装置保护程序运行平台,为装置上应用程序的运行提供底层功能支撑,该平台包含多个模块,每个模块下面有多个函数,这些模块和函数都是可以扩展的。下面列出两个模块进行示例(每个模块暂列出两个函数):
1)双向链表模块
对应头文件:lb.h,实现文件:lb.c
包含函数:增加节点函数:Lb_add 删除节点函数:Lb_del
2)数据队列模块
对应头文件:gm.h,实现文件:gm.c
包含函数:初始化函数:gm_init() 周期发送函数:gm_retranse
2、测试用例设计
作为参数或者其他条件,通过驱动控制被测模块按特定的路径运行,达到测试要求。
考虑到回归测试及团队协作等因素,用例的设计采用和代码脱离的原则,这样一方面修改测试用例的时候不用重新编译代码,另一方面测试组内成员可以在各自测试范围内设计自己的测试用例。由于测试用例的量不是特别大,还不至于需要用数据库,所以测试用例采用文件的方式实现。
这里用例文件采用配置文件(后缀名*.ini)格式,比如双向链表模块的测试用例,设计如下:
文件名”双向链表.ini”
文件内容按被测函数分块,每一块代表一个函数的测试用例,如下:
[Lb_add]
用例1 = 用例1信息
用例2 =用例2信息
[Lb_del]
用例1 = 用例1信息
用例2 =用例2信息
出于便捷和可维护性考虑,这里测试用例定义统一的文件格式。我们可以在驱动中设计可重用的用例读取函数,以便测试组内人员重用。比如设计这样一个可以根据文件名、段名、用例号读出需要的测试用例信息函数,示例如下:
用例1信息= ReadsysCfgData(“双向链表.ini”,“Lb_add”,“用例1”)。