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

news2024/11/19 3:39:06

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

测试用例是什么?

首先,测试用例(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.coloradmin.cn/o/955982.html

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

相关文章

ChatGPT 总结数据分析的所有知识点

ChatGPT功能非常多,特别是对某个行业,某个方向,某个技术进行总结那是相当专业的。 如下图。 直接用一个指令便总结出来数据分析当中的所有知识点内容。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Ex…

【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

文章目录 一、爬虫对象-豆瓣读书TOP250二、python爬虫代码讲解三、讲解视频四、完整源码 一、爬虫对象-豆瓣读书TOP250 您好,我是 马哥python说 ,一名10年程序猿。 今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数…

2023-08-31 LeetCode每日一题(一个图中连通三元组的最小度数)

2023-08-31每日一题 一、题目编号 1761. 一个图中连通三元组的最小度数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图,整数 n 表示图中节点的数目,edges 数组表示图中的边,其中 edges[i] [ui, vi] ,表示 ui…

暴力递归转动态规划(三)

前两篇暴力递归转动态规划的文章中,都是通过从上到下的一种思路来解决的问题,这篇文章会通过数组从左向右遍历的方式,来将暴力递归转成动态规划。 题目 有两个等长的数组 w[] 和 v[],w[i] 和 v[i] 分别表示 i 号物品的重量和价值…

全球十大安全好用的黄金交易app软件最新排名(综合评测)

随着金融市场的不断发展,黄金交易app软件日益成为投资者不可或缺的工具。然而,面对众多的黄金交易软件,投资者往往感到困惑和难以抉择。本文将根据最新排名,对全球十大安全好用的黄金交易软件进行综合评测,帮助投资者找…

记一次Zip Slip任意文件写漏洞 以及一些参考文章

记一次Zip Slip任意文件写漏洞以及参考文章们 记一次Zip Slip任意文件写漏洞漏洞复现漏洞原理分析扩展延申 参考文章一:Java之解压流(ZipInputStream)参考文章二:Zip Slip VulnerabilityExploitable Application FlowAre you Vuln…

13.10 语义分割 全卷积网络

语义分割是对图像的每个像素分类 全卷积网络采用卷积神经网络实现从图像像素到像素类别的转换,全卷积网络将中间层特征的高和宽转换回输入图像的尺寸(引入转置卷积实现的)。 最终的类别预测与输入图像在像素上一一对应。 全卷积网络模型模型…

day 31 面向对象 成员方法

class 类名称: 类的属类(定义在类中的变量,成员变量) 类的行为(定义在类中的函数,成员方法) # 设计一个类(类比生活中:设计一张等级表) class Student:name Nonegender Nonenatio…

农产品小程序商城搭建宝典

在当今的电子商务时代,农产品小程序商城已经成为了一种新型的电商模式,为许多农产品的生产和销售带来了新的机遇。但是,如何搭建一个功能完善、用户体验优秀的农产品小程序商城呢?下面,我们就来探讨一下。 首先&#x…

抖音电商店铺运营教程,新手开店常见问题解答,醒醒团队分享

我是王路飞。 做抖音小店不可避免会遇到一些问题,尤其是新手,之前没接触过电商,更别说在抖音做电商开店了。 以至于很多新手在抖音开的店铺,类型不太对,类目不太对,不清楚怎么操作和运营,哪哪…

Redis一主一从Docker方式部署通过keepalived和 sentinel哨兵模式实现高可用

有两台服务器一台是主,master : 172.24.69.180 另外一台是从, slave :172.24.69.181 vip 地址: 172.24.69.185 1、关闭防火墙 两台服务器都关闭防火墙 systemctl disable --now firewalld firewall-cmd --state关闭SELinux setenforce 0 …

audio 标签

<audio>标签是HTML5中用于嵌入音频内容的元素。它提供了一种简单的方式来在网页上播放音频文件。 以下是<audio>标签的基本用法&#xff1a; <audio src"路径/到/音频文件.mp3" controls></audio>在上面的示例中&#xff0c;src属性指定了…

Briefings in Bioinformatics投稿经验分享

期刊名: BRIEFINGS IN BIOINFORMATICS期刊名缩写:BRIEF BIOINFORM期刊ISSN:1467-5463E-ISSN:1477-40542023年影响因子/JCR分区:9.5/Q1latex模板:http://static.primary.prod.gcms.the-infra.com/static/site/journals/document/oup-authoring-template.zip?node=7987de4…

langchain介绍之-Prompt

LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点&#xff1a;1.数据感知&#xff1a;将语言模型与其他数据源连接起来。2.代理性&#xff1a;允许语言模型与其环境进行交互 LangChain 的主要价值在于&#xff1a;组件&#xff1a;用于处理语言模型…

网络编程 day 5

1、根据select TCP服务器流程图编写服务器 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.…

Mysql死锁卡死

查询 show processlist是显示用户正在运行的线程 show processlist;删除卡死的进程id kill 110651;

2023年最新项目追踪工具排行榜发布!

项目跟踪是确保项目顺利交付的重要环节&#xff0c;项目跟踪可以提高团队协作、管理项目风险、控制项目进度。不过对于项目经理而言&#xff0c;如何高效进行项目追踪工作并不是件轻松的工作。 项目跟踪工具的出现&#xff0c;减缓了项目经理的压力&#xff0c;它帮助团队监控…

适配ADRC自抗扰控制算法的MFP450-ADRC 套件焕新而来

关注 FMT 开源自驾仪的开发者可能知道&#xff0c;早在 2018 年 7 月 FMT开源自驾仪的早期版本就已经实现了 ADRC 算法。 经过几年的发展&#xff0c;FMT 在自抗扰控制算法的适配上做了进一步的优化&#xff0c;为了方便科研工作者和开发者快速上手&#xff0c;我们针对搭载 F…

静态代码检查工具PMD安装、使用

介绍 PMD官网&#xff1a;https://pmd.github.io/ 文档&#xff1a;https://docs.pmd-code.org/latest/ https://docs.pmd-code.org/latest/pmd_languages_java.html Java检查规则&#xff1a;https://docs.pmd-code.org/pmd-doc-7.0.0-rc3/pmd_rules_java.html PMD是一款可扩…

掌握这个工具,轻松管理所有物流信息

在电子商务高度发达的今天&#xff0c;物流快递行业在全球范围内发挥着至关重要的作用。然而&#xff0c;在如此复杂的物流环境中&#xff0c;快递退回件的管理和查询成为了一个难题。为了解决这个问题&#xff0c;我们有一个神奇的工具——快递批量查询高手。 快递批量查询高…