8.Run元素用来定义要运行哪些测试,包含一个或多个Test,另外还可以通过Logger元素配置日志来捕获运行结果。当然,Logger 也是可选的。
<Run name="DefaultRun">
<Test ref="TheTest" />
<Logger class="logger.Filesystem">
<Param name="path" value="C:\peach\logtest" />
</Logger>
</Run>
上例表示程序运行"TheTest"这个测试,并且把运行日志记录到C:\peach\logtest 目录下。
11.4.2 数据间的依存关系的描述
在实际的测试过程中,并不是所有的数据都是可以随意产生的,比如数据校验值、数据长度等字段都是要进行计算才能得到。如果自己去计算这些数据,将是一个费事、烦琐的工作。在Peach的Peach Pit文件中,可以用Relation元素来表示数据长度、数据个数以及数据偏移等信息。
其格式为:
<Relation type="size" of="Data" />
<Relation type="count" of="Data" />
<Relation type="offset" of="Data" />
同样,数据校验值也可以通过Fixup元素来表示。Fixup支持的校验类型包括CRC32、MD5、SHA1、SHA256、EthernetChecksum、SspiAuthentication等,具体细节可以参考Peach 的官方文档。
Fixup的格式为:
<Fixup class="FixupClass">
<Param name="ref" value="Data"/>
</Fixup>
其中FixupClass可以为checksums.Crc32Fixup、checksums.SHA256Fixup 等。下面看一个示例,假定有如下的一个数据模型,如表11-2所示。
可以看出,这里有两个数据需要定义依存关系。第一个是首4个字节的数据,表示Data数据段的长度,可以用<Relation type="size"of="Data"/>这样的依存关系表述。第二个是最后4个字节的数据,表示Type和Data两个数据段的CRC校验,可以用<Fixup class="checksums.Crc32Fixup"/>这样的依存关系表述。考虑到需要将Type和Data这两个数据段合并到一起作为Fixup的参数,可以增加一个名为"TypeAndData"的Block,将Type和Data放到该Block里,这样便可以用TypeAndData作为Fixup的参数。于是表11-2的数据模型的DataModel可以定义如下:
<DataModel name="HelloData">
<Number name="Length" size="32">
<Relation type="size" of="Data"/>
</Number>
<Block name="TypeAndData">
<String name="Type" size="32"/>
<Blob name="Data"/>
</Block>
<Number name="CRC" size="32">
<Fixup class="checksums.Crc32Fixup">
<Param name="ref" value="TypeAndData"/>
</Fixup>
</Number>
</DataModel>
实际的使用过程中,Peach pit中的数据依存关系可能更加复杂,用户可以根据实际的需求自行编写描述信息,必要时可以在Peach框架中添加新的数据类型和校验算法,完成数据定义需求。