软件测试之学习测试用例的设计(等价类法、边界值法、错误猜测法、场景法、因果图法、正交法)

news2024/12/25 23:37:33

文章目录

  • 1. 测试用例的概念
  • 2. 为什么在测试前要设计测试用例
  • 3. 基于需求进行测试用例的设计
    • 1)功能性需求测试
    • 2)非功能性需求测试
  • 4. 具体的测试用例设计方法
    • 1)等价类
    • 2)边界值
    • 3)错误猜测法
    • 4)场景法
    • 5)因果图法
    • 6)正交法

1. 测试用例的概念

软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境测试步骤测试数据预期结果

2. 为什么在测试前要设计测试用例

  1. 测试用例是执行测试的依据
  2. 在回归测试的时候可以进行复用
  3. 是自动化测试编写测试脚本的依据
  4. 衡量需求的覆盖率
  5. 后续的测试人员可以借鉴前人写的东西

3. 基于需求进行测试用例的设计

需求是测试人员进行测试的依据

  • 测试人员首先要分析需求,验证需求的正确性、合理性,无二义性并且逻辑自洽
  • 在需求正确的基础上细化需求,从需求提炼出一个个测试点,再根据测试点进行测试用例的设计

在分析需求提取测试点时,一般分为 功能性需求测试非功能性需求测试

1)功能性需求测试

功能性需求测试分析通常包括以下几个方面:

  1. 验证各个界面的功能
  2. 用具体业务将功能串起来进行测试
  3. 功能之间交互性、一致性的测试
  4. 一个功能的多个不同输入的测试
  5. 功能的异常测试
  6. 功能涉及到的算法的测试

2)非功能性需求测试

在功能的基础上做一些限制,满足特定场景的需求,让用户有更好的体验

一般在 性能安全性可靠性兼容性可移植性(移植到不同的设备)易用性

不同类型的软件对于非功能性需求要求是不一样的

  1. 客户端软件,word、ppt、音乐播放器等,此类软件对功能要求很简单,对性能、安全性要求比较低软件的可移植性要求比较高

    这类软件一般都是在个人客户端上运行的,一般都是一对一的运行,不存在多人使用同一个服务器,所以对安全性和性能要求比较低,但是这类软件要求在不同环境下的使用,所以对可移植性要求比较高

  2. 企业软件,一些仅供企业内部使用的软件,对功能有一定的要求,对安全性、性能要求比较低

    这类软件一般都是企业内部在使用,使用人数不多,所以对安全性和性能要求比较低

  3. 商业软件,市面上的大型复杂网络应用,对功能、性能、安全性、可移植性、易用性要求都很高

4. 具体的测试用例设计方法

1)等价类

等价类法一般应用在有输入的场合内

根据需求将输入分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例通过,则认为所代表的等价类测试通过,这样可以很好的解决测试用例无法穷举的情况

等价类又分为 有效等价类无效等价类

  • 有效等价类: 符合需求说明书的数据,用来验证程序是否实现了需求说明书所规定的功能
  • 无效等价类: 不符合需求说明书的数据

对于注册邮箱时的等价类:

规定: 6 ~ 18 个字符,可使用字母、数字、下划线,需要以字母开头

有效等价类:

  • 6 ~ 18 个字符,以字母抬头,纯字母
  • 6 ~ 18 个字符,以字母抬头,后面为数字
  • 6 ~ 18 个字符,以字母抬头,后面为下划线
  • 6 ~ 18 个字符,以字母抬头,后面有数字和下划线

无效等价类:

  • 小于 6 个字符,以任意字符组成
  • 大于 18 个字符,以任意字符组成
  • 6 ~ 18 个字符,不以字母开头
  • 6 ~ 18 个字符,以字母开头,包含任意字符

2)边界值

对输入输出的边界进行针对性测试用例的设计,叫做边界值法

边界值法一般与等价类法一起组合使用,边界值法是等价类法的重要补充

案例:

用户注册时规定用户名 6 ~ 18 位

边界值:5,6,7,17,18,19

针对以上几个点进行测试用例的设计

3)错误猜测法

测试人员根据自己的经验、只是、个人直觉判断软件哪一块有问题,再进行针对性测试用例的设计

这个方法适用于补充测试用例,或者进行探索性测试的情况

但也有一个很明显的缺点,过度依赖测试人员的个人能力和主观判断

4)场景法

把一个个孤立的功能穿起来形成一个场景,每一个功能的输入会触发流程走向不同的场景,根据不同功能的不同输入触发形成的不同场景进行测试用例的设计

要点: 提取出场景中设计的所有功能点,考虑每一个功能的不同输入

5)因果图法

因果图是一种可以直观地 表达程序输入输出之间相互关系 的逻辑图

使用场景: 适用于被测试程序 具有多种不同输入条件并且输出结果依赖于输入条件 的情况

因果图中的关系:

  • 恒等: 输入为真,输出为真
  • 与: 输入条件有多个,条件全为真,输出才为真
  • 或: 输入条件有多个,其中一个为真,输出就为真
  • 非: 输入为真(假),输出为假(真)

使用因果图设计测试用例的流程:

  1. 分析程序所有的输入和输出
  2. 找出输入和输出之间的逻辑关系
  3. 根据输入和输出的逻辑关系画出因果图
  4. 根据因果图画出判定表
  5. 根据判定表设计测试用例

案例: 618 抢购活动中,订单已提交并且购物金额大于 300 或者有红包,则说明有优惠,否则无优惠

  1. 分析输入输出

    输入:订单已提交、购物金额大于 300、有红包

    输出:有优惠、没有优惠

  2. 找出输入输出之间的逻辑关系

    请添加图片描述

  3. 根据逻辑关系画出因果图

    请添加图片描述

  4. 根据因果图画出判定表

    请添加图片描述

  5. 根据判定表设计测试用例

    判定表中每一行都是一个测试用例

6)正交法

根据正交性,从大量的测试数据中,选择最优的数据组合,根据最优的数据组合的结果来衡量整个测试的输出结果

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

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

相关文章

Python入门教程+项目实战-11.1节: 元组的基础概念

目录 11.1.1 理解元组类型 11.1.2 元组的类型名 11.1.3 元组的定义 11.1.4 元组的解包 11.1.5 遍历可迭代对象 11.1.6 本节知识要点 11.1.7 系统学习python 11.1.1 理解元组类型 元组与列表有着相同的数据结构,区别在于,元组是静态的数据类型&am…

本地如何搭建一个Stable Diffusion 的AI绘画工具?

实现AI绘画自由指南 前期准备安装1.安装 Homebrew 工具2. 安装Python33.下载 Stable Diffusion -webui4.下载大模型5. 安装 GFPGAN(神坑)5. 允许 stable diffusion-webui 如何使用效果图 最近看到网上各种AI工具很是火爆,心里也是有点痒痒&am…

消防应急照明和疏散指示系统在轨道交通中的设计应用

摘要:本文分析了消防应急照明和疏散指示系统的特点与设计要点,介绍了系统在城市轨道交通中的设计应用,轨道交通设计中新的消防应急照明和疏散指示系统的备用照明仍由EPS供电,新增一套疏散指示照明系统,增加疏散照明指示…

Beta成果测试总结

Beta成果测试总结 Beta是一个项目的早期测试,通过 Beta能够初步的了解整个系统的稳定性,测试系统是否能够满足客户的需求。我们可以在测试过程中发现一些问题,从而快速解决。 当我们在测试一个新系统时,我们需要进行测试前的准备工…

Node.js的简介

一、什么是node.js Node.js是JavaScript语言的服务器运行环境。 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行…

一文带你全面了解最火爆的ChatGpt

导读 OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。 为什…

【ONE·C++ || 继承】

总言 主要介绍继承相关内容。 文章目录 总言1、继承介绍1.1、继承是什么1.2、继承方式与访问限定符1.3、继承作用域 2、基类和派生类对象赋值转换2.1、子类对象可以赋值给父类对象/指针/引用2.2、基类对象不能赋值给派生类对象2.3、基类的指针可以通过强制类型转换赋值给派生类…

flask学习-实践02

项目实战 入门文当(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客(2条消息) python flask框架详解_flask python_尘世风的博客-CSDN博客 入门项目 抄作业了!6 大 Flask 开源实战项目推荐_小詹学 Python的博客-CSDN博客 (66 条消息) GitHub 上有…

DataStructure--Tree

文章摘录链接 1.树基本概念 计算机数据结构中的树就是对显示中的树的一种抽象(倒置现实中的树)。 1.1 树 有层次关系N(N≥0)个节点的有限集合空树: N0 非空树: 有且只有一个根节点1.2 节点 根节点 分…

MongoDB【MongoRepository MongoTemplate】实现增删改查

目录 1:文章评论 1.1:需求分析 1.2:表结构分析 1.3:技术选型 1.3.1:mongodb-driver 1.3.2:SpringDataMongoDB 1.4:文章微服务模块搭建 1.5:文章评论实体类的编写 1.6&#x…

【计算机网络】为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?

【计算机网络】为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 主要原因是为了防止历史报文被下一个相同四元组的连接接收。 TCP 四次挥手中的 TIME_WAIT 状态不是会…

现代操作系统和 TCP/IP(第二篇)

接着 现代操作系统和 TCP/IP 继续。 现代分时系统的时间片轮转机制让人们可以 “同时使用计算机”,从而滋生了 “同时使用网络” 的需求,现代分时系统是分组交换网的原动力。 从来没有超过一个人同时使用同一部电话,因此独占线路的电路交换…

2023蓝桥杯省模拟赛附近最小

2023蓝桥杯省模拟赛附近最小 这个题算是一个经典的数据结构入门题了&#xff0c;写了几个解法水一篇文章 map维护 时间复杂度nlgn&#xff0c;但是常数比较大&#xff0c;所以只能过90%数据 #include <iostream> #include<vector> #include<map> #include…

卖房子真是稳赚不赔

上面是一段很长的语音&#xff0c;对话是用的我们河池的桂柳话&#xff0c;不过桂柳话和普通话有很多相识之处&#xff0c;理解起来并不困难。 大概的意思是 A公司要给员工一批福利房&#xff0c;然后就让开发商来竞标&#xff0c;竞标的时候开发商就会说明清楚到时候给员工的房…

关于stl容器的迭代器失效问题

场景 在项目中使用stl容器的时候&#xff0c;多线程环境下出错&#xff0c;调试很久发现问题是使用容器的时候由于容器扩容导致的线程不安全&#xff0c;还有扩容导致的迭代器失效问题&#xff0c;于是就想着把迭代器失效的问题总结一下。 场景重现1   我在项目开发中使用ve…

【AI帮我写代码,上班摸鱼不是梦】如何调教ChatGPT,让它帮我写程序。

最近发现磁盘空间严重不足&#xff0c;都弹窗提示我了&#xff1a; 想想看到底哪个文件夹占的空间比较大&#xff0c;好做针对性的删除和清理。奈何Windows系统没有查看文件夹大小的工具&#xff0c;只能鼠标放在某个文件夹上&#xff0c;等提示&#xff1a; AI时代都来临了&am…

AttributeError: ‘ChatGLMConfig‘ object has no attribute ‘quantization_bit‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

STM32 产生随机数方式

STM32 产生随机数方式 C语言的stdlib.h库里的srand(unsigned seed)和rand(void)函数&#xff0c;可以配合产生伪随机数。其中srand(seed)产生算法种子&#xff0c;再由rand()通过算法产生随机数&#xff0c;产生的随机数在宏定义RAND_MAX范围内。如果seed不变&#xff0c;则产…

测试从未如此简单:接口自动化测试Python脚本实现

目录 摘要 步骤1&#xff1a;安装依赖项 步骤2&#xff1a;编写测试脚本 步骤3&#xff1a;运行测试 结论 摘要 自动化测试是现代软件开发过程中的重要环节。在许多情况下&#xff0c;特别是在web应用程序和移动应用程序中&#xff0c;接口自动化测试是其基础。下面就来介绍一…

嵌入式就业怎么样?

嵌入式就业怎么样? 现在的IT行业,嵌入式是大热门&#xff0c;下面也要来给大家介绍下学习嵌入式之后的发展以及就业怎么样。 首先是好找工作。嵌入式人才目前是处于供不应求的状态中&#xff0c;据权威统计机构统计在所有软件开发类人才的需求中&#xff0c;对嵌入式工程师的…