软件测试-概念

news2024/11/15 2:41:01

衡量软件测试结果的依据--需求

需求的概念

满足用户期望或正式规定文档(合同, 规范, 标准)所具备的条件或权能, 包含用户需求和软件需求.

IEEE:定义: 软件需求是(1)用户解决问题或达到目标所需的条件或权能. (2)系统或系统部件要满足合同, 标准, 规范或其它正式规定文档所具备的条件或权能. 一种反映上面(1)或(2)所述条件或权能的文档说明. 它包括功能性需求及非功能性需求, 非功能性需求对设计和实现提出了限制, 比如性能要求, 质量标准, 或者设计限制.

在多数软件公司, 会有两部分需求, 一个是用户需求, 另一个是软件需求.

用户需求:可以简单理解为甲方提出的要求. 如果没有甲方, 那么就是终端用户使用产品时必须要完成的任务. 该需求一般会比较简略.

软件需求: 或者叫功能需求, 该需求会详细描述开发人员必须实现的软件功能, 大多数公司在进行软件开发时会把用户需求转化为软件需求, 开发人员和测试人员工作的直接依据就是软件需求.

软件需求是测试人员进行测试工作的基本依据.

从软件测试人员的角度看需求

需求是测试人员开展软件测试的依据

在具体设计测试用例的时候, 首先需要搞清楚每一个业务需求对应的多个软件功能的测试点, 然后分析出每个软件功能需求点对应的多个测试需求点, 然后针对每个测试需求点设计测试用例.

过程如下: 业务需求 -> 软件功能需求点 -> 测试需求点 -> 测试用例. 

以用户登录为例, 来阐述下整个过程:

为什么需求对软件测试人员如此重要

1.从软件功能需求出发, 无遗漏的识别出测试需求是至关重要的, 这将直接关系到用例的测试覆盖率

2.对于识别出的每个测试需求点, 需要采用具体的设计测试用例的方法来进行测试用例设计

如何才可以深入理解被测试软件的需求

测试工程师在需求分析和设计阶段就开始介入,  因为这个阶段是理解和掌握软件的原始业务需求的最好时机.

只有真正理解原始业务需求之后, 才有可能从业务需求的角度去设计针对性明确, 从终端用户的使用场景到端的覆盖率较高的测试用例集.

测试用例的概念

测试用例是为了实施测试而向被测试的系统提供的一组集合, 这组集合包含: 测试环境, 操作步骤, 测试数据, 预期结果等要素

测试用例解决了两大问题: 测什么, 怎么测?

举个栗子:

测试用例ecsp39:

用户注册成功

步骤运作预期结果
进入注册页面, 选择注册系统展现注册页面

输入符合要求的单位名称, 单位邮箱, 密码,

确认密码, 验证码, 并确认《同意用户注册

协议》, 提交注册信息

系统进行注册操作, 发送激活邮件. 注册

成功后,跳转到注册页面, 并提示用户进行

激活操作

进入注册用的邮箱, 进行激活操作激活成功
用注册的邮箱和密码, 进行登录操作登陆成功, 系统展示欢迎的页面
测试方式手工
重要性重要
测试环境CHROME, IE10
测试前提系统运行正常, 邮件服务器已开启
功能模块注册登录

测试过程中可能会遇到以下问题:  -不知道是否较全面的测试了所有功能 - 测试用例的覆盖率无法衡量 - 对新版本的重复测试很难实施 - 存在大量冗余测试影响测试效率. 

测试用例的产生就是为了解决上述问题.

软件错误(BUG)的概念

当且仅当规格说明是存在的并且正确, 程序与规格说明之间的不匹配才是错误

当需求规格说明书没有提到的功能, 判断标准以最终用户为准: 当程序没有实现其最终用户合理预期的功能需求时, 就是软件错误.

开发模型和测试模型

随着软件工程学科的发展, 人们对计算机软件的认识逐渐深入. 软件工作的范围不仅仅再局限于程序编写, 而是扩展到整个软件的生命周期, 如软件基本概念的形成, 需求分析, 设计, 编码, 测试, 安装部署, 运行维护, 直到软件被更新和替换新的版本.软件工程还包括很多技术性的管理工作, 例如过程管理, 产品管理, 资源管理和质量管理, 在这些方面也逐步建立起了标准或规范. 

软件的生命周期

软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间. 如果把软件看成是有生命的事物, 那么软件的生命周期可以分为6个阶段. 即需求分析, 计划, 设计, 编码, 测试, 运行维护.

瀑布模型

瀑布模型在软件工程中占有重要地位, 是所有其它模型的基础框架. 瀑布模型的每一个阶段都只执行一次, 因此是线性顺序进行的软件开发模式.

优点: 强调开发的阶段性; 强调早期计划以及需求检查.

缺点: 依赖于早期进行的唯一一次需求调查, 不能适应需求的变化; 由于是单一流程, 开发中的经验教训不能反馈应用于本产品的过程; 风险往往迟至后期的测试阶段才显露, 因而失去早期纠正的机会

 螺旋模型

一般在软件开发的初期阶段需求不是很明确时, 采用渐进式的开发模式. 螺旋模型是渐进式开发模型的代表之一.

这对于那些规模庞大, 复杂度高, 风险大的项目尤其适合. 这种迭代开发的模式给软件测试带来了新的要求, 它不允许有一段独立的测试时间和阶段, 测试必须跟随开发的迭代而迭代. 因此, 回归测试的重要性就不言而喻了.

优点: 强调严格的全过程风险管理; 强调各开发阶段的质量; 提供机会检讨项目是否有价值继续下去.

缺点: 引入非常严格的风险识别, 风险分析和风险控制, 这对风险管理的技能水平提出了很高的要求. 这需要人员, 资金和时间的投入. 

增量, 迭代

增量开发能显著降低项目风险, 结合软件持续构建机制, 构成了当今流行的软件工程的最佳实践之一. 增量开发模型, 鼓励用户反馈, 在每个迭代的过程中, 促使开发小组以一种循环的, 可预测的方式驱动产品的开发. 因此, 在这种开发模式下, 每一次的迭代都意味着可能有需求的更改, 构建出新的可执行软件版本, 意味着测试需要频繁进行, 测试人员需要与开发人员更加紧密的合作.

增量通常与迭代混为一谈, 但其实两者是有区别的. 增量是逐块构造的概念,  例如画一幅人物画, 我们可以先画人的头部, 再画身体, 再画手脚.... 而迭代是反复求精的概念, 类似于画素描, 从简入繁.

敏捷开发

敏捷开发的价值观:

个体与交互重于过程与工具

可用的软件重于完备的文档

客户协作重于合同谈判

响应变化重于遵循计划

在每对比对中, 后者并非全无价值, 但我们更看重前者

敏捷中的测试

挑战1: 轻文档

挑战2:快速迭代.

1.测试工作的核心内容是没有变的, 就是不断地找BUG, 只是要调整好自己的心态, 一切以敏捷的原则为主.

2.测试人员不能依赖文档, 测试用例作用减弱, 更多的使用思维导图, 探索性测试(强调自由度, 设计和执行同时执行, 根据测试结果不断调整测试计划), 自动化测试.

3.敏捷讲求合作, 在敏捷项目组中, 测试人员应该主动点, 多向开发人员了解需求, 讨论设计, 一起研究BUG的出现原因.

软件测试V模型

 

 特点:

1.明确地标注了测试过程中存在不同类型的测试, 并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系.

2.V模型指出, 单元和集成测试应检测程序的执行是否满足软件设计的要求; 系统测试应检测系统功能, 性能的质量特性是否达到系统要求的指标; 验收测试确定软件的实现是否满足用户需要或合同的要求.

软件测试W模型

 

W模型增加了软件各开发阶段中应同步进行的验证和确认活动. W模型由两个V字模型组成, 分别代表了测试和开发的过程, 图中明确表示出了测试与开发的并行关系.

W模型特点: 测试的对象不仅是程序, 需求, 设计等同样要测试, 测试和开发是同步进行的.

W模型优点: 有利于尽早地全面发现问题. 例如: 需求分析完成后, 测试人员就应参与到对需求的验证和确认活动中, 以尽早找出缺陷所在. 同时, 对需求的测试也有利于及时了解项目难度和测试风险, 及早指定应对措施, 显著减小总体的测试时间, 加快项目进度.

局限性: 需求, 设计, 编码等活动被视为串行的; 测试和开发活动也保持着一种线性的前后关系, 上一阶段完全结束, 才可以正式开始下一个阶段的工作. 无法支持敏捷开发模式. 对于当前软件复杂多变的情况, W模型并不能解除问题. 

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

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

相关文章

MySQL、Oracle的时间类型字段自动更新:insert插入、update更新时,自动更新时间戳。设置自增主键id,oracle创建自增id序列和触发器

1. MySQL 支持设置自增id的字段类型:int、bigint、double等数值类型,一般用int、bigint支持设置自动更新时间的字段类型:datetime、timestamp下面sql中的now()函数可以用current_timestamp()替代 1.1. 不指定秒精度 drop table if exists …

一文读懂IP地址

IP地址(Internet Protocol Address)是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址的主要特点是具有唯一性&#xff…

【神经网络】得分函数,损失函数~

目录 引言 一、神经网络概述 1 定义 2 基本原理 二、得分函数 1 定义 2 应用方法 3 与神经网络 三、损失函数 1 定义 2实现方法 3 与神经网络 四、得分函数与损失函数的协同作用 1 关系 2 实际应用 六、代码事例 、总结与展望 引言 在人工智能与机…

【GO全栈掌握入门】

GO语言全栈学习咯 ~ 1. GO 语言简介2.语言特性3.哪些公司使用GO语言?3. 安装GO开发环境4. 学习说明:5. GO结构篇5.1 工作空间5.2 导入包5.3 组织结构5.4 依赖管理 6. GO骨肉篇7.GO工具篇 1. GO 语言简介 起源于2007年,GO语言之年轻如你所见&…

CodeSys创建自定义的html5控件

文章目录 背景创建html5control.xml文件控件界面以及逻辑的实现使用的资源安装自定义的html5控件库 背景 查看官方的资料:https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_html5_dev.html 官方的例子:https://forge.codesys.com/…

AI火灾监测报警摄像机

AI火灾监测报警摄像机,作为一种结合人工智能技术和摄像监控技术的创新产品,在火灾防控领域发挥着越来越重要的作用。这种摄像机通过先进的AI算法,能够实时监测摄像头画面,识别出火灾的特征,如火光、浓烟等。一旦检测到…

2 Spring之IOC详解

文章目录 4,IOC相关内容4.1 bean基础配置4.1.1 bean基础配置(id与class)4.1.2 bean的name属性步骤1:配置别名步骤2:根据名称容器中获取bean对象步骤3:运行程序 4.1.3 bean作用范围scope配置4.1.3.1 验证IOC容器中对象是否为单例验证思路具体实现 4.1.3.2…

从零开始学习在VUE3中使用canvas(五):globalCompositeOperation(图形混合)

一、简介 通过设置混合模式来改变图像重叠区域的显示方式。 const ctx canvas.getContext("2d");ctx.globalCompositeOperation "source-over"; 二、属性介绍 source-over 这是默认的复合操作。将源图像绘制到目标图像上,保留目标图像的不透…

优化选址问题 | 模拟退火算法求解物流选址问题含Matlab源码

目录 问题代码问题 模拟退火算法(Simulated Annealing, SA)是一种概率性的全局优化算法,用于求解大规模组合优化问题。在物流选址问题中,模拟退火算法可以用来寻找成本最低、效率最高的仓库或配送中心位置。下面是一个简化的模拟退火算法求解物流选址问题的描述,并附带有…

Leetcode - 周赛389

目录 一,3083. 字符串及其反转中是否存在同一子字符串 二,3084. 统计以给定字符开头和结尾的子字符串总数 三,3085. 成为 K 特殊字符串需要删除的最少字符数 四,3086. 拾起 K 个 1 需要的最少行动次数 一,3083. 字符…

HTML5和CSS3笔记

一:网页结构(html): 1.1:页面结构: 1.2:标签类型: 1.2.1:块标签: 1.2.2:行内标签: 1.2.3:行内块标签: 1.2.4:块标签与行…

钡铼R40工业4G路由器保障智能物流仓储系统高效运行

随着物流行业的不断发展和智能化技术的广泛应用,智能物流仓储系统已成为提升物流效率、降低成本、提高服务质量的重要手段。在这样的背景下,钡铼R40工业4G路由器作为一种先进的网络通信设备,在智能物流仓储系统中扮演着关键的角色&#xff0c…

【小米汽车SU7实测】 小米汽车su7到底行不行?小米新能源轿车体验感怎么样?

小米汽车SU7是小米汽车的首款车型,定位“C级高性能生态科技轿车”,也是小米迈入新能源赛道的首次成果落地。 首先,让我们来谈谈它的性能。试驾过程中,小米SU7展现出了惊人的加速能力,0-100km/h加速仅需2.78秒&#xf…

【设计】 【数学】1622 奇妙序列

本文涉及知识点 设计 数学 LeetCode1622. 奇妙序列 请你实现三个 API append,addAll 和 multAll 来实现奇妙序列。 请实现 Fancy 类 : Fancy() 初始化一个空序列对象。 void append(val) 将整数 val 添加在序列末尾。 void addAll(inc) 将所有序列中的…

2024 年 5 个 Linux 开源数字化学习平台

与其他行业一样,教育界多年来一直在经历数字化转型的过程。随着数字化学习平台的建立,目前只要能上网,任何人都可以接受教育。 “e-learning”一词的意思是“数字化学习”,是当今最常用的词之一。 它指的是通常在互联网上进行的培…

[c++] c++ 中的一些关键字:explicit, delete, default, override, final, noexcept

1 explicit explicit 的意思是清楚的,明显的。一般用在类的构造函数中,防止隐式转换。 explicit specifier - cppreference.com 如下代码, (1) 类 A 的两个构造函数都没有使用 explicit 修饰,所以如下两行代码,隐式…

ubuntu 如何使用阿里云盘

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

网络学习:IPV6基础配置

目录 一、配置接口的全球单播地址 二、配置接口本地链路地址 三、配置接口任播地址 四、配置接口PMTU 配置静态PMTU: 配置动态PMTU: 五、接口配置IPV6地址示例: 一、配置接口的全球单播地址 全球单播地址类似于IPv4公网地址&#xff0…

postman下载汉化以及使用

【2023全网最牛教程】10分钟快速上手Postman(建议收藏)_macbook postman打开慢-CSDN博客 Postman 汉化教程(小白)配置的具体操作_postman怎么设置中文-CSDN博客 上面是两篇参考的博客 postman是一款支持http协议的接口调试与测试…

100道面试必会算法-10-K 个一组翻转链表

100道面试必会算法-10-K 个一组翻转链表 题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点…