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

目录

    • 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.rhkb.cn/news/115106.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

摆动序列【贪心算法】

摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 class Solution {public int wiggleMaxLength(int…

zabbix安装部署

前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…

Spring Cloud Gateway的快速使用

环境前置搭建Nacos&#xff1a;点击跳转 Spring Cloud Gateway Docs 新建gateway网关模块 pom.xml导入依赖 <!-- 网关 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifact…

Spring MVC 学习总结

学习目标 了解 Spring MVC 是什么&#xff0c;为什么要使用它或者说它能解决什么问题&#xff0c;其与 Spring 是什么关系。理解为什么配置 Spring MVC 的前端控制器的映射路径为 “/” 会导致静态资源访问不了&#xff0c;掌握怎么处理这个问题。掌握基于注解方式使用 Spring…

Zookeeper的使用

一、Zookeeper简介 分布式协调框架&#xff0c;小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面&#xff0c;订阅者进行数据订阅&#xff0c;当数据有变化时&#xff0c;可及时得到数据的变…

算法通关村——从40个亿中产生一个不存在的整数

Titile: 海量数据场景下的热门算法题 从40个亿中产生一个不存在的整数 题目要求&#xff1a;给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。 进阶&…

MySQL 5种索引应用

文章目录 简介一、聚集索引二、唯一索引三、聚集索引和唯一索引对比四、非唯一&#xff08;普通&#xff09;索引五、全文索引六、组合索引七、索引验证总结 简介 在本篇文章中&#xff0c;我们将学习MySQL中5种不同类型的索引及其应用场景&#xff0c;以及它们的优缺点。 一…

基于YOLOv8分割模型实现垃圾识别

基于YOLOv8分割模型实现垃圾识别 本文首发于公众号【DeepDriving】&#xff0c;欢迎关注。 0. 引言 YOLOv8是Ultralytics开源的一个非常火的AI算法&#xff0c;目前支持目标检测、实例分割、姿态估计等任务。如果对YOLOv8的安装和使用还不了解的可以参考我之前写的这篇文章&am…

从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr

目录 1. 智能指针的引入_内存泄漏 1.1 内存泄漏 1.2 如何避免内存泄漏 2. RAII思想 2.1 RAII解决异常安全问题 2.2 智能指针原理 3. auto_ptr 3.1 auto_ptr模拟代码 4. unique_ptr 4.1 unique_ptr模拟代码 5. shared_ptr 5.1 shared_ptr模拟代码 5.2 循环引用 6.…

(笔记六)利用opencv进行图像滤波

&#xff08;1&#xff09;自定义卷积核图像滤波 import numpy as np import matplotlib.pyplot as plt import cv2 as cvimg_path r"D:\data\test6-6.png" img cv.imread(img_path)# 图像滤波 ker np.ones((6, 6), np.float32)/36 # 构建滤波器&#xff08;卷积…

Stable Diffusion中的ControlNet插件

文章目录 ControlNet的介绍及安装ControlNet的介绍ControlNet的安装 ControlNet的功能介绍ControlNet的应用与演示 ControlNet的介绍及安装 ControlNet的介绍 ControlNet 的中文就是控制网&#xff0c;本质上是Stable Diffusion的一个扩展插件&#xff0c;在2023年2月份由斯坦…

supervisorctl(-jar)启动配置设置NACOS不同命名空间

背景 由于需要在上海服务器上面配置B测试环境&#xff0c;原本上面已有A测试环境&#xff0c;固需要将两套权限系统分开 可以使用不同的命名空间来隔离启动服务 注&#xff1a;本文章均不涉及公司机密 1、新建命名空间 命名空间默认会有一个public&#xff0c;并且不能删除&a…

数据结构入门 — 栈

本文属于数据结构专栏文章&#xff0c;适合数据结构入门者学习&#xff0c;涵盖数据结构基础的知识和内容体系&#xff0c;文章在介绍数据结构时会配合上动图演示&#xff0c;方便初学者在学习数据结构时理解和学习&#xff0c;了解数据结构系列专栏点击下方链接。 博客主页&am…

Linux 忘记密码解决方法

很多朋友经常会忘记Linux系统的root密码&#xff0c;linux系统忘记root密码的情况该怎么办呢&#xff1f;重新安装系统吗&#xff1f;答案是不需要进入单用户模式更改一下root密码即可。 步骤如下&#xff1a; 重启linux系统 3 秒之内要按一下回车&#xff0c;出现如下界面 …

VUE笔记(十)Echarts

一、Echarts简介 1、什么是echarts ECharts是一款基个基于 JavaScript 的开源可视化图表库 官网地址&#xff1a;Apache ECharts 国内镜像&#xff1a;ISQQW.COM x ECharts 文档&#xff08;国内同步镜像&#xff09; - 配置项 示例&#xff1a;echarts图表集 2、第一个E…

滑动窗口实例4(将x减到0的最小操作数)

题目&#xff1a; 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&#xff0c;然后从 x 中减去该元素的值。请注意&#xff0c;需要 修改 数组以供接下来的操作使用。 如果可以将 x 恰好 减到 0 &#xff0c;返回 …

全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!

全套解决方案&#xff1a;基于pytorch、transformers的中文NLP训练框架&#xff0c;支持大模型训练和文本生成&#xff0c;快速上手&#xff0c;海量训练数据&#xff01; 1.简介 目标&#xff1a;基于pytorch、transformers做中文领域的nlp开箱即用的训练框架&#xff0c;提…

WebGPU加载Wavefront .OBJ模型文件

在开发布料模拟之前&#xff0c;我想使用 WebGPU 开发强大的代码基础。 这就是为什么我想从 Wavefront .OBJ 文件加载器开始渲染 3D 模型。 这样&#xff0c;我们可以快速渲染 3D 模型&#xff0c;并构建一个简单而强大的渲染引擎来完成此任务。 一旦我们有了扎实的基础&#x…

视频文件损坏无法播放如何修复?导致视频文件损坏的原因

如果我们遇到因视频文件损坏而无法正常播放&#xff0c;我们该怎么办&#xff1f;这种情况通常意味着视频文件已经损坏。我们不能访问、编辑或使用它们。那么应该用什么正确的工具和修复程序来修复视频呢&#xff1f; 视频文件损坏的原因 了解视频损坏如何修复之前&#xff0c…

【C51基础实验 LED流水灯】

51单片机项目基础篇 LED流水灯1、硬件电路设计和原理分析2、软件设计2.1、利用循环和移位操作符功能实现&#xff1a;LED流水灯2.2、利用利用封装好的库函数功能实现&#xff1a;LED流水灯 3、编译结果4、结束语 LED流水灯 前言&#xff1a; 前几篇学会了LED驱动原理&#xff…