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

测试理论与方法

一、软件测试流程

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.rhkb.cn/news/112134.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习pytorch7 神经网络的基本骨架--nn,module的使用

神经网络的基本骨架--nn,module的使用 官网Module介绍Python父类子类继承关系前向神经网络pycharm快捷键重写类方法codedebug B站小土堆视频学习笔记 官网Module介绍 https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module Python父类子类继承关系…

Unity 之利用 localEulerAngle与EulerAngle 控制物体旋转

文章目录 概念讲解localEulerAngle与EulerAngle的区别 概念讲解 欧拉角(Euler Angles)是一种常用于描述物体在三维空间中旋转的方法。它使用三个角度来表示旋转,分别绕物体的三个坐标轴(通常是X、Y和Z轴)进行旋转。这…

docker之 Consul(注册与发现)

目录 一、什么是服务注册与发现? 二、什么是consul 三、consul 部署 3.1建立Consul服务 3.1.1查看集群状态 3.1.2通过 http api 获取集群信息 3.2registrator服务器 3.2.1安装 Gliderlabs/Registrator 3.2.2测试服务发现功能是否正常 3.2.3验证 http 和 ng…

LeetCode第21~25题解

CONTENTS LeetCode 21. 合并两个有序链表(简单)LeetCode 22. 括号生成(中等)LeetCode 23. 合并K个升序链表(困难)LeetCode 24. 两两交换链表中的节点(中等)LeetCode 25. K 个一组翻转…

matlab 计算点云协方差矩阵

目录 一、概述1、算法概述2、主要函数二、代码示例三、结果展示四、参数解析输入参数输出参数五、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述

C语言——程序执行的三大流程

顺序 : 从上向下, 顺序执行代码分支 : 根据条件判断, 决定执行代码的分支循环 : 让特定代码重复的执行

构建智慧停车场:4G DTU实现无线数据高速传输

物联网技术的快速发展使得各种设备能够实现互联互通,无线网络技术给我们的日常生活带来了极大的便利。其中的网络技术如无线WiFi及4G网络已经成为了物联网应用中不可或缺的组成部分。而在工业领域中对4G无线路由器的应用是非常广泛的,人们通过4G工业路由…

SpringBoot日志配置

SpringBoot默认日志事打印在console控制台中,不会保存到文件中。 实际项目中必须保存到文件中进行日志分析 一、使用xml配置日志保存(并不需要pom配置slf4j依赖,使用这个默认不用配置pom依赖,最新的spring-boot-starter-web中已…

社招中级前端笔试面试题总结

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 typeof null 的结果是什么,为什么? typeof null 的结果是Object。 在 JavaScript 第一个版本中,所有值都存储在 32…

专线连接交换机设置 – 如何实现高效率的网络连接?

专线链接交换机设置 – 如何实现高效率的网络连接? 什么是专线连接交换机? 在现代互联网中,网络连接的快速和高效是至关重要的。尤其是对于需要大量数据传输和保证网络稳定性的企业和组织来说,专线连接交换机是一项非常重要的技…

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

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

SpringBoot项目在启动后自动关闭

问题描述: 今天搭建了一个SpringBoot项目,但是在启动之后就自行关闭了,就像下面这样: 原因分析:在创建SpringBoot项目的时候,Web的依赖没有导入,默认以普通java项目运行导致的终止。 解决方案…

【2023】Spring Validation中@NotNull注解、@NotBlank注解介绍以及使用

【2023】Spring Validation中NotNull注解、NotBlank注解介绍以及使用 前言一、简介spring-validation框架的常用注解 二、代码实现添加依赖1、实体举例2、Controller层:3、统一异常处理4、结果返回验证通过返回验证失败返回 前言 平常我们在编写代码的时候总需要很多if判空&am…

SSM - Springboot - MyBatis-Plus 全栈体系(二)

第一章 Maven 三、Maven 核心功能依赖和构建管理 1. 依赖管理和配置 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程…

已知两地经纬度,计算两地直线距离

文章目录 1 原理公式2 代码实现2.1 JavaScript2.2 C2.3 Python2.4 MATLAB 1 原理公式 在地球上,计算两点之间的直线距离通常使用地理坐标系(例如WGS84)。计算两地直线距离的公式是根据经纬度之间的大圆距离(Great Circle Distanc…

【力扣】55、跳跃游戏

var canJump function(nums){let cover 0;for(let i0;i<nums.length;i){if(i<cover){cover Math.max(nums[i]i,cover);if(cover >nums.length-1){return true;}}}}

手把手教你Jenkins整合Jmeter实现自动化接口测试

01、在机器上安装jmeter 下载&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 这里我用了一台Windows安装jmeter用来写接口测试的脚本&#xff0c;启动前修改jmeter.properties 中 jmeter.save.saveservice.output_format值为xml。 编写接口测试脚本&#xff1a; …

CTFhub-文件上传-无验证

怎样判断一个网站是 php asp jsp 网站 首先&#xff0c;上传用哥斯拉生成 .php 文件 然后&#xff0c;用蚁剑测试连接 找到 flag_1043521020.php 文件&#xff0c;进去&#xff0c;即可发现 flag ctfhub{ee09842c786c113fb76c5542}

GPT-3在化学中进行低数据发现是否足够?

今天介绍一份洛桑联邦理工学院进行的工作&#xff0c;这份工作被发表在化学期刊预印本网站上。 对于这份工作&#xff0c;有兴趣的朋友可以通过我们的国内ChatGPT镜像站进行测试使用&#xff0c;我们的站点并没有针对特定任务进行建设&#xff0c;是通用性质的。 化学领域进行…

Acwing798.差分矩阵

前缀和与差分 图文并茂 超详细整理&#xff08;全网最通俗易懂&#xff09;_前缀和差分_林小鹿的博客-CSDN博客 代码展示&#xff1a; #include<iostream> #include<cstdio> using namespace std; const int N 1e3 10; int a[N][N], b[N][N]; void insert(int x…