您的位置:首页 > 其它

软件测试——功能测试

2015-04-11 15:56 281 查看
前言:在了解功能测试中的边界测试时,进行了适当的扩展学习:

      下面主要针对功能测试中的(1)边界值测试;(2)健壮性测试;(3)最坏情况测试;(4)特殊值测试;(5)随机测试

这5个方面进行展开。

(1)边界值测试(Boundary value testing)

     主要是针对各种边界情况设计测试用例,也就是找到边界,然后在边界及其边界附近(例如边界两侧)选点。

eg:已知要测边界有0(隐含需求的边界),60,80,100,

则我们用边界值测试的话可以选择测试值:-1,0,59,60,79,80,99,100(可见《程序员面试宝典第4版》15.3下的面试例题1)

(2)健壮性测试(Robustness Testing)

      又称为容错性测试(Fault Tolerance Testing),用于测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。为了使系统具有良好的健壮性,要求设计人员在做系统设计时必须周密细致,尤其要注意妥善地进行系统异常的处理。

例如除了分析变量的边界值之外,还要分析变量值比最高值高出一点和比最低值低一点的情况。

(3)最坏情况测试

      相对于在单缺陷假设下的边界值分析,如果不做假设就会同时出现有多个变量取边界值的情况。最坏情况测试的测试用例,是先对每个变量进行包含5个边界值元素集合的测试,然后再对这些集合进行笛卡尔积计算生成测试用例。

扩展:什么是笛卡尔积?

       官方解释:笛卡尔(Descartes)乘积又叫直积。设A、B是任意两个集合,在集合A中任意取一个元素x,在集合B中任意取一个元素y,组成一个有序对(x,y),把这样的有序对作为新的元素,他们的全体组成的集合称为集合A和集合B的直积,记为A×B,即A×B={(x,y)|x∈A且y∈B}。

个人理解:两个集合笛卡尔积的结果就是从各自集合中取出一个元素进行组合(注意是有序的)

令附上:笛卡尔积数值计算程序测试报告:

             转自:http://blog.csdn.net/lixh017/article/details/5613549

(抱着想了解如何用C++实现笛卡尔积的目的,巧合的看到了这篇博文。该文中虽然只是通过一个小例子实现了整数类型下的笛卡尔积计算,但是文中以测试该程序为例,讨论了软件测试的流程却是很值得我们去了解、学习的。作为一个想进入测试行业的菜鸟,这样的资源就显得更加珍贵了,故附上该博文链接,同时对该博主献上我的敬意。)

(4)特殊值测试

      该测试不需要使用任何测试方针,只使用最佳工程判断。该方法与测试人员的能力密切相关。

(5)随机测试

      软件测试中除了根据测试用例和测试说明书进行测试外,还需要根据测试者的经验对软件进行功能(即用途)和性能(即质量)抽查。

该方法不是永远选取变量有界的最小值、略高于最小值、正常值、略低于最大值、最大值,而是使用随机数生成器生成测试用例值。

扩展:

有关随机数生成数:

摘自:http://blog.csdn.net/lanyanjiayu/article/details/7369046

1、常见的randn()函数为我们提供了[0,RAND_MAX]之间均匀分布的伪随机整数,RAND_MAX至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。
随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)  

  
2、C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。  

3、 比较理想的是用变化的数,比如时间来作为随机数生成器的种子。
time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。  

// C++随机函数
#include <stdio.h>
#include <iostream>
#include <time.h>  //使用srand需要包含该头文件
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子 ,应该放在for等循环语句前面 不
//然要等很长时间
for (int i=0;i<10;i++)
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
return 0;
}


       到此,我们暂时就对软件测试中功能测试部分里的五种测试方法有了大致地了解,当然要想更好地掌握它们还需要我们更多地去掌握它们各自是如何被实践的。毕竟理论只有和实践结合在一起才能更好地发挥其价值。这些就有待我们需要的时候去实施了。

                                                                                                                                                 专注于自己的学习笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息