软件测试基本方法(三)之黑盒测试

黑盒测试:

  • 概念:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
  • 分类:黑盒测试有很多具体方法,这里只选取两种最常用的——等价类划分法和边界值分析法。

等价类划分法:

定义:分为有效等价类和无效等价类。有效等价类是合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反。

例1:

输入日期,如200001,前四位代表年,后两位代表月,限制条件为日期由年月的6位数字组成,日期限制在2000年1月至2045年12月(奇点时刻,有兴趣的朋友参见超链接:))。下面就是等价类划分的一个实例。

例2:

问题:针对国内18位身份证号码验证,通过等价类划分法设计测试用例。

先了解一下18位身份证,拿370686199211204618来说:

37——所在省

06——所在地级市

86——所在县级市

19921120——出生年月日

461——顺序码,表示你在该地区与你同年同月同日生的人群中的序号,奇数表示男,偶数表示女

8——对前17进行加权求和并mod11,如果结果为10,用‘X’表示

总之根据输入要求,先明白合理等价类是什么,然后再找出不合理等价类。曾经有位scrum master说这是最重要最基本的测试方法,但某些测试人员却不遵守。

边界值分析法:

定义:确定边界情况(输入或输出等价类的边界),选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。

例3:

如上面例1,如果用边界值法,会有如下测试用例:

  • 200001(边界有效最小值)、204512(边界有效最大值)
  • 199901、199912、204601、204612(边界无效值)

边界值分析法常被看做是等价类划分法的一种补充,二者结合起来使用更有效。

例4:

对于一个排序程序,设计它的边界值。

其边界条件有:

  • 排序序列为空
  • 排序序列仅有一个数据
  • 排序序列为最长序列
  • 排序序列已经按要求排好序
  • 排序序列的顺序与要求的顺序恰好相反
  • 排序序列中的所有数据全部相等

例5:

一个文本输入的测试过程,字符编码采用ASCII码。如果输入0~9,那么这个输入的边界字符为/(斜杠)和:(冒号)。

总结:

除了以上两种,还有判定表法、因果图法等。其实所有的白盒和黑盒,最终都要生成测试用例,关于测试用例,如下:

  • 测试用例:为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
  • 一个测试用例用于证明该需求已经满足,通常称作正面测试用例;另一个测试用例反映某个意外的条件,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例
  • 测试用例是软件测试的核心。

软件测试基本方法(三)之黑盒测试,布布扣,bubuko.com

时间: 2024-10-08 10:44:26

软件测试基本方法(三)之黑盒测试的相关文章

软件测试基本方法(六)之集成测试和系统测试

在软件开发中,经常会遇到这样的情况,单元测试时确认每个模块都能单独工作,但这些模块集成在一起之后会出现有些模块不能正常工作.例如,在chrome环境下用js写了一个实时捕捉video中特定区域的模块,正常工作:利用worker线程进行webgl场景渲染,也正常:可是当两个运算合并时,出现一个模块不能正常运行,原因在于两个模块不适合在worker线程中结合,基于worker本身的局限性,只能有一个模块正常工作.所以,很有必要进行集成测试. (1)集成测试定义: 集成测试是将软件集成起来,对模块之间

软件测试基本方法(二)之白盒测试

白盒测试 概念:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作. 分类:白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖.循环覆盖.基本路径覆盖.逻辑覆盖又可进一步分为语句覆盖.判定(分支)覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖等.白盒测试主要用于单元测试(我们需要了解程序源码和结构,而且基于输入输出,适合单元模块).下面重点介绍常用的几种白盒测试方法. 语句覆

获得执行计划方法三-sql_trace

1 追踪这个sesion SQL> alter session set sql_trace=true ; Session altered. 2 执行想要跟踪的语句 SQL> select * from scott.emp ;      EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM ---------- ---------- --------- ---------- --------- --------

软件测试基本方法(七)之验收测试

验收测试是在功能测试和系统测试之后进行的,所以验收测试的前提条件是系统或软件产品已通过了内部测试.然后和用户一起验收软件,在真实环境下运行软件,看是否存在与用户需求不一致的问题或违背产品规格书的要求.由于测试人员不可能完全用户实际使用情况,所以软件是否真正满足最终用户的要求,应由用户进行一系列的验收测试. (1)验收测试定义: 检查软件是否符合合同要求,包括需求规格说明.设计规格说明和用户手册等. (2)测试内容: 易用性测试(用户界面和可用性测试) 兼容性测试(软件兼容性测试.数据共享兼容性测

软件测试基本方法(四)之测试过程模型

瀑布模型是最常见也是最基本的过程模型,但实践中受到越来越大的局限性,我认为现代软件越发庞大和复杂,我们往往不能一眼洞穿,加上用户需求的多样化和不确定性,都让瀑布模型力不从心.于是出现了原型模型.迭代模型.敏捷过程模型和并发模型.例如原型模型就是为了加大与用户的交流,挖掘用户真正的需求.这里只是泛泛地谈一谈一些著名的测试过程改进模型. TMM(测试成熟度模型) 过程能力:描述了遵循一个软件测试过程可能达到的预期结果的范围. TMM的建立得益于: 充分吸收CMM的精华 基于历史演化的测试过程 业界的

软件测试基本方法(五)之单元测试

这是我们最亲密的测试,我们平常写课程设计,当然谈不上商业级的测试,往往就一个单元测试占据了测试.有些人习惯先搭起框架,然后再单元测试:也有些人在完成了一个功能模块后即着手进行该模块的测试.但殊途同归,要保证软件系统的质量,首先就要保证构成系统的单元的质量,这些单元可能是一个对象.类和函数,也可能是更大的单元--组件或模块. (1)为什么要进行单元测试: 软件中存在的错误发现得越早,则修改和维护的费用就越低,而且难度越小,单元测试是早期抓住这些错误的最好时机. (2)定义: 单元测试是对软件基本组

垂直居中重要方法理解---重点是方法三

方法一 这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性. <div id="wrapper"> <div id="cell"> <div class="content"> Content goes here</div> </div> </div> #wrapper { display:table; }

软件测试基本方法(一)之软件测试

为什么要进行软件测试: 产品质量的保证 控制成本的关键 软件可靠性确认 让企业具备国际竞争力 软件测试定义: 软件测试是由"验证(verification)"和"有效性确认(validation)"活动构成的整体. 验证:检验软件是否已正确地实现了产品规格书所定义的系统功能和特性. 有效性确认:确认所开发的软件是否满足用户真正需求的活动. 软件测试和软件开发的关系: 软件缺陷: 定义:是指计算机程序中存在的任何一种破坏正常运行能力的错误,或者隐藏的功能缺陷,其结果会

软件测试技术(三)——使用因果图法进行的UI测试

目标程序 较上次增加两个相同的输入框 使用方法介绍 因果图法 在Introduction to Software Testing by Paul一书中,将软件测试的覆盖标准划分为四类,logical expressions,syntactic descriptions,graphs,input domain characterizations,就我所学的内容来看,等价类划分属于input domain characterizations,控制流与数据流测试属于graphs,而因果图法属于logi