您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页黑盒测试流程及方法

黑盒测试流程及方法

来源:宝玛科技网


(又叫用户体验测试UAT)

Bugzilla是Mozilla公司提供的一款开源的免费Bug(错误或是缺陷)追踪 系统,用来帮助你管理软件开发,建立完善的BUG跟踪体系。Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。但是在windows平台下依然可以成功安装使用. Bugzilla是一个搜集缺陷的数据库。它让用户报告的缺陷从而把它们转给合适的开发者。开发者能使用保持一个要做事情的优先表,还有时间表和跟踪相关性。不是所有的\"bugs\"都是。一些数据库中的内容是作为增强的请求(RFE)。一个RFE是一个严重级别字段被设为\"enhancement\"的\"Bug\".人们常说\"bug\实际上意思是Bugzilla中的记录,所以RFEs经常被称作bug。 黑盒测试

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

注重于测试软件的功能需求,主要试图发现下列几类错误。 功能不正确或遗漏; 界面错误; 输入和输出错误; 访问错误; 性能错误;

和错误等。

从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证,而就是将测试行为具体量化的方法之一。具体的黑盒方法包括等价类划分法、边界值分析法、错误推测法、、判定法、正交试验设计法、功能图法、法等。

等价类划分的办法是把的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒方法。 划分等价类

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

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

设计时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性。 划分等价类准则

2)划分等价类的方法:下面给出六条确定等价类的原则。

①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个.

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

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

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

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

3)设计:在确立了等价类后,可建立等价类表,列出所有划分出的等价类: 输入条件

输入条件 有效等价类

然后从划分出的等价类中按以下三个原则设计: ①为每一个等价类规定一个唯一的编号。

②设计一个新的,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步.直到所有的有效等价类都被覆盖为止。

③设计一个新的,使其仅覆盖一个尚未被覆盖的,重复这一步.直到所有的无效等价类都被覆盖为止。

边界值分析法

边界值分析是通过选择等价类边界的。边界值分析法不仅重视输入条件边界,而且也必须考虑输出域边界。它是对等价类划分方法的补充。 (1)边界值分析方法的考虑:

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计,可以查出更多的错误。

使用边界值分析方法设计,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。 (2)基于边界值分析方法选择的原则:

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

2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

3)根据规格说明的每个输出条件,使用前面的原则1)。 4)根据规格说明的每个输出条件,应用前面的原则2)。

5)如果的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为。

6)如果中使用了一个内部,则应当选择这个内部数据结构的边界上的值作为。 7)分析规格说明,找出其它可能的边界条件。 错误推测法

错误推测法是基于经验和直觉推测中所有可能存在的各种错误,从而有针对性的设计的方法.

错误推测方法的基本思想: 列举出中所有可能有的错误和容易发生错误的特殊情况,根据他们选择。 例如,在时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。 因果图法

前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计. 这就需要利用(逻辑模型)。 方法最终生成的就是判定表。它适合于检查输入条件的各种组合情况。 生成

(1) 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

(2) 分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系. 根据这些关系,画出。

(3) 由于语法或环境,有些原因与原因之间,原因与结果之间的组合情况不可能出现. 为表明这些特殊情况,在上用一些记号标明约束或条件。 (4) 把转换为。

(5) 把的每一列拿出来作为依据,设计。

从生成的(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。 前面方法中已经用到了。判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在发展的初期,判定表就已被当作编写程序的了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。 判定表组成法

条件桩(Condition Stub):列出了问题的所有条件.通常认为列出的条件的次序无关紧要。

动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束。

条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值。 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

规则:任何一个条件组合的特定取值及其相应要执行的操作.在中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。 判定表的建立步骤

①确定规则的个数。假如有n个条件.每个条件有两个取值(0,1),故有2n种规则。 ②列出所有的条件桩和动作桩。 ③填入条件项。

④填入动作项.等到初始判定表。 ⑤简化.合并相似规则(相同动作)。

B. Beizer 指出了适合使用设计的条件:

①规格说明以形式给出,或很容易转换成判定表。 ②条件的排列顺序不会也不影响执行哪些操作。 ③规则的排列顺序不会也不影响执行哪些操作。

④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。 ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。 正交试验设计法

就是使用已经造好了的正交来安排试验并进行数据分析的一种方法,目的是用最少的达到最高的测试覆盖率。 场景法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。

基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。[2] 基本流和备选流 流程

测试计划

首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。 测试设计

将阶段制订的测试需求分解、细化为若干个可执行的,并为每个测试过程选择适当的(测试用例选择的好坏将直接影响到测试结果的有效性)。 测试开发

建立可重复使用的自动。 测试执行

执行测试开发阶段建立的自动,并对所发现的进行。测试执行一般由、组合测试、、系统联调及等步骤组成,测试人员应本着科学负责的态度,地进行测试。 测试评估

结合量化的域及跟踪报告,对于的质量和开发团队的工作进度及工作效率进行综合评价。 缺点

1. 结果取决于的设计,测试用例的设计部分优势来源于经验,OUSPG的东西很值得借鉴 2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被的状态转换来实现

3. 就没有状态概念的测试来说,寻找和确定造成crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。 工具选择

如何高效地完成功能测试选择一款合适的功能测试工具并培训一支高素质的队伍无疑是至关重要的。尽管现阶段存在少数不采用任何功能测试工具,从事功能测试外包项目的软件服务企业。短期来看,这类企业盈利状况尚可,但长久来看,它们极有可能被自动化程度较高的软件服务企业取代。

目前,用于功能测试的有很多,针对不同架构软件的工具也不断推陈出新。这里重点介绍的是其中一个较为典型工具,即Mercury公司的WinRunner。

WinRunner是一种用于检验能否如期运行的企业级软件功能测试工具。通过自动捕获、检测和模拟用户交互操作,WinRunner能识别出绝大多数软件功能,从而确保那些跨越了多个功能点和的在发布时尽量不出现功能性故障。

WinRunner的特点在于: 与传统的相比,它能快速、批量地完成功能点测试; 能针对相同,执行相同的动作,从而消除人工测试所带来的理解上的误差; 此外,它还能重复执行相同动作,测试工作中最枯燥的部分可交由机器完成; 它支持风格的测试脚本,一个高素质的能借助它完成流程极为复杂的测试,通过使用、宏、条件语句、等,还能较好地完成测试脚本的重用; 它针对于大多数和Windows技术,提供了较好的集成、支持环境,这对基于Windows平台的实施功能测试而言带来了极大的便利。 工作流程 识别GUI

在WinRunner中,我们可以使用GUI Spy来识别各种GUI,识别后,WinRunner会将其存储到GUI Map File中。它提供两种GUI Map File模式: Global GUI Map File和GUI Map File per Test。其最大区别是后者对每个产生一个GUI文件,它能自动建立、、加

载,推荐初学者选用这种模式。但是,这种模式不易于描述对象的改变,其效率比较低,因此对于一个有经验的测试人员来说前者不失为一种更好的选择,它只产生一个共享的GUI文件,这使得更容易维护,且效率更高。 建立测试脚本

在建立测试时,一般先进行录制,然后在录制形成的脚本中手工加入需要的TSL(与C语言类似的测试)。录制脚本有两种模式: Context Sensitive和Analog,选择依据主要在于是否对鼠标轨迹进行模拟,在需要回放时一般选用Analog。在录制过程中这两种模式可以通过F2键相互切换。

只要看看现代软件的规模和功能点数就可以明白,功能测试早已跨越了单靠手工敲敲键盘、点点鼠标就可以完成的阶段。而则是控制系统性能的有效手段,在软件的能力验证、能力规划、、修复等方面都发挥着重要作用。 对测试脚本除错

在WinRunner中有专门一个Debug Toolbar用于除错。可以使用step、pause、breakpoint等来控制和跟踪和查看各种值。 测试脚本

当有新版本发布时,我们会对应用程序的各种功能包括新增功能进行测试,这时当然不可能再来重新录制和编写所有的。我们可以使用已有的脚本,批量运行这些测试旧的功能点是否正常工作。可以使用一个call命令来加载各。还可在call命令中加各种TSL脚本来增加批量能力。 分析测试结果

分析测试结果在整个中最重要,通过分析可以发现的各种功能性。当运行完某个后,会产生一个,从这个测试报告中我们能发现的功能性,能看到实际结果和期望结果之间的差异,以及在中产生的各类对话框等。

回报缺陷

在分析完后,按照测试流程要回报的各种,然后将这些缺陷发给指定人,以便进行修改和维护。 常用方法

功能测试就是对产品的各功能进行验证,根据功能,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下

1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

3. 检查按钮的功能是否正确:如update,cancel,delete,save等功能是否正确。 4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错.

5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.

6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,.看系统处理是否正确.

7. 中文处理: 在可以输入中文的系统输入中文,看会否出现或出错.

8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致

9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.

10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,

按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.

11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.

12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.

13. 重复提交:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。 14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.

15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.

16. 输入信息位置: 注意在停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.

17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*

19. 检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对是否也做了。

20. 检查: 在输入结束后直接按回车键,看系统处理如何,会否报错。

什么是黑盒测试和白盒测试?

任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。

白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:

1、是否有不正确或遗漏的功能?

2、在接口上,输入是否能正确的接受能否输出正确的结果? 3、是否有数据结构错误或外部信息(例如数据文件)访问错误? 4、性能上是否能够满足要求? 5、是否有初始化或终止性错误?

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

1、对程序模块的所有的执行路径至少测试一遍。

2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。 3、在循环的边界和运行的界限内执行循环体。 4、测试内部数据结构的有效性,等等。

以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。 因果图法

从用自然语言书写的规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为。

因果图法即因果分析图,又叫特性要因图、石川图或鱼翅图,它是由日本东京大学教授石川馨提出的一种通过带箭头的线,将质量问题与原因之间的关系表示出来,是分析影响产品质量的诸因素之间关系的一种工具。

因果图法是一种适合于描述对于多种输入条件组合的方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计的方法,它适合于检查输入条件涉及的各种组合情况。因果图法一般和结合使用,通过映射同时发生相互影响的多个输入来确定判定条件。因果图法最终生成的就是,它适合于检查输入条件的各种组合情况。采用因果图法能帮助我们按照一定的步骤选择一组高效的,同时,还能指出规范中存在什么问题,鉴别和制作因果图。

因果图法着重分析输入条件的各种组合,每种组合条件就是“因”,它必然有一个输出的结果,这就是“果”。

利用因果图导出测试用例一般要经过以下几个步骤:

1)分析软件规格说明的描述中哪些是原因,哪些是结果。原因是输入或输入条件的等价类,结果是输出条件。给每个原因和结果并赋予一个,根据这些关系,画出因果图。 2)因果图上用一些记号表明约束条件或条件。 3)对需求加以分析并把它们表示为因果图之间的关系图。 4)把因果图转换成。

5)将的每一列作为依据,设计。 例题

有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”、“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。 分析

原因:① 投入1元5角硬币; ② 投入2元硬币;

③ 按“可乐”按钮; ④ 按“雪碧”按钮; ⑤ 按“红茶”按钮。 中间状态:① 已投币; ② 已按钮。

结果:① 退还5角硬币; ② 送出“可乐”饮料 ③ 送出“雪碧”饮料; ④ 送出“红茶”饮料。 出判定表 等价类划分

等价类划分就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。

等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。利用这一方法设计测试用例可以不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。等价类划分法是一种系统性的确定要输入的测试条件的方法。

由于等价类是在需求规格说明书的基础上进行划分的,并且等价类划分不仅可以用来确定测试用例中的数据的输入输出的精确取值范围,也可以用来准备中间值、状态和与时间相关的数据以及接口参数等,所以等价类可以用在系统测试、集成测试和组件测试中,在有明确的条件和的情况下,利用等价类划分技术可以设计出完备的测试用例。这种方法可以减少设计一些不必要的测试用例,因为这种测试用例一般使用相同的等价类数据,从而使测试对象得到同样的反映行为。对于等价类我们从以下几个方面讨论它的划分方法。等价类划分的方法分为两个主要的步骤,划分等价类型和设计测试用例。 有效等价类划分

有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。以下是对有效等价类数据集的一些例子。 终端用户输入的命令 与最终用户交互的系统提示 接受相关的用户文件的名称 提供初始化值和边界等 提供格式化输出数据的命令

在图形模式(比如鼠标点击时)提供的数据 失败时显示的回应消息 无效等价类划分

无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。以下是无效等价类数据集的一些例子。 在一个不正确的地方提供适当的值。 验证边界值 验证外部边界的值 用户输入的命令

最终用户与系统交互的提示 验证与边界和外部边界值的数值数据 等价类划分的方法 按区间划分。 按数值划分。 按数值集合划分。 按条件或规划划分。 按处理方式划分。 等价类划分的原则如下:

在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。

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

在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。

在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。

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

等价类表的建立如表3-1所示。

表3-1是等价类表的基础,可依据表3-1确定测试用例。测试用例可按下列步骤来确定: 表3-1 等价类表

1)在分析规格说明的基础上划分等价类,列出等价类表,为每一个等价类规定一个唯一的编号。

2)将程序可能的输入数据分成若干个子集,从每个子集中选取一个有代表性的数据作为测试用例。等价类是某个输入域的子集,在该子集中的每个输入数据的作用都是等效的。 3)设计新的测试用例,使其尽可能多地覆盖未覆盖的有效等价类,按照这一步骤重复进行,直到所有的有效等价类都被覆盖为止。

4)设计新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,按照这一步骤重复进行,直到所有的无效等价类都被覆盖为止。 等价类表与测试用例的关系

等价类表与测试用例的关系如表3-2所示。 表3-2等价类表与测试用例的关系表

例子

有一个报表系统,要求用户输入需要处理的报表胡日期,假定日期范围为2000年1月到2020年12月。如果用户输入的日期不在这个范围内,则显示错误码信息,并且此系统规定日期由年月六位数字组成,前四位数代表年,后二位数代表月。 1)请列出等价类表(包括有效等价类和无效等价类)

2)根据1)中的等价类表,设计出能覆盖所有等价类的测试用例。

要求:包括输入数据和预期输出,并指出各个测试用例所能付给的等价类编号。 答:有效等价类 : 无效等价类 : 3、age<20或age>39 4 。出生日期早于1960年7月 或 出生日期晚于1979年6月

条件 预期结果 等价类覆盖

1、20基本方法就是这样了 ,没写太全。在你设计等价类的时候你可以把条件再细分一下,这样用例的覆盖率会加大的。 边界值分析法

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对划分法的补充,这种情况下,其测试用例来自等价类的边界。 与等价划分的区别

1) 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。

2) 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。 边界值分析方法的考虑:

长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取中的典型值或任意值作为测试数据1) 对16-bit 的整数而言 32767 和 -32768 是边界

2) 屏幕上光标在最左上、最右下位置 3) 报表的第一行和最后一行 4) 数组元素的第一个和最后一个

5) 循环的第 0 次、第 1 次和倒数第 2 次、最后一次 5. 边界值分析

1) 边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。 例:测试计算平方根的函数 --输入:实数 --输出:实数

--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息\"平方根非法-输入值小于0\"并返回0;库函数Print-Line可以用来输出错误信息。 2) 等价类划分:

I.可以考虑作出如下划分: a、输入 (i)<0 和 (ii)>=0 b、输出 (a)>=0 和 (b) Error II.测试用例有两个:

a、输入4,输出2。对应于 (ii) 和 (a) 。

b、输入-10,输出0和错误提示。对应于 (i) 和 (b) 。 3) 边界值分析:

划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:

a、输入 {最小负实数}

b、输入 {大于最小负实数,且趋近于最小值} c、输入 0

d、输入 {小于最大正实数,且趋近于最大值} e、输入 {最大正实数}

4) 通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。

5) 相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下。

边界值分析的基本思想是使用在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值,记为:min、min+、nom、max-、max考虑到健壮性测试,还可以加一个略大于最大值max+,以及一个略小于最小值min-的值。 6) 利用边界值作为测试数据 例子

在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值。

A.X=9,X=10,X=100,X=101 B.X=10,X=100

C.X=9,X=11,X=99,X=101 D.X=9,X=10,X=50,X=100

怎么是A 9不是小于10吗 1010不是大于100吗 答案选择A 边界值的选择:

(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。 (2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。 所以为10、100、9、101

边界是指相对于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。基于边界的方法是根据定义域来实现的,最终演变成边界值分析、健壮性测试、最坏情况测试和健壮最坏情况测试四种技术。

边界值分析也是一种黑盒测试方法,是对等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误。

边界值分析关注的是输入空间边界,用以测试用例,基本思想是在最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)和最大值(max)等处取值。边界值分析手段主要有两种方式:通过变量数量和通过值域的种类进行。如一个n变量函数f(x1,x2,……xn)按以上方式每次确定一个测试对象(基于“单缺陷假设”理论),会产生4n+1个测试用例。健壮性测试是扩展边界值分析的测试,即增加一个略大于最大值(max+)和略小于最小值(min-)的取值,则用例数将变为6n+1。当边界值变量不是变量时,则以上测试用例就显的不充分。对于逻辑变量而言这种用例也没有什么用处。 边界值法示意图 最坏情况测试

拒绝“单缺陷假设”理论的情况下,对所有变量的边界值集合进行5元素计算,用以生成测试用例,对于n变量的最坏测试基于边界值分析会产生5n个测试用例,基于健壮性分析则产生7n个测试用例。相比而言最坏情况测试代价较高,因此其最佳运用是物理变量具有大量交互作用,或者函数失效的代价极高的情况下。 ①“在最小值、和最大值处”是指的一般边界值分析。

②“略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值、略大于最大值”其实是健壮性边界值分析,也就是考虑了非法的意外值。

③可靠性理论“单缺陷假设”:失效极少是由两个(或多个)缺陷的同时发生引起的。 一、如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据; 边界值法

二、如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1格、比最小个数少1个的数做为测试数据;

三、根据规格说明的每一个输出条件,使用规则一; 四、根据规格说明的每一个输出条件,使用规则二;

五、如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例;

六、如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例; 七、分析规格说明,找出其他可能的。 找零钱最佳组合

假 设 商 店 货 品 价 格 (R) 皆 不 大 於 100 元 ( 且 为 整 数 ) , 若 顾 客 付 款 在 100 元 内 (P) , 求 找 给 顾 客 之 最 少 货币 个(张) 数 ( 货 币 面 值 50 元 (N50) , 10 元 (N10) , 5 元 (N5) , 1 元 (N1) 四 种 ) 一、 分 析 输 入 的 情 形 。 R > 100 0 < R < = 100 R <= 0 边界值法 P > 100 R<= P <= 100 P < R

二、 分 析 输 出 情 形 。

N50 = 1 N50 = 0 5 > N10 >= 1 N10 = 0 N5 = 1 N5 = 0 5 > N1 >= 1 N1 = 0

三、 分 析 规 格 中 每 一 决 策 点 之 情 形 , 以 RR1, RR2, RR3 表 示 计 算 要 找 50, 10, 5 元 货 币 数 时 之 剩 余 金 额 。 R > 100R <= 0 P > 100 P < R RR1 >= 50 RR2 >= 10 RR3 >= 5

四、 由 上 述 之 输 入 / 输 出 条 件 组 合 出 可 能 的 情 形 。 R > 100 R <= 0

0 < R <= 100, P > 100

0 < R <= 100, P < R

0 < R <= 100, R <= P <= 100, RR = 50 0 < R <= 100, R <= P <= 100, RR = 49 0 < R <= 100, R <= P <= 100, RR = 10 0 < R <= 100, R <= P <= 100, RR = 9 0 < R <= 100, R <= P <= 100, RR = 5 0 < R <= 100, R <= P <= 100, RR = 4 0 < R <= 100, R <= P <= 100, RR = 1 0 < R <= 100, R <= P <= 100, RR = 0

五、 为 满 足 以 上 之 各 种 情 形 ,1. 货品价格 = 101 2. 货品价格 = 0 3.货品价格 = -1

4. 货品价格 = 100, 付款金额 = 101 5. 货品价格 = 100, 付款金额 = 99 6. 货品价格 = 50, 付款金额 = 100 7. 货品价格 = 51, 付款金额 = 100 8. 货品价格 = 90, 付款金额 = 100

测 试 资 料 设 计 如 下 : 9. 货品价格 = 91, 付款金额 = 100 10. 货品价格 = 95, 付款金额 = 100 11. 货品价格 = 96, 付款金额 = 100 12. 货品价格 = 99, 付款金额 = 100 13. 货品价格 = 100, 付款金额 = 100 空间文章

日常的测试工作中都在有形无形的应用各种测试方法进行测试,只是没有形成完整的体系概念。这几天将测试用例设计方法进行汇总,将测试思想运用于实际工作中,从而更好的指导测试工作。

首先汇总日常最常用的三种方法:等价类划分、边界值分析法、错误推断法。 1.等价类划分

在软件测试中,穷举法虽然是最安全最保险的一种方法但成本代价高,一般是不可取的。我们可以通过等价类划分方法花费最小的代价来完成最高效的测试。

等价类划分是把程序输入域划分成若干子集,然后从子集中选取少数具有代表性的数据进行测试。在子集集合中,各个输入数据对于揭露程序中的错误是等价的。等价类分为有效等价类和无效等价类。 有效等价类

对于程序规格来说合理的、有意义的输入数据的集合,检验程序是否实现了规格说明中的功能和性能。 无效等价类

不合理的、无意义的输入数据集合,验证程序处理意外数据的能力。

划分方法

划分等价类时,可分为按区间划分、按数值划分、按数值集合划分、按条件和规则划分、按处理方式划分。除了应掌握必须使同类数据的处理过程及处理结果完全一致的大原则,可参考以下划分方法:

1) 输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类,如合格成绩取值范围为[60,100],则范围内取值为有效等价类,范围外<60和>100为无效等价类

2) 输入条件规定了输入值的集合或“必须如何”的情况下,可以确定一个有效等价类和一个无效等价类,如:规定数据库类型必须选择oracle,则选择oracle时为有效等价类,否则为无效等价类

3) 输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类 4) 输入条件规定必须遵守某种规则的情况下,可以确定一个有效等价类和若干个无效等价类(从不同角度违法规则),如:规定输入必须为非0正整数,则无效等价类可以分为空、0、负整数、小数、字符等

5) 在规定了输入数据的一组值(假定N个),并且程序要对每个输入值分别处理的情况下,可以确立N个有效等价类和一个无效等价类。如下列框选择“科目”,每个科目所显示的信息不同。

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

在确立了等价类后,可以建立等价类表,列出所有划分出的等价类

输入条件 有效等价类 无效等价类 成绩为[0,100]之间整[0,100]之间整大于100的整数 数 数 小于0的整数(负数)

带小数位,如 含有字母的字符串 空 设计测试用例

然后从划分出的等价类中按以下原则设计测试用例: 1)为每个等价类规定一个唯一编号

2)设计一个新的测试用例,使其尽可能多得覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止

3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有无效等价类都被覆盖为止 2.边界值分析法

以往的测试经验表明,由于需求界定不准确、设计不严密、程序书写手误等等原因,对于这些数据范围边界的判断是软件极容易出错的地方。大量的错误往往发生在输入或输出范围的边界上,因此针对各种边界情况设计测试用例,可以检查出更多的错误。

边界值适用场景

边界值法多被应用于以上几个场景中: 输入(输出)条件规定了取值范围 输入(输出)条件规定了值的个数

程序规格说明书中提到的输入或输出是一个有序的集合 程序中使用了一个内部数据结构

边界值取值应当选取正好等于、刚刚大于最大边界值和刚刚小于最小边界值最为测试数据。

边界值选择测试用例原则

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

2) 如果输入条件规定了值的个数,则选取最大个数、最小个数、比最大个数多一、比最小个数少一的数作为测试数据

3) 根据规格说明的每个输出条件,使用规则1) 4) 根据规格说明的每个输出条件,使用规则2)

5) 若输入域是有序集合,则选取集合的第一个元素和最后一个元素作为测试用例 6) 如果程序使用了一个内部数据结构,则应当选择内部数据结构上得边界值作为测试用例

7) 分析规格说明,找出其他可能的边界条件

3.错误推断法

错误推断法一般基于以往的测试经验和直觉,参照以往的软件系统出现的错误,推测程序中可能存在的各种错误,列出程序中所有可能有的错误和容易发生错误的情况,有针对性的设计测试用例。 例如:

单元测试用例中列出许多在模块中常见的错误、以前产品测试中曾经发现的错误等 输入数据为0或字符为空

各种情况在产品说明中常常被忽视,也可能被程序员遗忘,但在实际使用中却经常发生。测试人员要站在用户的角度,考虑他们要输入的信息,而不管这些信息看起来是合法的输入还是非法的输入。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务