• 0
  • 1
分享
  • 常见的软件测试用例设计方法有哪些?——软件测试圈
  • 小丸子🍡 2024-06-25 16:41:06 字数 3886 阅读 1045 收藏 1

 常见的软件测试用例设计方法,个人认为主要是下面这6种:

  1)流程图法(也叫场景法)

  2)等价类划分法

  3)边界值分析

  4)判定表

  5)正交法

  6)错误推测法

  这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。

  所以本文行文结构如下:

  1、每种用例方法定义、应用场景、使用步骤、案例讲解

  2、每种用例方法应用场景的区别

  3、深入学习资料分享

  一、流程图法(也叫场景法)

  1、使用场景

  所谓流程图法,就是专门针对软件业务流程测试的方法。

  2、什么是业务流程?

  业务流程,是指客户在使用软件的过程中,为了达成自身的所想要的目的,按照指定的顺序去操作软件的功能,这样的操作过程叫业务流程。

  业务流程是多个功能的组合。比如:把大象放进冰箱就是一个业务流程。

15-1.png


  3、使用频率

  高。

  未来不管面向什么项目,都是为了实现用户价值去开发的,所以一定会有业务场景测试。也就意味着一定会使用到流程图法。

  流程图法测试不需要深入功能内部详细测试,主要测试流程。

  4、使用步骤

  1. 根据流程图找出路径

  2. 编写测试用例(从开始到结束为一条路径,有多少条路径就有多少条用例)

  路径数 = 判定节点数 + 1

  5、测试流程使用案例

  流程图举例如下:

15-2.png


  测试用例设计步骤:

  1)找出流程图的路径

  路径数 = 3 + 1 = 4

  2)编写测试用例

  ① 结账流程成功

  ② 结账流程失败-登录失败

  ③ 结账流程失败-选择桌台失败

  ④ 结账流程失败-支付失败

  二、等价类划分法

  1、概念

  等价类定义:满足某种共同特征的数据子集

  等价类分类:

  有效等价类,满足需求的数据集合

  无效等价类,不满足需求的数据集合

  2、使用场景

  没法穷举的,或数据集过大的数据集。

  比如手机号,无法穷举。

  比如一年365天,虽然有限,但数据集过大。

  那为了缩小测试范围,就可以考虑使用等价类划分法。

  3、使用频率

  该方法的使用频率高。

  针对:需要有大量数据测试输入, 但是没法穷举测试的地方。

  比如:输入框、下拉列表、 单选复选框

  4、使用步骤

  步骤1:分析需求

  步骤2:划分等价类—等价类表

  等价类划分:按照 1)长度(空)2)类型 3)规则 去设置无效等价类

  步骤3:设计用例原则

  ① 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类。

  ② 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。

  5、使用案例

  注册邮箱验证

  要求:

  1. 6-18个字符

  2. 包含数字、字母和下划线

  3. 必须以字母开头

  解题思路:

  步骤1:分析需求

15-3.png


  步骤2:划分等价类——等价类表

15-4.png


  步骤3:设计用例原则

  ① 先写能覆盖所有有效测试点的正向用例

  一条正向用例,覆盖编号1+2+3这3条有效等价类

15-5.png


  ② 剩下的所有无效测试点,再分别和正确的测试点组成反向测试用例(有多少无效测试点,就要设置多少条反向测试用例)

  有6个无效测试点,就要另外再设置6条反向测试用例。

15-6.png


  三、边界值分析法

  1、概念

  规律:边界和边界内的值,更容易发现错误

  所以要优先选取正好等于、刚好大于、刚好小于边界的值作为测试数据。

  举例数据范围为 [-99,99]

  上点:边界上的点(正好等于,下图中的绿色)

  离点:距离上点最近的点(刚好大于、刚好小于, 下图中的黄色)

  内点:范围内的点(区间范围内的数据,下图中的紫色)

  其中,上点和内点【必选】。

15-7.png


  2、使用场景

  输入范围有边界。意味着使用场景只能是数字或时间类型。

  边界值分析法一般都是结合等价类使用。

  在等价类的基础上针对有边界范围的测试数据输入的地方(重点关注边界)

  常见词语描述:大小、 尺寸、 重量、 最大、 最小、 至多、 至少等修饰词语

  典型代表:有边界范围的输入框类测试

  疑问:中英文字符串可以使用边界值吗?

  中英文没有边界,意味着无法使用边界值。

  3、使用步骤

  边界值设计用例步骤:

  1. 明确需求
  2. 确定有效和无效等价类
  3. 确定边界范围值
  4. 提取数据编写测试用例

  4、使用案例

  需求:验证QQ账号的合法性

  要求: 6~10位自然数

  1. 明确需求
  2. 确定有效和无效等价类
  3. 确定边界范围值

15-8.png

4. 提取数据编写测试用例

15-9.png

  四、判定表法

  1、定义

  判定表法,是一种以表格形式,表达多条件逻辑判断的工具。

  2、使用场景

  1)多条件组合的测试 且 2)各条件之间要有约束(依赖)

15-10.png

  上方截图中,通过表格将各种组合情况都列出来,非常清晰。其中:

  灰色背景色是条件桩:列出问题中的所有条件,列出条件的次序无关紧要。
  绿色背景色是动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束。
  黄色背景色是条件项:列出条件对应的取值,所有可能情况下的真假值。
  蓝色背景色是动作项:列出条件项的、各种取值情况下应该采取的动作结果。

  3、判定表使用步骤

  Step1、明确需求

  Step2、画出判定表

  1)列出条件桩和动作桩

  2)填写条件项,对条件进行全组合

  3)根据条件项的组合确定动作项

  4)简化、合并相似规则(有相同的动作)

  step3、根据规则编写测试用例

  4、使用案例

  订购单检查。规则:

  1)如果金额大于500元,又未过期,则发出批准单和提货单;

  2)如果金额大于500元,但过期了,则不发批准单与提货单;

  3)如果金额小于等于500元,则不论是否过期都发出批准单和提货单;

  4)在过期的情况下不论金额大小还需要发出通知。

  Step1、明确需求

  条件桩,两个

  金额是否大于500元
  订单状态是否过期

  动作桩,三个

  发出批准单
  发出提货单
  发出通知单

  Step2、画出判定表

  1) 列出条件桩和动作桩

15-11.png

  2)填写条件项,对条件进行全组合

15-12.png

  3)根据条件项的组合确定动作项

15-13.png

  4)简化、合并相似规则(有相同的动作)

  没有,不用操作。

  step3、根据规则编写测试用例

  其中,判定表中贯穿条件项和动作项的一列就是一条规则,每条规则要配上一条测试用例。

15-14.png

  五、正交法

  1、定义

  正交法,是通过正交表选择部分有代表性的组合进行测试(降低测试成本)

  正交表,是经过统计学的实验,分析得来的一个数学结果。它相当于是在大数据集合当中,按照数学的特性去均匀的选择挑选测试数据,以便大幅缩小测试范围。

  2、应用场景

  各条件相互独立,每一种有效用例里的组合数过多,而且这些组合都是有效数据。举例:

15-15.png

  比如,要为购票系统设置测试用例。到达北京的出发地至少有300个,以北京为出发地的目的地也至少有300个,加上出发日期,一年365天,取300天。

  请问,覆盖出发地,目的地,出发日3个条件的测试用例,可以写多少条?

  答案:300 x 300 x 300 =9w x 300= 2700w 条。

  但由于城市名无法设置子集边界,不好使用等价类方法来缩小范围,那你就要考虑正交去降低了。

  3、使用步骤

  1. 分析需求,确定因素(条件)和水平(条件取值)
  2. 选择正交表进行映射
  3. 设计测试用例:正交表一行对应一条用例
  4. 根据需求补充用例:常用的组合项

  4、案例讲解

15-16.png

  4.1,分析需求,确定因素(条件)和水平(条件取值)

  因素:出发地、目的地和出发日期 因素数:3个

  水平:填写、不填写   水平数:2个

  4.2,选择正交表进行映射

15-17.png

  正交表列名:条件具体取值替换。

  水平:“填写”替代 1、“不填写”替代 2。

15-18.png

  4.3,设计测试用例:正交表一行对应一条用例

  case1: 出发地:填写+目的地:填写+出发日期:填写

  case2: 出发地:填写+目的地:不填写+出发日期:不填写

  case3: 出发地:不填写+目的地:填写+出发日期:不填写

  case4: 出发地:不填写+目的地:不填写+出发日期:填写

  4.4, 根据需求补充用例:常用的组合项

  如果某些组合情况,用户经常使用,还可以进行适度的用例完善。

  六、错误推测法

  1、定义

  通过【经验】推测系统可能出现的问题。

  可以作为正常用例方法的补充存在。

  2、场景

  2.1、 时间紧任务量大时,根据之前项目类似经验找出易出错的模块重点测试

  2.2、 时间宽裕通过该方法,列出之前出现问题较多的模块再次测试

  3、使用方法

  根据【经验】和【直觉】列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷。

  4、案例讲解

  比如,输入框填入“空”。

  七、最后用例方法总结

15-19.png

  以上六种用例,最重要的是区别每种用例方法的应用场景。简单总结如下:

  1)流程图法(也叫场景法),主要针对业务场景,也就是多个功能的组合使用场景;

  2)等价类划分法,主要针对数据很大,且数据主要为数字、日期类型;

  3)边界值, 确认边界,要结合等价类使用;

  4)判定表, 一条测试用例覆盖多个条件,且条件之间有约束;

  5)正交法, 数据很大,但是无法使用等价类缩小范围(比如城市名,浏览器名称不是数字、日期类型),就用正交表来缩小范围;

  6)错误推测法,有经验的人使用。


作者:骨灰级收藏家    

来源:http://www.51testing.com/html/60/n-7798360.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,当地时间周二,特斯拉首席执行官埃隆·马斯克在接受媒体采访时表示,在硅谷工作的“笔记本电脑阶层”需要放下他们的道德架子。  马斯克谈论的是回到办公室的必要性。这一问题在硅谷和美国各地的科技工作者中引起了极大的关注,其中许多人得到了高管允许他们远程工作的慷慨授权。  “我认为在家工作的整个概念有点像玛丽·安托瓦内特(译者注:法国国王路易十六的妻子)的假名言,‘让他们吃蛋糕吧,’”马斯克说。“这不仅仅是生产力的问题,”马斯克说,“我认为这在道德上是错误的。”  马斯克将科技工作者称为“生活在梦幻世界中的笔记本电脑阶层”,他对媒体说,居家办公却期望服务人员继续亲自上门是虚伪的。  “人们应...
            0 0 922
            分享
          • 一、Bug跟踪流程Bug的生命流程从新增的opened状态开始,到closed状态结束,简单而言,Bug核心跟踪管理流程应该包括:新增:测试人员发现Bug之后新增一个Bug,并将Bug指定给对应的开发负责人,Bug状态为待DEV处理。Bug新增成功后,只有开发负责人才有权限回复这个Bug,其它人只能查看或追加回复。审核:测试人员提交bug之后,应该由测试经理和项目经理对bug进行审核,审核Bug的优先度、哪些Bug可以等到下个里程碑或版本中解决、对问题有何修改建议。这一步非常重要,避免由于测试人员的素质参差不齐而导致的软件质量问题。回复:开发人员修改问题之后,将Bug回复给对应的测试负责人,B...
            0 0 1295
            分享
          • 一、软件测试的目的1)软件测试是为了发现错误而执行程序的过程。2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)3)一个好的测试用例在于它发现至今未发现的错误。4)一个成功的测试是发现了至今未发现的错误的测试。注意:1、测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。2、没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。例如BevLittlewood发现一个经过测...
            0 0 3211
            分享
          • 新浪科技讯北京时间10月24日早间消息,据报道,美国苹果旗舰店已经开始销售能用Apple Watch或iPhone解锁的外门锁。这款售价329美元的Level Lock+门锁是苹果旗舰店销售的首款支持Home Key的门锁。Level Lock+由Level Home公司出品。在大门上安装这款产品后,用户只需使用苹果Home Key功能轻触便可打开或关闭门锁。Home Key是一款使用NFC和苹果软件中的安全令牌实现开锁和解锁的功能。用户可以通过短信把钥匙发送给朋友,也可以直接通过苹果设备自动开门。对苹果来说,这是2021年宣布的一项备受期待的功能取得的重要进展。Home Key表明苹果仍在推...
            0 0 884
            分享
          • 一. 我们没有已经部署的环境,其他团队会做这件事情你星期一早上来办公室。您注意到生成拦截器有几个问题。您需要从构建存储库构建新版本。您提出请求或联系您的开发团队或部署团队。哦,他们都在忙些其他的事情。但他们在一段时间后就可以做到了。现在告诉我,为什么会这样?它并不像看上去那么复杂。当采取新的构建时,开发人员肯定肯定可以修复好。但是,当您只需触发并部署它时,为什么要等待或依赖某个人呢?有能力和权限随时部署,使您的工作更容易,没有任何等待。你看到了吗?它也会增加你每天测试的周转时间。尽管它正在使用添加的记录器调试某些缺陷,或者使用新的构建来验证已解决的错误。或者是进行新的构建并开始测试新...
            0 0 895
            分享
      • 51testing软件测试圈微信