黑盒测试方法

一、等价类划分

例子:NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:

  ①1≤month≤12

  ②1≤day≤31

  ③1920≤year≤2050  

1) 有效等价类为:

    M1={月份:1≤月份≤12}

    D1={日期:1≤日期≤31}

    Y1={年:1812≤年≤2012}

2) 若条件 ①到③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出: " 无效输入日期 " 。其无效等价类为:

    M2={月份:月份<1}

    M3={月份:月份>12}

    D2={日期:日期<1}

    D3={日期:日期>31}

    Y2={年:年<1812}

    Y3={年:年>2012}

二、边界值分析方法

1)边界条件测试:测试最后一个可能合法的数据,以及刚超过边界的非法数据。

2)次边界条件:测试软件内部边界条件,e.g.(word为0~255),ASCII表(数字0~9对应48~57)(需要了解软件的工作方式)

3)默认值测试:默认、空白、空值、零值和无

4)破坏测试:非法错误、不正确和垃圾数据

整数边界

大小范围边界

极限边界(例如,16位符号数的取值边界)

位边界(移位操作,与cpu字节大端或小端方式有关)

字符串边界

前后边界:字符串的前面或后面是否有空格,tab等特殊字符

长度边界:最大长度,0

结束边界:/0

取值范围边界:字母、数字、特殊符号

相似边界

数值边界(字符串转化为整数)

字符串长度大于整数长度

字符串数值大于最大整数的取值

字符串中含有非数字字符

含有负号

显示边界

三、错误推测方法

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。需要参考以前发现bug的相关数据和总结经验,通过个人的直接,多考虑异常的情况,反面的请求,特殊的输入,以一名攻击者的态度对待程序

例如:测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

① 输入的线性表为空表;

② 表中只含有一个元素;

③ 输入表中所有元素已排好序;

④ 输入表已按逆序排好;

⑤ 输入表中部分或全部元素相同。

四、负面测试

1) 检查程序中的屏幕或页面是否给出了清晰且充分的提示或约束;

2) 测试系统是否处理了用户的异常操作

3) 检查系统的错误提示是否清晰且充分。

五、失败测试

失败测试的案例,主要是竞争条件、重复、压迫和重负。
1)  竞争条件和时序错乱
        设计多任务操作系统不是很难,设计充分利用多任务能力的软件才是艰巨的任务。在真正的多任务环境中软件设计绝对不能想当然,必须处理随时被中断的情况,能够与其他任何软件在系统中同时运行,并且共享内存、磁盘、通信设备以及其他硬件资源。
        这样的结果,就是导致竞争条件问题;软件未预料到的中断发生,时序就会发生错乱。
        竞争条件测试难以设计,最好是首先仔细查看状态转换图中的每一个状态,以找出哪些外部影响会中断该状态。考虑要使用数据如果没有准备好,或者在用到时发生了变化,状态会怎样。数条弧线或者直线同时相连的情形如何。
下是要面临竞争条件的典型情形:
        两个不同的程序同时保存或打开同一个文档。
        共享同一台打印机、通信端口或者其他外围设备。
       当软件处于读取或者修改状态时按键或者单击鼠标。
       同时关闭或者启动软件的多个实例。
      同时使用不同的程序方位一个共同数据库。

例如,道具施放,鼠标和键盘操作响应顺序
2)   重复、压迫和重负
        这三个测试的目标是处理那些连程序员都没有想到的恶劣条件下产生的问题的能力。
     1)重复测试

 重复测试是不断执行同样的操作。最简单的是不停地启动和关闭程序,或者反复读写数据或者选择同一个操作。这种测试的主要目的是看内存是否不足。如果内存被分配进行某项操作,但操作完成时没有完全释放,就会产生一个常见的软件问题。(例如,大厅桌位重复坐下,站起,随机猴子测试)

 2) 压迫测试
       压迫测试是使软件在不够理想的条件下运行——内存小、磁盘空间少、CPU速度慢、调制解调器速率低等等。观察软件对外部资源的要求和依赖程度。压迫测试就是将支持降到最低限度,目的在于尽可能的限制软件的必要条件。(例如,低配置测试)
        3)重负测试

  重负测试和压迫测试相反。压迫测试是尽量限制软件,而重负测试是尽量提供条件任其发挥。让软件处理尽可能大的数据文件。最大限度的发掘软件的能力,让它不堪重负。比如:软件对打印机或通信端口进行操作,就把能连的都连上;服务器可以处理几千个模拟连接,就按他说的做。
        不要忘了,时间也是一种重负测试。
        重复、压迫和重负测试应联合使用,同时进行。

        需要注意的是:
        一,项目管理员和小组程序员可能不完全接受软件测试员这样打破软件的做法。但是软件测试员的任务就是确保软件在这样恶劣的条件下正常工作,否则就报告软件缺陷。如何以最佳方式报告软件缺陷,使其得到严肃对待和修复,也是一门学问。
        二,无数次重复和上千次的连接对于手工操作是不可能的。因而需要借助自动化测试工具来实现。

六、功能图分析方法

1)定义:功能图由状态迁移图布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同时要依靠判定表或因果图表示的逻辑功能.

2)步骤:从功能图生成测试用例

① 生成局部测试用例:在每个状态中,从因果图生成局部测试用例.局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成

② 测试路径生成:利用上面的规则(三种)生成从初始状态到最后状态的测试路径。

③ 测试用例合成:合成测试路径与功能图中每个状态中的局部测试用例.结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。

七、判定表驱动分析方法

1) 判定表的建立步骤:(根据软件规格说明)

① 确定规则的个数.假如有n个条件。每个条件有两个取值(0,1,故有2^n种规则。

② 列出所有的条件桩和动作桩。

③ 填入条件项。

④ 填入动作项。等到初始判定表。

⑤ 简化.合并相似规则(相同动作)。

2) 判定表的优点和缺点

① 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。

② 缺点:不能表达重复执行的动作,例如循环结构。

3) B. Beizer指出了适合使用判定表设计测试用例的条件(各项条件与规则互不影响):

①规格说明以判定表形式给出,或很容易转换成判定表。

②条件的排列顺序不会也不影响执行哪些操作。

③规则的排列顺序不会也不影响执行哪些操作。

④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。

⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。

八、因果图方法

是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

 1)关系:4种符号分别表示了规格说明中向4种因果关系

①恒等:若ci是1,则ei也是1;否则ei为0。

②非:若ci是1,则ei是0;否则ei是1。

③或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。

④与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。

2)约束

A.输入条件的约束有以下4类:

   ① E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。

   ② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

   ③ O约束(唯一);a和b必须有一个,且仅有1个为1。

   ④R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

B.输出条件约束类型

   输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。

例子:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

步骤一:创建因果图

步骤二、根据因果图建立判定表

九、场景设计方法

例子:

十、正交实验法(优化测试用例数)

1)定义:正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.类似的方法有:聚类分析方法,因子方法方法等.

2)步骤

① 提取功能说明,构造因子--状态表:把影响实验指标的条件称为因子,而影响实验因子的条件叫因子的状态.利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子,而把各个因子的取值当作状态.对软件需求规格说明中的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的基本的功能要求.这样就可以把被测试软件中所有的因子都确定下来,并为确定个因子的权值提供参考的依据.确定因子与状态是设计测试用例的关键.因此要求尽可能全面的正确的确定取值,以确保测试用例的设计作到完整与有效。

② 加权筛选,生成因素分析表:对因子与状态的选择可按其重要程度分别加权.可根据各个因子及状态的作用大小,出现频率的大小以及测试的需要,确定权值的大小。

③ 利用正交表构造测试数据集

十一、组合覆盖法((优化测试用例数)

“成对”组合就是说,用于测试的每个值都需要和余下的参数的值至少组合一次

步骤:

(1)选择一个具有最高维度的参数

(2)通过列举第一个参数的每个测试值n次来创建第一栏,其中n是次高维度的参数的维数

(3)将下一个参数的各个测试值列举在新创建的下一栏

(4)对于表格新栏中余下的行,输入能与表格中前前栏的值创建最多新组合的参数测量值,替换参数的其他值,重复这一步骤

(5)表格中有未完成的配对时,添加新行来实现。如果所有配对都实现,返回步骤(3)

(6)在表格的空处添加更多未实现的配对,以创建最新的配对。返回步骤(5)

(7)最后,将相应栏(即参数)的任一测试值填入空的单位。

组合工具:

Allpair工具 allpairs input.txt > output.txt

十二、Ad hoc测试

1)像无经验的用户那样做:输入意想不到的数据;中途变卦而退回去执行其他操作;单击不应该单击的东西。。。

2)在已经找到软件缺陷的地方再找找:软件缺陷具有集中性(例如:对对碰由加减分道具错误引发的重点测试道具这块)

3)凭借经验、直觉和预感:记录那些技术有效,哪些不行。尝试不同的途径。如果认为有可疑之处,就要仔细探究。按照预感行事,直至证实这是错误为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值