




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+ Test 之 RuleWizard 使用心得*关键字:C+Test Rulewizard Python难易度:中软件版本:Parasoft C+ Test 6.5时间:2005-11-23Author:Kino*一.介绍一下C+Test吧(这一部分请允许我ctrl + c/v )是单元测试和静态分析工具,自动测试C和C类别、功能或组件,而无需编写单个测试实例、测试驱动程序或桩调用。只需点击按钮,C+Test即会采用业内编码标准执行代码的静态分析,测试代码构造(白盒测试),测试代码功能性(黑盒测试),并保持代码完整性(回归测试)。可以巡行在Windows 2000/XP、Linux、Solaris 7, 8, 9平台之上。她的主要功能可以参见下边的链接网页:/cn/products/software_engineering/unit_testing/parasoft/ctest.html这里我想说明的不是C+Test有多么好用,而是要说明她内置的RuleWizard定制编码机能。那么什么才是RuleWizard呢?他到底能干什么?二.RuleWizardC+Test内置了300多个静态测试项,一般的情况下其实也就够用了。但是如果有特殊的测试要求,动辄几十K的代码,用眼睛看,脑子想,太辛苦,也不“安全”。那么使用rulewizard定制自己的规则还是很有用的。我们首先要明确,rulewizard定制的是 不成功 的情况。也就是应该被排除的。Rule的创建有2种方式,一种是手工写规则,另一种是写入需要剔除的代码,让rulewizard去帮你生成规则(最好别用,弱弱的autocreate)。我这里主要重点放在自己写规则方面。Rulewizard的界面如下图:图1。RuleWizard界面 右边的就是我们写的规则。那么我们先来大概的介绍一下rulewizard定义的基本组成部分吧。(实在不太会翻译,那么就沿用英文名字了,请大家多多包涵)Node:规则的基本组成部分,通过Node你可以很清楚的知道它的功能。比如表达式a=b、变量的类型测试。分为:parentNode:规则中的主分支Node或者次分支的主Node。内容可以是表达式、变量、函数等childNode:规则的组成单元。Commands:用来在Node和Nodes之间建立关联关系。形象一点就是点中一个Node然后右键显示出的快捷菜单的上半部分。如下图: 图2介绍一下主要的CommandCollector:集合。这个概念更像数学中的集合而不是Java中的广义集合。满足一定条件的数据或者方法或者变量的全体。比如,所有被声明过的变量,如下图图3isDecl是用来返回前边的node是不是一个声明。那么body的membervariable返回了所有的包涵指定类型变量得语句(包括 变量付值、声明、判断等)那么这个图被理解为,所有不是声明得语句内使用的变量的集合。没有被声明的变量,如下图。图4这里的意思是所有作为声明语句的变量的集合。 那么通常情况下,A集合和B集合应该是相等的,也就是说所有被声明过的变量(B集合内容)应该都被使用/付值/判断(A集合的内容)。那么对于存在声明了但没有被使用的变量的特殊情况应该怎么样表示呢?Node Set:Node对Node集合的处理。分为Union(合并)、Intersection(交叉)、Difference(差值,左差/右差)、Xor(异或)。如下图:图5如果 满足这个规则,那么输出相应得警告信息。 Output:如果满足check的条件,向用户返回一个消息(箭头表示) 三Python 这里python是用来给rulewizard作补充的一个脚本语言。通过python可以定制一些特殊的,rulewizard的node不能完成的规则。Python可以使用2种方式被加入到规则中:作为一个输出:如果规则没有被遵守那么可以调用一个违反规则的方法。(类似于输出错误消息,只不过这里用来启动一个方法而已)作为一个单独的方法组件:其实就是一个方法而已。比如,以上图为例子,如果我们不判断B和A的大小关系,就是想打印一下A、B的内容,那么就得到如下的图: 图6 其中Method的内容是:def showCollectorContext(node,context): a = context.getList(A) b = context.getList(B) context.report(Ds Context is + str(a) + Cs Context is + str(b)那么在c+test进行测试的时候就会得到输出我们需要的内容。关于python的语法我这里就不写了,毕竟和这篇文章的内容美关系。如果想要了解,可以去下载相关资料,我这里建议使用Orielly的Python in a Nutshell。四不足点作为一个能自定义规则的静态测试工具,不得不佩服parasoft兄弟们的才智。但是我觉得还有一些改善点的:(当然也不排除,已经有,但我没有发现的情况,如果各位知道请指教,谢谢先)1 通过pyhon我们可以干涉规则的制定,比如,对于上例变量的确定,如果们不使用collect set的Difference|left menus(就是图4中最下的那个6边形),而用python一样的可以对比2个List。但是就像他提供的功能是静态测试一样,这里我们得到的永远是经过处理的集合。而不能把python插入检测的循环中,不能一次得到一个变量,做点操作然后等下次的变量。2 集合的概念在这里有 他的优点,也有缺点,如果我们想要明确的得到代码里相同变量的出现次数,那么通过现有的rulewizard是得不到的,因为我们得到的集合总是经过“合并”的、没有重复的数据结构。3 就我看到的资料,所有的内置的node都没有为用户提供接口。不能够把通过python的处理结果正确的传递给内置的node。感觉所有的python做成的node都是“叶子”。4 技术支持和官方论坛人气低到,看了浑身发抖的地步。没有交流,没有讨论。不知道是不是因为太贵的原因。噢对了,都忘了一个很关键的问题:集合的1 2 3 4 5。都代表什么意思。这个数字又是如何产生的呢?第2个问题:在rulewizard中,以当前的collector所指向的node为起点,递归的数到根,然后+1,就是数字的最大上限,比如:图1种的B集合所在的node是第3级,那么数字最大就是3;图3中的A集合所在node是第2级,那么数字最大就是2。第1个问题:首先对于不同的node产生的集合其可选种类(数字)不尽相同:总结的活计还没干,先提一下1、2、3一般情况下都表示什么吧。1 - 集合只有一个元素,就是最后匹配的那个,以往的匹配元素都被清空。2 - 集合记录下一个TestCase的所有匹配参数。3 - 集合记录下所有此类TestCase的匹配参数。举个例子吧:有如下的一个方法A,其设定参数分别为abcd,即测试a(b)结构string a,b,c,d;methodA(a,b);methodA(b);methodA(d);如果我们要匹配方法A内出现的参数,并将其作为一个集合。那么:1 得到3个匹配结果,分别为:b b d找到一个参数记入集合,再进行下一个参数查找之前清空集合。2 得到3个匹配结果,分别为:a,b b d找到a(b)结构并且a=methodA里所有的匹配的参数,放入集合,排除重复的。3 得到3个匹配结果,分别为:a,b a,b a,b,d找到整个文件里所有a(b)结构并且a=methodA的方法调用中的参数,放入一个集合,排除重复的。总结:这里的数字就是表示了一个范围,范围的起点不是当前的node,而是当前的parent Node。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子曰当仁不让于师课件
- 年度岗前安全培训模板课件
- 子宫先天发育畸形课件
- 年度安全培训简讯课件
- 娱乐化安全培训课件
- 临汾市级机关遴选公务员笔试真题2024
- 威宁县回族刺绣课件
- 姚坪乡安全生产培训会议课件
- 平面图上的方向课件
- 农发行岳阳市华容县2025秋招笔试热点题型专练及答案
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 足太阳膀胱经(经络腧穴课件)
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
- 消防喷淋系统设计合同范本
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 山西省太原三十七中2023-2024学年九年级上学期月考物理试卷(10月份)
- (幻灯片)世界各国国旗大全中文
- 物流地产发展前景分析
- 三年个人成长路线图:高中数学名师工作室
- 子宫动脉栓塞护理查房
评论
0/150
提交评论