软件测试Day4|软件测试理论02

news2024/11/14 14:58:45

目录

    • 6. 测试用例基础
      • 6.1 测试用例的定义
      • 6.2 测试用例要素
      • 6.3 测试用例设计和编写的作用
    • 7. 黑盒测试用例设计方法
      • 7.1 用例设计方法分类
      • 7.2 测试数据选择
        • 7.2.1 等价类划分
          • (1)等价类划分原理
          • (2)确定等价类的原则
          • (3)划分有效等价类和无效等价类
          • 补充
        • 7.2.2 边界值分析
      • 7.3 测试步骤设计
        • 7.3.1 因果图法
          • (1)根据条件写出关系
          • (2)根据功能说明在因果图中加上约束条件
          • (3)列出所有的原因和结果的列表,设计初步的测试用例步骤
          • (4)优点和局限性
        • 7.3.2 判定表法
          • (1)实现步骤
          • (2)实例
        • 7.3.3 场景法
        • 7.3.4 正交实验法
          • 概念
        • 7.3.5 功能图法
        • 7.3.6 测试大纲法
        • 7.3.7 探索性测试法
        • 7.3.8 猴子/随意测试法
      • 7.4 测试用例设计方法综合选择

6. 测试用例基础

6.1 测试用例的定义

  • 设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果;
  • 如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那就表示软件程序人员已经测出软件有缺陷,这时候就必须将这个问题标示出来,并且通知软件开发人员。软件开发人员接获通知后,将这个问题修改完成于下一个测试版本内;
  • 软件测试工程师取得新的测试版本后,必须利用同一个用例来测试这个问题,确保该问题己修改完成。

6.2 测试用例要素

测试用例编号测试项依赖用例测试步骤测试数据预期结果测试结果测试人优先级备注
TestCase_项目名称_模块名称_功能名称_0001简短的话描述测试模块、对象、方式、事件前置用例步骤测用最朴实的语言写步骤测试数据预期结果Pass/Failed测试人优先级特殊步骤

6.3 测试用例设计和编写的作用

  • 有效性:测试用例是测试人员测试过程中的重要参考依据。
  • 可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
  • 易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
  • 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
  • 可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
    1)测试用例越详细,覆盖的越多,时间耗费越多。时间不够用的情况下,还要进行详细测试吗?(在时间范围内,测试更多的内容,覆盖面越广越好,可能不深入)
    2)测试用例需要经常更新吗?(必须更新,特别是发现过缺陷的测试用例–杀虫剂【杀虫剂效应,虫子变异】)

7. 黑盒测试用例设计方法

7.1 用例设计方法分类

  • 测试数据选择:等价类划分、边界值分析
  • 测试步骤设计:因果图法、判定表法、正交实验法、功能图法、场景法

7.2 测试数据选择

7.2.1 等价类划分

(1)等价类划分原理
  • 把程序的输入域划分成若干部分然后从每个部分中选取少数代表性数据作为测试用例
  • 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误, 这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。
(2)确定等价类的原则
  • 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
  • 在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可以确立个一个有效等价类和一个无效等价类
  • 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
  • 在规定了输入数据的一组值(假定n个),并且程序要对每一 个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
  • 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(以不同角度违反规则);【用户名规则】
  • 在确知己划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该价类进一步地划分为更小的等价类
(3)划分有效等价类和无效等价类
补充
  • 用例编号可按照测试分类写上:功能(Function)、界面(UI)、性能(Performance)、安全(Security)、接口(Interface);
  • 测试项:必须是肯定句,可以不写目的产生的结果,写了不算错;
  • 测试项:一般只写一个测试目的(只违反一个规则);
  • 依赖用例:下游用例依赖上游用例(已经存在的用例);
  • 测试数据:没有数据,空着不写(需在测试项中标注某个内容为空);对空格进行测试(数 据)(建议一般不要将空格放在数据前和后,看不出来空格);
  • 用例中不需要显示是否是正向还是反向;

7.2.2 边界值分析

常在河边走,哪有不湿鞋。

  • 边界值本身是一个数值;次边届:按照系统规定的单位或计算方式,一个单位数据的差异。
    1)6≤x≤12:测试用例:5,6,7,11,12,13
    1)6<x<12:测试用例:6,7,8,10,11,12
  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚超越这个范围边界的值作为测试输入数据;
  • 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据;
  • 分析规格说明,找出其他可能的边界条件
  • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
    分析规格说明,找出其他可能的边界条件

7.3 测试步骤设计

7.3.1 因果图法

  • 适合于描述对于多种输入条件组合的测试方法(少量条件和结果组合)
  • 适合于检查程序输入条件涉及的各种组合情况
  • 根据输入条件的组合,约束关系和输出条件的因果关系,分析输入条件的各组情况组合,从而设计测试用例
(1)根据条件写出关系
  • 恒等,条件A成立-结果D成立
  • 非,条件A成立-结果D一定不成立
  • 与,条件A,B,C同时成立-结果D成立
  • 非,条件A,B,C部分成立-结果D成立
    在这里插入图片描述
(2)根据功能说明在因果图中加上约束条件

互斥、包含、唯一、要求是对原因的约束,屏蔽是对结果的约束

  • 互斥(E):eg:不同时为1:条件a,b,c至多一个为1;
  • 包含(I):eg:至少有一个1:条件a,b,c不同时为0;
  • 唯一(O):eg:只有一个1,条件a,b,c有且仅有一个1;
  • 要求(R):eg:条件a=1则条件b必须为1,即不可能a=1,b=0;
  • 屏蔽(M):eg:若结果d出现,则结果e必须不出现。
    在这里插入图片描述
(3)列出所有的原因和结果的列表,设计初步的测试用例步骤
Case1Case2Case3Case4
投币投5角11
投1元11
选饮料橙汁11
啤酒11
结果出橙汁11
出啤酒11
找零5角11
  • 因果图中不能把没有结果(不投币选饮料没有结果,因为该结果没有在之前的需求内)和缺陷写到测试用例
(4)优点和局限性
  • 优点:能够发现设计中的不足(如果出现有结果没有在之前的需求内,则出现不足)
  • 局限性:当原因和结果很多的时候,他们之间的关系连线就很多,导致因果图的可读性变差;因此用作局部的小功能分析(原因和结果不是很多的时候)

7.3.2 判定表法

  • 主要适用于多条件的内容组合与结果分析;是分析和表达多逻辑条件下执行不同操作的情况的工具。它由条件桩、动作桩、条件项、动作项组成;
  • 使用条件:条件桩在表中的位置和顺序互不影响;所有的动作桩的栓徐不会因为条件顺序的变化而产生不同。

  • 条件桩(ConditionStub) :列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
  • 动作桩(ActionStub) :列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
  • 条件项(Condition Entry) :列出针对它左列条件的取值。在所有可能情况下的真假值。
  • 动作项(Action Entry) :列出在条件项的各种取值情况下应该采取的动作。
(1)实现步骤
  • 识别出操作条件(原因)和对应的动作(结果);
  • 分析出条件的组合数量;
  • 简化和优化结果,排除一些不可能出现的情况。
(2)实例
  • 需求:1)大于500+没过期,发批准单和提货单
    2)大于500+过期了,不发批准单
    3)低于500+无论是否过期,发批准单和提货单,过期发通知单
金额>5001010
时效(过期)1001
批准单0111
提货单1111
通知单0001
  • 优化:不论金额与否,只要没过期,就是发批准单和提货单(在测试时间有限时,可以只测一个),减少测试用例

7.3.3 场景法

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

7.3.4 正交实验法

概念
  • 使用正交表;本质是统计和分析实验数据,从大量实验中找到合适的实验数据组合
  • ”大量实验中,挑选出一部分具有代表性的点,进行实验分析数据“
  • 数学原理:线性代数,概率论、数理统计等

n阶拉丁方-正交运算
在这里插入图片描述
左边两个 每行每列元素出现一次,右边正交后 每个数对只能出现一次

  • 核心概念
    1)影响实验结果的实验因素(因子)–因素。
    2)每一个因素的不同取值(状况)–水平
    例如,字的显示效果–字体,自豪,颜色称为因素;字体可以选择宋体,楷体等称为水平;
    字体(100个水平)字号(20个水平)颜色(256个水平)
    3)每一列数字出现相同(水平),数对(水平对)出现相同,比如白色和黑色都出现3次,白楷5号、黑楷4号都出现1次
  • 实施步骤
    1) 分析所有对结果有影响的因素
    2)选择水平(充分利用等价类和边界值)
    3)选择正交表。只有特定的因素数和水平数的组合才有对应的正交表。所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般要大于实际的因素数和水平数)

L9_3_3 三水平三因素 9次实验正交表
在这里插入图片描述

7.3.5 功能图法

  • 状态迁徙图法:在遇到有事务流或由于某种条件成立导致状态改变的软件时。
  • 目标:设计足够多的测试用例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁移路径的覆盖。
  • 如进程调度算法
    在这里插入图片描述

7.3.6 测试大纲法

  • 着眼于需求的方法;为列出各种测试条件,将需求转换为大纲的形式,转化为思维导图,树形结构
  • 无需用例设计,一般从根节点开始分析,到叶节点为止,这样的一条路径就是一条测试用例;
  • 一般用于快速的测试和过程记录。用例一般后补

7.3.7 探索性测试法

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

7.3.8 猴子/随意测试法

  • 没有书面测试用例(无意识的行为)
  • 测试往往不太真实,不能达到指定的覆盖率
  • 想要重复操作,极其困难

7.4 测试用例设计方法综合选择

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

群晖DS923+扩展ECC 64G内存

1 有必要上64G吗? 如果你不运行大型应用以及安装的套件不多,并且不使用虚拟机,确实没有太大必要。 但是大内存除了这些用处,还会被系统作为缓存使用。在资源监控中查看内存结构,虽然内存利用率只有4%,但缓存…

企业供应链数字化怎么做?企业数字化供应链流程落地方式

什么是供应链?简单来说,供应链是围绕客户需求,以提高产品流通各个环节的效率为目标,通过资源整合的方式来实现产品从设计、生产到销售、服务整个环节的组织形态。如同人工智能、区块链、5G等技术的发展带来的各种行业变化&#xf…

mov怎么改成mp4?跟我一起操作吧

mov怎么改成mp4?mov因为并不是一种常见的视频文件格式,因此大家对这种视频文件可能知道的并不多,但如果你是用的是苹果手机,那么你会发现苹果手机拍摄的视频转移到电脑上后就是mov格式的,因为mov格式的视频并没有受到大…

运算放大器典型应用(一)

这里写目录标题 一、反向比例运算电路怎么优化?平衡电阻的讨论 二、同向比例运算电路三、电压跟随器重要事项 四、加法运算电路反向加法同向加法 五、减法运算电路专用减法器 六、积分电路微分电路七、对数指数运算电路八、测量放大电路(仪表放大电路&am…

低代码概念——初步认识低代码

随着数字化转型和软件需求的不断增长,传统的手写代码开发方式已经无法满足迅速推出应用程序的需求。为了加快软件开发的速度并降低技术门槛,低代码开发模式应运而生。 一、低代码的定义 低代码是一种软件开发方法,通过使用可视化编程工具和少…

webpack(三)loader

定义 loader用于对模块的源代码进行转换,在imporrt或加载模块时预处理文件 webpack做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定文件中。 在webpack内部,任何文件都是模块&#x…

堆的 shift up(Java 实例代码)

目录 堆的 shift up Java 实例代码 src/runoob/heap/HeapShiftUp.java 文件代码: 堆的 shift up 本小节介绍如何向一个最大堆中添加元素,称为 shift up。 假设我们对下面的最大堆新加入一个元素52,放在数组的最后一位,52大于父…

蓝桥杯 2240. 买钢笔和铅笔的方案数c++解法

最近才回学校。在家学习的计划不翼而飞。但是回到学校了,还是没有找回状态。 现在是大三了,之前和同学聊天,说才大三无论是干什么,考研,找工作,考公,考证书 还都是来的及的。 但是心里面…

深度刨析数据在内存中的存储

✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 深度刨析数据在内存中的存储 1.数据类型介绍1.1 类型的基本归类 2.整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍 3.浮点型在内存中的存储3.1 一个例子3.2 浮点数的存储规则3.3指数…

树和二叉树基础

引言: 树是一种非线性的结构,也是由一个一个的结点构成。 树的一些基本概念: 节点的度:一个节点含有的子树的个数称为该节点的度;如上图:A的度为6 叶节点或终端节点:度为0的节点称为叶节点。…

聊天机器人将取代人工客服?电商界的超级“贵人”

聊天机器人在全球范围内取得了成功,目前有58%的 B2B公司和42%的 B2C公司使用聊天机器人,而且这个数字预计还会继续增长。原因有很多,聊天机器人能够模拟人类交互并每天 24小时提供客户服务。当客户有疑问时,不用等上几小时才能得到…

【RabbitMQ】RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。

问题描述 RabbitMQ 服务无法启动。 rabbitmq-service.bat startRabbitMQ 服务正在启动 . RabbitMQ 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。原因分析 RabbitMQ和Erlang版本不匹配。 解决方案 查询并安装RabbitMQ版本对应Erlang版本 https://www.rabbitm…

[ROS]yolov8部署ROS

Yolov8是一种基于PyTorch深度学习框架的轻量级目标检测算法,具有高效、准确和快速的特点,因此在机器人领域得到了广泛的应用。而ROS(Robot Operating System)是一个用于机器人软件开发的框架,提供了各种工具和库&#…

高级DBA带你解决达梦国产数据库数据同步至clickhouse数据库通用方法(全中国唯一一份)关键技术讲解

步骤1、安装达梦8国产数据库 参考笔者之前写的博文,怎么安装国产达梦8数据库,按博文提前装好! https://blog.csdn.net/nasen512/article/details/126872483 步骤2、安装好clickhouse数据库 参考笔者之前写过的博文,将clickho…

Hadoop HDFS 高阶优化方案

目录 一、短路本地读取:Short Circuit Local Reads 1.1 背景 ​1.2 老版本的设计实现 ​1.3 安全性改进版设计实现 1.4 短路本地读取配置 1.4.1 libhadoop.so 1.4.2 hdfs-site.xml 1.4.3 查看 Datanode 日志 二、HDFS Block 负载平衡器:Balan…

python通过docker打包执行

背景 正常情况下,python脚本执行需要安装有python环境,那python环境虽然也可以通过移植的方法来安装,那总归是比较麻烦的,下面通过docker打包的方式来执行python脚本 1、安装python镜像 准备两个文件即可,dockerfile、requirements.txt两个文件的内容分别如下 同目录下…

如何做好住宅区门禁监控,这回总算说全了

门禁监控在现代社会中已经变得愈发重要,特别是在住宅小区。随着城市化进程的加速和人口密度的增加,住宅小区的安全管理成为了一个至关重要的挑战。为了确保居民的安全和财产的保护,门禁监控系统逐渐成为了必备的设施之一。 客户案例 太原某小…

人大金仓V8数据库安装补充资料

之前写过一篇人大金仓数据库安装文档,自我感觉太过简练。这里补充一些资料。 命令行安装过程中,英文提示还比较简单。 安装默认第一项是完整安装,第二项是安装客户端软件,第三项是自定义安装。 这里选择了第一项。 File Path需要输入license文件的绝对路径且包括文件名。…

Jetpack Compose Accompanist最近的更新-2023年8月25日

Jetpack Compose Accompanist最近的更新-2023年8月25日 这篇文章更新了Jetpack Compose Accompanist库的情况,介绍了其目的和最新上传的功能,包括Pager、Flow Layout、Navigation Animation和Insets-UI。同时,提到了对一些库未来发展的讨论。…

光伏瓦屋顶

光伏瓦是由非晶硅材料制成的有光伏电池的屋面板,把光伏组件嵌入支撑结构,使太阳能板和建筑材料结为一体,直接应用于屋顶,和普通屋面瓦一样安装在屋面结构上。然后,光伏材料和组件将光转化为电能,通过吸收太…