黑盒测试流程及方法.docx
- 文档编号:30098723
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:27
- 大小:31.51KB
黑盒测试流程及方法.docx
《黑盒测试流程及方法.docx》由会员分享,可在线阅读,更多相关《黑盒测试流程及方法.docx(27页珍藏版)》请在冰豆网上搜索。
黑盒测试流程及方法
(又叫用户体验测试UAT)
Bugzilla是Mozilla公司提供的一款开源的免费Bug(错误或是缺陷)追踪
系统,用来帮助你管理软件开发,建立完善的BUG跟踪体系。
Bugzilla是一开源BugTrackingSystem,是专门为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的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。
前面方法中已经用到了。
判定表(DecisionTable)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在发展的初期,判定表就已被当作编写程序的了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。
判定表组成法
条件桩(ConditionStub):
列出了问题的所有条件.通常认为列出的条件的次序无关紧要。
动作桩(ActionStub):
列出了问题规定可能采取的操作.这些操作的排列顺序没有约束。
条件项(ConditionEntry):
列出针对它左列条件的取值.在所有可能情况下的真假值。
动作项(ActionEntry):
列出在条件项的各种取值情况下应该采取的动作。
规则:
任何一个条件组合的特定取值及其相应要执行的操作.在中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
判定表的建立步骤
①确定规则的个数。
假如有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中,我们可以使用GUISpy来识别各种GUI,识别后,WinRunner会将其存储到GUIMapFile中。
它提供两种GUIMapFile模式:
GlobalGUIMapFile和GUIMapFileperTest。
其最大区别是后者对每个产生一个GUI文件,它能自动建立、、加载,推荐初学者选用这种模式。
但是,这种模式不易于描述对象的改变,其效率比较低,因此对于一个有经验的测试人员来说前者不失为一种更好的选择,它只产生一个共享的GUI文件,这使得更容易维护,且效率更高。
建立测试脚本
在建立测试时,一般先进行录制,然后在录制形成的脚本中手工加入需要的TSL(与C语言类似的测试)。
录制脚本有两种模式:
ContextSensitive和Analog,选择依据主要在于是否对鼠标轨迹进行模拟,在需要回放时一般选用Analog。
在录制过程中这两种模式可以通过F2键相互切换。
只要看看现代软件的规模和功能点数就可以明白,功能测试早已跨越了单靠手工敲敲键盘、点点鼠标就可以完成的阶段。
而则是控制系统性能的有效手段,在软件的能力验证、能力规划、、修复等方面都发挥着重要作用。
对测试脚本除错
在WinRunner中有专门一个DebugToolbar用于除错。
可以使用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+CCtrl+VBackspace等,对一些不允许输入信息的字段,如选人,选日期对是否也做了限制。
20.检查:
在输入结束后直接按回车键,看系统处理如何,会否报错。
什么是黑盒测试和白盒测试?
任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:
已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:
已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?
能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。
由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。
因果图法
从用自然语言书写的规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为。
因果图法即因果分析图,又叫特性要因图、石川图或鱼翅图,它是由日本东京大学教授石川馨提出的一种通过带箭头的线,将质量问题与原因之间的关系表示出来,是分析影响产品质量的诸因素之间关系的一种工具。
因果图法是一种适合于描述对于多种输入条件组合的方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计的方法,它适合于检查输入条件涉及的各种组合情况。
因果图法一般和结合使用,通过映射同时发生相互影响的多个输入来确定判定条件。
因果图法最终生成的就是,它适合于检查输入条件的各种组合情况。
采用因果图法能帮助我们按照一定的步骤选择一组高效的,同时,还能指出规范中存在什么问题,鉴别和制作因果图。
因果图法着重分析输入条件的各种组合,每种组合条件就是“因”,它必然有一个输出的结果,这就是“果”。
利用因果图导出测试用例一般要经过以下几个步骤:
1)分析软件规格说明的描述中哪些是原因,哪些是结果。
原因是输入或输入条件的等价类,结果是输出条件。
给每个原因和结果并赋予一个,根据这些关系,画出因果图。
2)因果图上用一些记号表明约束条件或限制条件。
3)对需求加以分析并把它们表示为因果图之间的关系图。
4)把因果图转换成。
5)将的每一列作为依据,设计。
例题
有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。
若投入1元5角硬币,按下“可乐”、“雪碧”、“红茶”按钮,相应的饮料就送出来。
若投入的是两元硬币,在送出饮料的同时退还5角硬币。
分析
原因:
①投入1元5角硬币;②投入2元硬币;
③按“可乐”按钮;④按“雪碧”按钮;⑤按“红茶”按钮。
中间状态:
①已投币;②已按钮。
结果:
①退还5角硬币;②送出“可乐”饮料
③送出“雪碧”饮料;④送出“红茶”饮料。
出判定表
等价类划分
等价类划分就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。
然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。
利用这一方法设计测试用例可以不考虑程序的内部结构,以需求规格说明书为依据,选择适当的典型子集,认真分析和推敲说明书的各项需求,特别是功能需求,尽可能多地发现错误。
等价类划分法是一种系统性的确定要输入的测试条件的方法。
由于等价类是在需求规格说明书的基础上进行划分的,并且等价类划分不仅可以用来确定测试用例中的数据的输入输出的精确取值范围,也可以用来准备中间值、状态和与时间相关的数据以及接口参数等,所以等价类可以用在系统测试、集成测试和组件测试中,在有明确的条件和限制的情况下,利用等价类划分技术可以设计出完备的测试用例。
这种方法可以减少设计一些不必要的测试用例,因为这种测试用例一般使用相同的等价类数据,从而使测试对象得到同样的反映行为。
对于等价类我们从以下几个方面讨论它的划分方法。
等价类划分的方法分为两个主要的步骤,划分等价类型和设计测试用例。
有效等价类划分
有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。
利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。
有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。
以下是对有效等价类数据集的一些例子。
终端用户输入的命令
与最终用户交互的系统提示
接受相关的用户文件的名称
提供初始化值和边界等
提供格式化输出数据的命令
在图形模式(比如鼠标点击时)提供的数据
失败时显示的回应消息
无效等价类划分
无效等价类和有效等价
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 黑盒 测试 流程 方法