测试工具补充
在这里,按照开发V模型来分别讲讲几个对应的自动化测试工具。
1,在软件开发初级阶段,对应于代码做静态分析。目前很多的企业都没有做静态分析,甚至还有企业不太明确静态分析。在这里给大家推荐的工具是QAC和PC-lint。
PC-lint在国内的用户基础比较好,这个工具出来的比较早,由一个大学教授编写,而且价格也不贵,只有命令行模式是它的局限性,检查的代码规则不多。目前有部分企业用这个工具做代码静态分析。
QAC这个工具进入国内也有一段时间,不过推广力度不是很大,目前这个工具在外资企业的研发部门的推广的比较好,国内的一些大企业和一些测试评测中心也在使用该工具,该工具使用起来比较方便,界面形式,也支持命令行模式,还有是MISR的标准制定者之一,所以比较有权威性,专业性很强,在国内也有很好的技术支持。价格相对来说就比较贵了。
2,然后动态单元测试这块,可以看看parasoft旗下的几款产品,有分别针对java语言的,C++语言的版本。该工具使用起来还比较方便,是基于Eclipse框架开发的,界面友好,功能也比较强大,在上海有office.当然就是价格不太让人接受。
当然如果只是要做内存泄露这块,可以了解一下parasoft旗下的一个工具insure++。这个工具可以实施监控内存的一个使用情况。
如果是做嵌入式这块单元/集成测试,用户与也可以使用IPL的Cantata++和IBM的RTRT,这两个工具在针对嵌入式这块的单元/集成测试比较强大,特别是Cantata++还支持自动的打桩,封装,这个也是该工具的一个亮点。
上篇中提到要对这几个概念做说明的,这这里作个补充:就CANTATA++举例:
1)打桩是对被测函数外部调用的替代,是用来对没有开发的或用户开发的模块进行模拟。对系统函数,由于Cantata++已经作了移植,都可直接使用,不用也不能打桩。不能打桩时,接口数据无法验证。
2)使用封装的before功能,可检测对外部调用的参数数据、全局数据是否满足测试时的要求;并且可以修改参数、全局数据的值,使得外部函数按照测试的要求运行。例如嵌入式应用中经常将一个数据转换为指针,然后使用指针操作相关的内存数据,但在主机环境测试时,由于内存保护,指针指向的地址为空,程序就飞了。在这种情况下就可以使用before功能定义变量,将变量的地址传送给被调用的函数,从而完整地验证功能和覆盖率。
3)使用封装的after功能迫使外部调用返回很难实现或无法达到的条件,从而使被测模块的功能和分支都得到验证。如在主机环境下对malloc函数封装,在一般情况下是无法实现返回空指针的结果。利用Cantata++封装的after功能修改返malloc函数返回值为NULL指针,这样被测函数的错误处理功能得到验证。
3,如果需要对代码做一个质量度量,推荐使用一个质量度量工具McCabe,这个工具不需要执行代码就可以完成代码走查,对代码有一个深层次的代码度量,提供多达几十种度量。操作起来很方便,只是要熟悉这个产品,需要对产品有一定的理解,对项目管理有很大的帮助。