本文目录一览:
白盒测试与黑盒测试的联系与区别:实际应用场景对比分析
在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方法在已有理论研究中都有充分的论述,但是具体应用场景则需要测试人员根据测试任务特征和时间安排合理选用。
作为一名非计算机科班出身的技术小白,两年有余的业务验收测试和系统功能测试收效明显,从最开始只能看着需求和业务规则,结合个人感觉盲写案例,到现在已经可以根据项目特征和业务场景,混搭等价类划分、边界值分析和逻辑覆盖、基本路径各种方法写案例做测试。基于个人工作经历和测试经验,以下对白盒测试、黑盒测试和灰盒测试的应用场景进行适当的推荐,仅供各位同行参考。
一、黑盒测试
首先从简单的开始,黑盒测试不要求考虑程序的内部逻辑和数据处理,不要求测试人员遍历代码阅读程序,只需要明确输入输出规则,确保系统或模块实现了业务需求。
(1)建议在对稳定运行的大中型系统进行小规模的功能优化或改造过程中使用黑盒测试方法,只需要明确当前项目的改造点,确认与已有功能的关联性和影响,针对项目改造范围进行测试,非特殊情况无需了解系统或模块的全部处理逻辑。
(2)建议复杂度和重要性较低的系统,在时间精力有限的情况下优先选用黑盒测试方法进行测试。测试人员首先明确业务需求,使用等价类划分和边界值分析方法完成测试案例设计,适当结合程序特征、个人经验以及冒烟测试情况等对测试案例进行修订补充,在系统无重大问题或异常的情况下,一般黑盒测试即可满足该类系统测试要求。
(3)建议适当考量测试人员或测试团队专业技术能力以及测试阶段,如在系统功能测试已经完成的前提下,业务方执行的业务验收测试可以使用黑盒测试方法,降低了团队组建成本和测试成本,无需要求业务人员对代码和软件逻辑进行充分学习和掌握。
二、白盒测试
白盒测试要求测试人员对代码和程序逻辑有相应了解,对测试人员专业背景或能力有一定要求,建议根据项目需求和测试要求选择测试方法。
(1)一般单元测试及集成测试需要使用白盒测试方法,包括代码检查法、静态结构分析法等,相关测试多由开发人员完成,具体视项目团队分工而定。
(2)建议针对新建系统或已有系统新增重要模块时使用白盒测试方法,例如逻辑覆盖或基本路径测试法,尤其推荐在有较多校验关系且校验关系间存在嵌套时使用,使用时一般可参考程序代码、详细设计说明书、程序控制流图等相关资料,帮助减少测试人员的分析工作量等。
(3)建议对重点系统进行架构优化、对公共函数或程序进行改造、对后台或接口内容进行调整时选用白盒测试方法,一方面关注优化改造后对原有程序的改动大小,一方面关注调用方或消费方是否受影响,新版本程序或系统对旧版本的兼容性,避免关联系统由于改造时测试不充分受到影响。
(4)建议关注测试中的集群现象,对于缺陷或问题集中的功能和模块建议及时由黑盒测试方法改为白盒测试,在缺陷管理过程中及时进行小范围的测试方法调整,同时保证测试效率和测试充分性。
在两年多的测试工作中,本人主要参与柜台业务系统、客户定制化应用等不同系统或项目的测试工作。其中柜台业务系统因为系统成熟、运行稳定,当前较为常见的是监管或业务等方面要求的小规模优化改造,例如增加校验、增加授权、更改权限级别、减少展示信息等,相关项目大多对当前内容或当前程序逻辑影响较小,通常采用黑盒测试即可。
在银行对公业务尤其是大客户服务领域,定制化应用或功能较为常见,运维或客户需求改变导致的小规模优化可以选择黑盒测试方法,而新建系统或模块或功能测试需要尽量充分,白盒测试方法可以用于辅助案例设计,尤其校验关系较多且存在嵌套时,使用基本路径法设计要素级测试案例可以最小化案例数量,同一思路还可以用于设计流程级测试案例。
近期一次新增模块测试中在流程案例设计就使用了基本路径法,核心交易共有3个不同的流程,3个流程共有4种组合,每个流程涉及最少4支联机交易,最多8支联机交易,每个流程另外涉及最少3个定时交易,各流程起点以外的交易有正反两种状态,一个对象在每个流程中流转时会有15-20种状态。
在测试人力有限且项目周期紧张、测试交付延误的情况下,测试方的压力巨大,穷举测试的工作量完全不可接受,要保证案例充分覆盖功能点,使用白盒测试中的基本路径法是非常有必要的,确认程序节点,画出程序控制流图,分析控制流图的环路复杂性,导出基本路径集合并进一步设计测试案例,由此保证测试充分并尽量压缩测试工作量无论对测试人员还是对整体项目都非常有意义。
总而言之,其实各种方法最终还是为软件系统服务,测试人员可以结合项目情况、时间成本、个人偏好适当选择,"不管黑猫还是白猫,抓得住老鼠才是好猫",不论使用哪种方法或方法组合,能在适当的时间和成本下发现尽量多的缺陷和问题,保证系统按时上线稳定运行才是最重要的。
请关注+私信回复:“测试”就可以免费拿到软件测试学习资料。
黑盒测试与白盒测试的区别
1.6软件测试的分类
软件测试技术最普遍采用的划分即是黑盒测试技术和白盒测试技术以及灰盒测试技术。三者说明如下:
黑盒测试:已知产品的用户需求规格,可以通过测试证明整个软件系统是否符合用户的最终需求,
白盒测试:已知产品的详细设计过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经通过检查。
灰盒测试:已知产品的接口文档,可以通过接口来验证软件给服务器发送的各项请求和返回值的正确性,可以脱离可视化界面进行测试,大大提高工作效率。
黑盒测试与白盒测试各自不同的优缺点,使得它们对于软件测试都是非常重要,都是不可或缺的 下面我们还把黑盒测试与白盒测试做一做对比:
黑盒测试
白盒测试
测试依据 根据用户能看到的规格说明,即针对命令、信息、 根据程序的内部结构,比如语句的控制结构,模场
报表等用户界面及体现它们的输入数据与输出数 对控制结构以及内部数据结构等进行测试
据之间的对应关系,特别是针对功能进行测试。
0 站在用户立场上进行测试 能够对程序内部的特定部位进行覆盖测试
不能测试程序内部特定部位 无法检验程序的外部特性
指吸 如果规格说明有误,则无法发现。 无法对未实现规格说明的程序内部欠缺部分进行
试
方法举例 等价类划分 语句覆盖
边值分析 判定覆盖
因果图 条件覆盖
数据准确性 判定/条件覆盖
路径覆盖
场景法
从上面的对比可以看出,黑盒测试出发点是用户需求,而白盒测试出发点是程序实现。所以,最好
独立的组织来做黑盒测试,这样结果会更客观;白盒测试一般由开发人员完成,因为开发人员更熟悉编程
内部实现
下面我们会对黑盒测试和白盒测试分别介绍;
1.6.1
黑盒测试技术
黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时。程序看作一个不能打开的黑盒子,在能过时来和内部特性的情况下,测试者在程序口行测试它只检查程序功能是否按照需求规精速明字内结常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
“黑盒”着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试,
黑盒测试的检查点一般包括:
根据需求说明书,检查是否有不正确或遗漏了的功能?是否忽略了用户的隐含需求?
在软件外部接口上,输入能否正确地被接受?能否输出正确的结果?
是否有数据结构错误或外部信息(例如数据文件)访问错误?
性能上是否能够满足要求?
易用性和其他功能特性是否能够得到满足?
是否有初始化或终止性缺陷?是否会出现用户不能接受的缺陷?
白盒测试技术
白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码
1.6.2
代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。
第一:穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二:穷举路径测试不可能查出程序中因遗漏路径而出错。
第三:穷举路径测试可能发现不了一些与数据相关的错误。
执行白盒测试时,一般要:
对程序模块的所有独立的执行路径至少测试一次;
对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次;
在循环的边界和运行界限内执行循环体;
测试内部数据结构的有效性,等等。
1.6.3
灰盒测试技术
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。
灰盒(Gray Box)是一种程序或系统上的工作过程被局部认知的装置。灰盒测试,也称作灰盒分析,是基于对程序内部细节有限认知上的软件调试方法。测试者可能知道系统组件之间是如何互相作用的,但缺乏对内部程序功能和运作的详细了解。对于内部过程,灰盒测试把程序看作一个必须从外面进行分析的黑盒。
灰盒测试相对白盒测试更加难以发现并解决潜在问题,尤其在一个单一的应用中,白盒测试的内部细节可以完全掌握。灰盒测试结合了白盒测试和黑盒测试的要素。它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在接口层面体现。
软件测试|黑盒、白盒、灰盒测试的区别
从被测试对象的角度分类,测试方法可以分为黑盒测试、白盒测试、灰盒测试三种,这也是我们最常看到的分类方法。
任何一个程序在测试时都由这几部分组成:输入、程序的处理过程和输出三部分,如图1-1 所示。黑盒测试是指在整个测试过程中只关注输入和输出,如果输入一个测试数据,输出的结果是正确的,我们就认为这个功能是正确的。如输入测试数据(2,2),结果如果输出为4,就认为是正确的,其中程序是如何处理的,测试工程师并不关注,这里有可能是2×2、2+2,也可能是22。当然如果不知道程序是怎么处理的,那么再另一组数据后,可能得到的结果就不一定正确了,如输入(3,3),那结果就不一定会正确了。
白盒测试与黑盒测试不同的地方是,白盒测试不仅仅关注输入与输出的结果是否正确,同时还关注程序是如何处理的,同样是上面的例子,输入测试数据(2,2),白盒测试不仅仅关注测试结果是否为4,同时还关注这个程序的内部逻辑处理过程。
关于黑盒测试和白盒测试其实还像社会的两种人,黑盒测试就相当于黑道,白盒测试就相当于白道。黑道的老大如果要解决什么事情,他们会派下属去处理,并且老大只关注结果,至于中间是如何处理的,与他没有关系。而白道的人即我们说的公务员,他们对办事的整个流程或法律体系都很了解。举个例子,你亲戚和别人打架了,把别人打了,你第一件事不会去报案,而是联系朋友看法院、派出所或其他的相关部门是否有熟人,因为这些人对法律流程很熟悉,他们很清楚如何将你亲戚的责任最小化。
但是这个社会还有一类人,是黑白通吃的,这就是我们测试分类里面的灰盒测试,灰盒测试是界于黑盒测试和白盒测试之间的一种测试。之所以存在灰盒测试,是因为按测试阶段来划分,整个测试的流程包括单元测试、集成测试、系统测试,而白盒测试对应单元测试,黑盒测试对应系统测试,那么在正确的测试过程中,应该是先测试单元模块,单元模块测试完成之后,并没有立即进入系统测试,而是集成测试,这个时候其使用的方法就是灰盒测试,即我们测试完成单个模块后,虽然单个模块没有问题,但并不代表这些模块组合在一块时就一定没有问题。那么要验证这些功能模块组合在一起有没有问题,这就是我们说的集成测试,其使用方法就是灰盒测试。
从某种角度来说,白盒测试显然比黑盒测试更全面,因为他们不仅关注测试结果,还注重程序内部的逻辑结构,所以有人提出为什么不能只有白盒测试就可以呢?答案显然是肯定的。讨论这个极端的问题,其反过来的问题就是黑盒测试的内容有哪些是白盒测试不可能做到的。我们说黑盒测试是更接近用户使用的测试,所以关于用户使用流程、易用性等方面并不是白盒测试可以测试到的,也就是如果白盒测试没问题后,并不能保证程序的易用性、界面显示、业务流程等内容就一定没有错误。同样的道理,显然只有黑盒测试也是不够的,因为黑盒测试虽然可以更好地站在用户的角度进行测试,但黑盒测试并不能像白盒测试那么有效地测试程序内部结构。所以不能极端地认为只有白盒测试或只有黑盒测试可以测试好系统。
所以现在一个完善的测试体系中有这三类方法:黑盒测试、白盒测试、灰盒测试。只有将这三种完美的结合起来,才能更好的保证系统的质量。从软件测试发展的历程来看,包括国内软件测试,其实都是先有黑盒测试才有白盒测试,不可能先做白盒测试再做黑盒测试,并且在现阶段国内很少公司做白盒测试,之所以出现这种情况是因为白盒测试对测试工程师的技能要求会高出许多,同时还有一个原因是因为当前国内软件测试发展还是处于初级阶段,所以白盒测试开展的并不理想。
什么是白盒测试,和的黑盒测试有什么区别?
软件测试是软件开发过程中的基本活动。黑盒测试和白盒测试是两种不同类型的软件测试策略,它们具有同样强大的功能,并且结合使用时甚至更好。
黑盒测试
在软件中,黑盒测试很方便,可以减少灾难性(软件)崩溃的风险。灾难性的软件崩溃可能是什么?系统在更新客户数据库的过程中崩溃了?在这种情况下,可能会丢失客户数据。
黑盒测试分为三种类型:功能测试,非功能测试和回归测试。
黑盒功能测试
通过功能性的黑盒测试,我们可以在不知道软件如何执行的情况下检查该软件是否按预期进行。
软件是用模块或组件构成的。它是由许多不同的组件组成的一系列组件,组成一个完整的系统。通过以这种方式,在小型组件中,我们可以测试每个组件以确保其正常工作,而不仅仅是测试大型系统。
因此,对于每个小组件,都有输入和预期输出。要进行黑盒测试,您需要创建一个有效和无效输入的列表,包括边界条件等等。
这是一个简单的功能性黑匣子测试示例。假设有一个软件模块,该模块输入一个数字。
我们还可以使用黑盒测试来测试其他预期的系统行为。这些可能包括系统响应时间,预期的数据,大量网络流量等场景。
非功能测试将包括诸如设置模拟测试环境之类的内容,以查看系统在压力下的性能。有各种各样的工具可以帮助我们实现这些测试目标并使所涉及的流程自动化。
回归黑盒测试
这是当我们在一个地方进行更改时,对整个系统进行黑盒测试(包括功能测试和非功能测试)时,请确保该更改不会意外影响系统的其他部分。显然,此过程需要自动化!
白盒测试
白盒测试是当测试软件模块的内部结构时:代码本身。出于各种原因,白盒测试是可以采用的良好测试策略。
出于安全原因
有时,代码本来就是“不安全的”:是因为它引用并使用了来自外部源的不安全函数,偶然地导致数据泄漏或使用了错误的结构都会带来安全隐患。
解决性能问题
有无数种方法可以完成某一项业务的软件模块的开发实现。尽管可以正常工作,但这并不意味着它已经以最佳方式进行了配置。如果从性能角度来看代码结构可以更高效,那么白盒测试可以发现这一点。
检查链路
在确认交易之前或之后,应将交易记录在您的系统中吗?也许之前和之后都需要记录它?白盒测试允许您检查路径和数据流的内部工作方式,以查看它们是否最有意义和/或符合系统要求。
需要黑盒和白盒测试的结合
黑盒测试对于确保系统按预期运行至关重要。无需编码知识就可以执行这种测试,因为它不需要检查代码本身。在这种情况下,了解软件系统的工作原理和业务逻辑更为重要。白盒测试更加困难,需要由经验丰富的程序员使用高级工具进行。
软件测评报告请联系王经理:18684048962 更多资讯请关注公众号:软件测评闲聊站
白盒测试与黑盒测试的联系与区别:实际应用场景对比分析
在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方法在已有理论研究中都有充分的论述,但是具体应用场景则需要测试人员根据测试任务特征和时间安排合理选用。
作为一名非计算机科班出身的技术小白,两年有余的业务验收测试和系统功能测试收效明显,从最开始只能看着需求和业务规则,结合个人感觉盲写案例,到现在已经可以根据项目特征和业务场景,混搭等价类划分、边界值分析和逻辑覆盖、基本路径各种方法写案例做测试。基于个人工作经历和测试经验,以下对白盒测试、黑盒测试和灰盒测试的应用场景进行适当的推荐,仅供各位同行参考。
一、黑盒测试
首先从简单的开始,黑盒测试不要求考虑程序的内部逻辑和数据处理,不要求测试人员遍历代码阅读程序,只需要明确输入输出规则,确保系统或模块实现了业务需求。
(1)建议在对稳定运行的大中型系统进行小规模的功能优化或改造过程中使用黑盒测试方法,只需要明确当前项目的改造点,确认与已有功能的关联性和影响,针对项目改造范围进行测试,非特殊情况无需了解系统或模块的全部处理逻辑。
(2)建议复杂度和重要性较低的系统,在时间精力有限的情况下优先选用黑盒测试方法进行测试。测试人员首先明确业务需求,使用等价类划分和边界值分析方法完成测试案例设计,适当结合程序特征、个人经验以及冒烟测试情况等对测试案例进行修订补充,在系统无重大问题或异常的情况下,一般黑盒测试即可满足该类系统测试要求。
(3)建议适当考量测试人员或测试团队专业技术能力以及测试阶段,如在系统功能测试已经完成的前提下,业务方执行的业务验收测试可以使用黑盒测试方法,降低了团队组建成本和测试成本,无需要求业务人员对代码和软件逻辑进行充分学习和掌握。
二、白盒测试
白盒测试要求测试人员对代码和程序逻辑有相应了解,对测试人员专业背景或能力有一定要求,建议根据项目需求和测试要求选择测试方法。
(1)一般单元测试及集成测试需要使用白盒测试方法,包括代码检查法、静态结构分析法等,相关测试多由开发人员完成,具体视项目团队分工而定。
(2)建议针对新建系统或已有系统新增重要模块时使用白盒测试方法,例如逻辑覆盖或基本路径测试法,尤其推荐在有较多校验关系且校验关系间存在嵌套时使用,使用时一般可参考程序代码、详细设计说明书、程序控制流图等相关资料,帮助减少测试人员的分析工作量等。
(3)建议对重点系统进行架构优化、对公共函数或程序进行改造、对后台或接口内容进行调整时选用白盒测试方法,一方面关注优化改造后对原有程序的改动大小,一方面关注调用方或消费方是否受影响,新版本程序或系统对旧版本的兼容性,避免关联系统由于改造时测试不充分受到影响。
(4)建议关注测试中的集群现象,对于缺陷或问题集中的功能和模块建议及时由黑盒测试方法改为白盒测试,在缺陷管理过程中及时进行小范围的测试方法调整,同时保证测试效率和测试充分性。
在两年多的测试工作中,本人主要参与柜台业务系统、客户定制化应用等不同系统或项目的测试工作。其中柜台业务系统因为系统成熟、运行稳定,当前较为常见的是监管或业务等方面要求的小规模优化改造,例如增加校验、增加授权、更改权限级别、减少展示信息等,相关项目大多对当前内容或当前程序逻辑影响较小,通常采用黑盒测试即可。
在银行对公业务尤其是大客户服务领域,定制化应用或功能较为常见,运维或客户需求改变导致的小规模优化可以选择黑盒测试方法,而新建系统或模块或功能测试需要尽量充分,白盒测试方法可以用于辅助案例设计,尤其校验关系较多且存在嵌套时,使用基本路径法设计要素级测试案例可以最小化案例数量,同一思路还可以用于设计流程级测试案例。
近期一次新增模块测试中在流程案例设计就使用了基本路径法,核心交易共有3个不同的流程,3个流程共有4种组合,每个流程涉及最少4支联机交易,最多8支联机交易,每个流程另外涉及最少3个定时交易,各流程起点以外的交易有正反两种状态,一个对象在每个流程中流转时会有15-20种状态。
在测试人力有限且项目周期紧张、测试交付延误的情况下,测试方的压力巨大,穷举测试的工作量完全不可接受,要保证案例充分覆盖功能点,使用白盒测试中的基本路径法是非常有必要的,确认程序节点,画出程序控制流图,分析控制流图的环路复杂性,导出基本路径集合并进一步设计测试案例,由此保证测试充分并尽量压缩测试工作量无论对测试人员还是对整体项目都非常有意义。
总而言之,其实各种方法最终还是为软件系统服务,测试人员可以结合项目情况、时间成本、个人偏好适当选择,"不管黑猫还是白猫,抓得住老鼠才是好猫",不论使用哪种方法或方法组合,能在适当的时间和成本下发现尽量多的缺陷和问题,保证系统按时上线稳定运行才是最重要的。
请关注+私信回复:“测试”就可以免费拿到软件测试学习资料。