软件测试

前言

软件测试方法分为两种:静态测试和动态测试。


静态测试

静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行测试。

人工测试

人工检测是指不依靠计算机而是靠人工审查程序或评审软件,包括代码检查、静态结构分析和代码质量度量等。

计算机辅助静态分析

利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。


动态测试

动态测试是指通过运行程序发现错误。对软件产品进行动态测试时可以采用黑盒测试和白盒测试法。

黑盒测试

黑盒测试也称为功能测试,是指完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。常用方法如下:

  • 等价类划分

1.定义  :是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

  

 2.划分等价类:   等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

   1)有效等价类

     是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

   2)无效等价类

     与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。   设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

 

4.划分等价类的方法

  1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0-100;

             

 

   2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;

   3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

   4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

     例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

   5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);

   6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。


  • 边界值分析

经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。边界值分析方法与等价划分方法存在两方面的不同:

1.  与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。

比如要求输入职工年龄,规定输入为18 – 45。根据等价类划分思想,一个有效等价类:18<= 年龄 <=45 ,两个无效等价类:年龄<18 和 年龄>45。这样选取 10 ,30 ,50即可满足覆盖。但是等价类的思想没有从边界值方面来分析问题,从边界值角度分析,我们就会再添加17、18、19 、44、45、46这样的边界值。

2.  与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。

 比如ATM机取款手续费为取款额%1,最低2元,最高50元。从输出等价类来考虑边界值,就要设计用例来测试手续费会不会低于2元,会不会高于50元。

很难提供一份如何进行边界值分析的“详细说明’,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法(因此,就像测试的许多其他方面一样,这更多的是项智力工作,并非其他的什么)。

  • 错误猜测

常常可以看到这种情况,有些人似乎天生就是测试的能手。这些人没有用到任何特殊的方法(比如对因果图进行边界值分析),却似乎有着发现错误的诀窍。

对此的一个解释是这些人更多是在下意识中,实践着一种称为错误猜测的测试用例设计技术。接到具体的程序之后,他们利用直觉和经验猜测出错的可能类型,然后编写测试用例来暴露这些错误。

由于错误猜测主要是一项依赖于直觉的非正规的过程,因此很难描述出这种方法的规程。其基本思想是列举出可能犯的错误或错误易发情况的清单,然后依据清单来编写测试用例。例如,程序的输入中出现 0 这个值就是一种错误易发情况。因此,可以编写测试用例,检查特定的输入值中有 0,或特定的输出值被强制为 0 的情况。同样, 在出现输入或输出的数量不定的地方 (如某个被搜索列表的条目数量)。数量为“没有”和“一个” (例如空列表,仅包含一个条目的列表)也是错误易发情况。另一个思想是,在阅读规格说明时联系程序员可能做的假设来确定测试用例(即规格说明中的一些内容会被忽略,要么是由于偶然因素,要么是程序员认为其显而易见)。


白盒测试

白盒测试把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

最常见的方法是逻辑覆盖法。所有可用的方法按覆盖程度从弱到强排序为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖。

       

(1)语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

*简单理解:图中四个判断语句都的用到,如果一个测试用例,只走了bd路径,就不属于语句覆盖。

(2)判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。

*简单理解:判定覆盖也叫分支覆盖,从图中可看出有两个真分支和两个假分支,判定覆盖必须把四个分支都涉及到,才

属于判定覆盖。

(3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一

次,但未必能覆盖全部分支

*简单理解:首先要理解,此处的条件指的是什么,A>1叫一个条件,A<=1也叫一个条件,R=0叫一个条件,R<>0也叫一个

条件,A=2叫一个条件,A<>2也是一个条件,X>1叫一个条件,X<=1也是一个条件;所以图中有8个条件,测试用例必须覆盖这

八个条件,才属于条件覆盖。

(4)判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个

判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

*简单理解:将判定覆盖和条件覆盖全包含在内。

(5)条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这

种覆盖标准成为条件组合覆盖。

简8单理解:第一个菱形框里两条语句包含四个条件,四个条件两两组合有四种情况,第二个菱形框里的四个条件两两组有

四种情况,总共八种情况,测试用例必须全部包括,才属于条件组合覆盖。

(6)路径覆盖:是每条可能执行到的路径至少执行一次。

*简单理解:测试用例包包含所有路径,如图中的:F1F2,T1F2,T1T2,T2F1。



              有待更新。。。。。。。。。。。。。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子松的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值