黑盒白盒测试基本定义

更新时间:2023-06-13 00:53:55 阅读: 评论:0

不深入代码细节的测试方法称为黑盒测试。
黑盒测试(Black box testing)也称功能测试或数据驱动测试,它是已知产品所应具有的功能,通过测试来检测每个功能是否都正常使用。
边界值测试背后的基本原理是错误更可能出现在输入变量的极值附近。
一般情况下,确定边界值应遵循以下几条原则:
(1) 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
(2) 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
  (3) 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试数据。
  (4) 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据。
  (5) 分析规格说明,找出其他可能的边界条件
边界值分析的基本思想是使用输入变量的最小值、略大于最小值、正常值、略小于最大值和最大值设计测试用例
例如,有一个二元函数f(xy),要求输入变量x道路养护工y分别满足:x[112]y[131]。采用边界值分析法设计测试用例,可以选择下面一组测试数据:{ <115><215><1115><1215><615><61><6美的全球创新中心2><630><631> }
对于有n个输入变量的程序,边界值分析会产生4n+1个测试用例。
边界值分析优缺点
健壮性是指在异常情况下,软件还能正常运行的能力。所谓健壮的系统,是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式的系统。健壮性边界测试是边界值分析的一种简单扩展。在使用该方法设计测试用例时,既要考虑有效输入,又要考虑无效的输入。除了按照边界值分析方法选取的五个取值(minmin+nommax-max)外,还要选取略小于最小值(min-)和略大于最大值(max+)微信网页版登录的取值,以观察输入变量超过边界时程序会有什么表现
对于一个含有n个输入变量的程序,进行健壮性边界测试时,使除一个以外的所有变量取正常值,使剩余的那个变量依次取略小于最小值、最小值、略大于最小值、正常值、略小于最大值、最大值和略大于最大值,并对每个变量重复进行。因此其健壮性测试会产生6n+1个测试用例。
健壮性测试的最大价值在于观察处理异常情况,它是检测软件系统容错性的重要手段。
划分对于测试有非常重要的意义:
  (1) 各个子集的并是整个集合,这提供了一种形式的完备性;
  (2) 各个子集的交是空,这种互不相交保证了一种形式的无冗余性。因此采用划分可保证某种程度的完备性,并减少冗余。
等价类的定义:
        等价类是输入域的某个子集合,而所有的等价类的并集是整个输入域。在子集合中,各个输入数据对于揭露程序中的错误是等效的
等价类测试的假设:
测试某等价类的代表值,就等效于对这个等价类中其他值的测试。
等价类测试的思想:
把全部的输入数据划分成若干个等价类,在每一个等价类中取一个数据来进行测试。
绿草青青划分等价类的方法
  等价类测试的思想就是把全部输入数据合理划分为若干等价类,在每一个等价类中取一个具有代表性的数据作为测试的输入条件,这样可以用少量的测试数据取得较好的测试效果。
  在等价类测试中,划分等价类是非常关键的。如果等价类划分合理,可以大大减少测试用例,并能保证达到要求的测试覆盖率。那么如何划分等价类呢?一般来讲,首先要分析程序所有可能的输入情况,然后按照下列规则对其进行划分
等价类的特点
  按划分等价类的规则划分出的等价类具有下列特点:
  (1) 完备性:划分出的各个等价类(子集)的并是输入/输出的全集,即程序的定义域/值域。
  (2) 无冗余性:各个等价类是互不相交的一组子集。
  (3) 等价性:划分的各个子集是由等价关系决定的,即各个输入数据对于揭露程序中的错误都是等效的。
边界值分析法与等价类划分法比较:
外地车在北京
1)等价分类法的测试数据是在各个等价类允许的值域内任意选取的,而边界值分析的测试数据必须在边界值附近选取。
(2)一般地说,用边界值分析法设计的测试用例比等价分类法的代表性更广,发现错误的能力也更强。但是对边界的分析与确定比较复杂,要求测试人员具有更多的经验和创造性。
(3)还需指出,有些包含的边界情况比较简单,只需要分析输入等价类。在有些情况下,除了考察输入值边界外,还需要考察输出值和其他可能存在的边界。
判定表是分析和表达多逻辑条件下执行不同操作的工具
判定表建立步骤:
①列出所有的条件桩和动作桩;②确定规则的个数;
假如有n个条件,每个条件有两个取值(0,1,则有2n 种规则;
③填入条件项;④填入动作项,得到初始决策表;⑤简化,合并相似规则(相同动作)。
E():表示c1c2中至多有一个可能为1,即c1c2不能同时为1
  I():表示c1c2c3中至少有一个是1,即c1c2c3不能同时为0
  O(唯一):表示c1c2中必须有一个且仅有一个为1
  R(要求):表示c11时,c2必须为1,即不可能c11c20
  M(强制):表示如果结果e11,则结果e2强制为0
   
使用因果图法的优点
1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。
2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。
3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。
白盒测试是针对被测试单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件程序验证。特点主要是检查程序的内部结构、逻辑、循环和路径。
逻辑覆盖测试(Logic Coverage Testing)是根据被测试程序的逻辑结构设计测试用例。逻辑覆盖测试考察的重点是图中的判定框。
   
语句覆盖(Statement Coverage)是指在测试时设计若干个测试用例,运行被测试程序,使程序中的每条可执行语句至少执行一次。语句覆盖仅仅针对程序逻辑中显式存在的语句,而对于隐藏的条件是无法测试的。
判定覆盖(Decision Coverage)的基本思想是,设计若干测试用例,运行被测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。判定覆盖又称为分支覆盖。判定覆盖也具有一定的局限性
条件覆盖(Condition Coverage)的基本思想是,设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次,即每个条件至少有一次为真值,有一次为假值。条件覆盖只能保证每个条件的真值和假值至少满足一次,而不考虑所有的判定结果,因此做到了完全的条件覆盖并不能保证达到完全的判定覆盖。
判定-条件覆盖(Decision-Condition Coverage)的基本思想是将判定覆盖和条件覆盖结合起来,即设计足够的测试用例,使得判断条件中的每个条件的所有可能取值至少执行一次,并且每个判断本身的可能判定结果也至少执行一次。判定-条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法。判定-条件覆盖也不一定能够完全检查出逻辑表达式中的错误。
条件组合覆盖(Condition Combination Coverage)就是设计足够的测试用例,运行被测程序,使得所有可能的条件取值组合至少执行一次。条件组合覆盖测试还不完全。
路径覆盖(Path Coverage)的基本思想是,设计足够多的测试用例来覆盖程序中所有可能的路径。实际测试中,即使对于路径数很有限的程序已经做到路径覆盖,仍然不能保证被测试程序的正确性,还需要采用其他测试方法进行补充。
结构性测试(白盒测试)是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。
设计测试用例的基本准则:
测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。
测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的
软件测试就是对软件产品进行验证和确认的活动过程,其目的就是尽快尽早地发现软件产品在整个开发生命周期中存在的各种缺陷,以评估软件的质量是否达到可发布水平。软件测试是软件质量保证的关键元素,代表了需求规格说明书、设计和编码的最终检查。
根据广义观点,软件测试可分为静态测试和动态测试。
曹操后人
  静态测试主要的活动是评审,即通过对需求、设计、代码和其他软件开发文档的评审来检验相应的内容是否满足用户的需求,由于静态测试不需要运行软件或程序,故具有静态特性特征。
动态测试是通过运行软件或程序来发现存在的问题,由于是在运行过程中发现问题,故具有动态性特征。
软件测试的目标之一是尽快尽早地找到至今没有被发现的缺陷,而不是确保没有缺陷。主要原因有:
(1) 绵羊皮测试的覆盖率几乎不可能达到100%,即软件测试不可能穷举所有的测试用例,不能将程序中的所有路径测试一遍;
  (2) 去除现有的缺陷可能会产生新的缺陷,同时系统的需求总是不断在变化,这种需求的不稳定性也将带来新的缺陷;
  (3) 测试工程师对产品的理解不能完全代表用户的理解,由于两者之间的差异,故意味着可能存在测试工程师没有发现的缺陷;
济州  (4) 测试的模拟环境不能完全代表用户的实际使用环境,由于两者之间的差异,故意味着
可能存在测试工程师没有发现的缺陷。
软件测试从不同的角度出发会派生出两种不同的测试原则。
      从用户的角度出发,通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品;
    从开发者的角度出发,就是希望测试能表明软件已经正确地实现了用户的需求,达到软件正式发布的要求,以确立人们对软件质量的信心。
软件测试的原则
(1) 可追溯性(2) 尽早开展预防性测试(3) 投入/产出原则(4) 回归测试(5) 80/20原则(6) 设立独立的测试机构或委托第三方测试

本文发布于:2023-06-13 00:53:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1035821.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   输入   覆盖   条件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图