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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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)
blank

相关推荐

  • 香农编码的 matlab 实现「建议收藏」

    香农编码的 matlab 实现「建议收藏」closeall;clearall;clc;%香农编码matlab实现p=[0.50.190.190.070.05]%输入概率n=length(p);y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y’;fori=2:nD(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2)…

  • mysql如何进行分区_mysql如何进行分区_mysql分区有哪些方法「建议收藏」

    mysql如何进行分区_mysql如何进行分区_mysql分区有哪些方法「建议收藏」MySQL可应用于多种语言,包括PERL,C,C++,JAVA和PHP。在这些语言中,MySQL在PHP的web开发中是应用最广泛。大家知道mysql如何分区的吗?下面由学习啦小编为大家整理的mysql分区的方法,希望大家喜欢!mysql分区的方法一、概述当MySQL的总记录数超过了100万后,会出现性能的大幅度下降吗?答案是肯定的,但是,性能下降>的比率不一而同…

  • CSS 相邻兄弟选择器

    相邻兄弟选择器(Adjacentsiblingselector)可选择紧接在另一元素后的元素,且二者有相同父元素。选择相邻兄弟如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用

    2021年12月20日
  • Helm从入门到实践

    Helm从入门到实践

  • pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗

    pycharm换python版本需要重新下载第三方类吗_pycharm自带python吗今天刚配置完python和opencv的环境,发现在PowerShell上能成功使用OpenCV,并且输入importcv2后无错误出现,如下图:但在PyCharm上编写完程序后,会出现“ModuleNotFoundError:Nomodulenamed‘cv2’”的错误。在观看众多的博客后,从这篇博客中受益良多(https://blog.csdn.net/qq_25603827/article/details/84556416),最终发现了问题解决方法。根本问题在于你没有把python环境变

  • luajit的ffi更快的原因_lua return

    luajit的ffi更快的原因_lua returnLuajitffi接口使用小结:1.使用Luajitffi加载C链接库2.使用Luajitffi调用C函数3.使用Luajitffi处理基本类型对象,结构体对象,字符串对象cdata4.cdata赋值及修改本文仅限于使用C链接库,后面文章将介绍使用Luajitffi加载C++链接库

发表回复

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

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