浅谈功能测试
1.功能测试流程
1.1 功能测试流程
# 功能测试大致按照以下流程进行: (1).需求分析与评审(2).测试计划与测试方案(3).测试用例设计(4).测试用例评审(5).执行用例(6).缺陷跟踪及报告产出
1.2 功能测试流程详解
(1).需求分析与评审
功能测试应从需求出发, 功能测试就是尽量覆盖用户需求, 是软件能够最大程度满足用户的需求. 在开始功能测试之前, 技术人员应一起进行需求评审, 明确需求, 避免需求出现问题, 导致后面开发, 测试在错误的基础上进行.
测试人员在需求评审过程中要:
- 确认自己对需求理解清晰, 不存在疑惑- 确认需求文档完整, 准确, 能够为后期测试工作所使用- 对需求中不合理的地方提出自己的修改建议
(2).测试计划与测试方案
测试计划是指描述要进行测试活动的范围, 方法, 资源和进度的文档. 测试计划侧重在“计划”二字. 其核心内容包含但不限于以下:
- 测试范围与目标 - 角色与职责 - 进度与资源 - 风险与应对 - 准入准出标准
测试计划一般由测试组长, 测试经理负责编写, 也有可能有测试工程师编写.
测试方案是从技术的角度去分析需求, 在方向上明确要怎么测, 分析结果侧重点在于测试策略与技术实现. 测试方案侧重在“方案”二字, 其核心内容包含到不限于以下:
-
策略与方法
-
环境
-
工具的选择
(3).测试用例设计
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境、操作步骤、测试数据、预期结果等要素。
其实, 测试用例就是一份编写了要测哪些内容的文档. 测试用例表达要清除, 无二义性; 用例可操作性强; 用例的输入与输出明确.
用例是测试人员根据需求进行设计的, 设计方法有: 等价类划分法, 边界值法, 判定表法, 正交法, 场景法, 错误推测法, 基于需求设计.
(4).测试用例评审
测试用例评审是指, 测试人员测试好测试用例后, 需要进行评审, 检查用例设计是否合格, 是否能够最大程度上覆盖用户需求.
(5).执行用例
测试用例评审通过, 测试人员就可以根据测试用例对开发提交的代码进行测试了. 并将测试结果与用例中的预期结果进行对比, 并详细记录.
(6).缺陷跟踪及报告产出
缺陷跟踪, 是指测试未通过提交的Bug, 开发需要修复Bug, 再次提测. 测试人员要继续测试, 如果不通过还要再次提Bug, 知道测试通过. 这个过程就是缺陷跟踪. 最后产出报告.
2.等价类划分法
2.1 等价类概念与分类
# 等价类 在所有测试数据中, 具有某种共同特征的数据子集即为等价类 # 等价类分类- 有效等价类- 无效等价类
2.2 等价类划分法解决的问题
# 解决的问题 划分等价类可以将测试集合科学的从无穷大减少到有限小, 让测试工作从穷举测试中解放出来, 大大减少测试用例数量, 提升测试效率.
2.3 等价类划分法设计测试用例步骤与应用场景
# 步骤:1.需求分析2.划分等价类(1).有效等价类(2).无效等价类- 规则(需求本身出发)- 长度需求- 类型规定- 是否为空(必填项检查)- 是否可重复输入3.设计用例 # 典型应用场景: 带有输入框的测试
2.4 案例实战 --- QQ号注册网站账号
# 根据以下需求, 利用等价类划分法基于测试用例模板设计测试用例 # 需求:使用QQ号注册网站账号, QQ号要求: 6-10位自然数, 同一QQ号不能重复注册
# 用例设计步骤 1.分析需求 2.等价类划分(见下表)- 有效等价类- 无效等价类 3.设计用例(见下图)
有效等价类 | 有效数据 | 无效等价类 | 无效数据 |
---|---|---|---|
6-10位自然数 | 1234567 | 小于6位自然数 | 12345 |
大于10位自然数 | 12345678912 | ||
6-10位字母 | abcdefg | ||
6-10位汉字 | 只因你太美了 | ||
6-10位符号 | !@#$%^& | ||
不填写 | |||
重复输入 | 1234567 |
2.5 案例实战 --- 新浪邮箱登录
# 根据以下需求, 利用等价类划分法基于测试用例模板设计测试用例 # 需求:新浪邮箱登录, 要求输入(邮箱名)@sina.cn和密码进行登录邮箱名要求:4-16位字符, 支持英文, 数字, 下划线(不能全是数字或者下划线)密码: 6-18位字符
# 等价类划分法设计测试用例步骤: 1.需求分析 2.等价类划分:(见下表)- 有效等价类- 无效等价类
有效等价类 | 有效数据 | 无效等价类 | 无效数据 |
---|---|---|---|
4-16位英文 | abcd | 小于4位英文 | abc |
4-16位英文数字组合 | abc1 | 大于16位英文 | AbcdefAbcdefAbcdefg |
4-16位英文下划线组合 | abc_ | 4-16位纯数字 | 1234 |
4-16位数字下划线组合 | 123_ | 4-16位纯下划线 | |
4-16位英文数字下划线组合 | ab1_ | 4-16位汉字 | 你好中国 |
4-16位符号 | !@#$ | ||
不输入邮箱 | |||
输入未注册正确邮箱 | abcd26652@sina.com |
有效等价类 | 有效数据 | 无效等价类 | 无效数据 |
---|---|---|---|
6-18位字符 | abcdef | 小于6位字符 | abcde |
大于18位字符 | Abcdefabcdefabcdefg | ||
6-18位非字符_符号 | !@#$%& | ||
6-18位非字符_汉字 | 你好我的祖国 | ||
不输入密码 |
测试用例设计
# 测试用例设计: 由于存在两个输入框, 对两个输入框进行等价类划分, 每个输入框都有自己的有效等价类和无效等价类, 此时我们要考虑如何进行组合, 来设计测试用例 可能进行的组合如下:用户名 密码 预期结果有效 有效 登录成功有效 无效 登录失败无效 有效 登录失败无效 无效 登录失败 但基于测试的原则, 我们想确定登录失败时, 是由于用户名和密码之间谁的非等价类导致的登录失败, 所有最后一种组合(用户名无效,密码无效)不需要进行测试, 即使结果为登录失败, 也无法确定是谁导致的登录失败. 所以采用以上三种进行测试用例设计.
3.边界值法
3.1边界值法概念及存在的意义
# 1.边界值法概念 边界值法设计测试用例, 是对输入或输出的边界值(有效等价类和无效等价类的界限)进行测试的一种黑盒测试方法. # 2.边界值法存在的意义: 测试经验表明错误往往会发生在输入或输出范围的边界上, 所以边界值法是对这些边界进行测试, 是对划分等价类法的一种补充. # 3.边界值的概念(如下图:)- 上点: 边界上的点(符合条件的边界点)- 内点: 边界内的点- 离点: 离边界最近的左右两点
3.2两位数加法计算器案例
# 需求: 一个可以计算两位数内的加法计算器 # 确定边界值(如下图):
两位数取值范围 | 数学区间表示 | 上点 | 内点 | 离点 |
---|---|---|---|---|
x >= -99, y <= 99 | [-99, 99] | -99, 99 | 20 | -100,-98, 98, 100 |
x > -99, y <= 99 | (-99, 99] [-98,99] | -98, 99 | 10 | -99, -97, 98, 100 |
x >= -99, y < 99 | [-99, 99) [-99,98] | -99, 98 | 0 | -100, -98, 97, 99 |
x > -99, y < 99 | (-99, 99) [-98,98] | -98, 98 | 5 | -99, -97, 97, 99 |
3.3 设计测试用例的步骤与边界值法应用场景
# 设计测试用例的步骤1.需求分析2.划分等价类3.确定边界- 上点- 内点- 离点4.设计测试用例# 边界值法应用场景:- 在等价类的基础上针对有边界范围的测试数据输入的地方- 确定测试条件时, 明显存在(>, <, >=, <=)等的分析中.- 典型代表: 有边界范围的输入框类测试
3.4 QQ号注册网站案例补充
# 需求 使用6-10位的QQ号注册网站, QQ号要求6-8位自然数 # 边界分析(边界分析如图所示) 上点:6, 10 内点:8 离点:5,7, 9, 11 # 通过边界分析法补充的用例:- 输入6位自然数, QQ号正确 - 输入10位自然数, QQ号正确- 输入8位自然数, QQ号正确- 输入5位自然数, QQ号错误- 输入7位自然数, QQ号正确- 输入9位自然数, QQ号正确- 输入11位自然数, QQ号错误# 重复用例消除:- 输入6位自然数, QQ号正确(重复) - 输入10位自然数, QQ号正确(✅) - 输入8位自然数, QQ号正确(✅)- 输入5位自然数, QQ号错误(重复) - 输入7位自然数, QQ号正确(✅) - 输入9位自然数, QQ号正确(✅) - 输入11位自然数, QQ号错误(重复)# 补充测试用例文档:(如下图所示)
3.5 边界值分析法拓展
# 边界值优化(7变5) 从上面分析的边界值[5, 6, 7, 8, 9, 10, 11]来看:1.值5是一个无效点是左侧最小的点, 6和7均是有效点, 所以测一个6就可以了, 7可以去掉.2.值9, 10, 11中, 11是右侧最大的无效点, 需要保留, 而9, 10都是有效点, 9可以去掉.3.内点8凭借经验, 需要保留 # 结论(重点): 上点: 必选(不考虑区间开闭) 内点: 必选(建议选择中间范围) 离点: 开内闭外(考虑开闭区间, 开区间选择内部离点, 闭区间选择外部离点)
相关文章:
浅谈功能测试
1.功能测试流程 1.1 功能测试流程 # 功能测试大致按照以下流程进行: (1).需求分析与评审(2).测试计划与测试方案(3).测试用例设计(4).测试用例评审(5).执行用例(6).缺陷跟踪及报告产出 1.2 功能测试流程详解 (1).需求分析与评审 功能测试应从需求出发, 功能测试就是尽量覆…...

UDP的详细解析
UDP的详细解析 文章目录UDP的详细解析UDP 概述UDP的首部格式检验和的计算抓包测试参考TCP/IP运输层的两个主要协议都是互联网的正式标准,即:用户数据报协议UDP (User Datagram Protocol)传输控制协议TCP (Transmission Control Protocol) 按照OSI的术语…...

史上最详细JUC教程之Synchronized与锁升级详解
在Java早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的Mutex Lock来实现的,挂起线程和恢复线程都需要转入内核态去完成,阻塞或唤醒一个Java线程需…...

Vue|初识Vue
Vue是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。 初识Vue1. Vue简介2. 开发准备3. 模板语法3.1 差值语法3.2 指令语法4. 数据绑定4.1 单向数据…...

在职阿里6年,一个29岁女软件测试工程师的心声
简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少)其中成功的有4家&…...

(C语言)自定义类型,枚举与联合
问:1. 结构体在自引用的时候不能怎么样?可以怎么样?2. Solve the problems:自定义一个学生结构体类型,要包含姓名,性别,年龄,六科成绩,家乡(也为结构体&#…...
node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。
node.js 学习笔记 node.js服务端笔记文档学会写接口,path、包、模块化、fs、express、中间件、JWT、开发模式、cors。 gitee:代码接口笔记 1什么是node.js nodejs 是基于ChromeV8,引擎的一个javaScript 运行环境。node.js 无法使用DOM和BO…...

初始C++(三):引用
文章目录一.引用的概念二.引用的使用1.引用作为输出型参数2. 引用作为函数返回值3.const引用三.引用的一些小问题四.引用和指针五.引用和指针的区别一.引用的概念 引用的作用是给一个已经存在的变量取别名,编译器不会为引用变量开空间,引用变量和被他引…...

【前端】参考C站动态发红包界面,高度还原布局和交互
最近有些小伙伴咨询博主说前端布局好难,其实都是熟能生巧! 模仿C站动态发红包界面,cssdiv实现布局,纯javascript实现交互效果 目录 1、界面效果 2、界面分析 2.1、整体结构 2.2、标题 2.3、表单 2.4、按钮 3、代码实现 3.…...

VR全景带你浪漫“狂飙”情人节,见证甜蜜心动
当情人节遇上VR,足以让情侣过一个难忘的情人节。马上情人节就要到了,大家是不是还在绞尽脑汁的想着,如何和另一半过一个浪漫的情人节呢?老套的剧情已经不能吸引人了,让我们看看VR全景给情人节带来了哪些不同的体验吧&a…...

Linux系统安全之iptables防火墙
目录 一.iptables防火墙基本介绍 二.iptables的四表五链 三.iptables的配置 1.iptables的安装 2.iptables防火墙的配置方法 四.添加、查看、删除规则 1.查看(fliter)表中的所有链 iptables -L 2.使用数字形式(fliter)表所有链 查看输出结果 iptables -nL 3.清空表中所…...
【C#基础】C# 变量与常量的使用
序号系列文章1【C#基础】C# 程序通用结构2【C#基础】C# 基础语法解析3【C#基础】C# 数据类型总结文章目录前言一. 变量(variable)1,变量定义及初始化2,变量的类别3,接收输出变量二. 常量(constantÿ…...

[ 常用工具篇 ] CobaltStrike(CS神器)基础(一) -- 安装及设置监听器详解
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

Redis集群
Redis集群 本章是基于CentOS7下的Redis集群教程,包括: 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录ÿ…...

00---C++入门
1. C关键字(C98) C总计63个关键字,C语言32个关键字 2. 命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进…...

Spring-事务2
文章目录前言一、事务的特性(ACID)二、事务的隔离级别三、spring中的事务平台事务管理器.事务定义ISOLation_XXX:**事务隔离级别.**PROPAGATION_XXX:**事务的传播行为**.事务状态关系:四、使用XML文件配置事务1、 搭建…...

Windows Git Bash 配置
Windows Git Bash 配置 本文参考的文章: 在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com) 一、Git的安装 Git 的安装应该是都会的,但还是应该说以下&#…...
java代码整合kettle9.3实现读取表中的数据,生成excel文件
java代码整合kettle9.3实现读取表中的数据,生成excel文件 1.简介 本次使用java代码整合kettle9.3版本,数据库使用mysql。 2.jar包导入 项目需要依赖部分kettle中的jar包,请将这部分jar包自行导入maven仓库。 <dependency><groupId…...

分享微信点餐小程序搭建步骤_微信点餐功能怎么做
线下餐饮实体店都开始摸索发展网上订餐服务。最多人选择的是入驻外卖平台,但抽成高,推广还要另买流量等问题,也让不少商家入不敷出。在这种情况下,建立自己的微信订餐小程序,做自己的私域流量是另一种捷径。那么&#…...

4、数组、切片、map、channel
目录一、数组二、切片三、map四、channel五、引用类型一、数组 数组: 数组是块连续的内存空间,在声明的时候必须指定长度,且长度不能改变所以数组在声明的时候就可以把内存空间分配好,并赋上默认值,即完成了初始化数组…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...