软件测试的基本概念

目录

1.测试需求

2.测试用例的概念     

3.bug

4.软件生命周期

4.1需求分析

4.2计划

4.3编码

4.4测试

4.5运行维护

5.测试模型

5.1敏捷开发模型

5.2scrume

5.3测试模型

5.4w模型(双v模型)

6.软件测试的生命周期

7.BUG的描述和定义

8.如何定义bug的级别

9.BUG的生命周期

10 .如何开始第一次测试

11.测试的执行和bug管理


1.测试需求

 从测试人员的角度来看待需求.需求是测试人员开展测试工作的依据,在具体设计测试用例的时候,首先需要搞清楚每一个业务需求对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,然后针对每个测试需求点设计测试用例。
过程如下,业务需求—>软件功能需求点—>测试需求点—>测试用例

为什么需求如此重要?

 从软件功能需求出发,无遗漏的识别出测试需求是至关重要的,这将直接关系到用力的测试覆盖率,对于识别出每个测试需求点,需要采用具体的测试用例方法来进行测试用例的设计.

测试工程师在需求分析和设计阶段就开始介入,因为这个阶段是理解和掌握软件的原始业务需求的最好
时机。只有真正理解了原始业务需求之后,才有可能从业务需求的角度去设计针对性明确,从终端用户的使用场景到端到端的覆盖率较高的测试用例集。

2.测试用例的概念     

  测试用例是为了实施测试而向被测试系统提供的一组集合,这组集合包含了测试环境,操作步骤,测试数据,预期结果等要素. 测试用例解决了两大问题,测什么,怎么测.

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

2.1为什么有测试用例呢?

1.测试用例是为了提高测试人员工作效率,降低测试人员工作的重复性问题

2 测试用例的建立自动化测试的基础

举个例子,如何设计一个手机打电话这个功能的测试用例:

我们可以设计为三个步骤分别是:

1.打电话前

2.打电话中

3.打电话后

在打电话前 我们可以有四个方面要测,分别是功能相关(如电话号码准确性,黑名单电话,不同地区的电话号码等),性能相关 打电话可以最远打多远的电话,可以识别出多大的声音,通话过程中会不会受到电磁波的干扰等. 还有兼容性,我们可以打给什么人,座机打给手机用户,移动打给联通或者电信等. 还有安全性,电话会不会被窃听,通话过程会不会被截取等.

一个简单的打电话,就可以设计出如此多测试用例,可见在真实的项目中,测试用例的设计和使用是有一定挑战的,但是也是至关重要的.

3.bug

什么是bug. bug准确的来说就是,当且仅当规格说明书是正确的,程序与规格说明书之间的不匹配就是.当规格说明书没有提到的功能,判断标准以最终用户为准,当程序没有实现其最终用户合理预期的功能要求时,就是软件错误.

4.软件生命周期

生命周期.顾名思义就是一个东西从到死亡的过程,和动物还有人的生命周期类似.软件的生命周期也是这样,但是可以大致分为以下周期:需求分析,计划,设计,编码,测试,运行维护.接下来我们分别对这些来进行说明

4.1需求分析

软件需求分析是由产品经理根据用户的需求来提出来的软件需求,我们要看的是需求分析是否合理,需求是否完整.

4.2计划

谁开发,谁测试,开发多久,测试多久.这些步骤都属于我们的计划中.

4.3编码

有了计划以后,我们就可以根据计划来写代码,把抽象的计划写成具体的代码出来.

4.4测试

该过程就是把开发人员的编码后的结果拿来检测,找出bug并且与开发人员一起修改它,让功能正常使用.需要写测试报告

4.5运行维护

如果西安上有问题,需要测试人员和开发人员一起协助定位问题+解决问题.把这个软件维护好.

5.测试模型

在日常开发中,我们会有各种开发模型,如迭代,增量,螺旋,瀑布等模型.但这些模型或多或少有一些缺陷,在企业中我们着重会使用并且好用的模型被称之为敏捷开发模型.我们着重讲一下这个模型.

5.1敏捷开发模型

我们可以用几句话来描述一下敏捷开发模型的思想:

个体与交互重于过程和工具->个体之间面对面沟通

可用的软件重于完备的文档(文档就是开发文档和需求文档)

客户的写作重于合同谈判

响应变化重于遵循计划

(强调前者,但是并没有否定后者的价值)

5.2scrume

scrum里面的角色.scrum由prod duct owner(产品经理),sucrme master(项目经理)和team(研发团队)组成的,team是由很多人组成的, 有前后端开发,ui设计师,测试等.

其中产品经理负责整理user story(用户故事),定义其商业价值,对其进行排序,指定发布计划,对产品负责

项目监理 负责召开各种会议,协调项目,为研发团队服务.

研发团队由不同技术的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品.

5.3测试模型

v模型:

其中: 

用户需求:pm将用户需求收集形成软件需求.

需求分析与系统设计:验证需求是否正确,制定编程语言,确定框架.

概要设计: 项目结构如何设计

详细设计:每个接口都涉及哪些库表,设计哪些任务

编码:写代码过程

单元测试:对每个方法(函数)进行测试

集成测试:将许多方法,集成到一起去测试 单个模块进行测试

系统测试:模块和模块 之间有没有影响

验收测试:验收的人 产品,运营

特点:左边是开发,右边是测试,类似于瀑布模型

优点:测试被划分成许多类型

缺点:测试人员介入太晚,发现问题实际太晚.项目的周期长.试错成本高

5.4w模型(双v模型)

  W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分
别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
  W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的
  W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
  局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑
 

6.软件测试的生命周期

软件测试的生命周期和软件测试的生命周期类似.有这些步骤:

需求分析:需求是否完整,需求是否正确

测试计划:确定软件由谁测试,什么时候开始测试,什么时候结束测试.测试哪些模块

测试设计:写测试用例(手工测试用例,自动化测试用例)

测试开发:编写测试工具,写自动化测试用例的代码

测试执行:执行测试用例

测试评估:测试人员产生测试报告

测试报告:

7.BUG的描述和定义

1.发现问题的版本

  开发人员需要知道出现问题的版本,才能获取到对应版本的代码来重现故障,并且版本统计和分析每个版本的质量

2.问题出现的环境

环境分为硬件环境和软件环境,如果是web项目,需要描述游览器版本,客户机操作系统等,如果是app项目,需要描述机型,分辨率,操作系统版本等,详细的环境描述有利于故障定位

3.错误重现的步骤

描述问题重现的最短步骤

4.预期行为的描述

让开发人员指导怎么样是正确的,尤其是以用户的角度来描述程序的行为是怎么样的,如果是依据需求提出的故障,能写明需求的来源是最好的

5.描述行为的描述

描述错误的现象crash等可以上传log,ui问题可以有截图.

6 其它

某些公司会有一些其它的要求,例如故障的分类:功能故障,界面故障,兼容性故障等,样些优先级的分类,严重影响测试需要人员优先修改的,可以设置优先级

7.不要把多个bug放在一起

在无法确定是同一段代码造成的故障时,不要将bug放在一起提交

8.如何定义bug的级别

bug的级别有哪些按照严重程度分:1.(Blocker)崩溃 2. (Critical)严重 3.Major(一般) 4.Minor(次要)

1.崩溃 : 阻碍开发和测试工作的问题,类似但不限于 系统崩溃,死机,死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失等问题 如:代码错误,死循环,数据库发生死锁,重要的一级菜单功能不能使用等(该问题在测试中很少出现,一旦出现应该立即终止当前版本测试)

2.严重: 系统的主要功能部分丧失,数据库保存调用错误,数据丢失,一级菜单不能使用但是不影响功能的测试,功能设计和需求严重不符,模块无法启动或调用,程序重启,自动退出,关联程序间调用冲突,安全问题,稳定性等

3.一般: 功能没有完全实现但不影响使用,功能菜单存在缺陷但不会影响系统稳定性,如操作时间长.查询时间长,格式错误,边界条件错误,删除没有确定框,数据库中字段过多.

4.次要

界面,性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等 如:错别字,界面格式

不规范,用户体验不好,可以优化性能的方案等.

! 如果发现崩溃级别的BUG,那么此时就需要停止测试,测试打回.

9.BUG的生命周期

测试人员应该跟踪一个bug的整个生命周期,从Open到closed的所有状态.

bug状态转换图

New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:如果认为不是Bug,则拒绝修改。
● Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
● Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
无效的bug:open->closed open-rejected-closed
缺陷状态变更流程每个项目团队的实际做法可能不大一样。并且需要结合实际的开发流程和协作流程来使用
测试人员对每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试,确保相同
的问题不再出现,才能关闭缺陷。
对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表
(或代表用户角度的人)的评审。
 

10 .如何开始第一次测试

作为一个菜鸟在进入测试团队开始第一次测试的时候,我们需要做很多的准备:
1、阅读所有项目有关的文档,包括:需求文档、设计文档、用户手册
2、尽可能参加各种项目会议,了解项目的背景、人员组成、尽可能的了解需求和业务。特别针对业务
专业性较强的项目,例如银行业务,需要了解各种业务知识,如高低柜、一二三类账户等、存款、贷款
等。
3、熟悉项目所使用的测试管理工具、配置管理工具,获取对应的地址和登录方式
4、阅读已有的测试方案和测试案例
5、阅读旧有的bug库,了解系统功能。尤其重要的是和现有的测试团队保持一致的故障定级原则
6、了解公司的规范要求,特别是用例编写规范、用例执行规范、bug提交规范、测试工具工具使用规
范等
在进行了以上的准备工作之后,第一次测试工作到来了,我们需要与测试组长确认具体的工作内容:
1、测试的计划是什么?
2、测试的内容是什么?test case有多少?安排了几天执行?有没有自由测试的时间?
3、我要测试的内容开发人员是谁?需求人员是谁?
4、分配给我的测试内容是否需要特殊的测试资源?资源是否满足需要?
在我们确认了以上内容之后,就可以开始测试的执行了
 

11.测试的执行和bug管理

1. 打开待测试的系统
2. 打开测试管理工具用例模块,开始执行用例
3. 发现bug!进行复现并确认bug的复现步骤
4. 记录bug
5. 沟通bug
6. 验证以前提交的bug
7. 确认本次测试完成
8. 编写测试报告

执行测试时处理要做到测试用例和需求的覆盖外,还要有临时发挥的能力。根据自己的经验、对测试的感悟以及随机测试可以发现很多根据测试用例无法发现的缺陷。
不能拘泥于测试用例或者已经有的测试方法,在测试执行过程中要不断总结测试方法和测试故障模型。
真正优秀的测试人员在执行测试时是想着做,做着想,这样的测试效果才好,尤其是在测试过程中,对程序的处理相当了解的情况下,测试的思路会更加清晰和全面。

如何发现更多bug

1、软件测试同样存在二八原则,80%的故障集中于20%的模块,如果某部分问题较多,加强测试广度和深度!
2、开发人员也存在二八原则,80%的故障集中于20%的开发人员,如果某些开发人员的bug较多,加强他开发模块的测试广度和深度!
3、多进行逆向思维和发散性的思维
4、不要局限于用例和需求文档
5、尽早介入项目, 不要等到开发的差不多了再介入项目
 


 

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

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

相关文章

机器学习——线性回归

机器学习——线性回归 文章目录 机器学习——线性回归一、什么是线性回归二、一元线性回归方程三、损失函数四、代码实现五、运用说明 一、什么是线性回归 线性回归是一种用来建立自变量和因变量之间线性关系的统计分析方法,也是机器学习中最常见、最容易理解的一个…

Java面试篇【RabbitMQ】常见面试题(2024最新)

RabbitMQ 1.为什么使用MQ?优点是什么 因为MQ可以异步处理,提高系统吞吐量。 应用解耦,系统之间可以通过消息通信,不关心其他系统的处理。 流量削峰,可以通过消息队列的长度,控制请求量。可以缓解短时间内的高并发请…

无线电信号及其分类

有线与无线通信 通信:指信息的交流与传递。 有线通信:用导向性传输媒体,即信息流沿着固体媒体传播。 例如电报、座机都是沿导线传送信号。 无线通信:用非导向性传输媒体,即在自由空间中被传播。分为红外线、电磁波等…

【Mysql】InnoDB 中的聚簇索引、二级索引、联合索引

一、聚簇索引 其实之前内容中介绍的 B 树就是聚簇索引。 这种索引不需要我们显示地使用 INDEX 语句去创建,InnoDB 引擎会自动创建。另外,在 InnoDB 引擎中,聚簇索引就是数据的存储方式。 它有 2 个特点: 特点 1 使用记录主键…

如何恢复已删除的华为手机图片?5 种方式分享

不幸的现实是,华为的珍贵时刻有时会因为意外删除、软件故障或其他不可预见的情况而在眨眼之间消失。在这种情况下,寻求恢复已删除的图片成为个人迫切关心的问题。 本文旨在为用户提供如何从华为恢复已删除图片的实用解决方案。我们将探索五种可行的方法…

光线追踪5- Surface normals and multiple objects

首先,让我们获取一个表面法线,以便进行着色。这是一个垂直于交点处表面的向量。在我们的代码中,我们需要做一个重要的设计决定:法线向量是否为任意长度,还是将其归一化为单位长度。 诱人的是,如果不…

视频远程监控平台EasyCVR集成后播放只有一帧画面的原因排查与解决

智慧安防视频监控平台EasyCVR能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,平台可支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议…

【STM32下UART协议的一些认识与使用方法】

STM32下UART协议的一些认识与使用方法 串口定义通用串行异步收发器 协议中相关的概念空闲位起始位数据位奇偶校验位三种校验方式BT接收数据的流程 停止位波特率总结 UART的三种工作方式UART控制器发送数据流程接收数据流程 UART初始化UART相关结构体和库函数 串口定义 通用串行…

揭秘共享旅游卡项目变现的6种方式,至少有4种适合创业者!

最近每天都有不少的朋友添加我,多数人会问一个问题,共享旅游卡这个项目好不好做?还有部分朋友会问,共享旅游卡有没有市场,是不是有我们所宣传的这样乐观? 从过年前开始,我一直在关注咱们共享旅…

基于Spring Boot + Vue的信息化在线教学平台

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

事务 失效的八种情况

在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到 spring 事务。 确实,sprin…

Android视角看鸿蒙第一课(工程目录)

Android视角看鸿蒙第一课(工程目录) 导读 鸿蒙马上就来了,这个工作很有可能落到Android开发的头上,既是机遇也是挑战,希望能跟上时代的浪潮,迫不得已开始学习鸿蒙开发,顺带分享记录下 我的学…

【python】对角线遍历

python系列文章目录 【python】基于cv2提取图片上的文本内容 【python】简单作图 【python】数组字符串等实用 【python】sort与sorted排序使用 【python】对角线遍历 python系列文章目录说明1.分析2.注意事项2.1 遍历2.2 区间2.3 顺序 3.代码实现 说明 给你一个大小为 m x n…

Java方法重载

重载 概念 重载就是在一个类中,有相同的函数名,但形参不同的函数 规则 方法名称必须相同参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)方法的返回值类型可以相同也可以不同仅仅返回类型不同不足以成为方法的重载 实…

MySQl基础入门③

上一遍内容 接下来我们都使用navicat软件来操作数据了。 1.新建数据库 先创建我门自己的一个数据库 鼠标右键点击bendi那个绿色海豚的图标,然后选择新建数据库。 数据库名按自己喜好的填,不要写中文, 在 MySQL 8.0 中,最优的字…

【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱

1 基本定义 卷积滑动平均滤波算法是一种基于卷积操作的滤波方法,它通过对信号进行卷积运算来计算移动平均值,以消除噪声。该算法的主要思想是将滤波窗口的加权系数定义为一个卷积核,对信号进行卷积运算来得到平滑后的信号。这样可以有效地去…

Java基于微信小程序的高校讲座预约系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

项目打包至私有maven仓库

文章目录 step1: 下载源项目到本地,确保编译无问题step2: maven配置文件settings.xmlstep 3: 项目的pom.xml配置要发布的仓库地址step 4: 执行deploy命令即可将项目打包至远程仓库 step1: 下载源项目到本地,确保编译无问题 step2: maven配置文件setting…

Vector Search和专用Search Nodes:现已正式发布

我们非常高兴地推出了 Atlas Vector Search 和 Search Nodes 的正式发布版本 (GA),为 Atlas 平台增添了更多价值。 自从在公开预览版中发布 Atlas Vector Search 和带有 Search Nodes 的专用基础架构以来,我们注意到,对于使用向量优化搜索节…

信息安全、网络安全以及数据安全三者之间的区别

随着信息技术的飞速发展,网络安全、信息安全、数据安全等词汇在平时出现的频率越来越高,尤其是数据安全,是大家都关心的一个重要话题。事实上,有很多人对网络安全、信息安全、数据安全的概念是区分不清的,下面由我帮大…