[测开篇]设计测试用例的方法如何正确描述Bug

news2024/11/18 10:29:34

文章目录

    • 为什么测试人员要写测试用例?
    • 怎样设计测试用例?
      • (总的方面)1.基于需求设计测试用例
      • (总的方面) 2.页面
      • (总的方面) 3.非功能性测试
      • (具体方面) 4.1 等价类解决穷举问题
      • (具体方面) 4.2 边界值法解决边界限制问题
      • (具体方面)4.3使用多条件依赖问题
      • (具体方面) 4.4 解决业务测试点覆盖问题
      • (具体方面) 4.5 错误猜测法
    • 练习
    • 测试分类介绍(除功能测试之外):
      • 1.按照是否查看代码划分
      • 2. 按照开发阶段划分
      • 3.按照实施组织划分
      • 4.按照代码是否运行划分
      • 5. 按照是否手工划分
      • 6. 按照地域划分
    • Bug
      • 1.衡量是否为缺陷的标准:
      • 2.缺陷产生的原因:
      • 3.缺陷描述的核心内容:
      • 4.提交Bug的要素
      • 5.缺陷类型
      • 6.如何区分是前端Bug还是后端Bug
      • 7.管理Bug的工具
      • 8.使用execl管理Bug

什么是测试用例?

测试用例是向被测试系统发起的一组集合,也就是执行测试的文档。

测试用例书写的八大要素:
1.测试编号:项目+模块+编号
2.用例标题:预期结果+操作步骤
3.模块/项目:所属项目或模块
4.前置条件:要执行此条用例,有哪些前置操作
5.优先级:表示用例的重要性或者影响力P0 ~ P4(P0最高)
6.测试步骤:描述测试步骤
7.测试数据:操作的数据,没有话可以为空
8.预期结果:期望达到的结果

为什么测试人员要写测试用例?

  • 测试用例是测试执行的依据。
  • 测试用例可以复用,在进行回归测试的时候不用重新编写用例。
  • 测试用例可以衡量需求的覆盖率
  • 后人可以借鉴
  • 手工测试用例是自动化测试的依据
  • 防止漏测
  • 实时测试的标准

怎样设计测试用例?

(总的方面)1.基于需求设计测试用例

  • 需求是测试人员进行测试的依据
  • 测试人员分析需求,验证需求的正确性和合理性,无二义性。
  • 从需求当中提取测试项。根据测试项进行进一步的细分,提取测试点,编写测试用例
  1. 从界面开始进行测试(符合UI设计稿和原型图)
  2. 验证软件的功能,把业务相关的功能串起来进行测试,不能光关注每一个孤立的功能
  3. 一个功能不同的输入和相应的不同的输出
  4. 功能之间的交互性(同一个系统不同的角色之间的交互)
  5. 异常功能的测试
  6. 功能用到的算法验证
  7. 从易用性,兼容性等几个方面考虑

那么最终总结出来一种模型(质量模型)

针对任何的软件和硬件,测试要覆盖的方面:

  • 功能性
  • 兼容性
  • 可靠性
  • 可维护性
  • 性能效率
  • 易用性
  • 信息安全
  • 可移植性

重点:功能,兼容,性能,易用,安全

(总的方面) 2.页面

  • 从上到下,从左到右依次去分析碰到的测试点

(总的方面) 3.非功能性测试

  • 易用性,兼容性,性能,安全,可移植性,可靠性,可维护性
  • 非功能性测试就是测试在软件本身有的功能之上做的一些限制。

(具体方面) 4.1 等价类解决穷举问题

方法使用等价类实现
在这里插入图片描述

如果此时让我们对这个QQ登录写出测试用例。那么我们应该首先想到的就是,找到一些数据填写账号密码。那么如果此时有大量的测试数据,我们要一个一个的测试吗?

其实不然,我们要对这些测试数据做出分类,那么我们在每个分类中选出一两个此时数据,填写到账号栏和密码栏验证QQ 登录即可。

这就相当于我们在衣柜中,把春夏秋冬的衣服归类一样。

分类:

  • 有效等价类:在所有有效数据集合中,取一个即可
  • 无效等价类:在所有无效数据集合中,取一个即可

步骤:

  • 明确测试需求
  • 确定有效和无效等价类
  • 提取数据编写测试用例

测试案例: 此时有一个登录场景,只需要输入QQ号,QQ号限定是8位自然数,方可登录成功

测试点在这里插入图片描述

测试用例:
在这里插入图片描述

测试案例

1.区号:空或者是三位数字

2.前缀码:每0且非1开头的三位数字

3.后缀码 四位数字

合格

确定有效和无效等价类
在这里插入图片描述

2个合格测试用例,8条不合格测试用例
在这里插入图片描述

等价类使用场景

针对需要有大量的数据测试输入,当时没法穷举测试的地方

如:输入框,下拉列表,单选复选框

经典代表:页面级的输入框类测试

(具体方面) 4.2 边界值法解决边界限制问题

方法:边界值设计方法
在这里插入图片描述

所以说我们如果要对这个范围做测试的话,那么就要测试 -100 -99 99 100 50

案例一:

首先明确需求: 标题长度大于0,小于等于30个字符

明确有效等价类和无效等价类:

  • 有效 大于0小于等于30长度的字符
  • 等于0,大于30长度的字符

边界值: 有效:1个,30个 无效:0个,31个
在这里插入图片描述

测试用例:在这里插入图片描述

使用场景:

常见词语描述:大小,尺寸,重量,最大,最小,至多,至少等修饰词语

典型代表:有边界范围的输入框类测试

**提示:**边界值可以覆盖等价类的长度,但是无法覆盖类型,所以设计用例是,必须两者结合

(具体方面)4.3使用多条件依赖问题

方法:判定表法

定义:是一种以表格形式表达多条件逻辑判断的工具

组成:

条件桩:列出问题中的所有条件,列出条件次序无关紧要

动作桩:列出问题中可能采取的操作,操作的排序没有约束

条件项:列出条件对应的取值,所有可能情况的真假值

动作项:列出条件项的,个中取值情况下应该采取的动作结果
在这里插入图片描述

规则:

  • 判定表中贯穿条件项和动作项的一列就是一条规则
  • 假设有n个条件,每个条件的取值有两个(0,1),全组合有2的n次方中规则

步骤:

  1. 明确需求
  2. 画出判定表
    • 列出条件桩和动作桩
    • 填写条件项,对条件进行全组合
    • 根据条件项的组合确定动作项
    • 简化,合并相似规则(有相同的动作)

​ 3.根据规则编写测试用例

案例一:

需求:

订购单检查

  • 如果金额大于500,有未过期,则发出批准单的提货单
  • 如果金额大于500,但是过期了,则不发批准单与提货单
  • 如果金额小于等于500,则不论是否过期都发出批准单和提货单
  • 在过期的情况下不论金额大小还需要发出通知单

画判定表:
在这里插入图片描述

根据判定表,写测试用例
在这里插入图片描述

案例二:

需求:

  • 输入的第一列字符必须是A或B
  • 第二列字符必须是一个数字
  • 如果第一列字符不正确,则给出信息L
  • 如果是第二列字符不正确,则给出信息M
  • 如果两列字符输入正确,则修改文件成功

画出判定表:
在这里插入图片描述

根据判定表写出测试用例:
在这里插入图片描述

使用场景:

  • 有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖关系
  • 判定表一般适用于条件组合数量较少的情况(比如4个条件一下)
  • 提示:如果碰到项目中多条件组合大于4个相互依赖,可以用正交法和因果图法来实现

(具体方面) 4.4 解决业务测试点覆盖问题

那么此时就可以使用场景法,就是用我们的流程图来梳理每个条件
在这里插入图片描述

根据流程图写测试用例
在这里插入图片描述

(具体方面) 4.5 错误猜测法

定义:通常经验推测系统可能出现的问题

思想:根据经验列举出可能出现的问题的清单,根据清单分析问题可能原因,推测发现缺陷。

场景:时间紧,任务中,根据之前项目类似经验找出出错的模块重点测试

时间宽裕通过该方法列出之前问题较多的模块再次测试

就如用户在输入密码的时候,在密码的前面和后面都输入了大量的空格等

练习

单模块测试
在这里插入图片描述

测试点
在这里插入图片描述

测试用例ps 我们这里仅仅对功能测试用例作以描述
在这里插入图片描述

测试分类介绍(除功能测试之外):

易用性测试: 软件需求具备简单易上手的属性

安装卸载测试:移动端测试很容易一楼掉的此时

安全测试:SQL注入,XSS漏洞,越权问题

文档测试: 通常来说是在需求评审是测试人员需要进行需求分析(文档测试)

兼容性测试:平台兼容,不同平台也有版本不同

可靠性测试:正常运行的时间 除以 (正常运行的时间 + 非正常运行的时间) * 100% 可用性指标一般要求达到4个或者5个9 即 99.99% 或者 99.999%

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

**性能测试:**性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试

压力测试:。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

负载测试 通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况

强度测试: 强度测试检查程序对异常情况的抵抗能力;是检查系统在极限状态下运行的时候性能下降的幅度是否在允许的范围内。

容量测试: 容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行。

1.按照是否查看代码划分

  1. 黑盒测试: 不去关心代码内部实现的逻辑结构,不去查看代码,只关心软件功能的外部的输入和输出是否满足用户需求相当于把软件的内部实现给屏蔽掉了。

    站在用户的角度设计测试用例,容易培养产品思维。设计测试用例是根据软件需求设计的,不容易遗漏需求

    黑盒测试的方法等价类,边界值,场景法,判定表法,因果图法,错误猜测法,正交法。

  2. 白盒测试: 查看代码是否规范,代码风格是否和公司设计一致,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求

    我们通常说的单元测试,就是白盒测试的一种,这个通常是由开发人员实施的。

    白盒测试的方法语句覆盖,路径覆盖,逻辑覆盖,判定覆盖,条件覆盖,判定组合覆盖,判定和条件组合 覆盖,条件和条件组合覆盖

    路径覆盖有;if else switch case try catch finally 等价类,边界值

  3. 灰盒测试

    即关心软件功能的输入和输出,也关心软件内部程序的实现。

2. 按照开发阶段划分

在这里插入图片描述

特点:越往底层走,测试效率越高,越往低走定位问题越容易,越往底层走测试独立性越高,耦合性变低。

单元测试阶段: 指的是对软件组成的最小单元进行测试

集成测试阶段: 按照一定的逻辑和策略把单元模块组合在一起,形成一个具体完整功能的大模块

  • 测试阶段: 单元测试
  • 测试方法: 灰盒测试
  • 测试人员: 黑盒测试工程师,白盒测试工程师
  • 测试依据: 概要设计文档
  • 测试内容: 模块功能的正确性,组成模块的单元之间的接口测试,全局数据结构测试,单个模块的功能缺陷对整个模块的影响。

系统测试阶段: 对软件系统进行全面的功能的非功能测试

  • 测试阶段:集成测试以后
  • 测试对象:整个软件系统
  • 测试方法:黑盒测试
  • 测试人员:黑盒测试工程师
  • 测试依据:需求设计文档
  • 测试内容:系统的功能,界面,可靠性,容错性,易用性,可移植性,兼容性,安全性,性能,安装卸载

这里我们有必要说明一下冒烟测试:冒烟测试是由测试人员来执行,检验系统只要功能和主要流程是否正常,评估软件系统是否具备可测试条件,可测试标准。

回归测试:当系统引入新代码的时候,测试人员往往需要验证新的代码对旧的功能的影响。

验收测试: 软件在上线之前最后一次的测试,也称为交付测试

  • 测试阶段:系统测试之后
  • 测试对象:整个软件系统
  • 测试依据:用户需求
  • 测试人员:用户
  • 测试方法:黑盒测试
  • 测试内容:同系统测试,文档测试,可用性分析文档,需求设计文档,软件设计文档,软件开发文档,功能手册

3.按照实施组织划分

α测试: 在β测试之前,把用户或者非测试和开发的人青岛开发现进行检测

  • 测试环境:开发现场
  • 测试人员:非开发和测试的人

β测试: 让实际用户在实际使用环境中进行测试,测试完成之后对问题进行同一汇总反馈

α测试和β测试的区别:测试环境不同,测试时间集中长度不同,α测试优先于β测试

第三方测试: 是软件第三方测评机构,按照软件行业的标准规范对软件进行测试

4.按照代码是否运行划分

静态测试: 不运行代码,通过检查代码风格,格式是否符合公司标准规范,检查代码的逻辑结构是否满足需求要实现的功能。

动态测试: 运行代码,给程序响应的输入,看是否得到期待的结果。

5. 按照是否手工划分

手工测试: 按照测试用例,手工去测试系统的功能

  • 缺点:量大,容易出错,效率低,有些极端情况无法测试到
  • 优点:进行探索性测试比较灵活

自动化测试: 把手工测试用例转化为自动化测试,机器按照人的设定好预设条件运行,这些预设包括正常的,异常的,去检查软件系统有没有符合设定的条件。

6. 按照地域划分

软件国际化: 进行软件设计和开发的时候,使用一种工程技术,使得软件在转化为不同的国家语言的时候,可以不用修改源码,适应不同的语言,不同国家人民的风俗习惯

国际化软件测试:外观上开界面功能没缺失,正常使用,是否适应这个国家人的使用习惯,文字日期,度量单位,货币,不同分辨率下,软件的正常使用

软件本地化: 具体到每个国家

Bug

1.衡量是否为缺陷的标准:

  • 和需求规格说明书上不符。这里是少功能
  • 功能实现错误
  • 多功能
  • 隐形功能错误
  • 不易使用

2.缺陷产生的原因:

  • 需求阶段:需求描述不易理解,有分歧,错误等。
  • 设计阶段:设计文档存在错误或者缺陷
  • 编码阶段:代码出现错误
  • 运行阶段:软硬件系统本身故障导致软件运行失败

3.缺陷描述的核心内容:

  • 缺陷的标题:描述缺陷的核心问题
  • 缺陷的预置条件:缺陷产生的前提
  • 缺陷的复现步骤:复现缺陷的过程
  • 缺陷的预期结果:希望得到的结果
  • 缺陷的实际结果:实际得到的结果
  • 缺陷的必要附件:图片,日志等信息(证据)

4.提交Bug的要素

  • 缺陷报告编号: 缺陷的唯一性标志
  • 严重程度:严重(主功能),一般(次要功能),微小(易用性,界面),建议(建议性问题)
  • 缺陷优先级: Priority:24小时内解决 Priority1:发布前必须修复。Prioity2:可以在写一个版本修复
  • Bug类型: 代码错误,兼容性错误,设计缺陷,性能问题
  • 缺陷状态: New 新建 Open 打开 Closed 关闭 Postponed 延期

5.缺陷类型

功能缺陷,界面错误,兼容新,数据,易用性,改进建议,架构

6.如何区分是前端Bug还是后端Bug

在写的web项目(仅设计到前端代码和后端代码)在测试的时候发现有个字段展示的数据不正确,首先通过在页面上使用F12开发者工具查看接口的请求参数和返回值是否正确,当时发现接口返回值是正确的,所以判定是前端代码写的有问题。如果是接口返回值就是错误的,那可能是代码逻辑出现了问题,需要对后端代码进行调试。

7.管理Bug的工具

这里我们可以通过禅道和jire 进行Bug管理 https://78945.chandao.net/

8.使用execl管理Bug

在这里我们使用execl表格对Bug进行管理

现在利用的是我们以上的测试用例,执行相关程序之后,得到的对缺陷的描述 在这里插入图片描述

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

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

相关文章

「Python|环境安装|Windows」如何在Windows上安装Python环境?

本文主要介绍如何在Windows上安装Python,帮助初学者或者非程序员伙伴快速搭建可以运行python代码的环境。 文章目录安装python做一点小配置验证python如何安装指定版本的python编程语言的环境搭建一直是学习编程的第一道门槛。 对于如何在Linux系统上安装指定版本的…

谷歌蜘蛛池怎么搭建?Google蜘蛛池可以帮助谷歌排名吗?

本文主要分享关于谷歌蜘蛛池的搭建疑问,以及Google对谷歌排名的影响到底有多大。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 谷歌蜘蛛池怎么搭建? 答案是:需要一个内链外链体系复杂的站群系统…

154、【动态规划】leetcode ——494. 目标和:回溯法+动态规划(C++版本)

题目描述 原题链接:494. 目标和 解题思路 (1)回溯法 本题的特点是nums中每个元素只能使用一次,分别试探加上nums[index]和减去nums[index],然后递归的遍历下一个元素index 1。 class Solution { public:int res …

java中flatMap用法

java中map是把集合每个元素重新映射,元素个数不变,但是元素值发生了变化。而flatMap从字面上来说是压平这个映射,实际作用就是将每个元素进行一个一对多的拆分,细分成更小的单元,返回一个新的Stream流,新的…

1629_MIT_6.828_xv6_chapter1操作系统的组织

全部学习汇总:GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次整理一下操作系统组织相关的知识,主要还是xv6教学操作系统相关的知识。当然,很多知识在这类技术领域是通用的。 1. 操作系统的主要功能…

SAP ABAP Odata

GetEntity和GetEntitys GetEntitys 创建Odata Project 导入结构 选择需要的字段 设定Key 勾选字段的creatable、updatable、sortable、nullable、filterable属性值。 再依上述步骤创建ZPOITEM结构和实体集 3. 创建ZPOHEADER和ZPOITEM的Association 两个实体集的关联字段&…

RocketMQ-消息消费模式 顺序消费

RocketMQ-消息消费模式 顺序消费RocketMQ-消息消费模式集群模式集群模式的演示(本身就默认)Rocketmq存储队列广播模式顺序消费如何改实现顺序消费RocketMQ-消息消费模式 集群模式 在消费模式为集群的情况下,如果机器是集群的,消息只会给集群中的其中一台机器消费到 集群模…

【数据结构】双向链表的模拟实现(无头)

目录 前言: 1、认识双向链表中的结点 2、认识并创建无头双向链表 3、实现双向链表当中的一些方法 3.1、遍历输出方法(display) 3.2、得到链表的长度(size) 3.3、查找关键字key是否包含在双链表中(contains) 3.…

基于I2S通讯MAX98357模块的JetsonNano声音外放

前言有很多方法可以为 Jetson 设备添加音频功能。USB 扬声器和USB 麦克风是一种简单的解决方案,但它们确实占用了宝贵的 USB 插槽,这些插槽可能更适合用于键盘、蓝牙功能、Internet Keys 和其他配件。在 Jetson 设备上,NVIDIA 通过 40 针 GPI…

微软发布会精华回顾:“台式电脑”抢了风头

Lightbot北京时间2016年10月26日晚10点,微软在纽约发布了名为 Surface Studio 的一体机、名为 Surface Dial 的配件以及外观未变的顶配版 Surface Book。同时,微软宣布了 Windows 10 下一个重要版本——“Creators Update”的数项新功能,包括…

【Linux】冯诺依曼体系结构和操作系统概念

文章目录🎪 冯诺依曼体系结构🚀1.体系概述🚀2.CPU和内存的数据交换🚀3.体系结构中数据的流动🎪 操作系统概念理解🚀1.简述🚀2.设计目的🚀3.定位🚀4.理解🚀5.管…

AOP面向切面编程思想。

目录 一、AOP工作流程 1、基本概念 2、AOP工作流程 二、AOP核心配置 1、AOP切入点表达式 2、AOP通知类型 三、AOP通知获取数据 1、获取参数 2、获取返回值 3、获取异常 四、AOP事务管理 1、Spring事务简介 2、Spring事务角色 3、事务属性 一、AOP工作流程 1、…

Linux内核启动(理论,0.11版本)分段与分页

为什么要虚拟内存 我们知道,在之前上微机原理时,我们的程序是可以直接访问内存的,而且访问的是直接的物理内存,在实模式下,寄存器是16位的,数组总线(data bus)是16位的,…

设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型、浮点类型(float、double、decimal、byte)、字符类型(char)、整型(int、long、short等)、枚举(entum)、结构体(struct)。 引用类型:数组、字符串(string)、类、接口…

DamiCMS SQL注入分析

2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。 一、入口文件(单入口文件模式) 看一下Index.php文件代码:引入了php_safe.php文件 查看一下php_safe.php防御文件: 对变量e…

2019_41 考研408

2019年(单链表)41.(13分)设线性表采用带头结点的单链表保存,链表中的结点定义如下:typedef struct node {int data;struct node* next;}NODE;请设计一个空间复杂度为O(1)且时间上尽可能高效的算法,重新排列L中的各结点,得到线性表L(q,a,,a,an…

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况三. 结果与代码四. 正则辅助工具一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在获…

牛客小白月赛66

牛客小白月赛66_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)冒着期末挂科的风险打了打&#xff0c;缓解了一下网瘾&#xff0c;感觉还行最近为了期末鸽了很多期的div3&#xff0c;一学期末就手痒想训&#xff0c;感觉再不打人要没了&#xff0c;结果…

linux性能优化-内存回收

linux文件页、脏页、匿名页 缓存和缓冲区&#xff0c;就属于可回收内存。它们在内存管理中&#xff0c;通常被叫做文件页&#xff08;File-backed Page&#xff09;。通过内存映射获取的文件映射页&#xff0c;也是一种常见的文件页。它也可以被释放掉&#xff0c;下次再访问的…

DOM编程-显示网页时钟

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>显示网页时钟</title> </head> <body bgcolor"antiquewhite"> <script type"text/javascrip…