测试新手百科:黑盒测试用例的设计(图文并茂,非常详细!)

程序员二黑 程序员二黑     2022-12-05     529

关键词:

哈喽,我是二黑,这里赠送一份软件测试资料.

  • 1、软件测试学习路线
  • 2、软件测试视频资料
  • 3、软件测试相关文档
  • 4、软件测试相关工具、安装包
  • 5、高级测试工程师简历模板
  • 6、面试题、模拟面试、PDF文档

有需要的小伙伴们可以关注我的公众号:程序员二黑,免费领取


测试策略

测试用例设计方法可以组合为一个整体的策略,因为每一种方法都可以提供一组具体的有用的测试用例,但是都不能提供一个完整的测试用例集。

一组合理的策略如下:

  • 1、如果规格说明包含输入条件组合的情况,应首先使用因果图分析法。

  • 2、任何情况下都应使用边界值分析法。边界值分析法可以产生一系列补充的测试条件,多数甚至全部条件可以被整合到因果图分析中。

  • 3、为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。

  • 4、使用错误猜测增加更多的测试用例。

  • 5、针对上述测试用例,检查程序的逻辑结构。如果覆盖准则未能被前四个步骤中确定的测试用例所满足,并且满足准则也并非不可能,那么增加足够数量的测试用例,以使覆盖准则得到满足。

黑盒测试

一、等价类划分

1)确定等价类

有效等价类代表对程序的有效输入;无效等价类代表的是其他不正确的任何输入。如果需要,我们还可以将一个等价类划分为更小的一些等价类。

比如,规格说明规定了“请输入书籍的数量(1~99)以及书籍的类型(硬皮、软皮或活页)”。它们对应的等价类分别如下:

书籍数量

在这里插入图片描述
书籍类型

2)生成测试用例

1.为每个等价类设置编号。
在这里插入图片描述2.编写测试用例,尽可能多的覆盖尚未被覆盖的有效等价类。直到所有的有效等价类都被测试用例覆盖。测试用例及其覆盖的有效等价类如下:
在这里插入图片描述
3.编写测试用例,覆盖一个且仅一个尚未被覆盖的无效等价类。直到所有的无效等价类都被测试用例所覆盖。测试用例及其覆盖的无效等价类如下:

在这里插入图片描述
用单个的测试用例覆盖无效等价类,是因为有些输入的错误检查可能会屏蔽或取代其他输入的错误检查。比如②⑦,也许程序提示“非法的书籍数量”后,就不会执行对书籍类型的检查了。

二、边界值分析

经验证明,考虑了边界条件的测试用例比其他没有考虑边界条件的测试用例,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中恰好处在边界、或超过边界、或在边界以下的状态。

上例中的书籍数量范围是1~99,那么应该针对0,1和99,100的情况分别设计测试用例。

在这里插入图片描述

从定义可以看出,等价划分只关注输入空间(输入等价类)的不同,边界值分析还需要从输出空间(输出等价类)设计测试用例。

举例来说:

某个程序按月计算个人所得税的速算扣除数,且最小金额是0,最大金额是13,505。使用边界值分析法,应该设计测试用例测试速算扣除数结果为0和13505的情况。此外,还应观察是否可能设计出导致速算扣除数为负数,或者超过13505的测试用例。
在这里插入图片描述
边界值分析法和等价划分重要的区别是,等价划分是从等价类中挑选任意一个元素作为测试数据;边界值分析法考察正处于等价划分边界或在边界附近的状态。

三、因果图

边界值分析和等价划分的缺点是,未对输入条件的组合情况、输入条件之间的相互制约关系进行分析。

1)因果图的基本关系

  • 恒等(Identify):若a为1,则b为1;否则b为0。
  • 非(NOT):若a为1,则b为0;否则b为1。
  • 或(OR):若a或b或c为1,则d为1;否则d为0。
  • 与(AND):若a和b和c都为1,则d为1;否则d为0。
    在这里插入图片描述
    2)因果图的约束条件

1、对于输入条件的约束有E、I、O、R四种:

  • 异(E):E必须总为真,而a、b最多只有一个为1。
  • 或(I):I为真时,a、b和c中至少有一个必须为1。
  • 唯一(O):a、b中,有且仅有一个必须为1。
  • 要求 (R):如果a为1,b也必须为1。
    在这里插入图片描述
    2、对于输出结果的约束只有M一种:

屏蔽(M):如果结果a为0,则b强制为0。

在这里插入图片描述
一、假设有一规格说明:

“第一列中的字符必须是‘A’或‘B’,第二列中的字符必须是一个数字。在这种情况下,对文件进行更新。如果第一个字符不正确,产生提示信息X12。如果第二个字符不是数字,产生提示信息X13。”

(1)将规格说明分解为可执行的片段,确定“因”和“果”,为每个“因”和“果”都赋予唯一的编号。“因”是条件,是指一个明确的输入条件等价类。“果”是动作,是指一个输出或系统转换(输入对程序或系统状态的延续影响)。
在这里插入图片描述
(2)分析规格说明的语义,转换为因果图。原因①和原因②不可能同时成立,为因果图添加对应的约束条件,得到右图。
在这里插入图片描述
(3)将因果图转换为判定表,每一列代表一个测试用例。
在这里插入图片描述
(4)将判定表中的列转换为测试用例。
在这里插入图片描述
二、将因果图转换为判定表的思路(以上述的例子来说明)

  • 1.选择一个“果”作为当前状态。例:71。
  • 2.对因果图回溯,找出导致该“果”为1的所有因的组合(需要考虑到约束条件)。例:001,000。
  • 3.在判定表中为每个“因”的组合生成一列。例:(列3)和(列4)。
  • 4.对于每种“因”的组合,判断所有其他“果”的状态,并放置在对应的每一列中。例:已得在001,000两种组合下结点71的结果为1。判断在“因”为001的组合下,得到70和72的结果为0。判断在“因”为000的组合下,得到70的结果为0,72的结果为1。将“果”的状态填入其对应的列。

对因果图进行回溯时,需要做到以下考虑:

当回溯经过一个结果为1的OR结点时,不要将OR结点的1个以上的输入同时设为1。

当回溯经过一个结果为0的AND结点时,应列举出导致该结果为0的所有输入情况的组合。然而,当该AND结点的一个输入条件为0时,其他输入有一个或更多的1,则不必考虑其他输入为1的所有情况。

当回溯经过一个结果为0的AND结点时,所有输入皆为0的这一种情况应当列举出来。
在这里插入图片描述
找出因果图中,所有导致输出状态为0的输入条件

(1) 根据上述第c)条思路,我们只需列出使得结点⑤和结点⑥皆为0的情况。结点①②③④的取值状态为:

0,0,0,0 (5=0,6=0)

(2) 根据第b)条思路,对于结点⑤为1而结点⑥为0的情况,应该列出导致⑥为0的所有输入情况组合。同时,只需列出一种使得⑤为1的情况即可,不需要列出⑤为1时的所有输入情况组合。又根据第a)条思路,当结点⑤为1时,我们不应将结点①和②同时设为1。于是,得到结点①②③④的取值状态:

1,0,0,0 (5=1,6=0)
1,0,0,1 (5=1,6=0)
1,0,1,0 (5=1,6=0)

同样的,对于⑤为0而⑥为1的情况,也只需要列出⑥为1的一种情况即可(尽管在本例中也只有这一种)。

0,0,1,1 (5=0,6=1)

因果图有助于用一个系统的方法选择出高效的测试用例集。它还有一个额外的好处,就是可以指出规格说明的不完整性和二义性。但通常它不能生成全部应该被确定的有效测试用例。

注意:因果图方法没有充分考虑边界条件。建议,最好是单独考虑边界值分析。这不意味着我们要为此增加相应多的测试用例,而是在由因果图生成测试用例时,可以将边界条件分析一并考虑进去。最好的结果是既满足了两方面的目标,又不需要增加新的测试用例。

四、错误推测

错误猜测是一项依赖于直觉的非正规的过程,其基本思想是人们利用直觉和经验猜测可能犯得错误或错误易发情况的清单,然后编写测试用例来暴露这些错误。

例如,程序输入中出现0这个值,就是一种错误易发情况。因此可以编写测试用例检查特定的输入值中有0,或特定的输出值被强制为0的情况。

同样,在出现输入或输出数目不定的地方,如,对某个列表进行搜索,结果为“空列表”或“只包含一个”条目的列表,也是错误容易发生的情况。

另一个思想是,在阅读规格说明时,联系程序员可能做的假设来确定测试用例。如规格说明中被忽略的一些内容,要么是由于偶然因素,要么是程序员认为其显而易见。

资料分享

下面是我收集的一份2021年软件测试资料包


包括:软件测试学习路线 ,软件测试视频资料 ,软件测试相关文档 ,软件测试相关工具、安装包 ,高级测试工程师简历模板 、面试题、模拟面试、PDF文档 ,思维导图等等…希望能帮助到大家。

关注我的微信公众号:程序员二黑,就可以免费领取上面这份资料包啦!

如果你真的想做一件事情,那么就算障碍重重,你也会想尽一切办法去办到它。但若是你不是真心的想要去完成一件事情,那么纵使前方道路平坦,你也会想尽一切理由阻止自己向前。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+

从工地实习月薪3K到一线企业年薪30W,我追上了那个曾经被赋予厚望的自己

黑盒测试设计--正交实验法

一.方法简介  利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来... 查看详情

黑盒测试记录二

本次会议的主要内容有:测试用例设计定义现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可引入到软件测试... 查看详情

黑盒测试-正交试验法

正交试验法使用前提利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到旺旺因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试... 查看详情

软件测试测试用例的设计

测试用例:是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素。评价测试用例的标准:1.用例表达清楚,无二义性。2.用例可操作性强。3.用... 查看详情

黑盒测试实践进度记录

...3需求规定3.1对功能的规定3.1.1管理员安秀芳:完成边界值测试和等价类测试用例的设计、写博客;罗阳刚:完成场景类测试用例的设计;滕怡天:编写并修改测试脚本;周成:配置seleniumpython的运行环境和配置服务器信息;库博... 查看详情

黑盒测试用例设计——错误猜测法

...测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。-测试用例不是基于需求文档设计,而是针对猜测可能出现的缺陷进行设计。-错误猜测法有时候可以更好的完善需求文档 例如,测试一个对线性表(... 查看详情

软件测试的分类&测试用例的设计&如何编写测试用例

...求分析3、软件设计(明确怎么做!)4、软件编码5、软件测试6、运行维护测试生命周期:单元测试:一般是开发完成时集成测试:单元测试之后,单元之间接口是否正确,数据是否正常传递。比如说注册和充值两个功能是否能... 查看详情

黑盒测试实践(小组测试)第四天

...今天完成初稿。 以下是目录结构:  二、完成测试用例的设计。明天的计划是对照作业中的文档要求,继续完善上述文档。以下是测试用例清单的一部分: 张江:编写测试脚本,根据设计的测试用例在AutoRunner上... 查看详情

黑盒测试用例设计-正交试验方法

...nbsp;第4节结尾提到,因果关系非常庞大,导致由此得到的测试用例数目多大。因而引入正交试验法,从大量的试验数据中挑选适量的、有代表性的点安排测试,来有效地、合理地减少测试的工时。(1)  正交试验设计法 ... 查看详情

测试用例的设计步骤

测试用例的设计步骤作为测试新人,如何实现测试用例的设计一直是我的一个疑惑,在工作中写过几个项目的测试用例,尝试总结一个测试用例的设计步骤。前提:编写测试用例之前我们需要对项目的需求有清晰的了解,对要测... 查看详情

[软件测试题目]一次测试用例设计的完整的过程描述

结合项目开发经验和实例,详细描述一次测试用例设计的完整的过程。详细一点啊参考技术A黑盒测试(Black-boxTesting,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试... 查看详情

c语言测试用例(黑盒测试:功能测试功能驱动测试;白盒测试:结构测试[结构化方法]透明盒测试逻辑驱动测试[逻辑覆盖法]逻辑覆盖测试基于代码的测试)(集成测试系统测试和回归测试)(bug文档)(代码片段)

文章目录测试用例简介作用1.指导测试的实施2.规划测试数据的准备3.编写测试脚本的"设计规格说明书"4.评估测试结果的度量基准5.分析缺陷的标准重要性编制测试用例测试用例文档测试用例的设置(按功能设置用例ÿ... 查看详情

我的测试用例设计-01测试用例的个人见解

刚入行的时候,看了很多关于测试相关的文章,记得有一篇说到测试用例是测试灵魂让我印象深刻。如今,我入行几年了,越发深感测试用例的设计重要性,可以这么说,测试用例的设计与管理是测试工程师的核心技能。我发现... 查看详情

面试测试开发工程师:用例篇

目录1.测试用例的基本要素2. 测试用例的给我们带来的好处 3. 测试用例的设计方法3.1测试用例的总体设计方法基于需求的设计3.2 具体的设计方法3.2.2等价类3.2.3 边界值3.2.4 因果图3.2.5 正交排列 3.2.6场景设计法3.2.7 错误猜测... 查看详情

黑盒测试用例设计-用例维护

...例维护—经验用例      当进入执行测试阶段时,我们总是能发现一些缺陷的出现是出乎我们意料的,或者说是已有的测试需求和测试用例未能覆盖的。那么,对于这部分缺陷,也应当在分析整理后添加到测... 查看详情

优秀测试用例的设计策略

测试工作最为基础核心的内容就是设计测试用例,什么样的测试用例是好的测试用例?我们一般会认为数量越少,发现缺陷越多的用例就是最好的用例。那么我们如何才能设计出好的测试用例呢?一份好的用例是设计出来的,是... 查看详情

软件测试用例

一、测试用例的基本要素测试用例(TestCase)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。好的测试用例是一个不熟悉业务的人也能依据... 查看详情

测试用例设计

...,但是mooctest里面题目太少。2.2Junit编写代码经验总结1、测试方法上必须使用@Test进行修饰2、可以使用@Before和@After等注解来更加灵活的控制测试流程3、可以使用TestSuite来创建更加自动化的测试。测试用例的生成更加方便和灵活... 查看详情