测试理论与方法----软件测试工作流程第一个环节:提取测试需求

news2024/11/25 7:00:25

测试理论与方法

一、软件测试流程

1、软件测试定义

  1. 软件:程序+数据+文档:不仅仅包含应用程序,还应该包含和这个程序相关的数据,文档

  2. 软件测试:测试的对象:应用程序,数据,文档

  3. 软件分类(了解):

    1. 按照应用范围划分:系统软件(各种操作系统windows、Linux、ios…)应用软件(QQ,微信…)

    2. 按照组织(授权)划分:开源软件(免费),闭源软件(商业,收费)

    3. 按照架构划分:单机软件(不依赖于网络),分布式软件(B/S架构软件,C/S架构软件)

      B/S:浏览器/服务器,指的是这一类软件都依赖于【浏览器】—–>WEB端应用程序—–>各种网站类型的项目,比如:学员后台管理系统

      C/S:客户端/浏览器,指的是这一类软件都是有专属的【客户端】,比如:QQ,微信…

    4. 缺陷判定

      1. defect:缺陷;bug:原意“臭虫,虫子”,现在更多指向“错误,缺陷”

      2. 缺陷(判定方式一):软件操作的实际结果预期结果不一致。(掌握)

        例:多边形判定小程序:点击三变形按钮:预期结果:图案显示三边形,实际结果:显示五边形;输入3,4,5三条边:预期结果:提示“直角三角形”,实际结果:提示“普通三角形”

      3. 缺陷(判定方式二):

        产品说明书:产品需求说明书,指明了一个软件应该包含哪些功能,以及不能出现的功能。

        软件未实现产品说明书的功能

        例:设计计算器小程序:实现加减乘除四个功能,但测试:只有加减乘,少了除的功能—–>提出bug

        软件出现了产品说明书上指明不应该出现的功能

        例:计算器小程序可以实现任意数据的加减乘除操作,但测试:输入过大的数据进行计算,小程序突然闪退、崩溃…

        软件实现了产品说明书上未提到的功能

        例:计算器实现加减乘除四个功能,但测试:多了一个开平方功能—–>提bug

        软件未实现产品说明书虽未明确提及,但是也应该实现的目标(隐式需求)

        例:手机——>相机——>闪光灯功能:当电量过低,该功能无法使用——>虽然说明手册没有过多描述,但大部分手机都存在的情况

        软件难以理解,不太好用,运行缓慢或从测试的角度来看,最终用户会认为不好的—–>提BUG

        小总结:

        结果角度:实际结果≠预期结果

        需求角度:所有不满足需求或超出需求的,都是缺陷

    5. 软件测试的定义:

      1. 正向思维:—–>开发

        使自己确信产品能够正常工作的,来评价(测试)一个软件或系统(被测软件)的功能或特性,并确定它是否可以达到预期结果,测试就是以此为目的。

      2. 反向思维:—–>测试原则

        测试是为了发现错误而执行一个程序或系统的过程,测试是为了证明程序是有错的,而不是无错的,一个成功的测试在于发现了之前未发现的错误

      3. IEEE(电气电子工程师协会):

        在规定条件下(测试环境)下,运行系统或构件(被测软件):观察和记录结果(实际结果),并对系统或构件(功能)的某些方面给出评价。(实际结果和预期结果)

      4. 广义的软件测试:——>工作经验总结

        软件测试是对软件形成过程中所有的工作产品(应用程序+数据+文档)进行的测试,不仅仅只是应用程序

        ②软件测试的工作应该贯穿于【软件的生命周期】中,只要软件不被淘汰,测试的工作就要一直进行。

        ​ 例:软件的生命周期:从无到有,再到淘汰的过程

        ③软件测试的工作是对整个软件产品进行【确认】和【验证】的活动过程。(掌握)

        确认V:validation,提供客观的证据证实软件需求中的功能是否都已经实现。(证实需求)

        验证V:verification,提供客观的证据证实功能结果的正确性或合法性。(证实结果)

        ​ 例:开发计算器小程序:确认:证实加减乘除四个功能都实现;验证:证实加减乘除四个功能操作结果的正确性

        一句话总结:确认就是确保自己做了对的事情,验证就是确保自己把事情做对了

2、软件测试目的(掌握)

①以最少得人力,物力,时间的投入,尽可能早的和不断地发现软件中潜藏的错误和缺陷,并保证得以修复

②同时利用测试过程中产出的数据和信息,作为后续项目版本进行测试时的重要参考依据,避免再发生同样的问题。(妥善保存好测试产出物)

问题:软件测试的工作是否可以提高软件产品的质量?

软件测试可以保障软件产品的质量,想要提高产品质量,还得依赖于开发。(软件开发—–>代码的编写)

3、测试与调试的区别(了解)

在软件开发过程中,经常会遇到两种操作行为:

  1. 调试:debug,主要针对开发工作而言,调试的对象:代码—–>调试代码
  2. 测试:test/testing,是全过程的,是针对整个项目开发过程来进行的,测试的对象:应用程序,数据,文档
  3. 调试的目标:零错误,没有错误(毕竟调试的是代码,代码有错是不会运行),调试的方式:比较依赖于工具
  4. 测试的目标:“零”缺陷,并不是数字0,指的是发布后的软件,虽然有缺陷,但是用户可以接受和容忍。测试的方式:手工,工具

4、软件测试的流程(掌握)

从【项目立项】开始,软件测试的工作就要进行开展了

软件生命周期:项目立项—–>需求分析—–>设计,编码,测试——>产品发布—–>运行维护——>淘汰

测试流程:

获取测试需求—–>编写测试计划—–>制定测试方案—–>设计测试用例—–>执行测试——>提交缺陷—–>缺陷分析与评审——>提交测试总结报告——>准备下一个版本的测试

面试问法:请说一下你在上一家的工作流程是什么样的?

5、软件测试工作流程第一个环节:提取测试需求—->测什么

软件测试工作流程第一个环节:提取测试需求
  1. 软件需求的定义:

    1. 用户解决问题或实现目标时,所需要的条件或权能

      例:用户实现QQ注册操作:需要的条件:输入昵称,密码,手机号,勾选协议条款

    2. 系统或系统部件要满足的合同,标准,规范所需要的条件或权能。

      备注:系统或系统部件:指的是软件中的每一个功能,操作该功能时,它的每一个输入项或输入条件需要遵守的规则或限制

      ​ 例:QQ注册功能:昵称:不能为空,长度限制,组合形式;密码:不能为空,长度限制,组合形式

    1.1和1.2中提到的这些条件或权能,整理成文档,就形成了【软件需求】,包含了功能方面的需求和非功能方面的需求

  2. 软件需求分类:

    1. 业务需求:指的是从软件的【业务层面】来进行内容分析,包括业务场景,业务流程,要实现的业务目标和需要的约束条件。

    2. 系统需求:指的是功能,非功能的需求点

      功能方面的需求:指的是开发人员要实现的软件功能

      非功能需求:一般指向性能方面的需求(除功能以外的其它需求)

      ​ 例:微信:上传头像—–>功能性需求;上传头像的快与慢—–>非功能性需求

    3. 测试需求(test requirement):

      1. 测试需求和软件需求关系:

        为了实现软件的目标,通常掌握了软件需求之后会开展一系列的测试活动,而测试需求的提取往往来源于(业务需求和系统需求=软件需求)软件需求

      2. 定义:测试需求是测试人员在【需求阶段】,经过【多方渠道】收集的需求,会进行【可测性分析】,最终产生的这些需求点,才被称为“测试需求”

        多方渠道:主要是产品需求说明书/需求规格说明书,还可以参考项目合同书、计划书、沟通纪要等等

        可测性分析:指的是提取出来的这些需求,将来一定是可以测试的,会有预期结果的产生。

    4. 测试需求分析意义:

      1. 明确测试范围:测什么

      2. 明确测试类型,测试阶段

        测试类型:功能测试,非功能测试

        测试阶段:一般指向是按照开发阶段来划分测试流程:单元测试,集成测试,确认测试,系统测试,验收测试

      3. 识别需求的优先级:优先级的确定,可以清楚项目的核心功能,以及客户最为关注的模块点,由此也可以确定测试的工作重心


回顾
  1. 反向思维软件测试定义
  2. 验证和确认
  3. 缺陷定义
  4. 软件测试的目的
  5. 软件测试的流程
  6. 软件的生命周期
  7. 测试需求

  1. 测试需求阶段的输入与输出

    第一个小阶段:收集测试需求

    输入:参考文档,主要的是需求文档:需求规格说明书SRS,产品需求说明书PRD

    image-20230808094631654

输出:原始测试需求列表(相当于第一版整理出来的测试需求) image-20230808101328458

第二个小阶段:分析测试需求

​ 输入:原始测试需求列表

​ 输出:测试需求跟踪矩阵 或 Xmind整理测试需求 ——>“测什么”

第三小阶段:需求评审

​ 输入:测试需求跟踪矩阵 或 Xmind整理测试需求 ——>“测什么”

​ 输出:评审结果

评审的意义/目的:将产出物中有遗漏的,不一致的,错误的地方给审查出来。

6、测试需求的提取

Xmind,测试需求跟踪矩阵—–>提取测试点

案例:提取163邮箱注册功能的需求点

Xmind:tab键生成子模块,enter键生成同级别模块

提取测试需求的参考思路:

​ ①把软件中每个功能模块先划分出来

​ ②再看每个功能模块所需要的条件(输入项/输入条件)

​ ③分析出每个输入项/输入条件的约束规则(既要考虑正向规则,也要考虑反向的规则)

​ ④测试需求的提取,不仅要关注好正向需求(满足规则下的需求)。还要关注好反向需求(违反规则的),而且在进行测试需求提取时,多来关注反向测试需求点,但是对应的条件没有反向就不用考虑。

测试需求跟踪矩阵:

需求编号功能点名称需求描述需求拆分测试类别测试要点测试负责人优先级

需求编号:给提取的每一个需求生成的唯一序列号 0001-9999

参考写法:Req_ 项目名称_ 模块名称_ 子模块名称_0001

注意:名称:英文单词 或 汉语拼音首字母 比如:注册——ZC;如果模块名称发生了改变,编号要重新开始0001

功能点名称:写的是分析出来的功能点

​ 例:注册功能,登录功能,借贷功能…

需求描述:就是把找到的功能点的作用描述出来

​ 例:实现新用户注册操作,实现用户的登录操作,实现用户的借款操作

需求拆分:把该功能点的输入项写出来

​ 例:手机号快速注册:手机号 密码 协议条款

测试类别

正向(满足规则的需求)

反向(违反规则的需求)

测试要点:每个输入项要遵守的约束规则

​ 例:手机号:不能为空 存在 为空 不存在

测试负责人:写上测试人员的名字

优先级:需求的优先级 高 中 低

7、评审

  1. 需求评审的意义:

    1. 将需求中不合理,不完善,遗漏的,不一致的,错误的找出来,进行修复或完善

    2. 缺陷往往在需求阶段(需求规格说明书)比代码阶段发现的更多。为什么?

      ①需求大部分来源于客户/用户,客户基本上也都不懂技术,相关的技术人员和客户沟通会存在困难

      ②在需求阶段软件还没有进行编码实现,只能依靠于想象来进行分析,所有有些特性不是很明确

      ③需求不断变更,也没有及时同步

      ④需求阶段的工作没有得到重视

      ⑤不同的角色对需求的理解不一致

    3. 缺陷在需求阶段修复的成本最低。为什么?

      因为需求阶段修复的大部分都是文档

  2. 需求评审的方式:

    1. 相互评审,交叉评审
    2. 轮查
    3. 走查
    4. 小组评审
    5. 审查
  3. 评审记录表:把评审过程中发现的问题记录在该表中

问题编号问题类型问题来源问题描述问题状态负责人预计解决时间实际解决时间

问题编号:给发现的问题生成一个唯一的序列号

参考写法:review_ 问题来源_ 0001

例:需求问题:req_0001 测试用例:testcase….

问题类型:总结发现问题的所属类型

例:错别字,需求不清楚,需求错误,逻辑错误,专业话术不准确…

问题来源:写的是有问题需求对应的编号 或 写上有问题需求对应的功能模块

问题描述:一句话总结所发现的问题(大家把发现的问题,用文字给描述出来)

问题状态:new:新发现的 validation:已确认的 finish/pass:完成

负责人:写的是解决该问题的人员

预计解决的时间

实际解决的时间

小总结:评审会议结束后,需求人员需要发送评审报告,获得参与人员的签字确认。测试人员在此阶段后,就明确了测试范围(测什么),接下来就可以去制定测试计划,开展后续的工作。


回顾

提取测试需求:

思路:没来到一个新的模块时:先找到【功能】,再根据每个功能,分析操作时所需要的【输入项】,最后再根据每一个输入项,分析出各自所需要的【约束规则】

分析需求:正向需求:满足约束规则 反向需求:违反约束规则

产出文档:测试需求文档:测试需求跟踪矩阵 Xmind

评审:将产出中不完善,不合理,遗漏的,错误的地方给找出来

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

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

相关文章

java八股文面试[数据库]——慢查询优化

分析慢查询日志 直接分析慢查询日志, mysql使用explain sql语句进行模拟优化器来执行分析。 oracle使用explain plan for sql语句进行模拟优化器来执行分析。 table | type | possible_keys | key |key_len | ref | rows | Extra EXPLAIN列的解释: ta…

六、事务-3.事务四大特性

1、原子性 事务是一组操作,这组操作是不可分割的最小操作单元,这组操作要么全部执行成功,要么全部执行失败。 如:三步转账操作,当中只要有一步操作失败了,整个就失败了。 2、一致性 事务完成时&#xff…

使用vs2019+opencv4.3.0搭建开发环境笔记

使用vs2019opencv4.3.0搭建开发环境笔记 1.软件下载适配2.opencv适配三级目录 3.运行第一个demo报错 参考: 博文 1.软件下载适配 首先是需要下载安装vs2019,下载社区版免费,安装过程基本点击就可 vs2019官网 opencv下载 opencv4.3.0 2.o…

MySQL事务原理、MVCC详解

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2). 特性 原子性(Atomi…

Java CompletableFuture 详细使用教程与实践

一、Java CompletableFuture 详细使用教程 Java 8引入了一种强大的异步编程工具:CompletableFuture。它提供了一种处理异步计算的方式,使得你可以在计算完成时获取结果,或者将一个或多个 CompletableFuture 的结果组合在一起。本部分将详细解…

深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

目录 Docker 和 k8s 简介1、kubernetes 组件及其联系1.1 Node1.2 Pod1.3 Service 2、安装docker3、单节点 kubernetes 和 KubeSphere 安装3.1 安装KubeKey3.2 安装 kubernetes 和 KubeSphere3.3 验证安装结果 4、集群版 kubernetes 和 KubeSphere 安装5、kubectl 常用命令6、资…

Node.js 是什么?Node.js 安装及配置环境 入门指南!

Node.js 是一个基于 Chrome V8 引擎的开源、跨平台的 JavaScript 运行时环境。它允许开发者使用 JavaScript 构建高性能、可扩展的网络应用程序,使 JavaScript 能够在服务器端运行,而不仅仅局限于浏览器端。Node.js 的包管理器 npm,是全球最大…

浅谈安防视频监控平台EasyCVR视频汇聚平台对于夏季可视化智能溺水安全告警平台的重要性

每年夏天都是溺水事故高发的时期,许多未成年人喜欢在有水源的地方嬉戏,这导致了悲剧的发生。常见的溺水事故发生地包括水库、水坑、池塘、河流、溪边和海边等场所。 为了加强溺水风险的提示和预警,完善各类安全防护设施,并及时发现…

直播程序源码OAuth协议:开放授权的重要性

什么是OAuth协议? OAuth协议又称为开放授权协议,是一种开放标准协议,OAuth协议被开发出来,主要用于授权用户去访问第三方的应用程序。在直播程序源码平台中,为了方便用户或是对接其他应用的功能,常常需要与…

【防火墙】防火墙双机热备

华为防火墙部署在网络出口位置时,如果发生故障会影响到整网业务,为提升网络的可靠性,需要部署两台华为防火墙并组成双机热备 一、双机热备概述 1、双机热备介绍 双机热备需要两台硬件和软件配置均相同的华为防火墙,两台华为防火墙…

【数据结构】| 并查集及其优化实现

目录 一. 并查集基本概念处理过程初始化合并查询小结 二. 求并优化2.1 按大小求并2.2 按秩(高度)求并2.3 路径压缩2.4 类的实现代码2.5 复杂度分析 三. 应用LeetCode 128: 最长连续数列LeetCode 547: 省份数量LeetCode 200: 岛屿数量 一. 并查集基本概念 以一个直观的问题来引入…

动态规划(Dynamic programming)讲解(线性 DP 篇)

文章目录 动态规划(Dynamic Programing)第一关:线性DP第一战: C F 191 A . D y n a s t y P u z z l e s \color{7F25DF}{CF191A.\space Dynasty\enspace Puzzles} CF191A. DynastyPuzzles题目描述难度: ☆☆☆ \color…

参与线上活动赢GLMR!在韩国和新加坡遇见Moonbeam

随着8月进入尾声,月圆人团圆的中秋节也已经近在眼前,凉爽的秋天将会为大地带来新的气象。而今年秋天对于区块链产业以及Moonbeam来说与以往不同,将是一个热闹且充满活动的季节。 9月初将会迎来韩国最大的区块链活动,韩国区块链周K…

M1 Pro 新芯片安装python2 方案汇总

前言:磨刀不误砍柴工,环境装好,才能打工。M1 Pro 新芯片安装python2 文章目录 方案一 docker 容器构造环境(如果涉及本地两个仓库需要关联则不适用)方案二 使用 pyenv 🚀 作者简介:作为某云服务…

YAML详解及使用方法

YAML详解及使用方法 一、基本介绍二、数据类型2.1 纯量(scalars)/标量2.1.1 字符串2.1.2 保留换行(Newlines preserved)2.1.3 布尔值(Boolean)2.1.4 整数(Integer)2.1.5 浮点数(Floating Point)2.1.6 空(Nu…

WIN11右键菜单替换成WIN10右键菜单的办法

想必很多人已经都是使用上Win11的系统了。今天就来解决一个让人很无语的问题,就是这个win11的右键菜单。真的是太太太难用了。 能一步完成的操作,非要需要我多走一步。真的是麻了。 亲爱的Windows 11右键菜单,你的设计真是令人头疼。 那么我…

项目经理跨部门沟通的6个原则

大家好,我是老原。今天想和大家聊聊跨部门沟通。 你们在项目管理工作中,都是如何跨部门沟通,协调资源的? 项目经理80%的工作时间都是在沟通,一名优秀的项目经理,无疑是一个好的沟通者。 但不理解你的领导…

气象站的组成,有什么作用?

气象站的含义: 气象站是监测环境要素的仪器,比如:空气温度、空气湿度、风速、风向、大气压力、光照度等。气象站对环境要素的监测是通过不同传感器实现的,各个传感器既可以单独使用,也可以搭配使用,监测到…

董明珠怒斥员工「吃着碗里看着锅里」,如何看待?

导言: 最近,格力电器董事长董明珠因怒斥员工「吃着碗里看着锅里」的言论引起了广泛关注。这一事件激起了公众对职业素养和领导方式的讨论。本文将从职业素养的视角出发,探讨如何看待董明珠的怒斥员工事件。 领导者的压力与情绪管理 作为一位顶…

NCCoE发布“向后量子密码学迁移”项目进展情况说明书

近日,NIST下属的国家网络安全中心(NCCoE)发布了一份向后量子密码学迁移(Migration to Post-Quantum Cryptography)项目情况说明书。该文档简要概述了向后量子密码学迁移项目的背景、目标、挑战、好处和工作流程&#x…