软件测试用例与分类

news2024/11/22 21:53:05

测试用例与分类

  • 黑盒测试
    • 基于需求的设计方法
    • 等价类
    • 边界值
    • 判定表
    • 正交表
    • 场景设计法
    • 错误猜测法
  • Fiddler
  • Postman
  • 测试用例
  • 测试分类
  • 按测试对象
    • 界面测试
    • 可靠性测试
    • 容错性测试
    • 文档测试
    • 兼容性测试
    • 易用性
    • 安装卸载测试
    • 安全测试
    • 性能测试
    • 内存泄漏测试
  • 白盒测试
  • 灰盒测试
  • 开发阶段
    • 单元测试
    • 集成测试
    • 系统测试
    • 回归测试
    • 冒烟测试
    • 验收测试
  • 按测试实施组织
    • α测试(Alpha Testing)
    • β测试(Beta Testing)
  • 按是否手工划分
    • 自动化测试
    • 手工测试

黑盒测试

测试人员不关注内部代码的实现 , 通过一些科学的手段 , 向测试系统发起测试数据 , 关注结果是否与预期结果一致

黑盒测试的缺点是 不可能覆盖所有代码

黑盒测试用到的测试方法有 : 等价类 , 边界值 , 判定表 , 正交表 , 场景设计 , 错误猜测

基于需求的设计方法

  1. 功能测试需求

业务流程相关 ( 需求规格说明书 )
界面 ( UI设计稿 )
易用性 ( 测试人员经验 )

  1. 非功能测试需求

外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复杂的系统的功能测试需求外,在 系统的 性能,安全性,兼容性,网络 等都有很高的要求。

等价类

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

  • 有效等价类:满足用户需求输入的集合
  • 无效等价类:不满足用户输入需求的集合

例如 : 在登录页面要输入用户名
在这里插入图片描述

边界值

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

在这里插入图片描述

判定表

判定表是一种 表达 逻辑判断 的工具

关系 :

  1. 与 ( && ) 所有条件满足 则真
  2. 或 ( | | ) 满足其中一个条件 则真
  3. 非 ( ! ) 条件为假 , 结果才真
  4. 恒等 ( == ) 条件为真 , 结果一定真
  • 如何设计测试用例
  1. 分析所有 可能的输入和输出
  2. 找出 输入与输出之间的 对应关系
  3. 设计判定表
  4. 将判定表对应到 每一个测试用例

例如 : 淘宝搞活动 , 订单已提交 , 订单合计金额大于 300元 或 有红包 , 就有优惠

输入 : 订单已提交 , 金额大于 300 , 有红包
输出 : 优惠 , 不优惠

在这里插入图片描述

正交表

在这里插入图片描述

因素 : 输入变量
水平 : 每一个输入变量取值

在这里插入图片描述

性质1 : 每一列中 , 各数字出现的次数都一样多
性质2 : 任意两列中各有序数对出现的次数一样多

  • 通过正交表设计测试用例
    在这里插入图片描述

以 注册邮箱 为例 :
因素 : 姓名 , 邮箱 , 密码 , 确认密码 , 验证码
水平 : 填写 , 不填写

在这里插入图片描述

场景设计法

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

在这里插入图片描述

错误猜测法

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

这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。

Fiddler

在这里插入图片描述

Postman

在这里插入图片描述

测试用例

在这里插入图片描述

  • 水杯测试用例
    在这里插入图片描述

  • 微信发送朋友圈
    在这里插入图片描述

  • 登录页面
    在这里插入图片描述

  • 淘宝购物车
    在这里插入图片描述

测试分类

按测试对象

界面测试

界面测试(简称UI测试),指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查

  1. 验证界面内容显示的完整性,一致性,准确性,友好性。比如界面内容对屏幕大小的自适应,换行,内容是否全部清晰展示
  2. 验证整个界面布局和排版是否合理,不同板块字体的设计,图片的展示是否符合需求;
  3. 对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用,有效和无效的状态是否设计合理;
  4. 界面的布局和色调符合当下时事的发展。

可靠性测试

可靠性(Availability)即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务的时间占总时间的百分比表示。
可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%

系统非正常运行的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的,这些因素能让系统停止工作,或者连接中断不能被访问,或者性能急剧降低导致不能使用软件现有的服务等。可用性指标一般要求达到4个或5个“9”,即99.99%(不到一小时不工作)或者99.999%(不到5分钟)

容错性测试

系统能够处理异常,用户的错误操作而不至于系统崩溃,从而能够提高系统的可用性

容错性测试包含以下方面:

  1. 输入异常数据或进行异常操作,以检验系统的保护性。
    如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。(比如数据级测试,校验测试,环境容错性测试,界面容错性测试)
  2. 灾难恢复性测试。
    通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能尽快恢复。

文档测试

  • 开发文件 :可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。

  • 用户文件 : 用户手册、操作手册,用户文档的作用 ; 改善易安装性;改善软件的易学性与易用性;改善软件可靠性;降低技术支持成本。

  • 管理文件 :项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。
    在实际的测试中,最常见的是用户文件的测试,例如:手册说明书等。也会有一些公司对需求文档进行测试,来保证需求文档的质量。

兼容性测试

在这里插入图片描述

易用性

1. 规范性
现有的软件运行平台通常其UI标准已经不知不觉地被确立了,成为大家的共识。
多数用户已经习惯并且接受了这些标准和规范,或者说已经认同了这些信息所代表的的含义。

2. 直观性
求软件功能特性易懂,清晰。用户界面布局合理,对操作的响应在用户的预期之中

3. 舒适性
界面友好,美观,操作过程顺畅,色彩用运恰当,按钮的立体感

4. 灵活性
以有不同的选项以满足不同使用习惯的用户来完成相同的功能
例如手机键盘有九宫格和全键盘,还支持手写,满足了不同用户的需求

安装卸载测试

  • 软件不同的安装和卸载方式
  • 应用是否可以在不同的环系统,版本下安装(安装兼容性
  • 安装或者卸载过程中是否可以手动暂停或取消
  • 安装空间不足的时候系统是否有提示
  • 是否可以正常的卸载,以及应用软件的各种卸载方式
  • 卸载和安装过程中出现环境问题,能否应对,比如死机,断电,断网等

安全测试

  • 输入域,如输入恶性或者带有病毒的脚本或长字符串;
  • 代码中的安全性问题,如SQL/XML注入
  • 不安全的数据存储或者传递
  • 有问题的访问控制,权限分配
  • 假冒ID:身份欺骗
  • 篡改,对数据的恶意修改,破坏数据的完整性

性能测试

软件网页打开时越来越慢,查询数据时很长时间才显示列表,软件运行越来越慢等问题

  • 资源泄露
  • 资源瓶颈
  • 线程死锁,线程阻塞
  • 查询速度慢或效率低
  • 受外部系统影响越来越大

衡量一个系统性能好坏的关键性指标有:
用户响应时间,事务平均响应时间(TPS),吞吐率,每秒点击次数,内存和CPU使用率等。

内存泄漏测试

内存泄露是会累积的,只要执行的次数足够多,最终会耗尽所有可用内存,使软件的执行越来越慢,最后停止响应。

  • 分配完内存之后忘了回收。
  • 程序写法有问题,造成没办法回收(如死循环造成无法执行到回收步骤)。
  • 某些API函数的使用不正确,造成内存泄露。

内存泄漏的检测方法

人工静态法:代码走读,人工查找未被回收的内存。
自动工具法:借助相应测试内存泄漏的工具,如Visual Leak Detector,记录每次内存分配,清楚告诉用户内存是如何泄漏的。

白盒测试

优点 : 关注内部代码实现 , 代码覆盖率高
缺点 : 只关注了代码 , 但是将模块组合在一起 , 有可能出问题

白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。

白盒测试的测试目的

  1. 通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;
  2. 在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖

黑盒白盒 测试不分好坏 , 只要适应当前业务 , 保证软件质量 , 就是一个好测试

灰盒测试

是介于白盒测试与黑盒测试之间的一种测试

灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

开发阶段

在这里插入图片描述

单元测试

单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。又称为模块测试

集成测试

集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确

系统测试

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试

回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误

冒烟测试

冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正
常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试
时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试

验收测试

是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。
验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求

按测试实施组织

α测试(Alpha Testing)

β测试(Beta Testing)

α 测试与 β 测试的区别:

  1. 测试的场所不同:
    α 测试是指把用户请到开发方的场所来测试 ,
    β 测试是指在一个或多个用户的场所进行的测试。

  2. α 测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中
    β 测试的环境是不受开发方控制的,用户数量相对比较,时间不集中

  3. alpha测试先于beta测试执行
    通用的软件产品需要较大规模的β 测试,测试周期比较长

按是否手工划分

自动化测试

是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

自动化实施步骤:
1.完成功能测试,版本基本稳定
2.根据项目特性,选择适合项目的自动化工具,并搭建环境
3.提取手工测试的测试用例转化为自动化测试的用例
4.通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
5.生成自动测试报告
6.持续改进,脚本优化。

手工测试

由人去一个一个的输入用例,然后观察结果,和机器测试相对应,比较原始但是必须的一个步骤。

总结优缺点:
优点:自动化无法替代探索性测试、发散思维结果的测试。
缺点:执行效率慢,量大易错

一、自动化测试的优势

  • 自动化测试 可以执行手工测试相当困难或根本做不到的测试

如 : 并发测试、疲劳性测试和强度测试。

  • 自动化测试具有一致性和可重复性

  • 自动化脚本完全可复用

二、自动化测试的劣势

  • 手工测试发现的缺陷更多

  • 自动化测试对测试人员的技术要求较高

  • 自动化测试成本高、风险大

  • 自动化测试是死的,不具有情感

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

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

相关文章

uniapp小程序接入腾讯云【增强版人脸核身接入】

文档地址:https://cloud.tencent.com/document/product/1007/56812 企业申请注册这边就不介绍了,根据官方文档去申请注册。 申请成功后,下载【微信小程序sdk】 一、解压sdk,创建wxcomponents文件夹 sdk解压后发现是原生小程序代…

django+drf+vue 简单系统搭建 (2) - drf 应用

按照本系统设置目的,是为了建立一些工具用来处理简单的文件。 1. 准备djangorestframework 关于drf的说明请参见:Django REST Framework教程 | 大江狗的博客 本系列直接使用drf的序列化等其他功能。 安装 conda install djangorestframework conda i…

第三届 “鹏城杯”(初赛)

第三届 “鹏城杯”(初赛) WEB Web-web1 反序列化tostring打Hack类 Payload:O%3A1%3A%22H%22%3A1%3A%7Bs%3A8%3A%22username%22%3BO%3A6%3A%22Hacker%22%3A2%3A%7Bs%3A11%3A%22%00Hacker%00exp%22%3BN%3Bs%3A11%3A%22%00Hacker%00cmd%22%3BN%3B%7D%7D…

【Java基础】Java容器相关知识小结

Java容器相关知识 0. 前言1. Collection接口1.1. List接口1.1.1. ArrayList1.1.2. LinkedList1.1.3. Vector1.1.4. Stack 1.2. Set接口1.2.1. HashSet1.2.2. LinkedHashSet1.2.3. TreeSet 1.3. Queue接口1.3.1. PriorityQueue1.3.2. LinkedList 2. Map接口2.1. HashMap2.2. Tre…

Verilog刷题[hdlbits] :Always casez

题目:Always casez Build a priority encoder for 8-bit inputs. Given an 8-bit vector, the output should report the first (least significant) bit in the vector that is 1. Report zero if the input vector has no bits that are high. For example, the …

大数据Doris(十九):数据导入(Load)

文章目录 数据导入(Load) 一、Broker load 二、Stream load 三、Insert 四、Multi load

RabbitMQ集群

RabbitMQ概述 1.RabbiMQ简介 RabbiMQ是⽤Erang开发的,集群⾮常⽅便,因为Erlang天⽣就是⼀⻔分布式语⾔,但其本身并不⽀持负载均衡。支持高并发,支持可扩展。支持AJAX,持久化,用于在分布式系统中存储转发消…

用Python实现朴素贝叶斯垃圾邮箱分类

一、实验目的 通过本实验,旨在使用朴素贝叶斯算法实现垃圾邮箱分类,并能够理解并掌握以下内容: 了解朴素贝叶斯算法的基本原理和应用场景。 学习如何对文本数据进行预处理,包括去除标点符号、转换为小写字母、分词等操作。 理解特…

Selenium alert 弹窗处理!

页面弹窗有 3 种类型: alert(警告信息)confirm(确认信息)prompt(提示输入) 对于页面出现的 alert 弹窗,Selenium 提供如下方法: 序号方法/属性描述1accept()接受2dismis…

图形验证码登录

图形验证码登录 添加图片标签&#xff0c;进入页面访问/api/verifyCode 1.html <img onclick"javascript:getvCode()" id"verifyimg" style"margin-left: 20px;"/><script>getvCode();/*** 获取验证码* 将验证码写到index.html页…

Collection集合 迭代器遍历Iterator 和集合增强For

迭代器遍历Iterator 标准写法: 增强For for(类型 名称 : 集合 ) 举例: 不仅可以集合也可以数组 底层仍然是iterator

python自动化测试(十一):写入、读取、修改Excel表格的数据

目录 一、写入 1.1 安装 xlwt 1.2 增加sheet页 1.2.1 新建sheet页 1.2.2 sheet页写入数据 1.2.3 excel保存 1.2.4 完整代码 1.2.5 同一坐标&#xff0c;重复写入 二、读取 2.1 安装读取模块 2.2 读取sheet页 2.2.1 序号读取shee页 2.2.2 通过sheet页的名称读取she…

OpenHarmony 社区运营报告(2023 年 10 月)

● 截至 2023 年 10 月&#xff0c;OpenHarmony 社区共有 51 家共建单位&#xff0c;累计超过 6200 名贡献者产生 24.2 万多个 PR&#xff0c;2.3 万多个 Star&#xff0c;6.1 万多个 Fork&#xff0c;59 个 SIG。 ● OpenHarmony 4.0 版本如期而至&#xff0c;开发套件同步升级…

【React】04.MVC模式和MVVM模式

React是Web前端框架 1、目前市面上比较主流的前端框架 ReactAngular&#xff08;NG框架&#xff09;Vue 主流的思想&#xff1a; 不在直接去操作DOM&#xff0c;而是改为“数据驱动思想” 操作DOM思想&#xff1a; 操作DOM比较消耗性能[主要原因就是&#xff0c;可能会导…

Javascript知识点详解:对象、New命令、Object对象的相关方法

目录 对象 对象是什么 构造函数 new 命令 基本用法 new 命令的原理 new.target Object.create() 创建实例对象 Object 对象的相关方法 Object.getPrototypeOf() Object.setPrototypeOf() Object.create() Object.prototype.isPrototypeOf() Object.prototype.__p…

微信定时发圈,让你轻松管理朋友圈!

有时候我们可能因为工作、生活等原因&#xff0c;错过了最佳的发布朋友圈时间。这时&#xff0c;就可以利用朋友圈的定时发送功能&#xff0c;提前编辑好朋友圈内容&#xff0c;设置好发布时间&#xff0c;让你的好友们在正确的时间看到你的动态。 但是怎么做到朋友圈定时发送…

学C++跟着视频学还是跟着书学?

学C跟着视频学还是跟着书学&#xff1f; 感觉得看基础和目标 如果不是喜欢 C 或者以求职 / 完成 C 相关工作为目标的话&#xff0c;菜鸟教程其实都够了&#xff0c;基本语法掌握就差不多&#xff0c;然后多去写。 最近很多小伙伴找我&#xff0c;说想要一些C的资料&#xff0…

无人机-地面站

借鉴于&#xff1a;https://www.yii666.com/blog/343453.html

网络工程实验记录

网络工程 show ip route show running-config 第一周 相同设备使用交叉线&#xff0c;不同设备之间使用直通线 R1能ping通10.1.1.1 R2能ping通所有的 R3能ping通172.16.1.1 即路由器只能到达自身线连接出去的&#xff0c;另一端就连接不了了。 此时给R1分配静态路由 R…

WebDAV之π-Disk派盘 + GeniusScan

推荐一款功能极其强大的手机微型扫描仪软件,可以将所有的东西扫描成为pdf格式的文档,还支持连接葫芦儿派盘服务。GeniusScan让您的安卓设备变身微型扫描仪。它能让您快速扫描文档,将扫描结果保存JPEG或PDF格式,然后通过电子邮件发送。支持将扫描结果上传到云服务(设备已安装…