当前位置: 首页 > news >正文

【软件测试专栏】软件测试 — 用例篇


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:软件测试专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

软件测试 — 用例篇

关键词:测试用例概念、测试用例的万能公式、设计测试用例的方法

目录

  • 软件测试 — 用例篇
    • 一、测试用例
      • 1. 什么是测试用例
      • 2. 为什么需要写测试用例
    • 二、设计测试用例
      • 1. 常规思考+逆向思维+发散性思维
      • 2. 万能公式
    • 三、设计测试用例的方法
      • 1. 基于需求设计
      • 2. 具体的设计
        • 2.1 等价类
        • 2.2 边界类
        • 2.3 正交法
        • 2.4 判定表法
        • 2.5 场景法
        • 2.6 错误猜测法


一、测试用例

1. 什么是测试用例

测试用例是一种具体的测试任务,它描述了一系列的输入、操作以及预期结果,用于验证系统或软件的功能是否符合预期。

测试用例通常包括以下几个部分:

  • 测试目的:描述测试的目标和所要验证的功能。
  • 输入数据:提供给系统或软件的输入数据,包括各种边界情况和异常情况。
  • 操作步骤:详细描述测试人员需要执行的操作步骤。
  • 预期结果:定义每个测试步骤执行后期望得到的结果。
  • 实际结果:记录测试执行过程中的实际结果,与预期结果进行对比。

2. 为什么需要写测试用例

测试中可能会遇到很多问题,诸如:

  • 不知道是否较全⾯的测试了所有功能
  • 测试的覆盖率无法衡量
  • 对新版本的重复测试很难实施(即回归测试无法仅通过⼈⼯测试的方式进行历史功能的回归)
  • 存在⼤量冗余测试影响测试效率
    测试用例的出现就是解决这些问题!

测试用例的作用还可以避免测试⼈员被迫背锅


二、设计测试用例

1. 常规思考+逆向思维+发散性思维

  • 测试用例的编写不仅应当根据有效和预料到的输⼊情况,而且也应该根据无效和未预料到的输⼊情况。
  • 检查程序是否“未做其应该做的”仅是成功的⼀半,测试的另⼀半是检查程序是否“做了其不应该做的”。(是上⼀条原则的必然结果)
  • 计划测试⼯作时不应默许假定不会发现错误

2. 万能公式

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

功能测试
功能测试是⼀个试图发现程序与其外部规格说明之间存在不⼀致的过程。外部规格说明是⼀份从最终用户的⻆度对程序行为的精确描述。功能测试通常是⼀项⿊盒操作。在进行功能测试时,需要对规格说明进行分析以提炼测试用例,本课程中讨论的具体设计测试用例的方法尤其适用于功能测试

界⾯测试
对软件界⾯上所有的内容都需要进行测试

性能测试
性能测试和功能测试的区别是:功能测试检查软件是否做了,而性能测试测试软件做的好不好。

兼容性测试
软件是部署在硬件系统之上,并依赖所需要的软件环境。
如QQ可以在PC端打开,也可以在移动端打开;移动端⼜分为IOS系统和Android系统,且市⾯上⼿机⼜有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运行需要测试⼈员进行验证。

易用性测试
易用性测试的标准是检查产品是否具备简单易上⼿的属性。假如测试⼈员从来没有安装或使用过该产品,作为⼀个新用户,对当前产品是否能够快速适用产品的使用流程。

安全测试
安全测试和性能测试⼀样都是比较⼤的领域。
常⻅的安全问题如:

  • 隐私数据明⽂显⽰。
  • 参数未强校验导致SQL注⼊。
  • 越权:普通用户也可以执行管理员权限的操作。

除了万能公式之外,还有⼀个比较常用的测试类型:弱⽹测试、安装卸载测试

弱⽹测试
弱⽹测试的目的就是尽可能保证用户体验,关注的关键点包括:

  • ⻚⾯响应时间是否可以接受,关注包括热启动、冷启动时间、⻚⾯切换、前后台切换、⾸字时间,
    ⾸屏时间等。
  • ⻚⾯呈现是否完成⼀致。
  • 超时⽂案是否符合定义,异常信息是否显⽰正常。
  • 是否有超时重连。
  • 安全⻆度:是否会发⽣dns劫持、登陆ip更换频繁、单点登陆异常等。
  • ⼤流量事件⻛险:是否会在弱⽹下进行更新apk包、下载⽂件等⼤流量动作。

在这里插入图片描述

安装卸载测试
针对需要进行部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载


三、设计测试用例的方法

1. 基于需求设计

测试⼈员接到需求之后,要对需求进行分析和验证,从合理的需求中进⼀步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。

举例:以该注册邮箱账号需求为例,我们来设计测试用例

在这里插入图片描述
设计测试用例步骤如下

  1. 明确需求中的功能点
    账号注册,账号登陆
  2. 结合万能公式设计测试点
    在这里插入图片描述

2. 具体的设计

2.1 等价类

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

等价类分类:

  • 有效等价类:对于程序的规格说明书是合理的、有意义的输⼊数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能
  • 无效等价类:根据需求说明书,不满⾜需求的集合。

步骤
根据等价类设计测试用例的方式:
1.确定有效等价类和无效等价类
2.编写测试用例,设计具体测试数据

缺点

等价类只考虑输⼊域的分类,没有考虑输⼊域的组合,需要其他的设计方法和补充。

2.2 边界类

边界值分析法就是对输⼊或输出的边界值进行测试的⼀种⿊盒测试方法。通常边界值分析法是作为对
等 价类划分法的补充,这种情况下,其测试用例来⾃等价类的边界。

边界值包含:边界值+次边界值

  1. 输⼊框⻓度为1-11,取边界值为:1、11、12、0
  2. 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项
  3. 查询⾯⻚⾯有999行,每50行为⼀⻚,取边界值为:输出0行、1行、50行、51行、999行
2.3 正交法

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

正交表的构成:因素数、⽔平数、行数。
因素:对指标的影响条件,通常是正交表中的⼀列。
⽔平:因素对应的可选项。

正交表的性质:
每⼀列中,不同的数字出现的次数相等。
任意两列中数字的排列方式⻬全而且均衡

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

  1. 找到因素和⽔平
  2. 用allparis⼯具⽣成正交表
    a. 将因素和⽔平写⼊Excel表格中
    b. allparis目录下创建新的⽂本⽂件new.txt,复制Excel中的因素和⽔平,直接粘贴到⽂本中保存
    并退出
    c. 使用allparis命令⽣成正交表:allparis.exe new.txt>zhengjiao.txt
  3. 根据正交表编写测试用例
  4. 补充遗漏的重要测试用例

在后续的文章中进行详细介绍 》》》》软件测试专栏

2.4 判定表法

判定表是⼀种表达逻辑判断的⼯具,形如:
在这里插入图片描述

根据判定表法设计测试用例的步骤:

  1. 确认需求中输⼊条件和输出条件
  2. 找出输⼊条件和输出条件之间的关系
  3. 画判定表
  4. 根据判定表编写测试用例
2.5 场景法

现在的软件⼏乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同⼀事件不同的
触发顺序和处理结果就形成事件流。

通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的⼀种方法。用例场景来测试
需求是指模拟特定场景边界发⽣的事情,通过事件来触发某个动作的发⽣,观察事件的最终结果,从
而用来发现需求中存在的问题。我们通常以正常的用例场景分析开始,然后再着⼿其他的场景分析。
场景法⼀般包含基本流和备用流,从⼀个流程开始,通过描述经过的路径来确定的过程,经过遍历所
有的基本流和备用流来完成整个场景。

场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景

该方法可以比较⽣动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容
易理解和执行。

典型的应用是是用业务流把各个孤立的功能点串起来,为测试⼈员建立整体业务感觉,从而避免陷⼊
功能细节忽视业务流程要点的错误倾向
在这里插入图片描述
根据场景法设计测试用例的步骤

  1. 确定基本流
  2. 确定备选流
  3. 根据备选流补充测试用例
  4. 编写测试用例
2.6 错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个⼈直觉,推测出软件可能存在的缺陷,从而
针对性地设计测试用例的方法。

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个⼈的经验和直觉。

错误推测法和目前流行的“探索式测试方法”的基本思想⼀致,这类方法在敏捷开发模式下的投⼊产
出比很高,被⼴泛应用于测试。


在这里插入图片描述

相关文章:

  • docker 启动ElasticSearch
  • 小程序的页面跳转方式
  • 【go-zero】goctl笔记
  • FastAPI 进阶:使用 Pydantic 验证器增强 Query 参数验证
  • 汽车功能安全--TC3xx SMU之看门狗alarm处理
  • C语言操作符详解1(含进制转换,原反补码)
  • edge跟谷歌浏览器配置浏览器可跨域
  • SecurityHeaders:为.Net网站添加安全标头,让Web更加安全、避免攻击!
  • Quartz.Net_侦听触发器
  • C语言典型例题59
  • python 并发100个请求
  • IoT客户端+联邦学习微调大模型
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
  • 【硬件知识】从零开始认识GPU
  • 【QT】学习笔记:导出资源中静态文件
  • Centos6.8 使用rpm安装mysql5.7
  • ESLint简单操作
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Making An Indicator With Pure CSS
  • Promise面试题2实现异步串行执行
  • STAR法则
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 服务器之间,相同帐号,实现免密钥登录
  • 构建二叉树进行数值数组的去重及优化
  • 目录与文件属性:编写ls
  • 前端js -- this指向总结。
  • 如何优雅地使用 Sublime Text
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • Hibernate主键生成策略及选择
  • 阿里云ACE认证之理解CDN技术
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #git 撤消对文件的更改
  • #ifdef 的技巧用法
  • #WEB前端(HTML属性)
  • #知识分享#笔记#学习方法
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)(1.9) MSP (version 4.2)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (九)信息融合方式简介
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)IOS中获取各种文件的目录路径的方法
  • (自适应手机端)行业协会机构网站模板
  • .net Application的目录
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net framework4与其client profile版本的区别
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET未来路在何方?
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042