软件测试-6

软件测试方法

主要介绍软件测试的方法,包括白盒测试、灰盒测试、黑盒测试、静态测试、动态测试、手动测试、自动测试以及用例设计方法等。

测试方法划分

测试方法一般按以下几种划分:

  • 按照执行阶段划分为:白盒测试、黑盒测试、灰盒测试。

  • 按照执行状态划分为:静态测试、动态测试。

  • 按照执行行为划分为:手动测试、自动测试。

白盒测试

白盒测试(White Box Testing)又称结构测试、逻辑驱动测试或基于代码的测试,主要检查产品内部结构是否按照规格说明书的规定正常运行。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒顾名思义是指盒子是可视的,观察者清楚盒子内部的东西以及里面是如何运作的,因此,白盒测试需要测试人员对系统内部的结构和工作原理有一个清楚的了解。

黑盒测试

黑盒测试(Black Box Testing)也称功能测试,主要来检测每个功能是否都能正常使用。它也是在软件测试中使用最广泛的一类测试。

在黑盒测试中,通常把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

img

由于黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。所以黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。关注的是软件的功能需求,主要试图发现以下类型的错误:

  • 功能是否正确,是否有遗漏。

  • 界面是否错误。

  • 数据结构或外部数据库访问错误。

  • 性能错误。

在实际工作中,最常见的黑盒测试方法有:功能性测试、性能测试、安全性测试、兼容性测试、稳定性测试、可靠性测试以及安装卸载测试等。

从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况进行考虑,才能查出程序中所有的错误。因为穷举测试是不可能的,所以要有针对性地选择测试用例。通过制定测试案例指导测试的实施,保证软件测试有组织、有计划地进行。只有对黑盒测试进行量化,才能保证软件的质量,具体量化的方法之一就是测试用例。

黑盒测试用例设计方法包括等****价类划分法、边界值分析法、判定表分析法、因果图分析法、正交试验法、流程分析法、状态迁移法、异常分析法以及错误推测法等

等价类划分法

等价类划分法是一种典型的黑盒测试用例设计方法,使用等价类划分,是将软件的输入域分为若干部分,然后从每个部分中选取少数具有代表性的数据进行测试,这样可以避免穷举产生的大量用例。

等价类是指某个输入域的子集合,在该子集合中,每个输入数据对于揭露软件中的错误都是等效的。简单地说,就是指输入该输入域中的某一个数据,如不能揭露被测对象中的缺陷,那么我们就说这个输入域中的所有数据都无法揭露该缺陷,反之亦然。

等价类划分一般划分为两种情况:有效等价类和无效等价类。

  • 有效等价类:对需求规格说明而言,合理的、有效的输入数据构成的集合。
  • 无效等价类:对需求规格说明而言,不合理的、无效的输入数据构成的集合。

因为软件不仅要能接收合理的数据,不合理的数据也需要做出正确响应,所以在设计测试用例时,两种等价类都需要考虑,这样的测试才能确保软件具有更高的可靠性。

根据需求规格说明书确定被测对象的输入域,进行等价类划分。等价类划分的标准,划分的子集必须是互不相交的,符合完备测试,避免出现冗余。

等价类划分法的划分原则,通常按照以下规则进行划分等价类:

1)如果规定输入的取值范围或个数时,则划分一个有效等价类和两个无效等价类。如:注册用户名的长度限制6~18个字符,6~18个字符是有效等价类,小于6个字符和大于18个字符则是两个无效等价类。

2)如果规定了输入的集合或规则必须要遵循的条件,则划分一个有效等价类,和一个无效等价类。如:注册用户名的格式要求必须以字母开头时,以字母开头是有效等价类,非字母开头则是无效等价类。

3)如果输入条件是一个布尔值,则划分为一个有效等价类和一个无效等价类。如:在注册用户时需要遵循协议或条款是否接受时,“接受”是有效等价类,“不接受”则是无效等价类。

4)如果输入条件是一组数据(枚举值),并且程序对每一个输入的值做不同的处理,则化为若干个有效等价类和一个无效等价类。如:网游中充值VIP等级(3个等价),对每个VIP的等级优惠不同,VIP1、VIP2、VIP3不同等级是三个有效等价类,不是VIP用户则是无效等价类。

5)如果输入条件规定了必须要遵循的某些规则下,则划分为一个有效等价类和若干个无效等价类(无效等价类需要从不同的角度去违反规则)。如:密码要求首位必须是大写字母的,首字母大写是有效等价类,首位小写字母的、首位为数字的或首位为特殊字符的则是无效等价类。

6)不是所有的等价类都有无效等价类。如性别的选择只有男或女两种。

【案例解析】

某网站的用户注册的需求说明,用户名为必填项,要求长度为6~18个字符,并由字母、数字、下划线组成,必须以字母开头,结尾必须是数字或字母,而且不区分大小写字母,重名账号不允许注册。密码为必填项,要求8~15个字符,首位必须是大写字母,而且区分大小写字母。确认密码,要求与密码输入一致。

img

根据上面需求说明,首先进行划分等价类。经过细化后并将有效等价类和无效等价类填入等价类划分设计表中,并进行编号

img

根据覆盖的规则,将测试数据覆盖的有效和无效等价类编号填入表中

img

最后根据上面的测试数据设计对应的测试用例

img

边界值分析法

边界值分析法是对等价类划分法的一个补充,该方法不仅需要考虑输入域的边界,而且还要关注输出域的边界。由长期的测试工作经验得知,大量的错误发生在输入和输出范围的边界上。因此针对各种边界情况设计用例,可以查出更多的错误。

该方法一般在规定了取值范围或规定了值的个数,或者明确输入条件的有序集合中使用。

通常按照以下规则进行边界点的划分:

  • 如果规定了输入域的取值范围,则选取刚好在范围边界的点,以及刚好超过边界的点,作为测试的输入数据。

  • 如果规定了输入值的个数,则用最大个数,最小个数,比最小个数少1,比最大个数多1的数作为测试数据。

  • 如果规定了输入是一个有序的集合,则选取集合的第一个元素和最后一个元素作为测试数据。

【案例解析】

某银行系统,允许用户通过日期对交易进行查询,系统对输入日期的限定为1990年1月~2049年12月,并规定:日期由6位数字字符组成,前4位表示年,后2位表示月。

分析输入条件有6位数字字符,年份的范围,月份范围,

输入条件 有效等价类 有效边界点 无效等价类 无效边界点
日期长度 6位数字字符 6位 小于6位数字字符 5位
大于6位数字字符 7位
日期类型 数字字符 非数字字符
年份范围 1990-2049 1990,2049 1991,2048 小于1990 1989
大于2049 2050
月份范围 01-12 01,12 02,11 小于1 00
大于12 13

判定表分析法

在等价类设计法中,没有考虑输入域的组合情况,导致设计的用例中无法覆盖输入域之间存在关联的地方。为了弥补等价类设计的不足,这里介绍一种新的用例设计方法——判定表分析法。

判定表分析法主要是分析和表达多种输入条件下系统执行不同动作的技术。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了,它可以把复杂的逻辑关系和多种条件组合的情况表达得很明确。判定表由四个部分组成,

img

1)条件桩:列出被测对象的所有输入,并列出输入条件与次序无关。

2)动作桩:列出输入条件系统可能采取的操作,这些操作的排序顺序没有约束。

3)条件项:列出输入条件的其他取值,在所有可能情况下的真假值。

4)动作项:列出在条件项的各种取值情况下应采取的动作。

【案例解析】

书籍阅读指南,需求描述如下:

1)觉得疲倦但对书的内容感兴趣,同时书的内容让你糊涂,回到本章重读。

2)觉得疲倦但对书的内容感兴趣,同时书的内容不让你糊涂,继续读下去。

3)不觉得疲倦并对书的内容感兴趣,同时书的内容让你糊涂的话,回到本章重读。

4)觉得疲倦并对书的内容不感兴趣,同时书的内容不让你糊涂,停止阅读休息。

5)觉得疲倦并对书的内容不感兴趣,并且书的内容让你糊涂,请停止阅读休息。

6)不疲倦,对书的内容感兴趣,书的内容不糊涂,继续读下去。

7)不疲倦,不感兴趣,对书的内容糊涂,跳到下一章去读。

8)不疲倦,不感兴趣,对书的内容不糊涂,跳到下一章去读。

首先分析条件桩和动作桩,条件项有您觉得疲倦吗、您对书中的内容感兴趣吗、书的内容让你糊涂吗;动作桩有回到本章重读、继续读下去、跳到下一章去读、请停止阅读休息。

其次根据条件来计算规则23个(即8),构成判定表.

img

再根据合并规则,将1和5、2和6、3和4、7和8合并得到判定表

img

合并后只剩4条规则,看上去用例数减少了,但是很容易产生漏测的风险。

因果图分析法

在利用判定表设计用例的过程中,如果条件过多,导致设计判定表比较困难。为了弥补该缺点,接下来介绍一种新的测试用例设计方法——因果图分析法。

因果图分析法是分析输入条件之间的约束情况,然后生成判定表,进行用例设计。下面介绍一下因果图的基本图形符号:因果符号和约束符号。

因果符号

因果是指输入和输出的因果关系。因果符号有恒等、非、或、与四种表示方法,如图所示,其中c1表示输入的状态,即原因、e1表示输出的状态,即结果。c1和e1均可取值0或1(0表示某状态不出现,1表示某状态出现)。

img

  • 恒等:当输入条件发生时,则一定会产生对应的输出;相反当输入条件不发生时,则不产生对应的输出。即c1为1时,e1一定为1;否则c1为0,e1一定为0;

  • :与恒等相反,当输入条件发生时,则不产生对应的输出;反之亦然。即c1为1时,e1一定为0;否则c1为0,e1一定为1;

  • :当输入多个条件时,只要有其中一个条件发生,则产生对应的输出。即只要c1、c2、c3其中一个为1,则e1为1;只有c1、c2、c3全部为0时,e1才为0;

  • :当输入多个条件时,只有所有的输入条件发生时,才会产生对应的输出。即c1、c2都为1时,e1才为1;只要c1、c2其中一个为0,e1为0。

约束符号

约束是指输入与输入之间存在的某些依赖关系,称为约束。约束符号有异、或、唯一、要求、强制五种表示方法,其中前面四种是针对输入条件的约束,最后一种强制只针对输出条件的约束。

其中a,b分别代表条件。条件的取值0或1(0表示某状态不出现,1表示某状态出现)。

img

  • :在所有输入条件中,至多有一个可能不发生。即图4-11中,a和b最多只有一个为1,不能同时为1,但可以同时为0。

  • :在所有输入条件中,至少有一个发生。即图4-11中,a、b、c最少有一个为1,不能同时为0,但可以同时为1。

  • 唯一:在所有输入条件中,有且只有一个发生。即图4-11中,a和b,只有一个为1,不能同时为1,也不能同时为0。

  • 要求:在所有输入条件中,只要有一个发生,则要求其他条件也发生。即图4-11中,a和b,a为1时,要求b也为1。

  • 强制:是针对结果的约束关系,当一个结果发生,强制另一个结果不发生。

【案例解析】

需求规定:当输入的第一列字符必须是X或Y,第二列字符必须是一个数字时,对文件进行修改,如果第一列字符不正确,则给出信息A;如果第二列字符不正确,则给出信息B。

首先分析原因和结果,并进行编号

img

再根据它们之间的对应关系,画出因果图并标记约束符号

img

再根据因果图转换为判定表(Y代表出现、N代表不出现)

img

由于原因1和2不可能同时出现,故规则1、2属于不可能发生的组合,即1、2规则的测试用例可以不考虑。最终生成的测试用例就是规则3、4、5、6、7、8共计六条。

正交试验法

正交试验法是从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,是研究多因素多层次采样点的一种设计方法,正交试验设计是一种基于正交表的、高效率、快速、经济的试验设计方法。

正交试验中常用的术语有指标、因子、因子状态三个。

  • 指标:通常把判断试验结果优劣的标准叫做试验的指标。

  • 因子:把所有影响试验指标的条件称为因子。

  • 因子的状态:把影响试验因子称为因子的状态。

正交试验表示形式有2种:Lr(mn)或Lr(mn,pq),其中n、q代表因子数,即正交表中的列;m、p代表水平数也称状态,即单个因子取的最大数;r代表行数,正交表中行的数量,即测试用例数。简单地说正交试验法就是测试组合的方法,这一点跟判定表法类似,但是判定表法是通过人工对全排列组合来进行化简得到测试用例,而正交试验法是借助数学工具,通过算法从全排列组合中选择组合并放到正交表中,通过查看合适的正交表,可以直接得到测试用例。正交表的原理就是两两组合。

【案例解析】

某数据库查询系统,规定查询条件,可以按照功能、结构、逻辑符号等查询类别进行查询;也可按照简单、组合、条件等查询方式进行查询;还可以按照元门、功能块等元胞类别进行查询;还可以按照终端显示、图形显示、行式打印等打印方式进行查询。

根据规定分析因子和因子的状态,可得到因子——状态表

img

根据规格分析,在上表中,因为打印方式的权值和查询类别中逻辑符号的权值比较小,所以我们将这些权值比较小的因子或状态进行加权筛选,得到分析表,

img

再将上面的查询方式中简单和组合进行合并,得到组合后的因素表

img

再将合并后的因素表,替换到正交表3因子2状态中

img

进行分解,最后得到具有6条测试用例的测试数据集

img

根据表途中中每行的测试数据生成测试用例。需要注意的是,在最后设计用例时,需要补充已筛选权值比较小的测试用例,即查询类别为逻辑符号的测试用例。

因为在正交表中有4因子3状态,所以该案例还可以采用直接补空状态进行设计用例。然后再用其他状态替换补空的状态(即空状态可以用门或功能块替换)

img

虽然该方法在工作中使用比较广泛,但需要注意正交表中包含的组合并没有考虑实际取值的意义,因此可能出现无效的组合。在设计中需要删除无效组合,还需要补充遗漏的常见组合。

流程分析法

流程分析法也称场景法,主要是针对测试场景类型。它是从白盒测试设计方法中的路径覆盖分析法演变过来的一种重要的方法。在白盒测试中,路径就是指函数代码的某个分支组合,路径覆盖法需要构造足够的用例覆盖函数的所有代码路径。在黑盒测试中,若将软件系统的某个流程看成路径的话,则可以针对该路径使用路径分析的方法设计测试用例。

在实际工作中,流程分析法是最容易理解和执行的,它是主要通过流程对系统的功能点或业务流程进行描述,可以展示测试效果。流程分析法一般包含基本流和备选流,从一个流程开始,通过描述经过的路径来遍历所有的基本流和备选流。

  • 基本流:是指程序的主流程,是实现业务流程最简单的路径。
  • 备选流:是指实现业务流程时,因错误操作或者是异常操作,导致最终未达到目的流程。

直线表示基本流;其他曲线表示为备选流。由图可以看到,一个备选流可以从基本流开始;也可以从备选流开始。备选流的终点,可以是一个流程的出口,也可以是回到基本流,还可以是汇入其他的备选流。可以确认的流程如下所示:

img

流程1:基本流

流程2:基本流→备选流1

流程3:基本流→备选流1→备选流2

流程4:基本流→备选流3

流程5:基本流→备选流3→备选流1

流程6:基本流→备选流3→备选流1→备选流2

流程7:基本流→备选流4

流程8:基本流→备选流3→备选流4

【案例解析】

某银行ATM取款机的取款流程进行测试。首先画取款的流程图

img

img

其次生成ATM取款的流程

img

状态迁移法

状态迁移法是通过把被测系统,分析出它的若干个状态,以及这些状态之间的转换条件和路径,那么就可以从状态迁移路径覆盖的角度来对设计用例进行测试。其主要验证在给定的条件内是否能够产生需要的状态变化,是否存在不可能达到的状态或非法的状态,是否可能产生非法的状态转移等。在黑盒测试中主要目标是设计足够的用例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁移路径的覆盖。

简单来说,状态迁移就是将程序的业务流程中每个节点用状态来描述,通过触发的事件来完成各状态之间的转换。

实际工作中,在业务流程中都涉及了复杂的业务场景(即业务状态的迁移)。而这些业务场景在需求规格中往往不能够完全阐述清楚,容易出现遗漏。所以当被测系统的业务场景复杂时,在工程中应用这种针对状态迁移测试的思路完成对复杂业务场景的测试有时是很有必要的。

【案例解析】

Bug测试流程:测试人员提交新问题单,项目测试经理(TPM)审核问题单,如果不是问题,则作为非问题关闭,如果重复则作为重复问题关闭,否则置为打开状态。开发人员分析打开状态的问题单,如果接受则进行修改。否则应与测试人员协商,在问题单提交人同意的情况下,可退回给测试人员作为非问题关闭。对于开发人员拒绝修改,但测试人员无法认同的情况,该问题单需提交CCB评审,根据评审结果,如果确认要修改则进入修改状态,如果不是问题则作为非问题关闭,如果是问题但暂时无法解决则挂起,挂起的问题单到达指定修改期限时,会再次进入打开状态。修改后的问题单需由测试人员进行回归测试,如果回归通过则关闭问题单,如果回归不通过则重新进入打开状态。

首先根据描述确定流程的节点,即节点状态,分析状态之间的迁移关系,用圆圈代表状态,箭头代表状态迁移方向,绘制状态迁移图

img

其次根据状态图,将输入不同条件导致的输出和状态迁移列入表中

img

最后可以根据状态事件表设计测试路径,最后生成测试用例,还要设计非法状态转换的测试用例。

异常分析法

异常分析就是针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。一方面主要针对系统的容错能力、故障恢复能力进行测试。另一方面,针对系统资源的异常进行测试。简单地说,就是通过人为的制造异常情况,来检查系统处理能力。

下面主要介绍一下常见的异常分析情况:

1)测试软件不按照正常的流程运行。

2)删除或修改系统的重要配置文件。

3)比如特殊符号“/”斜杠、“./”点斜杠、“‘”单引号以及空格等。

4)强行关闭数据库服务器、制造数据库死机、非法破坏数据表或数据等。

5)增加服务器资源的使用情况,CPU、内存、硬盘等。

6)对部分或者所有相关软件进行断电测试。

错误推测法

在软件测试中,基于经验和直觉推测程序中可能存在的各种错误,从而有针对性的设计测试用例的方法,就是错误推测法。

它的基本的设计思路就是分析程序中最易出错的场景和情况,在此基础上有针对性的设计测试用例。

需要测试人员深度熟悉被测系统的业务、需求,对被测系统或类似系统之前的缺陷分布情况进行过系统的分析,包括功能缺陷、数据缺陷、接口缺陷和界面缺陷等。在实际测试活动中,随着对产品的了解的加深和测试经验的丰富,使得错误推测法设计的测试用例往往非常有效,可以作为测试设计的一种补充手段。简单说就是积累的经验越丰富,方法使用效率越高。错误推测不是瞎猜,主要是针对系统可能存在的薄弱环节的测试补充,而不是为了覆盖而测试。

黑盒测试的优缺点

黑盒测试使用范围比较广泛,其优点主要是站在用户的角度进行测试,测试人员不需要了解程序实现的细节,相对白盒测试而言,黑盒测试的测试数据很容易生成,但是要测试到每一个输入流几乎是不可能的,其最大的缺点就是不能针对特定的程序段,这样很容易造成程序路径的漏测,当程序非常复杂时其隐藏的问题很难发现。在实际工作中,由于黑盒测试的测试人员编程能力相对薄弱,所以大部分测试人员现在研究的都是介于白盒和黑盒之间,就是灰盒测试,也是常说的接口测试。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2022 PAYIZ
  • |

感谢您的支持😊

支付宝
微信