【软件测试】黑盒测试技术——等价类划分和边界值分析

黑盒测试技术也称功能测试、数据驱动的测试、基于规格说明的测试。
测试方法有:等价类划分法、边界值分析法、决策表法、因果图法、错误推测法、正交试验法和场景法。
本文先介绍等价类划分法和边界值分析法。

等价类划分法

1.概念:
根据需求对输入范围进行细分,然后在分出的每一个区域内选取一个有代表性的测试数据开展测试。
等价类=有效等价类+无效等价类
2.方法步骤:
依据常用方法划分等价类;
为每一个等价类规定一个唯一编号用作标识符;
设计一个新用例,使它能够尽可能多地覆盖尚未覆盖的有效等价类,重复上面的步骤,直到所有有效等价类都被用例覆盖;
设计一个新用例,要求仅覆盖一个尚未被覆盖的无效等价类,重复上面的步骤,直到所有无效等价类都被用例覆盖。
3.深入探讨:
单缺陷和多缺陷假设产生弱等价类和强等价类测试之分
是否进行无效数据处理产生健壮和一般等价类测试之分
具体可以查阅相关资料!

边界值分析法

1.概念:
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,通常作为等价类划分法的补充;
基于“错误更可能出现在输入变量的极值附近”原理
2.方法步骤:
在最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)、最大值(max)处取变量值;
根据输入变量个数设计测试用例。

两种测试用例生成方法对于揭露程序的错误有什么异同点
异:边界值分析是对输入的边界值进行测试,未来查找在边界值上发生的错误;等价类划分所有的输入可能都被考虑进去,不仅仅考虑到边界值的出错;大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
同:均可扑抓边界值这类较容易发生的错误。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

实例分析

题目:对电话账单来说,春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题。春季,这种转换发生在(3 月末,4 月初的)星期日凌晨 2:00 时,这时时钟要设置为凌晨 3: 00 时。对称的转换通常发生在 10 月最后一个星期日,时钟要从 2:59:59 调回到 2:00:00。
请为采用以下费率计算用户的每月通话费:
(1)通话时间<=20 分钟时,每分钟收费 0.05 美元,通话时间不到 1 分钟时按 1 分钟计算。
(2)通话时间>20 分钟时,收费 1.00 美元,外加每分钟 0.10 美元,超过 20 分钟的部分,不到 1 分钟时按 1 分钟计算。

假设:
(1)通话计费时间从被叫方应答开始计算,到呼叫方挂机时结束。
(2)通话时间的秒数四舍五入到分钟。×(按标准:不到 1 分钟时按 1 分钟计算)
(3)没有超过 20 个小时的通话。

程序:
Long_tel_server.java:

package Main_class;

import java.io.IOException;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Scanner;

import Tool_class.Calculate_free;
import Tool_class.Judge_date;

//账单类,长途通话服务
public class Long_tel_server {
    Calendar c1=java.util.Calendar.getInstance();
    Calendar c2=java.util.Calendar.getInstance();

    public void Input(){

        String s1="2017-03-14 09:25:10";
        String s2="2017-03-14 11:56:11";
        Calendar st=java.util.Calendar.getInstance();
        Calendar et=java.util.Calendar.getInstance();
        int sy,smonth,sd,sh,sm,ss;
        int ey,emonth,ed,eh,em,es;

        while(true){
        @SuppressWarnings("resource")
        Scanner s11=new Scanner(System.in);
        s1=s11.nextLine();
        @SuppressWarnings("resource")
        Scanner s22=new Scanner(System.in);
        s2=s22.nextLine();  
        DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
          String[] s1Arr=s1.split("[- , :]");
          sy=Integer.parseInt(s1Arr[0])
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值