基于趋势的XPath综合基准测试
立即解锁
发布时间: 2025-08-23 00:24:06 阅读量: 2 订阅数: 7 

### 基于趋势的XPath综合基准测试
#### 一、XML文档生成器的控制因素
在XML文档生成过程中,有多个控制因素会影响生成文档的结构和内容,下面为大家详细介绍:
1. **分支度(Bushiness)**:指每个元素节点的子元素数量,用于控制生成树的宽度。
2. **属性数量(Number of attributes)**:控制每个元素可拥有的属性数量。
3. **密度(Density)**:表示生成节点数量相对于完整树节点数量的百分比。例如,密度为50%时,生成的树的节点数量是相同深度、分支度和根节点子节点数的完整树的一半。
4. **魔法级别(Magic level)**:是树中魔法节点出现的层级。区分魔法节点和普通节点可控制查询结果的大小。例如,将魔法级别设置为5,会生成一些‘EMagic’节点(具体数量取决于选择性);设置为0时,所有层级都会插入魔法节点。
5. **选择性(Selectivity)**:指在魔法级别控制因素指定的层级中,魔法节点所占的百分比。例如,选择性为20意味着该层级中20%的节点(随机选择)将是魔法节点。
6. **魔法位置(Magic Positions)**:XPath查询不仅可以定位元素节点,还能定位属性和文本节点。此控制因素指定魔法节点的位置,有四个选项:元素名称、属性名称、属性值和文本。
7. **魔法长度(Magic length)**:默认情况下,元素和属性名称长度为单个字符,魔法节点会附加字符串“Magic”。该控制因素为魔法节点添加指定长度的后缀,有助于评估匹配长字符串和短字符串的影响。
8. **文本长度(Text length)**:控制文档中文本节点的长度,长度范围从0(表示无文本节点)到任意选定长度。
9. **随机名称(Random name)**:默认情况下,同一层级的非魔法元素名称相同。该控制因素增加元素名称的多样性,选择该因素时,会在常规名称末尾附加一个随机数,使节点名称不同,这会影响元素索引。
#### 二、基准测试
由于XML文档生成器的控制因素众多,且每个因素有广泛的设置范围,全面测试所有组合不可行。因此,设计了一套小而有代表性的测试用例,每个测试用例旨在评估一个控制因素对XPath查询性能的影响。采用趋势测试,可比较系统处理XML文档或XPath查询特定属性的能力。
基准测试有15个测试用例,分为三组:
1. **树形状组(Tree Shape Group)**:关注改变树结构形状的方面,如树的深度和宽度。
- **胖而扁平的树(文本值)(Fat, flat tree (text value))**:改变根节点子节点数量,创建“宽肩膀”的树,查询访问树叶子节点的文本值。
- **胖而扁平的树(属性值)(Fat, flat tree (attribute value))**:改变根节点子节点数量,创建“宽肩膀”的树,查询访问叶子元素的属性值。
- **树深度(Tree depth)**:改变XML文档树的深度。
- **树宽度(Tree width)**:改变树的宽度。
2. **树数据组(Tree Data Group)**:关注与XML文档内容相关的方面,如魔法级别、选择性和文本长度。
- **魔法级别(Magic level)**:改变魔法节点的放置层级,查询通过魔法节点进行。
- **选择性(Selectivity)**:改变魔法节点的百分比,控制查询选择的节点数量。
- **文本长度(Text length)**:改变文档中文本值的长度。
- **随机名称(Random name)**:对具有随机元素名称和固定元素名称的文档运行相同查询。
- **属性数量(Number of attributes)**:改变每个元素的属性数量,查询选择这些属性。
- **魔法长度(Magic length)**:改变后缀长度,创建长名称的元素。
- **魔法位置(Magic position)**:改变魔法节点的位置(元素名称、属性名称、属性值和文本/元素值),查询针对定位魔法节点进行定制。
3. **XPath属性组(XPath Property Group)**:关注XPath提供的不同定位路径和函数。
- **XPath查询类型(XPath query type)**:测试不同轴的XPath查询。
- **短路评估(Short-circuit eval.)**:测试查询引擎在谓词中是否进行短路评估。
- **步骤与谓词(Steps vs. predicates)**:比较步骤和谓词的效率。
- **字符串函数(String function)**:测试各种XPath字符串函数的效率。
具体测试用例的名称、描述及控制因素设置如下表所示:
|测试用例组|测试用例名称|描述|
| ---- | ---- | ---- |
|树形状组|胖而扁平的树(文本值)|改变根节点子节点数量,创建“宽肩膀”的树,查询访问树叶子节点的文本值|
|树形状组|胖而扁平的树(属性值)|改变根节点子节点数量,创建“宽肩膀”的树,查询访问叶子元素的属性值|
|树形状组|树深度|改变XML文档树的深度|
|树形状组|树宽度|改变树的宽度|
|树数据组|魔法级别|改变魔法节点的放置层级,查询通过魔法节点进行|
|树数据组|选择性|改变魔法节点的百分比,控制查询选择的节点数量|
|树数据组|文本长度|改变文档中文本值的长度|
|树数据组|随机名称|对具有随机元素名称和固定元素名称的文档运行相同查询|
|树数据组|属性数量|改变每个元素的属性数量,查询选择这些属性|
|树数据组|魔法长度|改变后缀长度,创建长名称的元素|
|树数据组|魔法位置|改变魔法节点的位置(元素名称、属性名称、属性值和文本/元素值),查询针对定位魔法节点进行定制|
|XPath属性组|XPath查询类型|测试不同轴的XPath查询|
|XPath属性组|短路评估|测试查询引擎在谓词中是否进行短路评估|
|XPath属性组|步骤与谓词|比较步骤和谓词的效率|
|XPath属性组|字符串函数|测试各种XPath字符串函数的效率|
|测试用例组|根节点数量|深度|分支度|属性数量|魔法级别|选择性|魔法位置|魔法长度|文本长度|随机名称|XPath|
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|树形状组 - 胖而扁平的树(文本值)测试|Vary|2|5|0|1|1%|T|3|10|No|Desc.|
|树形状组 - 胖而扁平的树(属性值)测试|Vary|1|1|5|1|1%|AV|10|0|No|Desc.
0
0
复制全文
相关推荐







