软件测试

软件测试在程序员对每一个模块的编码之后先做程序测试,在做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分已在编码阶段就开始了,测试横跨开发与测试两个阶段,又有不同的人员参加,测试工作本身就是复杂的。

软件测试的概念、原则和目的

软件测试是对软件计划、软件设计、软件编码进行差错和纠错的活动(包括代码执行活动与人工活动)。

程序测试是对编码阶段的语法错、语义错、运行错进行查找的编码执行活动。找出编码中错误的代码执行活动就称为程序测试。纠正编码中的错误的执行活动就成为程序调试。

软件测试的原则:

(1)测试前要认定被测试软件有错,不要认为软件没有错;

(2)要预先确定被测试软件的测试结果;

(3)要尽量避免测试自己编写的程序;

(4)测试要坚固合理输入与不合理输入数据;

(5)测试要以软件需求规格说明书为标准;

(6)要明确找到的新错与以找到的旧错成正比;

(7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法;

(8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。

软件测试的目的:

(1)测试是为了发现程序中的错误而执行程序的过程;

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

(3)成功的测试是发现了至今为止尚未发现的错误的测试。

软件测试是对需求分析、设计和编码三个阶段进行的最终复审。就像是对一辆刚生产出来的汽车,可以让它在山路、沙漠、高温、潮湿、辐射等不同的恶劣环境中行使,以检测它是否在不同的环境中正常工作。

为了测试软件,需要精心设计一批典型的、具有代表性的“的是用例”,用它们测试软件的运行,比较软件运行的结果与预期结果。如果有问题,就找出并加以修改,然后继续进行测试。在选取测试用例时应考虑易于发现错误的数据。软件测试的根本目标是尽可能多的发现错误。下面介绍一下测试用例的设计

a、逻辑覆盖

逻辑覆盖属于白盒测试方法的最常用的一种测试用例技术。它是对一系列测试过程的总称,这组测试过程按照越来越完全的程度进行路径的测试。逻辑覆盖是以程序内部的逻辑结构为基础,要求测试人员对程序的逻辑结构有清楚的了解。根据测试数据覆盖程序逻辑的程度不同,逻辑覆盖可分为以下几类:

(1)语句覆盖

语句覆盖是指选择足够的测试数据,使被测程序中的每个语句至少执行一次。

语句覆盖尽管使每个可执行语句都得到了执行,但是这种覆盖对程序的逻辑覆盖很少。而且,它只关心判定表达式的值,而没有测试判定表达式中的每个条件的值。

(2)判定覆盖

判定覆盖是指设计若干测试数据,使得程序中每个判定表达式的每个分支都至少执行一次(真假值均被满足一次)。判定覆盖又称为分支覆盖。

(3)条件覆盖

条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

(4)判定--条件覆盖

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

(5)条件组合覆盖

条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

(6)路径覆盖

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

b、等价分类法

等价分类是一种典型的黑盒测试技术。这种方法力图设计出一个能够发现若干类错误的测试用例,从而减少必须设计的测试用例的数目。等价分类法把程序的输入域划分成若干个数据类,然后从每一类中选取少数代表性的数据作为测试用例。

1)、等价类的划分

所谓等价类是指某个输入域的子集合,在该子集合中各个输入数据对于揭露程序中的错误都是等效的。并合理地假定,测试某个等价类的代表值就等价与对这一类其他值的测试。有效等价类则是指对程序的规格说明来说是合理的、有意义的输入数据构成的集合,反之则称为无效等价类。划分等价类需要经验,有如下规则:

I、如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在次范围内)和两个无效等价类(输入值小于最小值或大雨最大值);

II、如果规定了输入数据的个数,则类似地也可以划分出一个有效等价类和两个无效等价类;

III、如果规定了输入数据的个数,则类似地也可以划分出一个有效等价类和两个无效等价类;

IV、如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类和若干个无效等价类;

V、如果确知已划分的等价类中个元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。

2)、设计测试用例

划分等价类后,就可以根据等价类设计测试用例了。步骤如下:

(1)设计一个新的测试用例以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;

(2)设计一个新的测试用例,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止(因为某些程序对某一输入错误的检查往往会屏蔽对其他输入错误的检查,多疑必须对每一个无效等价类分别设计测试用例)。

例子:变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为应为字母,其他字母可以是英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。

3)、边界值分析法

边界值分析法也是一种黑盒测试方法,是对等价类划分方法的补充。针对各种边界情况设计测试用例,可以更多地暴露程序中的错误。

使用边界值分析方法选择测试用例,首先应确定边界情况。通常输入等价类与输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

I、如果规定了输入值的范围,则应取刚刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据;

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

III、如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则允许的输入值集合是一个有效的等价类,所以不允许的输入值集合是无效等价类;

IV、如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类和若干个无效等价类

V、如果确知已划分的等价类中个元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。

4)、错误猜测法

错误猜测法是依靠测试人员的经验和直觉,从各种可能的测试方案中选出一些最可能引起程序出错的方案。

它的基本做法是:列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们设计测试方案,对于在程序中容易出粗的情况,也有一些经验总结出来。

例如,输入数据为0或输出数据为0,往往容易发生错误;输入表格为空或输入表格只有一行,也容易发生错误。可根据这些情况设计测试用例。

再如,若两个模块间有共享变量,则要设计测试用例检查当让一个模块去修改这个共享变量时,另一个模块的出错情况等。

软件测试的步骤

软件调试

软工大图导图

 

posted on 2011-09-11 21:33  刘正权的博客  阅读(198)  评论(0编辑  收藏  举报