
# 典型测试设计方法介绍
测试设计是测试活动中起到承前启后作用的重要环节，根据测试计划分析测试对象、测试场景、测试类型、测试环境等，根据测试策略选取合适的测试方法和测试技术，设计测试用例。测试设计有场景分析法、等价类划分、边界值分析、因果图、判定表、正交法等方法。灵活运用测试设计方法可以帮助减少测试用例冗余，提高测试覆盖率、用例可维护性、用例复用程度，减轻无效的测试执行工作量，改进测试效果。
#### 等价类划分
把系统输入数据划分为若干等价类，在每个等价类内部，选择所有输入数据进行测试与只选择其中一个输入数据进行测试是等价的。如果一个输入数据不能发现系统错误，则该等价类内部的其它所有输入数据都不能发现系统错误。等价类划分测试方法就是从每一个等价类中选取一个数据作为测试输入，提高测试场景的覆盖率，并减少无效测试工作量。
![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000001961767625.png)
等价类划分包括有效等价类和无效等价类。有效等价类总结合理的有意义的输入数据构成的集合，即通常所说的常规路径测试输入。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。与之相反，无效等价类是总结不合理或无意义的输入数据构成的集合。
- 举例1：输入条件是一个布尔量，可获得一个有效等价类和一个无效等价类 。 输入条件：是否备份数据。
  有效等价类：备份数据（TRUE）。
  无效等价类：不备份数据（FALSE）。
  

- 举例2：输入条件规定了输入值的范围，可获得一个有效等价类和一个无效等价类。 输入条件：大于1、小于3的数。
  有效等价类 ：2。
  无效等价类 ： 0、4。
  
- 举例3：规定了输入数据必须遵守的规则，可获得一个符合所有规则的有效等价类和若干个从不同角度违反规则的无效等价类。 输入条件 ：大于零的正整数。
  有效等价类 ：1。
  无效等价类： 0、-10、10.1 ...
  
等价类划分方法重点关注的是输入值的合理划分，设计测试用例时，要同时考虑这两类等价类，不仅要能接收合理的数据，更重要的是要能处理意外场景的输入。使用等价类划分法进行测试设计时，对待分析的特性列举出可能的输入，进行等价类划分和归类，分析输出的每一个等价类作为一条测试用例，可以使用表格或者思维导图等工具辅助进行等价类划分。等价类划分法也常常结合其它方法使用，如边界值分析法。
- 举例：规定了输入数据是月份，月份是从1至12的整数一组12个值，可获得12个有效等价类和一个无效等价类，如下表。
  
  | 输入条件 | 有效等价类                      | 编号   | 无效等价类 | 编号   |
  |:---|:---|:---|:---|:---|
  | 输入月份 | 1,2,3,4,5,6,7,8,9,10,11,12 | 0001 | 13    | 1001 |
     
  根据等价类划分，编写如下测试用例。
  
  | 序号   | 测试用例     | 覆盖等价类编号 |
  |:---|:---|:---|
  | 0001 | 输入正确的月份  | 0001    |
  | 0002 | 输入不正确的月份 | 1001    |
     
  
 
#### 边界值分析
经验告诉我们，大量的错误是发生在输入或输出范围的边界上，边界值分析就是在划分的等价类区域的边界及其附近选取测试数据，设计测试用例，可以遵循以下方法和原则。
- 当输入条件规定了值的范围时 选取刚达到这个范围边界的值，以及刚超出这个范围边界的值作为测试输入。如输入值规定是0-100整数，需要针对0和100设计用例，还要针对-1、1、99、101设计用例。
  
- 当输入条件规定了值的个数时 选取最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试输入。如上传附件的个数1\~10个，则测试用例可取1和10，还应取0和11。
  
- 当输入、输出是有序集合时 选取集合的第一个元素和最后一个元素作为测试输入。如输入为有序数组，数组值为1至7，分别代表星期一至星期日，那么选择1和7作为测试输入。
  
- 在规定了输入数据的一组值（假定n个），并且程序要对每一个输入值分别处理的情况下，可确立n个有效等价类和一个无效等价类。
- 分析规格说明，找出其它可能的边界条件。
![](https://support.huaweicloud.com/bestpractice-testman/zh-cn_image_0000001961767637.png)
经过以上步骤进行分析之后可能会产生大量的测试项，这些测试项中可能会存在重复的情况，此时可以对这些重复的测试项进行合并。边界值分析法经常和等价类法配合使用，在等价类中取值时一般选取边界值。
