# 创建CodeArts TestPlan思维导图并生成组合用例
数据因子组合技术是解决多个测试因子如何组合成测试用例的技术，能够解决依赖手工组合生成用例时因子组合覆盖率不全、测试设计的功能不够丰富等遗漏问题。
测试因子是在测试过程中，该测试受到哪几种因素影响，比如环境、测试的方式以及测试难易程度等，有几种影响因素就有几个测试因子。因子组合的目的是为了在创建用例时能够覆盖多个测试因素，有助于避免测试遗漏。
#### 前置条件
需要创建带有"测试点"的节点，只有测试点可以进行组合。例如：测试手机的基本功能可以作为一个测试点。
![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001974428370.png "点击放大")
#### 通过添加动作因子、数据因子生成组合用例
在测试设计中，可以为节点添加"动作因子"、"数据因子"、"有效值"、"无效值"。
1. 进入已创建的思维导图。
2. 在顶部操作栏，单击"预期结果"右侧的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001968058561.png "点击放大")，将显示"动作因子"、"数据因子"、"有效值"、"无效值"。
3. 选中需要添加因子的节点（可以添加动作因子或数据因子，思维导图里动作因子和数据因子的最大添加数各为100个）。 
   单击思维导图上方工具栏中![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940939328.png "点击放大")。例如：在测试手机的基本功能中，用户可以配置"使用手机，在${测试时间}，使用${连接方式}，进行${测试动作}"作为一个测试流程，用户可以将${测试时间}、${连接方式}、${测试动作}设置为数据因子，方便覆盖各个场景的组合，避免手工组合的遗漏。
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001967938289.png "点击放大")
   
   
   
4. 添加有效值或无效值：为已添加数据因子的节点新增一个子节点，选中该子节点单击思维导图上方工具栏中![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940780032.png "点击放大")或![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001968058565.png "点击放大")。
   
   - 有效值：用户待测的系统中数据因子的正常取值。
   
   - 无效值：在数据组合中，无效值表示待测系统中的异常值，或者系统数据因子里允许范围之外的值。一个良好的测试模型，除了需要测试系统中有效的组合之外，还需要验证系统中的无效值，以确保程序正确处理错误。任何一条测试用例中只允许出现一个无效值，因为任一无效值都会使系统异常，所以一条测试用例出现多个无效值是无意义的。 例如：用户可以为${测试时间}、${连接方式}、${测试动作}并配置有效值或无效值。
     
   
   
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940939332.png "点击放大")
   
   
   
5. 添加动作因子：选中目标子节点，单击思维导图上方工具栏中![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001967938293.png "点击放大")。例如：可以将手机测试设置为一个动作因子。
   
   ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940780036.png "点击放大")
   
   
   
6. 选中待生成用例的TP节点，鼠标右键单击该节点，在下拉列表中选择"组合创建用例 \> 组合创建"。
   
   ![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
   读取打上"DF"节点的父节点，按照从上到下的顺序显示"DF"标签的有效值、无效值等相关信息。
   
   
7. 在"组合创建用例"的页面中，默认勾选思维导图中已设置的"动作因子"与"数据因子"信息。
8. 单击"下一步"。
9. 选择组合算法的卡片，单击"选用并生成预览"。组合算法介绍请参见下表： 
   
   | 数据组合覆盖类型               | 描述                                                                                                                                                                                                                                                        |
   |:---|:---|
   | 全组合（AC,All Combinations） | 每个测试因子所有取值进行全组合。AC是覆盖最全面的覆盖方式。                                                                                                                                                                                                                               |
   | N-wise(主要介绍pair-wise)    | 覆盖任意N个输入的组合方式，当N等于参数个数的时候就是全组合。 科学试验数据证明：当N=2时，生成的测试数据效率最高，因此当N=2时， pair-wise方法应用最多。                                                                                                                                     |
   | PairWise                | 与N-Wire同类型，适用于测试组合中有侧重点的场景，N取值为2。                                                                                                                                                                                                                          |
   | TripleWise                | 与N-Wire同类型，适用于测试组合中有侧重点的场景，N取值为3。相比于PairWise，覆盖组合更多。                                                                                                                                                                                                       |
   | 基本选择组合(BC, Basic Choice)  | 适用于测试比对单因素变化场景，基于原始生成的一个组合，每次更换一个数据因子的一个值，生成不同组合。 以基本组合为基础，通过修改对应数据因子的取值创建新的组合。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002107151661.png "点击放大") |
   | 单一选择组合(EC,Each Choice)   | 每一个测试因子的每一个取值在所有测试因子组合中至少出现一次。                                                                                                                                                                                                                              |
      
   若需要更换组合算法，可以单击"更换算法"重新选择。
   如果您回到思维导图中，对测试因子的节点进行修改或删除后，再次单击"组合创建用例"，需要单击"刷新因子"，同步变更后的信息。
   
   
10. （可选）用户可以在生成组合用例前，在弹框中勾选"数据约束"，设置算法为数据因子添加约束条件，可参考以下步骤： 
    1. 勾选"数据约束"后，单击"新增"。最多添加20个约束。
    
    2. 用户根据需要选择运算关系，变量名称选择要添加约束的数据因子，选择操作符，在下取值拉栏中选择对应数据因子的有效值或无效值。 单击![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002105047645.png)图标可以清空已设置的取值。
       
    
    3. 在条件表达式中可以查看配置的算法，单击"约束结果预览"查看生成结果。
    
    4. 单击"确定"，完成因子组合约束配置。
    
    5. 用户更新数据约束后，单击"刷新预览"。
    
    
    **举例**：
    Type：Primary、 Logical、Single、Span、Stripe、Mirror、RAID-5
    Size：10、100、500、1000、5000、10000、40000
    Format method：quick、slow
    File system1：FAT、FAT32、NTFS
    File system2：FAT、FAT32、NTFS
    Cluster size：512、1024、2048、4096、8192、16384、32768、65536
    Compression：on、off
    - **非条件约束**
      非条件约束表示参数及参数取值之间的约束。
      \[Size\] \> 10000，表示用例集中Size只能取40000。
      \[File system1\] \<\>\[File system2\]，表示用例集中File system1的值与File system2的值不能相同。
      \[Size\] \> 10000 and \[Compression\] ="on"，表示用例集中Size中只能取40000并且Compression只能为on。
      
    
    - **IF条件约束**
      使用 IF expr1 THEN expr2的形式进行配置，其中expr的形式为"\[数据因子\] 操作符 \[取值\]"。
      如增加约束 IF \[File system1\] = "FAT" THEN \[Cluster Size\] \<=4096; 预期结果中当File system1取值为"FAT"时，Cluster Size只能取512、1024、2048、4096。
      ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002070773604.png "点击放大")
      
    
    - **运用AND/OR/NOT** **关系**
      当算法更加复杂时，可以通过And、Or、Not来构造表达式，构造时需要加括号，否则约束解析将失败。
      如增加约束IF (\[File system1\] = "NTPS" OR (\[File system2\] = "NTPS" AND \[Cluster Size\] \<=4096)) THEN \[Compression\] ="off" ;当File system1为NTPS或者File system2为"NTPS"并且Cluster Size在512、1024、2048、4096取一个值时，Compression为off。
      ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002106624297.png "点击放大")
      
    
    - **运用IN/LIKE操作符**
      当需要使某个因子取值某一个值集合中时，可以通过IN操作符来构造约束。如IF \[File system1\] IN {"FAT","FAT32"} THEN \[Cluster Size\] \<=4096;
      当File system1取值为"FAT"时或者"FAT32"时，Cluster Size只能取512、1024、2048、4096，该约束等价于IF (\[File system1\] = "FAT" OR \[File system1\] = "FAT32") THEN \[Cluster Size\] \<= 4096
      ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002106649849.png "点击放大")
      LIKE表达式用于通配符匹配，支持\*字符、？一个字符，"FA\*"表示以FA开头的字符，"\*FA"表示以FA结尾的字符，"？A"表示含A的字符。
      如IF (\[File system1\] LIKE "FA\*") THEN \[Cluster Size\] \<= 4096;当File system1取值"FAT"或者"FAT32"时，Size只能取512、1024、2048、4096。
      ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002071020596.png "点击放大")
      ![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
      1. 约束中区分整形变量及字符串变量，当变量的取值为数字时，则视该变量为数字变量；当变量取值有任一不是数字时，则视该变量为字符串变量。
      
      2. 对两个数据因子使用操作符进行约束时，\[数据因子1\] 操作符 \[数据因子2\]，数据因子1必须与数据因子2同类型。 ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002107216541.png "点击放大")
         
      
      3. 整形变量间添加约束不支持LIKE操作符。字符串变量间添加约束不支持\>、\<、\>=、\<=操作符。
       
      
      
    
    
    
    
11. 在"组合预览结果"列表中，勾选需要创建的数据组合。 
    鼠标悬浮在第一个勾选框，可以全选所有数据或全选当前页数据，单击"下一步"。
    ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000002040843806.png "点击放大")
    
    
12. 在"配置用例"页面中，输入以下信息： 
    - 用例名称：名称默认为TP节点名称_${数据因子}的格式。
    
    - 用例编号：用例编号根据填写规则，递增生成。
    
    - 用例等级：选择P0\~P4。
    
    - 用例描述：输入1-500字符长度的描述信息。
    
    - 前置条件：输入1-2000字符长度的前置条件信息。
    
    
    
    
13. 在编写测试步骤中，可以通过"$"的方式进行引用数据因子，单击"确定"。 
    ![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940939336.png "点击放大")
    
    
    
14. 单击![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001967938297.png "点击放大")，可以查看用例列表。
15. 用例列表将默认显示生成的测试用例列表，选择"组合策略列表"，可以查看使用组合算法的历史。
16. 单击需要归档用例的操作列![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940780040.png)图标，单击"归档"。其他用例操作如下：
    
    - 归档多个用例：在用例列表中，勾选多个需要归档的用例，单击下方"归档"。
    
    - 编辑用例：单击操作列中的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001968058573.png)图标，可以查看、编辑用例详情。
    
    - 删除用例：单击需要删除用例的操作列![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940939340.png)图标，单击"删除"。
    
    - 批量删除：在用例列表中，勾选多个需要归档的用例，单击下方"删除"。
    
    - 搜索用例：在用例列表的搜索栏中，输入用例名称的关键字，单击![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001967938305.png)。
    
    - 过滤用例：单击用例列表下的下拉栏，可以根据"所有"、"未归档"、"已归档"进行过滤用例。
    
    
    
    
17. 在"归档用例"页面中，在左侧勾选目标用例，在右侧选择归档到的版本、测试计划，选择执行方式和测试特性目录，单击"确定"。
18. 在导航栏单击"测试 \> 测试用例"，选择版本、测试计划、目标用例类型页签，查看已归档的用例。
#### 通过因子库生成组合用例
**创建因子**
1. 单击导航栏"测试 \> 测试设计"。
2. 单击页面右上方"测试因子中心"。
3. 根目录下无法新建因子，需要创建文件夹：单击因子库根目录的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940780044.png)图标，单击"新建文件夹"。
4. 输入文件夹名称：输入应符合非空字符且长度在\[1,500\]之间的文件夹名称。
5. 单击创建完成的文件名称，单击"新建因子"。
6. 配置以下信息后，单击"确定"。 
   
   | 配置项     | 是否必填 | 描述                                                                                   |
   |:---|:---|:---|
   | 因子名称     | 是     | 输入因子名称，不超过500个字符。                                                                    |
   | 因子类型      | 是    | 选择"数据因子"或"动作因子"。                                                                   |
   | 因子描述      | 否      | 对因子进行简要描述，请输入不超过500个字符。                                                             |
   | 前置条件       | 是      | 因子类型选择动作因子后，输入前置条件。                                                                   |
   | 测试步骤    | 是    | 因子类型选择动作因子后，可以输入步骤描述、预置结果，不超过5000个字符。单击操作列中的+，可以添加多个测试步骤。                             |
   | 数据类型     | 否     | 默认为String类型。                                                                         |
   | 有效值/无效值 | 否       | 因子类型选择数据因子后，可以输入有效值或无效值。 单击"增加选项"，可以添加多个有效值或无效值。 |
   | 备注       | 否     | 输入备注信息，请输入不超过500个字符。                                                                |
      
   
   
7. 新建成功的因子显示在文件夹列表中，可以对因子进行如下操作： 
   - 复制因子：单击需要复制因子所在操作列的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001968058577.png)图标，在页面中可以修改因子的相关信息，单击"复制"。
   
   - 编辑因子：单击需要复制因子所在操作列的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940939344.png)，在页面中可以修改因子的相关信息。
   
   - 删除因子：单击需要复制因子所在操作列的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001967938309.png)，单击"删除"。
   
   - 批量删除因子：勾选需要删除的因子，在下方单击"删除"。
   
   - 导出因子：勾选需要导出的因子，在下方单击"导出"，可将所选因子信息表格保存到本地。
   
   - 过滤因子：单击新建因子右侧的下拉栏，可以选择全部、我创建的、动作因子、数据因子进行过滤。
   
   - 搜索因子：在上边搜索栏内，输入因子名称的关键字。
   
   - 编辑因子列表的表头：单击因子列表操作列的![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001940780048.png)图标，在弹框中勾选需要显示的列名称，在右侧已选列可以调整显示顺序。
   
   - 导入：单击右上方"导入"，在弹框中单击"下载模板"，将模板表格下载到本地。编辑完成后，在弹框中单击![](https://support.huaweicloud.com/usermanual-testman/zh-cn_image_0000001968058581.png "点击放大")选择本地文件，单击"确定"。
   
   - 修改归属目录：勾选需要转移的因子，在下方单击"修改所属特性"，在弹框中选择需要转移的目标目录，单击"确定"。
   
   
   
   
**思维导图关联因子库**
1. 单击导航栏"测试 \> 测试设计"。
2. 新建或选择目标思维导图。
3. 选中需要关联因子的节点，右键单击该节点，在下拉栏中单击"组合创建用例 \> 关联因子"。 
   ![](https://support.huaweicloud.com/usermanual-testman/public_sys-resources/note_3.0-zh-cn.png)
   需要选择带有测试点的节点进行关联，否则无法关联因子库。
   
   
4. 在关联因子库页面中，勾选需要添加的因子，单击"确定"，添加成功的因子将显示在思维导图中。
5. 生成用例的后续操作可参考[6]。
 
#### 相关文档
关于如何使用思维导图批量生成并归档测试用例的最佳实践，可参考[基于需求策略使用测试设计](https://support.huaweicloud.com/bestpractice-testman/cloudtest_14_0009.html)。
