黑盒测试和白盒测试

来源:互联网 发布:java相对路径怎么写 编辑:程序博客网 时间:2024/05/28 19:23

Hello,本博客分享有关测试的概念,黑盒测试和白盒测试,两者之间的区别。

一、 测试方法:

黑盒测试 白盒测试
1、黑盒测试:等价类划分 边界值分析 因果图分析 错误猜测
除了以上4种,还有 三种判定表法、状态迁移法、正交实验法
  正交实验设计法:不涉及代码内部结构的黑盒测试方法
(1)概念:
黑盒测试:是一种常用的软件测试方法,它将被测软件看做一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试。
常用黑盒测试方法:等价类划分、因果图法、边界值分析法、决策表法,在实际应用中要选择合适的方法。
(2) 因果图法:
输入之间有关系,如约束关系、组合关系这是很难用等价类划分和边界值分析描述的,测试效果难以保障,因果关系适合于描述多个条件的组合。
利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
* 产生背景:等价类划分法和边界值分析方法都是着重于输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。虽然 各种输入条件可能出错的情况都已经测试到了,但是多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能组合的数目是天文数字,因此必须考虑采用一种适合描述多种条件的组合、相应产生多个动作的形式来进行测试用例设计,这就需要因果图。
** 因果图法测试用例设计步骤:
(1)确定软件规格(需求)中的原因和结果
(2)确定原因和结果之间的逻辑关系
(3)确定因果图中的各个约束(const raints)
(4)根据因果图并转换为决策表
(5)根据决策表设计测试用例

  • 例:(单选题) 在一个软件测试用例中,有一个字符串数据,若首字符必须是C和D,其余字符必须是0-9的数字,在此情况下是正确的,若首字符不正确,则输出message1,若其余字符不正确,则输出message2。这种情况下最好采用(因果图 )

2、白盒测试: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 多重条件覆盖

  • 逻辑测试覆盖是白盒测试法常用技术。主要覆盖标准有6种,强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
    语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。

  • 判定条件覆盖CDC(Condition/ Decision Coverage),设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。[1] 判定条件覆盖率的公式:条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数).判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。

  • 条件覆盖CC(Condition Coverage),设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%[1] 条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖.

  • 条件组合覆盖,也称多条件覆盖MCC (Multiple Condition Coverage),设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数条件组合覆盖的缺点:判定语句较多时,条件组合值比较多。

二、黑盒测试与白盒测试区别

如果能执行完美的黑盒测试,还需要进行白盒测试吗?
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。

白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。

三、按开发阶段划分测试类型

软件测试类型按开发阶段分为单元测试,集成测试,确认测试,系统测试,验收测试
(1)单元测试:

单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作,单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行地独立进行单元测试。
(2)集成测试
又称为组装测试或联合测试,在单元测试的基础上,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。

(3)确认测试
确认测试的目标是验证软件的功能和性能以及其他特性是否与用户的要求一致。确认测试一般包括有效性测试和软件配置复查。一般有第三方测试机构进行。
(4)系统测试
软件作为计算机系统的一部分,与硬件、网络、外设、支撑软件、数据以及人员结合在一起,在实际或模拟环境下,对计算机系统进行测试,
目的在于与系统需求比较,发现问题

系统测试的16个测试策略:
功能测试、性能测试、压力测试、容量测试、安全性测试、GUI测试、可用性测试、安装测试、配置测试、异常测试,备份测试、健壮性测试、文档测试、在线帮助测试、网络测试、稳定性测试。

(5)验收测试
以用户为主的测试,软件开发人员和质量保证人员参加,由用户设计测试用例。
不是对系统进行全覆盖测试,而是对核心业务流程进行测试。

四、公测、内测、封测:

公测:公开测试 向广大玩家完全公开,注册的账号数量没有限制,公测阶段一般来讲初期是免费的,之后随着玩家数量的增加,游戏运营商会在一定时间之后对游戏开始收费(永久免费游戏除外)
仅有用户参与 一般还会测试服务器压力之类的内容

内测:内部测试。 经历封测之后,游戏进一步完善。发布出来让大众玩家可以注册试玩,通过玩家玩后的反应和建议,进一步将游戏中的bug、设置、职业能力等等进行修订。 有的游戏内测账号是有限的,较难注册。一般的游戏内测结束后就把玩家的游戏角色删掉,有的则保留或者保留一部分。 内测游戏是免费的。
开发人员&用户&测试人员一起 人数偏少,不一定保留数据

封测:封闭测试。 这个版本是未成熟的,有很多bug。 禁止用户注册,只提供一些账号分给玩家玩,如果发现bug了一定要告诉官方网站,官方才能修补。

原创粉丝点击