软件测试方法之黑盒测试与白盒测试
摘要:黑盒测试与白盒测试都是软件测试的重要方法。白盒测试是通过程序的源代码进行测试而不使用用户界面,它主要用于检测软件编码过程中的错误;而黑盒测试是是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的,它主要检测软件的每一个功能是否能够正常使用。他们是相辅相成的。
关键词:黑盒测试;白盒测试;优缺点;软件测试
【1】

1测试的概念
1.1测试的定义
测试的正确定义是“为了发现程序中的错误而执行程序的过程”。这和某些人通常想象的“测试是为了表明程序是正确的”“成功的测试是没有发现错误的测试”是完全相反的[1]。简而言之,找错的活动称测试。而测试的目的是找出软件设计开发全周期中各个阶段的错误,以便分析错误的性质与位置加以纠正。
1.2软件测试的定义
软件测试的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别[2]”。这个定义明确的指出了软件测试的目的是为了检验软件系统的是否符合需求,它并不是一个一次性的,而且是软件开发后期的活动,是整个开发流程的一部分。软件测试能够在软件投入运行前,对软件需求分析,设计规格说明和编码实现的最终的审核,它是软件质量得到保证的关键步骤。
2.黑盒测试概念
2.1黑盒测试概念
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。黑盒测试着眼于程序外部机构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
2.2黑盒测试原理
在进行黑盒测试时,测试者把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当的接收输入数据而产生正确的输出信息,并保持外部信息的完整性[4]。例如:我们要去使用这个百度,比如说我搜索了诗人李清照,我点击百度一下,我只要得到的结果是有关于诗人李清照这样的词条出现,那么我就认为这个功能是正确的。使用黑盒子测试法不需要看到里面的这个代码实现是什么样子的,也不管里面是用Python实现的用Java实现的还是用其他编程语言实现的,只要管我的功能有没有实现。黑盒测试方法有边界值分析法、等价类测试法、因果图法、决策表法、错误推测法、Use Case法(场景法)、正交实验法等,主要用于确认测试。

2.3黑盒测试的目的
黑盒测试主要是为了发现以下错误:是否有不正确或者遗漏了的功能;在接口上,输入能否正确的接受;能否输出正确的结果;是否有数据结构错误或外部信息(例如数据库文件)访问错误;性能上是否能够满足要求;是否有初始化或终止性错误等。

2.4黑盒测试的优缺点
黑盒测试优点:上手简单,只需关注PRD和业务逻辑,测试者不受任何特定编程语言知识的压力,可以测试应用程序/软件的可靠性和功能性;用户视角,更贴合真实用户使用场景;有助于识别功能规范中矛盾和模糊性。
黑盒测试缺点:测试质量高低受测试工程师经验影响,测试工程师的经验越高,对测试越有利;异常场景比较难覆盖,比较难提供直观的测试覆盖率;用例代码覆盖率低,不能用于测试复杂的代码段;测试所有可能的输入流是不可能的,因为这很耗时,并且最终将使许多程序路径未经测试。
3.白盒测试
3.1白盒测试概念
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部的工作过程,可通过测试产品内部动作是否按照规格说明书说明的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能[5]。其主要用于软件验证。
3.2白盒测试原理
软件的白盒测试是对软件的过程性细节做细致的检查。白盒测试把测试对象看做一个打开的的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对所有逻辑路径进行测试,在程序的不同点检查程序的状态,来判定其实际情况是否和预期的状态相一致。白盒测试的主要方法有代码检查法、静态结构分析法、基本路径分析法、逻辑覆盖法等。

3.3白盒测试的目的
白盒测试主要是想对程序模块进行如下检查:对程序模块的所有独立的执行路径至少测试一遍;对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍;在循环的边界和运行的界限内执行循环体;测试内部数据结构的有效性,等等。
3.4白盒测试的优缺点
白盒测试优点:(白盒测试要求对某些程序的结构特性做到一定程度的覆盖,或者说是“基于覆盖率的测试”)迫使测试人员去仔细思考软件的实现;容易自动;用例覆盖率高,可以检查代码中的每条分支和路径;异常场景易发现;对代码的测试比较彻底,可以揭示隐藏在代码中的错误。
白盒测试缺点:投入成本高,昂贵;更多以开发视角出发,容易脱离业务;无法检测代码中遗漏的路径和数据的敏感性错误;无法坚持程序的外部特征;白盒测试也并不验证规格的正确性;即使每条路径都测试了仍然可能有错误。
5结论
软件测试有一个致命的缺陷,即测试的不完全性、不确定性,这是因为任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试。黑盒测试与白盒测试相辅相成,各有所长,两者并不矛盾。且两者都是保障产品质量的不同手段,软件测试需要两者的结合。黑盒测试对于确保系统按照预期实现很关键,而实现黑盒测试并不需要掌握太多的编码知识,因为它检查的是整个软件或者软件功能,而不需要检查代码。这个时候进行白盒测试所需要掌握的了解系统的逻辑过程和工作原理更加重要。

参考文献:
[1]:软件工程导/章海藩,牟永敏编著.-6版-北京:清华大学出版社,2013(2020.6重印)
[2]软件测试技术基础/苟英,中国水利水电出版社,2013
[3]软件测试/郑人杰,人民邮电出版社,2011
[4]软件测试技术/库波,中国水利水电出版社,2001
[5]软件测试教程/贺平,电子工业出版社,2010
图片来源网址:
[1]:https://pic1.zhimg.com/v2-a460bdccc5afe14e3077ecb480271ef8_1440w.jpg?source=172ae18b

软件测试方法之黑盒测试与白盒测试相关推荐

  1. 软件测试方法——黑盒测试九大用例设计方法

    笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 笔者原创,文章转载需注明,如果喜欢请点赞+关注,感谢支持! 导读:面试和工作必备的九大黑盒软件测试方法. 目 ...

  2. 《软件测试方法和技术》 读书笔记

    <软件测试方法和技术> 读书笔记 2014-07-17 第一章 引论   1.3 什么是软件测试   1.4 软件测试与软件开发的关系 第二章 软件测试基本概念   2.1 软件缺陷   ...

  3. 软件测试方法大全,49种测试方法,你知道几个?

    β测试_Beta测试 β测试,英文是Beta testing.又称Beta测试,用户验收测试(UAT). β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试.开发者通常不在测试现场,Be ...

  4. 黑盒测试与白盒测试——总结

    软件开发过程中一个重要环节便是测试,有两种重要的测试方法:黑盒测试和白盒测试. 黑盒测试:也称功能测试或数据驱动测试,它是已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用.在测试时,把程 ...

  5. 总结49种软件测试方法,你知道几个?

    β测试_Beta测试 β测试,英文是Beta testing.又称Beta测试,用户验收测试(UAT). β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试.开发者通常不在测试现场,Be ...

  6. 【软件测试方法大全】49种测试方法,你知道几个?

    β测试_Beta测试 β测试,英文是Beta testing.又称Beta测试,用户验收测试(UAT). β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试.开发者通常不在测试现场,Be ...

  7. 软件测试用例的优点和缺点,浅析黑盒测试和白盒测试各自的优缺点

    软件测试是为了发现程序中的错误而执行程序的过程,常用黑盒功能测试法和白盒结构测试法进行测试,那黑盒功能测试法和白盒结构测试法到底是什么样的测试方法?它们有哪些优劣势呢? 所谓黑盒功能测试法,就是把要测 ...

  8. 【测试方法】黑盒测试、灰盒测试、白盒测试这些你确定都会了吗?

    根据利用的被测对象信息的不同,可以将软件测试方法分为:黑盒测试.灰盒测试.白盒测试. 1.白盒测试 1)概念:是依据被测软件分析程序内部构造,并根据内部构造分析用例,来对内部控制流程进行测试,可完全不 ...

  9. 软件测试年月日白盒测试,软件测试方法 白盒测试

    <软件测试方法 白盒测试>由会员分享,可在线阅读,更多相关<软件测试方法 白盒测试(64页珍藏版)>请在人人文库网上搜索. 1.Chp3 软件测试方法软件测试方法 ch2 软件 ...

最新文章

  1. 华为atn980传输设备_注册开发者超200万!华为HMS加速全球布局,打造全场景智慧体验...
  2. stm32实际运用中遇到的问题
  3. tp3.2.3运用phpexcel将excel文件导入mysql数据库
  4. 南京工程学院 Dsp复习
  5. CSDN下载频道2014年11月4日本-5日常维护公告
  6. (3.1)HarmonyOS鸿蒙单击事件4种写法
  7. 我的内核学习笔记11:linux leds-gpio驱动应用实例
  8. $$a,PHP独有的可变变量
  9. 如何C语言编程二维数组五位学生总分,C语言编程题(有关二维数组的循环的)...
  10. 数字电路基础(三)编码器和译码器
  11. [转]短信验证码如何防止不恶意点击被刷!
  12. PDF如何导出成图片,操作教程
  13. Java输出4位数整数,输出这个数的千位,百位,十位,个位
  14. iOS APP适配iPhone X全屏
  15. ChatGPT保姆级教程,一分钟学会使用ChatGPT!
  16. java技术不行有复试怎么办_复试答不上来怎么办?四个妙招搞定面试!
  17. [-Flutter趣玩篇-] 出神入化的Align+动画
  18. 考研日语线上笔记(三):初级日语语法总结20课
  19. vm 负责虚拟机出现“”适配器 的mac地址在保留地址范围内‘’
  20. dmhs之dm8 to dm8

热门文章

  1. Excel表格解密大揭秘
  2. Nginx请求强制缓存设置
  3. UVM: callback机制 uvm_callback和uvm_callbacks
  4. vue qrcode生成二维码 并拼装url参数
  5. webssh2 一个web ssh 客户端
  6. FreeBSD6.0Release+Squid+Socks5服务器架设笔记
  7. [frp]免备案创建网站域名映射
  8. 工业5G/4G边缘计算网关服务端协议-MQTT配置教程
  9. 《面向对象程序设计R19》 知识点
  10. 《Java入门》计算油费:本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。