【软件测试】如何设计测试用例? 设计测试用例常用的方法.

目录

  • 一.什么是测试用例?
  • 二.总体设计测试用例的万能公式.
    • 2.1 功能+性能+界面+兼容+易用+安全
    • 2.2 弱网测试
    • 2.3 安装卸载测试.
  • 三. 常用设计具体测试用例的方法
    • 3.1 等价类
    • 3.2 边界值
    • 3.3 正交法
      • 3.3.1 正交表
      • 3.3.2 如何设计正交表,并根据正交表编写测试用例
    • 3.4 判定表法
      • 3.4.1 根据判定表法编写测试用例的步骤
    • 3.5 场景法
    • 3.6 错误猜测法
  • 四.总结.

一.什么是测试用例?

  • 测试用例(Test Case)是软件测试中的基本概念,它是指为了测试某个程序、系统或软件功能而设计的一组测试输入、执行条件以及预期结果的集合。这组集合包括: 测试环境, 操作步骤, 测试数据,预期结果等内容. 测试用例的主要目的是确定应用程序是否按照需求规格说明书正常工作,同时帮助识别程序中的缺陷(bugs)、错误或遗漏。
  • 举个例子:
    在这里插入图片描述
  • 为什么需要测试用例, 如果没有测试用例,可能会面临很多的问题:
    • 不知道是否较全面的测试了所有的功能,
    • 测试的覆盖率无发衡量
    • 对新版本的重复测试将很难实施.
    • 存在大量的冗余测试影响测试效率.

二.总体设计测试用例的万能公式.

  • 当你面对一款产品的时候,该从哪里入手来设计测试用例, 比如现在给你一个水杯, 你该如何设计测试用例. 下面我将告诉你解决这个问题通用的方法.

2.1 功能+性能+界面+兼容+易用+安全

  • 设计测试用例的万能公式: 功能测试 + 界面测试 + 性能测试 +兼容性测试 + 易用性测试 + 安全测试 .

  • 功能测试(Functional Testing): 是软件测试中的一种基本类型,它主要关注于验证软件应用程序的功能是否按照需求规格说明书(Requirements Specification)中的描述正确执行

  • 界面测试(简称UI测试): 是确保软件用户界面(UI)符合设计需求、用户习惯及功能要求的重要环节。它涵盖了多个方面,旨在提升用户体验和软件的可用性。

  • 性能测试: 是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。其目的是发现软件在高负载条件下的瓶颈和问题,为优化和改进提供依据。

  • 兼容性测试: 检查软件之间能否正确地进行交互和共享信息,以及软件与硬件、操作系统等环境之间的兼容性。它涉及在不同的硬件平台、操作系统、网络环境中,测试软件是否能正确运行,并确保软件在各种条件下都能保持稳定的性能。

  • 易用性测试: 通过模拟用户使用软件的过程,评估软件在易用性方面的表现。它关注软件是否易于理解、学习、使用和吸引用户,以及软件在使用过程中是否给用户带来舒适和高效的体验

  • 安全测试: 安全测试是在软件产品的生命周期中,特别是在产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。其目的在于提升软件产品的安全质量,尽量在发布前找到并修补安全问题,从而降低成本并增强系统的防护能力。

  • 此时我们再根据万能公式来设计水杯的测试用例:
    在这里插入图片描述

2.2 弱网测试

  • 除了上述常见的设计测试用例的总体方向, 我们在日常的测试过程中,还有一个比较常见的测试类型就是弱网测试.
  • ** 弱网测试**: 弱网测试是在网络环境不佳的情况下,对应用软件或系统进行的测试,目的是验证软件在这种不稳定网络环境中的性能、稳定性和可靠性。
  • 弱网测试关注的关键点可能包括:
    • 在弱网的情况下, 页面响应的时间是否可以接受, 关注包括热/冷启动时间 , 页面切换, 首字时间, 首屏时间等
    • 弱网情况下与正常情况下呈现的页面是否完全相同.
    • 在网络超时的时候, 是否定义超时时要展示的HTML界面,.
    • 是否具有超时重连.
    • 是否存在安全隐患, 比如发生dns劫持, 登录ip更换频繁, 单点登录异常.
    • 大流量事件风险, 比如是否会在弱网下进行更新apk包, 下载文件等大流量动作.
      在这里插入图片描述
  • 软网测试工具Fiddler Classic
  • 使用步骤:
    1. 打开弱网设置选项
      在这里插入图片描述

    2. 打开设置弱网的脚本 在这里插入图片描述
      在这里插入图片描述

2.3 安装卸载测试.

  • 除了上述的测试类型, 还有一个是我们必须要关注到的测试类型---->安装卸载测试, 它主要包含在软件安装卸载的过程中出现的一些突发情况.
  • 在这里插入图片描述

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

  • 现有注册用户邮箱账号的需求
    在这里插入图片描述

3.1 等价类

  • 针对上述的需求–>姓名必填且必须是6~15位的字符类型. 该如何设计测试用例?

  • 测试的时候通过穷举法来测试6位、7位、8位…14位,15位是否测试通过,这样的方法能够满足测试的要求吗?若此时把范围从6 ~ 15位 改成6 ~ 150位呢”?试想一下这样一个简单的测试点需要测试多久呢,显然是不符合企业测试要求的。而等价类法的出现就解决了穷举法不能解决的问题

  • 依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。

  • 等价类分类:

    • 有效等价类: 对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能.
    • 无效等价类: 根据需求说明书,不满足需求的集合。
  • 依据等价类的方法来设计测试用例的步骤:

    1. 确定有效等价类和无效等价类
    2. 编写测试用例, 设计具体测试数据
  • 根据等价类思想设计测试用例的例子:
    在这里插入图片描述

3.2 边界值

  • 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对
    等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
  • 边界值法来设计测试用例包含两种情况: 边界值和次边界值.
  • 在这里插入图片描述
  • 根据边界值思想设计测试用例的例子:
    在这里插入图片描述

3.3 正交法

通过等价类和边界值方法我们完成了部分用例的补充.
当前还剩下一个场景的用例未补充完成,“只填写部分选项”,这里到底要设计多少测试⽤例呢?
通常来说,为了保证系统的测试覆盖率,我们首先能够想到的就是排列组合。
假如当前有两个选项A和B,可以设计出都填写、都不填写、填写A、填写B四个测试⽤例(2²)。
假如当前有三个选项A、B、C,通过设计可以得到8个测试⽤例(2³)

当前可选的选项是5个,分别是,姓名、电⼦邮箱、密码、确认密码、验证码。按照排列组合设计出
来的用例是32个…

  • 正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的⼀种设计方法,它是根据正交
    性,由试验因素的全部水平组合中挑选出部分有代表性的点进⾏试验,通过对这部分试验结果的分析
    了解全面试验的情况,找出最优的水平组合
    。正交试验设计是⼀种基于正交表的、⾼效率、快速、经
    济的试验。

3.3.1 正交表

  • 正交表是一种特制的表格,用于多因素实验设计研究。它通过均衡分散和整齐可比的特性,在尽可能少的试验次数下确定各个因素对结果的影响。正交表通常表示为L_{行数}(水平数^{因素数}),其中L表示正交表,行数表示需要进行的实验次数,因素数代表实验中变量的个数,水平数代表每个因素的不同取值。
    在这里插入图片描述
  • 因素(Factors):在正交实验中,因素是指那些可能影响实验结果的变量或条件。这些因素通常是实验中需要考察的主要参数,比如在邮箱注册的需求当中, 姓名,电子邮箱等信息是必填的, 也可以有相关的信息, 例如家庭住址等非必填的信息, 这些信息的填写可能会影响注册结果, 故这些信息就是因素.
  • 水平(Levels):水平则是指==每个因素在实验中所取的不同数值或状态。==如何在邮箱注册当中姓名可以是必填的, 也可以是非必填的, 此处的必填和非必填就是该正交表的水平.
    在这里插入图片描述
  • 正交表的性质:
    • 每一列中, 不同数字出现的次数相等.
    • 任意两列中数字的排列方式齐全且均衡.

3.3.2 如何设计正交表,并根据正交表编写测试用例

  1. 根据需求找出因素和水平.
  2. 用allparis工具生成正交表
    • 将因素和水平写入到Excel表格当中.
      在这里插入图片描述 -

    • 在allpairs.exe同级文件夹下创建一个test01.txt文件, 将Excel表格中的内容复制到test01.txt文件之中,并且不要有其他的任何操作(保证格式的正确性). 使用allparis命令生成正交表:allparis.exe test01.txt>zhengjiao.txt.在这里插入图片描述在这里插入图片描述
      在这里插入图片描述

      1. 根据正交表编写测试用例.
      • 全部填写(姓名,电子邮箱,密码,确认密码,验证码)
      • 填写姓名, 不填写电子邮箱,密码,确认密码,验证码
      • 填写电子邮箱,确认密码, 不填写姓名,密码,验证码.
      • 填写密码,验证码, 不填写姓名,电子邮箱,确认密码
      • 填写姓名, 电子邮箱,密码,不填写确认密码, 验证码
      • 填写姓名, 确认密码,验证码, 不填写电子邮箱,密码.
      1. 补充遗漏的重要测试用例.
      • 全部填写(姓名,电子邮箱,密码,确认密码,验证码)
      • 填写姓名, 不填写电子邮箱,密码,确认密码,验证码
      • 填写电子邮箱,确认密码, 不填写姓名,密码,验证码.
      • 填写密码,验证码, 不填写姓名,电子邮箱,确认密码
      • 填写姓名, 电子邮箱,密码,不填写确认密码, 验证码
      • 填写姓名, 确认密码,验证码, 不填写电子邮箱,密码.
      • 全部不填写(姓名电子邮箱,密码,确认密码, 验证码)

3.4 判定表法

现有如下需求:
用户输入的字符当中包含admin字符, 或者通过内部链接进入注册界面的, 提交注册按钮, 则其身份为管理员; 反之则为普通用户.

  • 通过这个需求可以看出,不同的组合操作可能对应不同的结果。采⽤正交法无法解决这样的问题。而正交法能够解决需要考虑输入之间的组合关系对应不同结果的场景。

3.4.1 根据判定表法编写测试用例的步骤

  1. 确认需求当中的输入条件和输出条件
    • 输入条件: 账户中包含admin字符, 内部链接进入注册页面, 提交注册按钮
    • 输出条件: 管理员/普通用户
  2. 找出输入条件和输出条件之间的关系.
    • 输入条件: 账户中包含admin字符, 内部链接进入注册页面, 提交注册按钮,分别设为时间a,b,c
    • 输出条件: 1/0
输入条件的组合对应的输出结果
a c1
b c1
a b0
a b c1
非a b c0
ao
bo
c0
  1. 制作判定表
    在这里插入图片描述
  2. 根据判定表编写测试用例
    a. 账号包含admin,非内部注册链接,点击注册按钮,为管理员身份
    b. 账号包含admin,内部注册链接,不点击注册按钮,非管理员身份
    c. 账号不包含admin,内部注册链接,点击注册按钮,为管理员身份
    d. 账号包含admin,内部注册链接,点击注册按钮,为管理员身份
    e. 账号包含admin,非内部注册链接,不点击注册按钮,非管理员身份
    f. 账号不包含admin,非内部注册链接,点击注册按钮,非管理员身份
    g. 账号不包含admin,非内部注册链接,不点击注册按钮,非管理员身份

3.5 场景法

场景法是一种通过模拟用户操作软件时的各种情景来设计测试用例的方法。这种方法不仅能够全面覆盖软件的功能点和业务流程,还能有效发现潜在问题,提高用户体验和软件稳定性。

以下是场景法设计测试用例的具体步骤和要点:

  1. 确定基本流和备选流:基本流是指用户正确的业务操作流程,而备选流则是用户在操作过程中可能遇到的错误或异常情况[2]。例如,在一个在线购物系统中,基本流可以是用户成功登录、选择商品、支付并生成订单的完整流程,备选流则包括账号不存在、密码错误、无选购书籍等情况[1]。

  2. 生成不同的场景:根据基本流和备选流,生成不同的测试场景。每个场景代表一个具体的用户使用情况,可以是一个成功的操作流程,也可以是一个包含错误的操作流程[3]。例如,在在线购物系统中,可以生成“购物成功”、“账号不存在”、“账号错误”、“密码错误”等不同场景[1]。

  3. 设计相应的测试用例:针对每个生成的场景,设计相应的测试用例。测试用例应包含测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果[1]。例如,在在线购物系统的例子中,可以为每个场景编写详细的测试用例,如“购物成功”的测试用例可以包括有效的账号信息、正确的密码、已选购的书籍等[1]。

  4. 复审和确定测试用例:对生成的所有测试用例进行复审,去掉多余的测试用例,确保每个测试用例都有明确的目标和预期结果[1]。然后,为每个测试用例确定实际的数据值,以便在测试实施时使用[2]。

  5. 考虑业务层面和技术层面:场景法要求测试人员从业务层面和技术层面两个角度去理解被测软件。业务层面需要熟悉所测软件的业务逻辑,技术层面则需要了解如何模拟用户正确的业务操作流程和错误的操作流程[4]。

  6. 适用场合:场景法适用于解决业务流程清晰和业务比较复杂的系统或功能。它能够帮助测试人员建立整体业务感觉,避免陷入功能细节忽视业务流程要点的错误倾向[2]。

  • 举个例子:女生去买衣服
    在这里插入图片描述
  • 基本事件流:
    • 逛街---->服装店---->选衣服---->买衣服
  • 备选事件流:
    • 逛街---->处理突发情况---->逛街---->服装店---->选衣服---->买衣服
    • 逛街---->服装店---->和朋友吃饭---->选衣服---->买衣服

3.6 错误猜测法

错误猜测法是一种基于经验和直觉推测系统中可能存在的各种错误,从而有针对性地设计测试用例的方法

以下是对这种方法的具体介绍:

  1. 基本概念
    • 定义:错误猜测法是基于测试人员对以往项目测试中曾经发现的缺陷、故障或失效数据,在导致软件错误原因分析的基础上设计测试用例,用于预测错误、缺陷和失效发生的技术。
    • 基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些情况选择测试用例。
  2. 优缺点
    • 优点:充分发挥人的直觉和经验,快速切入高风险区域,提高测试效率。
    • 缺点:难以准确评估测试用例的覆盖率,可能丢失大量未知的区域,带有主观性且难以复制。
  • 错误猜测法更多的是需要测试人员具有测试的经验, 遇到某个业务场景能够凭借错误猜测的经验来设计测试用例

四.总结.

  1. 知道什么是测试用例.

  2. 从整体出发设计测试用例,用到设计测试用例的万能公式: 功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全测试

  3. 掌握常见其他常见测试类型: 弱网测试(在网络信号不好的时候,会不会出现bug) 安装卸载测试(在安装卸载的过程中是否会出现问题)

  4. 总体上设计测试用例的思路已经有了, 下面就是设计具体的测试用例, 掌握设计测试用例常用的方法:等价类, 边界值,正交表,判定表,场景法, 错误猜测法

  5. 区分正交表发和判定表发的使用场景, 正交表法侧重于通过最小化测试次数来覆盖尽可能多的因素组合,适用于控件多、组合复杂的情况而判定表法则侧重于明确列出所有可能的条件组合及其对应的操作结果,适用于条件判断复杂、结果多样的情况

  6. 上述介绍的设计具体测试用例的方法并不是要求我们在设计测试用例的时候都用上, 而是掌握设计测试用例的思想, 锻炼自己的思维能力.

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

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

相关文章

《Nginx核心技术》第18章:基于主从模式搭建Nginx+Keepalived双机热备环境

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

光子架与电子架 -- 光子架与电子架

电子架 指插放交叉板、OTU单板、支/线路板、保护类单板的子架。 在通用型平台子架和平台子架中如果仅插放OTU单板(非中继模式)视为电子架。光电混合的子架视为电子架。 电子架主要实现将客户侧信号转换成标准波长的光信号,供光子架调度。 光子…

p18 docker镜像原理之联合文件系统,p19 docker镜像分层的理解

镜像是什么 镜像其实就是一种轻量级的,可执行的一种软件包,用来打包基于环境开发的软件,里面可以包括代码,环境,数据库,配置文件等信息 如何得到镜像? 可以从镜像仓库下载比方说dockerhub 比…

jenkins分布式构建

Jenkins分布式构建是一种将构建任务分散到多个机器上的方法,以提高构建效率和并行处理能力 1. 架构 主节点(Master):负责管理构建任务、调度和监控所有从节点。从节点(Slave):实际执行构建任务…

JavaEE: 深入探索TCP网络编程的奇妙世界(六)

文章目录 TCP核心机制TCP核心机制九: 面向字节流TCP核心机制十: 异常处理 小小的补充(URG 和 PSH)~TCP小结TCP/UDP 对比用UDP实现可靠传输(经典面试题) 结尾 TCP核心机制 上一篇文章JavaEE: 深入探索TCP网络编程的奇妙世界(五) 书接上文~ TCP核心机制九: 面向字节流 TCP是面…

C++vector类的模拟实现

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 模拟实现vector类 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说明 1. vecto…

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式,yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集,旨在解决行人密集场景下的检测挑…

Redis的主从模式、哨兵模式、集群模式

最近学习了一下这三种架构模式,这里记录一下,仅供参考 目录 一、主从架构 1、搭建方式 2、同步原理 3、优化策略: 4、总结: 二、哨兵架构 1、搭建哨兵集群 2、RedisTemplate如何使用哨兵模式 三、分片集群架构 1&#…

SkyWalking 环境搭建部署

架构简介 skywalking agent : 和业务系统绑定在一起,负责收集各种监控数据skywalking oapservice : 是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapserv…

19_Python中的上下文管理器

Python中的上下文管理器 在Python中,上下文管理器(Context Manager)是一种用于资源管理的技术,它可以确保资源在使用后被正确释放,例如文件、网络连接或锁。 上下文管理器(Context Manager)是…

计算机毕业设计 | SSM 凌云招聘平台 求职问答审批系统(附源码)

1,绪论 人力资源是企业产生效益、创造利润的必不可少的、最重要的资源。人作为人力资源的个体可看作是一个承载着有效知识、能力的信息单元。这样的信息单元可看作是一个为企业产生价值和利润的个体。从而使得这样的信息单元所具有的信息就是一个有价值的信息。 校…

python是什么语言写的

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言。现今Python语言很火,可有人提问,这么火的语言它的底层又是什么语言编写的呢? python是C语言编写的,它有很多包也是用C语言写的。 所以说,C语言还是很…

中间件:maxwell、canal

文章目录 1、底层原理:基于mysql的bin log日志实现的:把自己伪装成slave2、bin log 日志有三种模式:2.1、statement模式:2.2、row模式:2.3、mixed模式: 3、maxwell只支持 row 模式:4、maxwell介…

全栈开发(四):使用springBoot3+mybatis-plus+mysql开发restful的增删改查接口

1.创建user文件夹 作为增删改查的根包 路径 src/main/java/com.example.demo/user 2.文件夹里文件作用介绍 1.User(实体类) package com.example.demo.user; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; impo…

Web端云剪辑解决方案,BS架构私有化部署,安全可控

传统视频制作流程繁琐、耗时,且对专业设备和软件的高度依赖,常常让企业望而却步,美摄科技凭借其强大的技术实力和创新能力,推出了面向企业用户的Web端云剪辑解决方案,为企业提供一站式、高效、便捷的视频生产平台。 B…

【docker】在IDEA工具内,远程操作服务器上的docker

一,配置 在服务器上,对docker配置如下内容: vi /usr/lib/systemd/system/docker.service添加如下: -H tcp://0.0.0.0:2375重新加载,并重启docker: #重新加载配置 systemctl daemon-reload# 重启docker …

使用 IntelliJ IDEA 连接到达梦数据库(DM)

前言 达梦数据库是一款国产的关系型数据库管理系统,因其高性能和稳定性而被广泛应用于政府、金融等多个领域。本文将详细介绍如何在 IntelliJ IDEA 中配置并连接到达梦数据库。 准备工作 获取达梦JDBC驱动: 访问达梦在线服务平台网站或通过其他官方渠道…

SkyWalking 持久化链路数据

默认持久化 H2 数据库config/application.yml storage:selector: ${SW_STORAGE:h2} MySQL持久化 修改配置 MySQL 数据库config/application.yml storage:selector: ${SW_STORAGE:h2}mysql:properties:jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest&q…

基于yolov8的红外小目标无人机飞鸟检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的红外小目标无人机与飞鸟检测系统是一项集成了前沿技术的创新解决方案。该系统利用YOLOv8深度学习模型的强大目标检测能力,结合红外成像技术,实现了对小型无人机和飞鸟等低空飞行目标的快速、准确检测。 YOLOv8作为YOLO系列的…

Springboot与minio

一、介绍 Minio是一个简单易用的云存储服务,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要有网络,就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频,让网站的访客能看到或者下载…