软件测试用例的设计方法_设计测试用例的依据

软件测试用例的设计方法_设计测试用例的依据测试用例设计方法,等价类划分法,边界值分析法,错误推测法,因果图法,判定表驱动法,三角形问题用例设计

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

软件测试用例设计之等价类划分法

一、等价类划分法的定义

把程序的输入域和输出域划分成若干部分,然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。

二、等价类划分法的术语

等价类:输入域的各个子集,该子集中所有数据在测试中的作用都是等效的。从等价类中选取个别数据用于测试的效果和该子集中所有数据用于测试的效果一样。
有效等价类:对于程序的规格说明来说合理的,有意义的输入数据集合,有效等价类可检验程序是否实现了规格说明书中所规定的功能和性能。
无效等价类:对于程序的规格说明来说不合理的,没有意义的输入数据集合。

三、等价类划分原则

  1. 确定了输入条件取值范围或值的个数,可以划分出1个有效等价类和2个无效等价类。
    例如:输入学生成绩,输入域为[0,100],有效等价类为[0,100],无效等价类为(-∞,0)和(100,+∞)
  2. 输入条件规定了输入值的集合,例如条件中规定了“必须如何”的绝对条件,可以确定1个有效等价类和1个对立无效等价类。
    例如:规定输入为正整数,有效等价类为所有正整数,无效等价类为所有非正整数
  3. 输入条件的数据类型为布尔类型,可以确定1个有效等价类和1个无效等价类,有效等价类为true,无效等价类为false。
  4. 规定了输入数据的一组值,假定n个,程序要对这n组值分别处理,可以划分出n个有效等价类和1个无效等价类。
    例如:规定输入数据只能为中文,英文或阿拉伯文,则这三种分别为3个有效等价类,除这3种以外的任何字符集合为1个无效等价类
  5. 在规定了输入数据必须遵守规则的情况下,可划分出1个遵守规则的有效等价类和若干个从不同角度违反规则的无效等价类。
  6. 若已划分出的等价类中各元素在程序中的处理方式不同,则应再将该等价类进一步划分为更小的等价类。

四、实例演示(三角形问题和档案管理系统问题)

实例一:某程序规定,输入三个整数a,b,c分别作为三边的边长构成三角形,通过程序判定所构成的三角形的类型,例如,三角形为一般三角形,等腰三角形,等边三角形。
首先通过分析输入域和输出域,划分出等价类。
有效等价类:
根据输入数据得出条件:①三个数②整数③正数④非0数
根据输出数据得出条件:⑤等边⑥等腰⑦两边之和大于第三边
在这里插入图片描述
在这里插入图片描述

实例二:假设有一个档案管理系统,要求用户输入以年月表示的日期,假定日期限定1990年1月~2049年12月,并确定日期由6位数字字符组成,前4位表示年,后2位表示月,用等价类划分法设计测试用例,测试日期检查功能。
有效等价类:①6位数字字符②年范围[1990,2049]③月范围[1,12]
在这里插入图片描述

软件测试用例之边界值分析法

一、边界值分析法定义

边界值分析法通常作为对等价类划分法的补充,其测试数据来自于等价类的边界。边界值分析法是对输入或输出的边界值进行测试的黑盒测试方法。

二、等价类划分法和边界值分析法的区别

1.边界值分析法首先确定边界,然后选取大于,刚好等于,小于边界值的数据进行测试。而不是选取等价类中的典型值或随机值进行测试。
2.边界值分析法不止要考虑输入的边界,也要考虑输出的边界。

三、内部边界值

在设计测试用例过程中,某些边界值不需要呈现给客户,或者客户很难注意到,但是确实属于检验范畴,称为内部边界值条件或者子边界值条件。
内部边界值条件主要有以下几种:数值的边界值检验,字符的边界值检验和其他。

四、设计测试用例的原则

1. 如果输入条件规定了边界值,就应该取刚达到这个范围的值和刚超过这个范围的值作为边界值测试数据。
例如:某程序规格说明中规定:“重量在10公斤到50公斤范围内的邮件,其邮费计算公式为…”,这里应该取重量为10和50,还应该取9.99,10.01,49.99,50.01作为边界值测试数据。
2. 如果输入条件规定了值的个数,就应该取比最大个数多1,最大个数,最小个数,比最小个数少1作为边界值测试数据。
例如:某程序规格说明书中规定:“一个输入文件应包括1~255个记录”,这里应该取0,1,255,256作为边界值测试数据。
3. 应设计测试用例使输出达到边界值及其左右的值。
例如某程序规定:“每次最少显示1条,最多显示4条”,就应该取使输出达到0条,1条,4条,5条作为边界值测试数据。
4. 如果程序规格说明书给出的输出域或者输入域是一个有序集合,则应该选取该集合的第一个数据和最后一个数据作为边界值测试数据。
5. 如果程序中使用了一个内部数据结构,则应该选择这个内部数据结构边界上的值作为边界值测试数据。
6. 分析规格说明书,找可能的边界值测试条件。

五、边界值分析法实例(三角形问题)

假设规定输入a,b,c三条边的数值范围为[50,100]
则边界值分析法得出补充测试用例如下
在这里插入图片描述

软件测试用例设计之错误推测法

一、错误推测法定义

基于测试人员的直觉和经验推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。

二、错误推测法基本思想

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些设计测试用例。
例如输入数据和输出数据为0的情况,输入空格的情况,输入只有1行的情况。可根据这些设计测试用例。

三、错误推测法实例

  • 实例之在日历上添加提醒

测试点:
(1)提交操作时限
(2)未到达的日期是否可以选择
(3)前后时间限制
(4)系统时间的调整

  • 实例之登录页面密码安全性问题

测试点:
(1)复制黏贴密码,密码是否明文显示
(2)复制密码的时候能不能复制出来
(3)配置文件中能否看到密码

  • 实例之输入数组进行排序

测试点:
(1)输入空数组
(2)输入含1个元素的数组
(3)输入的数组中已按顺序排序
(4)输入的数组中已按逆序排序
(5)输入数组中的部分或全部元素相同

  • 实例之手机通话功能

测试点:
(1)无SIM卡时进行呼叫(紧急呼叫除外)
(2)插入已经欠费的SIM卡进行呼叫
(3)射频器件损坏或信号区域外插入有效SIM卡进行呼出
(4)网络正常,插入SIM卡也正常,呼出无效号码
(5)网络正常,插入有效SIM卡,使用快速拨号功能呼出设置无效号码的数字

四、错误推测法的优势和不足

优点:测试人员能够快速且容易地切入,体会到程序的易用程度
缺点:覆盖面不广,丢失大量测试点,该测试行为带有一定主观性,如果外部特性本身设计有问题或者规格说明错误,该方法无法发现
错误推测法只能作为一种辅助的手段,不是系统的测试方法。

软件测试用例设计之判定表驱动法

一、判定表的定义

判定表适用于多逻辑条件下执行多操作的情况。在所有的黑盒测试方法中,判定表驱动法是最严格,最具有逻辑性的测试方法。

二、判定表的组成部分

条件桩:根据题目列出的所有条件。(通常认为条件的次序无关紧要)
动作桩:根据题目列出的所有操作。(通常认为条件的次序无关紧要)
条件项:对各个条件桩的取值
动作项:对各个动作桩的取值
规则:每一组条件项和动作项组合形成一条规则。
合并:对比多条动作项相同,条件项相似的规则,如果发现这些规则里某个条件桩或者某几个条件桩不管取什么值都不影响结果,则这些规则就可以合并。
如下面的例子,初始判定表的规则3,5,6,7就可以合并成最终判定表的规则2,即表示不管条件桩①②满不满足,只要条件桩③满足,动作桩④就满足。最终判定表的规则1和规则2也可以通过读题直接得出。
在判定表中用“-”表示结果与该条件桩的取值无关。

三、判定表驱动法设计步骤

  • 根据软件规格说明书,列出所有条件桩和动作桩
  • 确定规则的个数,如果有n个条件桩,每个条件桩有2个取值(0,1),那么初始判定表中就有2的n次方条规则。
  • 填入条件项。
  • 填入动作项,得到初始判定表。
  • 合并相似规则或相同动作。

四、实例

对于功率大于50马力的机器且维修记录不全或者已运行10年以上的机器,应给与优先维修处理,请建立判定表。
列出条件桩:
①功率大于50马力
②维修记录不全
③已运行10年以上
列出动作桩:
④优先维修处理
⑤正常维修处理
初始判定表:
在这里插入图片描述
最终判定表:
在这里插入图片描述

五、因果图和判定表的区别

判定表和因果图都适用于多逻辑条件下多动作的测试对象,但判定表并非因果图的辅助,因果图用于逻辑比较复杂的测试对象,可以先画出因果图,然后得出判定表。对于逻辑比较简单的测试对象,可以直接画出判定表。

六、判定表驱动法的使用条件

  • 规格说明以判定表形式给出,或者很容易得出判定表。
  • 条件的排列顺序不影响执行哪些操作。
  • 规则的排列顺序不影响执行哪些操作。
  • 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验其他规则。
  • 如果某一规则的得到满足需执行多个操作,这些操作的执行顺序无关紧要。

注:这5个条件的目的是为了使操作的执行完全依赖于条件的组合,就算不满足这些条件,也可以使用判定表驱动法,只不过需要补充用例。

七、判定表驱动法的优点

  • 全面地列出所有可能性,避免遗漏
  • 是最具有逻辑性最严格的测试用例设计方法,适用于复杂逻辑下多输入输出的情况。

八、判定表驱动法的缺点

不能表达重复执行的动作,例如循环结构。

软件测试用例设计之因果图法

一、因果图法定义

因果图法是利用图解法分析多个输入条件组合情况,考虑输入条件之间的约束关系,从而设计测试用例的方法。

二、因果图常用符号

Ci:原因
Ei:结果

注:其中i取0表示状态不出现,i取1表示状态出现,若有多状态可取大于1的值。

三、因果图的四种关系

恒等关系,若C1发生,则E1发生,否则E1不发生。
在这里插入图片描述
非,若C1发生,则E1不发生。
在这里插入图片描述
或,若C1,C2,C3有1个发生,则E1发生,只有一个都不发生,则E1不发生。
在这里插入图片描述
且,若C1,C2,C3都发生,则E1发生,只要有1个不发生,E1都不发生。
在这里插入图片描述

四、因果图约束条件

输入条件互相之间的约束:

  • E互斥:a,b不会同时发生,最多有1个发生,比如性别为男和女,只能选1个
  • I包含:a,b,c中至少有1个发生
  • O唯一:a,b中有且仅有1个发生,比如性别为男和女,只能选一个
  • R要求:a,b中当a出现时,b也必须出现。

输出条件互相之间的约束:

  • M强制:a发生时,b不可能发生,a不发生时,b随意。

五、因果图法设计步骤

(1)提取因果关系,赋予标志符:从软件规格说明书上找出所有输入条件和输出结果,并用CI和EI分别表示。
(2)提取因果关系,表示因果图:分析软件规格说明书中的逻辑,找出原因与结果之间,原因与原因之间的关系,并画出因果图。
(3)标明约束条件:由于环境关系,有些原因和原因,原因和结果之间的组合情况不可能出现,用一些记号标明约束条件。
(4)把因果图转换成判定表。
(5)根据判定表设计测试用例。

六、实例

某软件规格说明书包含这样的要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,在此情况下进行文件修改。若第一个字符不是#或*,给出信息N,若第二个字符不是数字,给出信息M。
输入条件:
C1:第一个字符是#
C2:第一个字符是*
C3:第二个字符是一个数字
输出条件:
E1:给出信息N
E2:允许修改
E3:给出信息M
画出因果图,图中⑩表示一种中间状态,即表示C1和C2形成的一种结果(输入的第一个字符是#或*)
在这里插入图片描述
判定表:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183400.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vim编辑器重要快捷键及vim设置「建议收藏」

    vim编辑器重要快捷键及vim设置「建议收藏」1.全选:ggVG2.跳转到文本最后一行:shift+g3.跳转到文本第一行:gg4.跳转到光标所选行的行首位置:05.跳转到光标所选行的行尾位置:shift+46.全部替换(替换无需确认)::%s/src/dst/g7.全部替换(每次替换需要确认)::%s/src/dst/gc8.查找:/string9.高亮显示查找到的内容::sethlsearch10.显示vim行号::setnu!11.到注释的开始:[/12.到注释的结束:]/13.撤销上一次操作:

  • python中os.getcwd的作用_python中getitem是什么意思

    python中os.getcwd的作用_python中getitem是什么意思比如我们想要获取当前目录的路径,有人可能会用到getcwd()方法,但是会发现这个方法有时候不好用。下面介绍一下,getcwd()方法的具体细节:1、os.getcwd():获取当前工作目录,也就是

  • VB学习总结「建议收藏」

    VB学习总结「建议收藏」无论是生活还是学习,都要不断的总结和思考。学习中,不可以偷懒,你对它偷懒,它就会对你更加偷懒;同样,没有规律和反思的生活是平淡如水,没有进步的,今天的我们应该能和昨天面对面,每天进步一点点。   这次的总结是对全部模块的总结,记录此刻的学习轨迹,以供以后反思学习,同时分享给大家,欢迎大家批评建议。      1.总结大纲——时间管理,计划同步    2.

  • CentOS 7 升级 Linux 内核

    CentOS 7 升级 Linux 内核升级CentOS内核参考资料1升级CentOS内核参考资料2通过/proc虚拟文件系统读取或配置内核Linux内核官网CentOS官网1.关于Linux内核Linux内核分两种:官方内核(通常是内核开发人员用)和各大Linux发行版内核(一般用户常用)。1.1官方内核在使用Docker时,发现其对Linux内核版本的最低要求…

  • pycharm2020.2.3专业版安装教程(python开发cad插件)

    下面通过三种方法给大家介绍Pycharm2020.1安装中文语言插件的方法,大家可以参考下:方法一(在搜索不到插件):1.安装好Pycharm并打开Pycharm2.打开File,找到Settings并打开3.打开Settings中的Pulgins,选择Marketplace,搜索chinese出现下图这个就可以在线安装,不出现离线安装(方法二)方法二(推荐):1.查看Pycharm版本help–…

  • Java IO层次体系结构[通俗易懂]

    Java IO层次体系结构[通俗易懂]在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了   JavaI/O主要包括如下几个层次,包含三个部分:   1.流式部分――IO的主体部分;  2.非流式…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号