软件测试的几个常见测试方式

黑盒测试:

也称为功能测试,是指要在程序运行时测试,在不考虑软件的内部结构和特性的情况下,测试软件的外部特性。主要有以下几种测试方式:

等价类划分:

如果将所有的数据都进行测试一次,那未免太麻烦了,而且工程很大,因此,可以对全部的测试数据根据其特点划分为若干个子集(等价类),然后认为等价类的某一的值代表该等价类的所有值来进行测试,等价类的划分可以分为有效等价类和无效等价类两种。

有效等价类:

这类数据对于程序来说是合理的,有意义的输入数据构成的集合,可以以次来检验程序预定的功能能否正确实现。

无效等价类:

这类数据对于程序来说是不合理的,没有意义的输入数据构成的集合,可以以次来测试用例检查程序中功能和性能的实现是否有不符合规格说明的情况。

举个栗子:

加入系统要求输入1-100的整型数据,符合该要求的称为有效等价类,既1到100这100的整数,不符合的即为无效等价类既小于1的数和大于100的数据,以及小数。

边界值分析:

该方法认为输入规定数据的边界值要比中间的更容易发生错误,因此也用来补充等价类划分,通常输入等价类与输出等价类的边界是需要认真考虑的。一般对边界值的选择遵循以下几条原则:

1.如果规定了输入数据的范围,则应该取刚到这个范围的值,和刚好超越这个范围的值。

2.如果规定了输入数据的个数,则取最大个数,最小个数,最大个数加1,最小个数减1这四个数据来测试。

3.根据规格说明的每个输入数据,使用前面的两个规则。

4.如果给出的输入或输出数据是一个有序的集合,则取集合的第一个元素和最后一个元素。

5.如果程序内部使用了数据结构,则选择这个内部数据结构的边界值作为测试用例。

6.分析规格说明,找出其它可能的边界值。

错误推测:

该方法主要是由有经验的测试人员根据自己的测试经验来判断可能会出现的错误,主要分为经验,知识,直觉三个要素。但是因为是人自主来判断可能出现的错误,所有有可能还有很多未知的错误没有发现。

因果图:

在输入数据之间没有明显的联系时,使用边界值分析法和等价类划分是不错的选择,但是如果输入和输出数据之间有较强的联系的话,则选用这两种方法不再合适了,因为这两种方法不好描述这种关系。对此引出了因果图。

因果图的使用流程如下:

1.确定软件需求中的原因和结果。

2.确定因果之间的逻辑关系和约束。

3.画出因果图。

4.将因果图转换为决策表。

白盒测试:

也称为结构测试,在程序运行时测试,主要是根据程序的内部结构和特征来选择测试用例。主要有以下几种技术:

逻辑覆盖:

该技术要求测试人员对程序的内部结构有清楚的了解,甚至是对源程序的细节有所把握。由于覆盖测试的目标不同又可以分为以下几种逻辑覆盖:

语句覆盖:

就是设计若干个测试用例,这些测试用例需要使程序的每个可执行语句都要至少执行一次。之后运行程序进行测试。

判定覆盖:

就是设计若干个测试用例,这些测试用例需要使程序的每个判断语句的分支都要至少执行一次。

就比如一个if语句的判定内容是,a>0&&b<0,这个整体的真和假都要至少取一次。

条件覆盖:

就是设计若干个测试用例,这些测试用例需要使程序的每个判断语句中的逻辑条件的可能取值都要至少执行一次。相比于判定覆盖,它更侧重于具体的判断语句的各个逻辑条件。

还是上面那个例子:if语句的判定内容是,a>0&&b<0,其中有a>0和b<0是它的两个逻辑条件,因此这两个条件都要各自取真取假至少一次。但是有时一组用例并不能满足判定覆盖,由此引出了以下覆盖

判定-条件覆盖:

就是设计若干个测试用例,这些测试用例需要使程序的每个判断语句中的逻辑条件的所有可能都要至少执行一次。

就是既要满足判定覆盖也要满足条件覆盖。

条件组合覆盖:

就是设计若干个测试用例,这些测试用例需要使程序的每个判断语句中的逻辑条件的所有可能组合至少执行一次。

还是上面那个栗子:if语句的判定内容是,a>0&&b<0,这时候需要a>0和b>0这连个条件组合以下,因为两个条件要么为真要么为假,所以可以取4种组合。

路径覆盖:

就是设计足够多的用例,覆盖程序中所有可能的路径。

人工测试:

不在机器上执行程序进行测试,而是采用人工的模拟技术和一些分析方法来测试软件。,主要有以下几种技术:

静态分析:

1.通过人工生成各种引用表,从而对源程序进行静态分析。

2.静态分析错误,主要是来判断源程序中是否有某类错误,或者有一定危险的结构设计。

人工测试方法:

人工检查代码的质量,这里的人工可以是一个专门的团队共同研究。

自动化测试:

随着软件越做越大,越来越复杂,单纯的人工测试已经无法满足软件开发的实际需求了,同时有些程序需要重复性测试,所以自动化测试就应运而生了。

原理:

首先要识别出软件中的各个对象(如按钮,图片啥的),记录下用户的每一步,然后将这些操作转换为测试 脚本,之后将脚本自动转换为对系统的存取或操作,之后对比实际结果和期望结果,若没有差异则测试通过,反之失败。

应用场景:

1.在修复软件缺陷后,需要再次进行测试,来确认是否修复成功。

2.人工测试比较困难,如并发测试,强度测试,压力测试等等。

3.需要反复使用测试数据来寻找算法中参数的最优值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码商道

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

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

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

打赏作者

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

抵扣说明:

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

余额充值