实例介绍等价类划分法
在软件测试的活动中,穷尽法无疑是最安全最保险的一种方法,但也是成本代价高到不可能实现的一种方法,或许一个软件的所有输入和操作还没有穷尽完,这个软件都没有存在的必要了,甚至测试人员都要老死了。所以,前辈们为我们准备了等价类划分法,该方法是指将输入划分为若干集合,每个集合表示效果相同的一类,在测试时只需从每个集合中抽取一个即可测试出被测软件对于该集合所有输入的表现,以便于我们能够以最小的代价完成最有效的测试。 何谓等价类?某些数据的集合,该集合内的每个数据都是等效的,那么可以将该集合视为等价的一类。何谓等效?对于计算机软件而言,即对于数据的处理过程以及处理结果都完全一致。处理结果完全一致很容易理解,处理过程还要完全一致吗?我们举个例子来说吧,比如判断某年是否是闰年,闰年的计算方法是公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。那么虽然1900和1991年都是平年,但却不能将其简单视为等价类,因为1991不可被4整除、不可被100整除、不可被400整除,而1900,可被4整除、可被100整除、不可被400整除,无论程序如何编写,他们都会经过不同的判断逻辑,只测其中一个时,就无法覆盖到其他的判断语句,所以,划分等价类时,应掌握必须使同类数据的处理过程及处理结果完全一致的大原则。
等价类分为有效等价类和无效等价类,有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是那些对程序的规格说明不合理的或无意义的输入数据所构成的集合。划分等价类时,除了应掌握必须使同类数据的处理过程及处理结果完全一致的大原则外,针对于以下场景相应的划分原则可供参考:
1、 当输入条件规定了取值范围时,则可以确立取值范围内为有效等价类,范围外为无效等价类。(如成年人每分钟心跳60-100之间为正常) 2、 当输入条件规定了个数(或次数)范围时,则可以确立取值范围内为有效等价类,范围外为无效等价类。(如一个用户登录时连续输入错误密码次数达到3次)
3、 当输入条件是一个布尔量且限制是以单选方式输入时,可确定两个有效等价类。(如性别以单选按钮选择或下拉框选择)
4、 当输入条件是一组数据(假设是N个)且限制是以单选方式输入时,若数据选项是手工设定的,则可确定N个有效等价类,即每个选项为一个单独的等价类(如注册用户的学历选择);若数据选项是动态获取的,则可确定1个有效等价类,即任意一个选择(如新增员工的所属部门)。 5、 当输入条件是一组数据(假设是N个)且是以多选方式输入时,若数据选项是手工设定的,则除了将每个选项作为一个单独的等价类外,还
应补充以下等价类:不选时、全选时、选任意两个;若数据选项是动态获取的,则除了将任意一个作为1个有效等价类外,还应补充以下等价类:不选时、全选时、选任意两个。
6、 在输入条件规定了输入数据必须遵守的规则时,则可划分为符合规定条件的有效等价类与不符合规定条件的无效等价类,这时应充分考虑规定是否可以拆分为具有单一意义的子规定了,然后制定从不同角度违反规则的无效等价类,比如规定必须输入非0的正整数,则可拆分为非0、数字、正数、整数起码这4个子规定,至少每个规定对应一个无效等价类,即0、字符串、负数、小数,甚至还可以挖掘出输入为空这样的隐含等价类,这是在工作学习中应当注意的。
下面以一个实例来结束等价类划分法的介绍。需求是:对用户输入的分数进行评级,其中90到100为A,80-89为B,70-79为C,60-69为D,60以下为E。输入分数要求必须是正整数或0。根据分析得出以下等价类划分列。
实例介绍等价类划分法
在软件测试的活动中,穷尽法无疑是最安全最保险的一种方法,但也是成本代价高到不可能实现的一种方法,或许一个软件的所有输入和操作还没有穷尽完,这个软件都没有存在的必要了,甚至测试人员都要老死了。所以,前辈们为我们准备了等价类划分法,该方法是指将输入划分为若干集合,每个集合表示效果相同的一类,在测试时只需从每个集合中抽取一个即可测试出被测软件对于该集合所有输入的表现,以便于我们能够以最小的代价完成最有效的测试。 何谓等价类?某些数据的集合,该集合内的每个数据都是等效的,那么可以将该集合视为等价的一类。何谓等效?对于计算机软件而言,即对于数据的处理过程以及处理结果都完全一致。处理结果完全一致很容易理解,处理过程还要完全一致吗?我们举个例子来说吧,比如判断某年是否是闰年,闰年的计算方法是公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。那么虽然1900和1991年都是平年,但却不能将其简单视为等价类,因为1991不可被4整除、不可被100整除、不可被400整除,而1900,可被4整除、可被100整除、不可被400整除,无论程序如何编写,他们都会经过不同的判断逻辑,只测其中一个时,就无法覆盖到其他的判断语句,所以,划分等价类时,应掌握必须使同类数据的处理过程及处理结果完全一致的大原则。
等价类分为有效等价类和无效等价类,有效等价类就是由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是那些对程序的规格说明不合理的或无意义的输入数据所构成的集合。划分等价类时,除了应掌握必须使同类数据的处理过程及处理结果完全一致的大原则外,针对于以下场景相应的划分原则可供参考:
1、 当输入条件规定了取值范围时,则可以确立取值范围内为有效等价类,范围外为无效等价类。(如成年人每分钟心跳60-100之间为正常) 2、 当输入条件规定了个数(或次数)范围时,则可以确立取值范围内为有效等价类,范围外为无效等价类。(如一个用户登录时连续输入错误密码次数达到3次)
3、 当输入条件是一个布尔量且限制是以单选方式输入时,可确定两个有效等价类。(如性别以单选按钮选择或下拉框选择)
4、 当输入条件是一组数据(假设是N个)且限制是以单选方式输入时,若数据选项是手工设定的,则可确定N个有效等价类,即每个选项为一个单独的等价类(如注册用户的学历选择);若数据选项是动态获取的,则可确定1个有效等价类,即任意一个选择(如新增员工的所属部门)。 5、 当输入条件是一组数据(假设是N个)且是以多选方式输入时,若数据选项是手工设定的,则除了将每个选项作为一个单独的等价类外,还
应补充以下等价类:不选时、全选时、选任意两个;若数据选项是动态获取的,则除了将任意一个作为1个有效等价类外,还应补充以下等价类:不选时、全选时、选任意两个。
6、 在输入条件规定了输入数据必须遵守的规则时,则可划分为符合规定条件的有效等价类与不符合规定条件的无效等价类,这时应充分考虑规定是否可以拆分为具有单一意义的子规定了,然后制定从不同角度违反规则的无效等价类,比如规定必须输入非0的正整数,则可拆分为非0、数字、正数、整数起码这4个子规定,至少每个规定对应一个无效等价类,即0、字符串、负数、小数,甚至还可以挖掘出输入为空这样的隐含等价类,这是在工作学习中应当注意的。
下面以一个实例来结束等价类划分法的介绍。需求是:对用户输入的分数进行评级,其中90到100为A,80-89为B,70-79为C,60-69为D,60以下为E。输入分数要求必须是正整数或0。根据分析得出以下等价类划分列。