软件测试—测试用例的设计

软件测试—测试用例的设计

测试用例是什么?

首先,测试用例(Test Case)是为了实施测试而向被测试系统提供的一组集合。这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素

好的测试用例的特征

一个好的测试用例应该具备以下五个特征:

  1. 用例表达清除,通俗易懂。
  2. 用例可操作性强,易操作性。
  3. 用例的输入输出明确,一个用例一个结果。
  4. 用例的可维护性强。
  5. 用例对需求的覆盖率高。

基于需求对测试用例的设计

第一步是验证需求的可靠性,正确性,逻辑合理性,在正确的基础上细化测试需求。

分析测试需求,一般分为功能测试需求和非功能测试需求

功能测试需求:

  1. 用户功能需求:验证系统是否满足用户的基本需求。

  2. 业务功能需求:验证系统是否满足业务功能需求。

  3. 数据管理需求:验证系统对数据的管理是否符合要求,包括数据录入,编辑,保存,删除,共享等其他操作的正确性和完整性。

  4. 系统性能需求:验证系统在正常情况下的性能表现。

  5. 安全性需求:验证系统的安全性是否符合需求。

  6. 用户体验需求:验证系统的页面友好型,操作便捷性,交互流畅性,往往与功能测试同时验证。

  7. 兼容性需求:验证系统在不同的场景,设备,浏览器等环境下的兼容性,以保证系统可以正常运行和展示。

例如现在对一个奶茶点单小程序做一个简单的功能测试:

在这里插入图片描述

当然,读者可以进行扩展,比如用户功能需求可以再加一个留言功能,这样更容易可以看见用户的意见或者建议,有助于发展,在兼容性中也可以加一个不同网络环境的兼容性

非功能需求测试

  1. 性能测试:测试软件在不同压力条件下的性能表现,包括对响应时间,吞吐量、并发用户数等指标。
  2. 可靠性测试:测试软件在高负载环境下的稳定性和可靠性,包括系统的容错能力、重启和恢复能力等。
  3. 安全性测试:测试系统安全性和防护能力,包括对系统的攻击和用户信息安全。
  4. 可用性测试:测试软件的易用性,包括界面的友好性,工作流程的简单性、错误提示的准确性。
  5. 兼容性测试:测试系统在不同操作系统、浏览器、设备、网络中的兼容性,确保系统在各种环境中都可以正常运行。
  6. 易维护测试:测试软件中的易维护性和可扩展性,包括代码的结构、注释完整、模块的解耦和程度。
  7. 可伸缩性测试:测试系统在负载状态和大量并发用户时的性能表现和系统资源利用率。
  8. 可靠性测试:测试系统在各种异常情况下的可靠性和稳定性、包括一些系统错误、日志记录等。
  9. 容量测试:测试系统在大规模数据和用户量下的性能表现,包括数据库中的数据扩展。

依旧针对奶茶点单小程序写一个非功能测试用例。

在这里插入图片描述

这兼容性测试和功能测试是相同的,不过功能测试更加针对于功能展开,而非功能是针对整个程序。

如何设计一个测试用例

一、等价类

等价类设计方法指的是将输入数据可以划分为若干等价类,每个部分的等价类的数据具有相同的特征,对这些等价类进行测试可以覆盖整个输入空间的有效部分。

优点:提高测试效率和覆盖性

对一个登录功能设计一个等价类测试用例设计

  1. 根据登录的输入要求,确定输入的等价类。
    • 比如输入的用户名和密码不能是空字符串,那么可以将输入划分为 空字符串非空字符串
  2. 对于每个输入的等价类,选择典型的测试用例。
    • 对于用户名的输入、在空字符串等价类中,选择一个空字符串作为测试用例,而非空中选择一个合法的测试用例。
  3. 对于每个输入的等价类,执行测试并记录结果。
    • 在登录功能中,当输入空字符串用户名和空字符串密码时是否可以登陆成功。使用非空字符串用户名和密码时是否可以登录成功,并测试登录提示是否正确。
  4. 对于异常情况,也应该设置对应的测试用例。
    • 比如,当用户名或者密码长度超过限制,系统应该如何处理这些异常并提示错误信息。

二、边界值法

在测试中,边界值指的是输入数据的最大值和最小值以及临近最大值和最小值的临界值。边界值测试指的是在检测系统在这些临界值附近中可能出现的异常或者错误。

例1:对于输入框中数据长度为1-12设置一个边界值测试。

  1. 计算边界值附近数据,1的边界值数据为0、1,12的边界值数据为12、13。得到这组数据的边界值为0、1、12、13.
  2. 针对每个测试用例和临界值,执行测试并记录结果。验证字节长度在这4种长度中是否可以正常得到预期结果。主要是针对系统是否可以正常处理这种输入,然后得到正确的结果。比如输入 长度为12 字节的字符串,系统不会出现超出字符串限制长度异常或者字符串为空的异常。

例2:当查询页面数据一共有999条数据时,每50条数据作为一页,在做分页数据后,查询每条数据,设计边界值法。

  1. 已知数据存在999条,每50条数据作为一页,向上取整得到页面数为 20。
  2. 选择临界值,在这场景下,临界值为 50、51、950、951。50和51对应的是第一页和第二页,950和951对应的是第19页和第20页。
  3. 针对每个测试用例和边界值,执行测试并记录结果。验证系统是否可以正常处理边界测试用例和临界值,以及边界情况下的分页逻辑是否正确。例如输入 51 页,系统应该显示的是第二页,而不是其他页数。

三、错误猜测法

错误猜测法是对设计软件思想自身的理解,过往个人测试经验及个人直觉,推测出软件可能存在的缺陷,然后针对性地设计测试用例的方法。

这个方法看重的是测试工程师对软件的理解和个人经验,是比较看重“第六感”的一种方法。所以很难系统化和过度依赖个人能力。

以注册为例来执行错误猜测法

  1. 密码中校验字符的大小写?
  2. 姓名中的特殊字符
  3. 密码发送到服务器是否明文?

四、场景设计法

以用户场景为基础的测试方法,主要是验证系统在各种现实场景中的功能、性能和可用性。

如何实现一次场景测试法

  1. 理解用户需求和使用场景
  2. 定义典型的使用场景
  3. 设计场景测试用例
  4. 执行场景测试用例
  5. 观察系统行为和输出结果
  6. 记录和分析结果
  7. 修复和重复测试

以注册做一次场景分析测试:

在这里插入图片描述

可以根据这种场景再次设计场景,比如用户再次注册、用户填写信息相同情况。

五、因果图

是一种通过分析问题的原因和结果之间的关系的方法,通过将问题放在一个地方,尽可能地将原因列出,试图找到真正影响的原因。

它分为四种状态

  1. 恒等
    • 如果原因为真,那么结果一定为真
    • 例如:家里前几天请了一个空调安装师傅安装了一个空调,那么家里肯定有一台空调
    • 只有两个或两个以上原因都为真,结果才为真。
    • 例如:她买了一辆车,她买了一栋房,她有车有房
    • 原因中有一个为真,这个结果就为真。
    • 例如:她有一个好闺蜜,她有一个男朋友,她最少有一个人是真心对她的
    • 只有原因为假,结果才为真。
    • 例如:你天天刷剧,也能收到大厂的offer

四种因果图画法

在这里插入图片描述

一般设计因果图步骤分为五步:

  1. 分析可能的输入和输出
  2. 找出输入输出之间的对应关系
  3. 画出因果图
  4. 把因果图转换成判定表
  5. 把判定表对应到每一个测试用例。

以登录的需求为例,设计一个因果图。要求是将姓名、密码、验证码必须全部输入验证好才可以登录成功。

  1. 首先通过分析所有可能的输入输出,可以得到以下结果

    • 输入:用户名、密码、验证码
    • 输出:登录成功、登录失败
  2. 第二步,找出输入与输出之间的对应关系

    (1) 用户名输入正确,密码输入正确,验证码输入正确 登陆成功

    (2)用户名输入错误,密码输入正确,验证码输入正确 登陆失败

    (3)用户名输入错误,密码输入错误,验证码输入正确 登陆失败

    (4)用户名输入错误,密码输入正确,验证码输入错误 登陆失败

    (5)用户名输入错误,密码输入错误,验证码输入错误 登陆失败

    (6)用户名输入正确,密码输入错误,验证码输入正确 登陆失败

    (7)用户名输入错误,密码输入错误,验证码输入错误 登陆失败

    (8)用户名输入正确,密码输入正确,验证码输入错误 登陆失败

  3. 为了更加方便画出因果图和判定表,需要对所有的输入输出编号。

    1:用户名

    2:密码

    3:验证码

    21:登录成功

    22:登陆失败

  4. 画因果图

    在这里插入图片描述

  1. 画判定表

    12345678
    条件1YNNNNYYY
    条件2YYNYNNNY
    条件3YYYNNYNN
    中间结果YNNNNNNN
    失败NYYYYYYY
    成功YNNNNNNN

六、正交排列法

基于正交实验设计理论,通过将测试参数组合成一组正交表,以最小化测试用例数量,实现对系统的全面覆盖。

一般使用正交排列需要考虑以下几点:

因素:在实验中需要考察的变量。

水平:在实验范围内,因素被考察时的取值称为水平。

正交表的构成

行数:正交表的行的个数,意思就是实验的次数

因素数:正交表中列的个数,用C表示

水平数:任何单个数可以取得的单个值的最大个数

正交表设计测试用例的步骤:

  1. 计算有那些因素?
  2. 每个因素有那些水平?
  3. 选择一个合适的正交表。
  4. 将变量映射到正交表中。
  5. 把每一行的各因素水平组合作为一个测试用例。
  6. 加上你认为可疑且没有在表中出现的测试用例组合。

再深入—好的测试用例

更加全面地测试一个系统的所有功能,完善系统的不足之处,利用发散性思维去针对系统的每个功能进行测试,发现缺陷等……

以下是总结后得到的:

  1. 完整性:可以覆盖待测系统的所有功能和场景,包括正常情况、边界情况和异常情况。
  2. 独立性:每个测试用例应该是独立与其他测试用例的。
  3. 可重复性:测试用例应该是可以重复执行的,而且针对每次执行结果是一样的。
  4. 易于理解和维护:测试用例应该具有清晰的描述,方便测试人员理解和执行,以应对需求变更和系统更新。
  5. 高效性:测试用例的设计尽量简洁明了,能够覆盖重要的功能和风险点,并且能够快速检测可能存在的问题。
  6. 特殊情况覆盖:测试用例应该包含一些特殊情况的验证,比如输入边界值,异常处理等,以确保系统的可靠性和稳定性。
  7. 回归测试覆盖:测试用例应该覆盖对已经修复的测试功能进行验证的回归测试,以确保修改不会增加新的问题。

设计测试用例的意义

设计一个测试用例可以更高效的发现软件中存在的缺陷,及早修复软件缺陷。通过设计测试用例可以覆盖不同场景和功能,进一步提升软件的质量。测试设计可以帮助测试团队高效地利用有限的资源在有限的时间内获得更加广泛的测试覆盖。

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

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

相关文章

MySQL表的内连和外连

文章目录 MySQL表的内连和外连1. 内连接(1) 显示SMITH的名字和部门名称 2. 外连接2.1 左外连接(1) 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来 2.2 右外连接(1) 对stu表和exam表联合查询,把所有的成绩都显示出来…

软件设计师学习笔记8-操作系统+进程

目录 1.操作系统 1.1操作系统层次图 1.2操作系统的作用 1.3操作系统的任务 2.特殊的操作系统 3.进程 3.1进程的概念 3.2进程与程序 3.3进程与线程 3.4进程的状态 3.4.1三态模型 3.4.2基于三态模型的五态模型 1.操作系统 1.1操作系统层次图 该图片来自希赛软考 1.…

zookeeper教程

zookeeper教程 zookeeper简介zookeeper的特点及数据模型zookeeper下载安装zookeeper客户端命令zookeeper配置文件zookeeper服务器常用命令zookeeper可视化管理工具zkuizookeeper集群环境搭建zookeeper选举机制使用Java原生api操作zookeeper使用java zkclient库操作zookeeper使用…

【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_SPEED_OPTIMIZER

文章目录 前言PIECEWISE_JERK_SPEED_OPTIMIZER功能简介PIECEWISE_JERK_SPEED_OPTIMIZER相关配置PIECEWISE_JERK_SPEED_OPTIMIZER流程QP问题的标准类型定义:优化变量设计目标函数约束条件相关矩阵二次项系数矩阵 H H H一次项系数向量 q q q设定OSQP求解参数 Process设…

MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具

MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此…

深入理解联邦学习——联邦学习的定义

分类目录:《深入理解联邦学习》总目录 假设有两个不同的企业 A A A和 B B B,它们拥有不同的数据。比如,企业 A A A有用户特征数据,而企业 B B B有产品特征数据和标注数据。这两个企业按照GDPR准则是不能粗暴地把双方数据加以合并的…

孙哥Spring源码第17集

第17集 refresh()-invokeBeanFactoryPostProcessor -一-invokeBeanFactoryPostProcessor的分析过程 【视频来源于:B站up主孙帅suns Spring源码视频】 1、什么是解析顶级注解? PropertySource CompeontScan Configuration Component ImportResour…

垃圾回收 - 复制算法

GC复制算法是Marvin L.Minsky在1963年研究出来的算法。说简单点,就是只把某个空间的活动对象复制到其它空间,把原空间里的所有对象都回收掉。这是一个大胆的想法。在此,我们将复制活动对象的原空间称为From空间,将粘贴活动对象的新…

VSCode 配置 C 语言编程环境

目录 一、下载 mingw64 二、配置环境变量 三、三个配置文件 四、格式化代码 1、安装插件 2、保存时自动格式化 3、左 { 不换行 上了两年大学,都还没花心思去搭建 C 语言编程环境,惭愧,惭愧。 一、下载 mingw64 mingw64 是著名的 C/C…

SpringBoot整合WebSocket

流程分析 Websocket客户端与Websocket服务器端 前端浏览器和后端服务器的连接通信 HTTP与Websocket对比 服务器端编码 1.引入pom依赖 <!--webSocket--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta…

【内网穿透】使用Nodejs搭建简单的HTTP服务器 ,并实现公网远程访问

目录 前言 1.安装Node.js环境 2.创建node.js服务 3. 访问node.js 服务 4.内网穿透 4.1 安装配置cpolar内网穿透 4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation…

mysql(九)mysql主从复制

目录 前言概述提出问题主从复制的用途工作流程 主从复制的配置创建复制账号配置主库和从库启动主从复制从另一个服务器开始主从复制主从复制时推荐的配置sync_binloginnodb_flush_logs_at_trx_commitinnodb_support_xa1innodb_safe_binlog 主从复制的原理基于语句复制优点&…

视频监控/视频汇聚/视频云存储EasyCVR平台接入国标GB协议后出现断流情况,该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。安防监控平台EasyCVR既具备传统安防视频监控的能…

LeetCode 热题 100——无重复字符的最长子串(滑动窗口)

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 从s字符串中&#xff0c;去找出连续的子串&#xff0c;使该子串中没有重复字符&#xff0c;返回它的最长长度。 暴力枚举 依次以第一个、第二个、第三个等等为起点去遍历字符串&a…

华为数通方向HCIP-DataCom H12-821题库(单选题:261-280)

第261题 以下关于IPv6过渡技术的描述,正确的是哪些项? A、转换技术的原理是将IPv6的头部改写成IPv4的头部,或者将IPv4的头部改写成IPv6的头部 B、使用隧道技术,能够将IPv4封装在IPv6隧道中实现互通,但是隧道的端点需要支持双栈技术 C、转换技术适用于纯IPv4网络与纯IPv…

SegNeXt学习记录(一):配置环境 测试代码

安装配置MMSegmentation环境 为了验证 MMSegmentation 和所需的环境是否安装正确&#xff0c;我们可以运行示例 python 代码来初始化分段器并推断演示图像&#xff1a; from mmseg.apis import inference_segmentor, init_segmentor import mmcvconfig_file configs/pspnet/…

能力和结果之间的关系

大家好,这里是大话硬件。 今天这篇文章想和大家分享前段时间的一点工作体会,关于个人能力和工作结果之间的关系。 其实这些感悟是在上周三晚上下班,走在回家的路上,脑海中突然出现这样的体会,回到家里立马写了下来。因为是即时的灵感,完全是因为工作状态触发,立刻写下…

龙迅LT6911UXE HDMI转2PORT MIPIDSI/CSI,支持单PORT 4K60HZ,内置MCU,加音频

龙迅LT6911UXE 1.描述&#xff1a; LT6911UXE是一款高性能HDMI2.0到MIPI DSI/CSI转换器&#xff0c;可用于VR、智能手机和显示器应用。 HDMI2.0输入支持高达6Gbps的数据速率&#xff0c;这为60Hz的视频提供了足够的带宽。同时&#xff0c;还支持 HDCP2.3进行数据解密。对于M…

数学建模:相关性分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;相关性分析 文章目录 数学建模&#xff1a;相关性分析相关性分析两变量的相关分析PearsonSpearmanKendall tua-b 双变量关系强度测量的指标相关系数的性质代码实现example偏相关分析 相…

如何打war包,并用war包更新服务器版本

1.打包&#xff0c;我用的maven打包 先执行clean将已经生成的包清除掉 清除完&#xff0c;点package进行打包 控制台输出success&#xff0c;证明打包成功了 文件名.war的后缀就是生成的war包 2.将war包上传致服务器 一般会在war包加上日期版本上传至服务器 解压上传的war…