文章目录

  • 一、因果图法
  • 二、判定表法【判定表驱动法】
  • 三、场景法
  • 四、正交实验法
  • 五、功能图法(状态迁徙图)【会用就行】
  • 六、其他用例设计方法
  • 七、用例设计方法综合选择

一、因果图法

  • 因果图法是一种适合于描述多种输入条件组合的测试方法
  • 根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法
  • 它适合于检查程序输入条件涉及的各种组合情况

设计步骤
第一步:根据功能说明书中规定的原因和结果之间的关系画出因果图

原因和结果的关系

  • 恒等:原因A成立,结果B一定成立
  • 非:原因A成立时,结果B一定不成立
  • 或:原因A、B、C只要有一个成立,结果D就一定成立
  • 与:原因A、B、C都成立时,结果D才会出现

第二步:根据功能说明在因果图中加上约束条件


因果图使用实例

  • 案例:自助售货机卖啤酒和橙汁,处理单价5角;投五角硬币,按下按钮,出饮料;投下一元硬币,按下按钮、出饮料,并且找零

步骤:

  • 分析原因和结果

  • 画出原因和结果之间的关系(部分关系)

  • 按照需求描述原因、结果间的约束

  • 列出所有的原因和结果的列表,设计初步的测试用例步骤

【C5:这是一种bug,不能作为测试设计】

通过综合案例的分析发现:

  • 只选择饮料没有投币的时候,软件没有任何结果
  • 只投币没有选择饮料的时候,软件也没有任何结果
  • 我们不能把软件的bug设计成测试用例

因果图使用中的局限性:当原因和结果很多的时候,他们之间的关系连线就会很多,导致因果图的可读性变差。因此因果图法用作局部的小功能(原因和结果不是很多的时候)分析
因果图的优势在于:能够发现设计中存在的不足

二、判定表法【判定表驱动法】

是分析和表达逻辑条件下执行不同操作的情况的工具,它由以下几个内容组成:

  • 条件桩:列出了问题的所有条件,通常认为列出的条件的次序无关紧要
  • 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束
  • 条件项:列出针对它左列条件的取值,在所有可能情况下的真假值
  • 动作项:列出在条件项的各种取值情况下应该采取的动作
  • 在实际使用中,因果图法和判定表法结合使用

  • 应用场合:主要适用于多条件的内容组合与结果分析
  • 组成:由条件项、动作项、条件桩、动作桩四部分组成
  • 使用的条件:所有的条件桩在表中的位置和顺序互相不影响;所有的动作桩的顺序不会因为条件顺序的变化而产生不同

建立判定表的步骤:

  • 确定规则的个数【假如有n个条件,每个条件有两个取值(0,1),共有2^n种规则】
  • 列出所有的条件桩和动作桩【1、填入条件项;2、填入动作项,制定初始判定表】
  • 简化,合并相似规则或者相同动作

判定表使用实例:


1、分析条件和动作


2、写入条件桩、动作桩、条件项、动作项

3、对判定表进行简化和优化(对其中不合理或者重复的进行取舍)

从步骤2的表格中可以看到:不管金额高低,只要未过期,就会发送批准单和提货单(在测试时间不充足的情况下,可以选二者中的一个情况进行测试),所以优化之后,条件项就减少为3个

4、将判定表中的每一列(条件项和对应的结果项)作为测试用例的数据和操作,以及对应的预期结果

适合使用判定表设计测试用例的条件:

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

测试用例的设计方法:没有哪一种方法是单独使用的

  • 所有的软件,都是因为某种操作才会导致一定的结果----考虑使用因果图法
  • 所有的软件都有文本框----考虑一定使用等价类、边界值

判定表的实例题目:该判定表为一个杂志的阅读指南判定,指导读者能够良性阅读

读完表格后,请对表格内容进行优化,将重复的内容去掉,并且说明原因

解答:

  • 合并1、2、3、4为一项在疲倦的情况下,一律休息即可
  • 合并7、8为一项,在都不疲倦的情况下,不感兴趣就跳下一章

合并后的表格如下:

三、场景法

原理:

  • 现在的软件几乎都是用事件触发来控制流程的。测试时,可以生动地描绘出事件触发的场景,有利于设计测试用例,同时使测试用例更容易理解和执行
  • 基本流:软件功能按照正确的事件流实现的一条正确流程,通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点
  • 备选流:除了基本流之外的各支流,包含多种不同情况
  • 场景列表:【场景1基本流】【场景2基本流备选流1】【场景3基本流备选流1备选流2】【场景4基本流备选流3】【…】


场景法分析小笔记:

  • 基本流(软件功能正确实现的流程)
  • 备选流(基本功能流程之外的过程)
  • 场景中必须有基本流
  • 场景中必须有内容从用例的开始到用例的结束

场景法案例分析:ATM取款机

基本流:


包含了备选流的过程:

基本流:插卡->输入密码->选择取款服务->选择取款金额->等待出钞->取出卡片
备选流:

  • 卡片不是银行卡
  • 卡片不是银联的卡
  • 密码输错一次
  • 密码输错两次,第三次输入正确
  • 密码输入错误三次,冻结账号或吞卡
  • 选择存款服务
  • 选择查询服务
  • 选择转账服务
  • 选择修改密码服务
  • 选择取款金额
  • 账户金额
  • ATM机没钱了
  • 账户取款金额达到取款机的当如取款上限
  • 取款机掉线
  • 取款机停电

找到基本流和备选流就进行场景设计:

  • 场景1:基本流
  • 场景2:基本流,备选流5
  • 场景3:基本流,备选流7

场景法设计用例的步骤:

  • 根据说明,描述出程序的基本流及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例
  • 测试用例确定后,对每一个测试用例确定测试数据值

场景法适用于解决业务流程清晰的系统或者功能

四、正交实验法

原理

  • 日本人发明,统计学家提出
  • 概念:正交实验法就是利用排列整齐的表-正交表来对试验进行整体设计、综合比较、统计分析,实现通过少数的实验次数找到较好的生产条件,以达到最好效果
  • 这种实验设计法是从大量的实验点中挑选适量的具有代表性的点,利用已经造好的表格-正交表来安排实验并进行数据分析的方法【统计和分析实验数据,从大量实验中找到合适的实验数据组合】
  • 数学原理:《线性代数》《概率论和数理统计》

基本思想

  • 影响实验结果的-----实验因素(因子)
  • 每一个因素的不同取值(状况)-----水平
  • 正交表特点:每列中,同一个数字(水平)在表中出现的次数相等,任意两列组成的数字对(水平对)出现的次数也是相同的

  • n k m三者之间没有任何的数学关系
  • 仅适合用于每一个因素的水平数都相同的正交表

实现步骤

  • 分析所有对结果有影响的因素;从多个角度和方式进行分析(不要放过文本框、按钮等需求中提及的或没有提及)
  • 分析每个因素的水平数量;充分利用等价类、边界值(需求中说明的和未说明的都要分析)
  • 选择正交表;只有特定的因素数和水平数的组合才有对应的正交表;所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般要大于实际的因素数和水平数)

案例

  • 完全排列组合:333=27
  • 使用小工具【latin blend(混合)】完成正交实验的设计:【L9:3:4】

  • 每一列中,同一个数字出现的次数相等
  • 任意两列中,同一个数字对出现的次数相等

正交实验助手

  • latin
  • blend

五、功能图法(状态迁徙图)【会用就行】

原理

  • 在遇到有事务流或由于某种条件成立导致状态改变的软件时,一般使用功能图法
  • 目标:设计足够多的测试用例达到对系统状态的覆盖、状态条件组合的覆盖以及状态迁徙路径的覆盖

功能图法步骤

  • 识别和列举所有的输入(操作)事件,以IP N(N为1 2 3)
  • 定义空闲状态(初始状态),一般以软件刚启动时打开的界面状态为空闲状态
  • 为空闲状态加操作(只加一次)
  • 为第三步所产生的新状态加操作(只加一次),并且曾经加过的操作,不再重复添加
  • 循环给所有的新增状态加操作,直到没有新状态产生为止
  • 组合任意的状态,以列表的形式展现,设计和编写测试用例

案例

1、识别出可以进行的操作:

  • IP1:输入账号
  • IP2:输入密码
  • IP3:点击登录
  • IP4:点击关闭按钮

2、定义QQ登录界面为空闲状态
3、给空闲状态加操作


4、为第三步所产生的新状态加操作(曾经加过的操作,不再重复添加)


5、得到一个新的状态,继续添加操作

6、虽然得到了一个全新的界面(状态),但和空闲状态发生了隔断,因此将其视为空闲状态的结束,可以结束分析过程

7、将状态过程列表化,准备设计测试用例

  • A列:从QQ的登录界面,直接点击关闭按钮,QQ登录推出
  • D列:从QQ的登录界面,先输入QQ号(状态变为QQ号已输入);再输入密码(状态变为QQ号、密码已输入);点击登录,状态就会变为QQ主界面

测试用例的设计越自然越好“大道至简,大巧若拙”

六、其他用例设计方法

测试大纲法

  • 一种着眼于需求的方法
  • 为列出各种测试条件,将需求转换为大纲的形式
  • 一般用于快速的测试和过程记录;用例一般进行后补


探索性测试法

  • 基于经验和直觉
  • 是计划内测试用例设计的补充
  • 执行前也需要设计测试用例

猴子测试法(随意测试)

  • 没有测试用例(无意识的测试)
  • 不能达到一定的覆盖率
  • 许多测试都是冗余的
  • 需要使用同样的随机数才能重建测试

七、用例设计方法综合选择

  • 首先进行等价类划分
  • 在任何情况下都必须使用边界值分析法
  • 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法
  • 对于参数配置类的软件,要用正交实验法选择较少的组合方式达到最佳效果
  • 状态迁徙图法也是很好的测试用例的设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据
  • 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例的过程
  • 可以用错误推测法追加一些测试用例
  • 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例

软件测试工程师面试如何应对测试用例设计方法怎么用?

首先明确用例方法有哪些

  • 等价类划分法
  • 边界值分析法
  • 因果图法
  • 判定表法
  • 场景法
  • 正交实验法
  • 功能图法
  • 用例设计方法的使用不是孤立存在的,而是存在项目中,尤其是一个项目中
  • 所有测试用例的设计方法,没有独立使用的,都是融合在一起使用,往往在一个软件的界面中,都可以使用好几种测试用例的设计方法

【软件测试技术】黑盒测试步骤设计详解相关推荐

  1. 架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!

    架构设计-支付宝.京东.美团.去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付渠道封装 ...

  2. 《猿族崛起》动作捕捉技术及制作流程详解

    前言: 其实最近两个月发布的原创文章,最初动机都是来自于<猿族崛起>,之前并没有太关注这部片子,后来偶然在火星时代上看到Weta发布的特效制作花絮,然后简介说是启用了<阿凡达> ...

  3. 《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论...

    本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第1章,第1.1节软件测试的基本理论,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  4. 《软件测试技术实战:设计、工具及管理》—第1章 1.4节本章总结

    本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第1章,第1.4节本章总结,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.4 本 ...

  5. HDL输入设计详解攻略

    Altera公司的Quartus为设计者提供了多种设计输入方法,包括原理图输入.状态图输入.HDL语言描述.网络表文件等,所不同的是,Quartus可以在一个工程中同时使用VHDL.Verilog语言 ...

  6. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)

    Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载) 说明:主要是针对一些中大型的项目需要进行分布式以及负载均衡的架构提一些思路与建议. 面对大量用户访问.高并发请求,海量 ...

  7. 智能问答系统产品设计详解

    问答系统的概述 我想大家肯定看过很多关于自然语言处理(简称:NLP)技术方面的书籍或者论文,但在这里我不会详细叙述NLP技术方面的知识,而是想通过产品化思路结合NLP相关技术来搭建一个基础版的问答系统 ...

  8. 专科计算机ppt论文,计算机应用技术专业毕业论文PPT详解.ppt

    计算机应用技术专业毕业论文PPT详解 第五章 管理员界面 * 5.1 注册用户管理界面 当注册用户在首页的导航栏里点击"注册用户注册"时,系统跳转至此页. * 5.2 新闻信息管理 ...

  9. VINS技术路线与代码详解

    VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探 ...

最新文章

  1. 钢铁平面焊接缺陷检测,有方案、有代码
  2. ASP.NET Core 中的 startup类
  3. 用c#算成绩的总和_C# 基础知识系列- 6 Lambda表达式和Linq简单介绍
  4. 5界面怎么做窗帘拉动的效果_布艺窗帘款式有哪些?附2020年最新窗帘款式图!...
  5. Java super和this
  6. 《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
  7. AI小白必读:深度学习、迁移学习、强化学习别再傻傻分不清
  8. 支付验证签名失败_验证码收不到,或许是验证码平台出了问题!
  9. 【转】实用技巧:简单而有用的nohup命令介绍
  10. 如何将同一云服务下的虚拟机从经典部署模型迁移到 Azure Resource Manager
  11. 微软私有云分享(R2)21 BMC提升B格
  12. 入职抖音之后,我变强了,但是营养也有点跟不上了...
  13. html 两个idv上下居中,Django搭建个人博客:回到顶部浮动按钮、矢量图标、页脚沉底和粘性侧边栏...
  14. ansible 第二次练习
  15. 云主机搭建linux web,linux云主机web服务的搭建和配置
  16. 浅谈局域网ARP攻击的危害及防范方法(图)
  17. 2015证监会——李彦宏演讲
  18. Image Enhancement
  19. 组态(Configuration)
  20. 企小码会话存档使用教程——删人提醒

热门文章

  1. 溯源系统服务器,区块链溯源服务平台系统架构!
  2. XC3071充电IC(耐高压,带OVP)
  3. build-resource-filtering解释
  4. Python使用pyecharts库制作地图热力图
  5. ui设计概念是什么?ui设计包括哪些设计?
  6. 2.3软件测试与软件开发的关系
  7. 解决多个数独重叠联系
  8. 编译OpenCV时错误,缺少boostdesc_bgm.i文件的问题(附带资源)
  9. JSP实用教程-第三章Tag文件与Tag标记
  10. hgame2023 week1 writeup