【软件测试基础】

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🤺🤺🤺


目录

1、什么是软件测试(CASE)

1.1 软件测试就是验证软件产品特性是否满足用户的需求。

1.2 软件测试的特点:

2、软件测试和开发的区别

2.1 软件测试与调试的区别:

2.2 软件测试的岗位

3. 什么是需求

4. 认识测试用例

4.1 测试用例的概念 

4.2 为什么要设计测试用例

5. 关于BUG的常见问题

5.1 什么是BUG

5.2 如何描述一个BUG(面试题)

5.3 BUG的生命周期 

5.4 如何定义bug的级别  

5.5 因为BUG和开发人员发生冲突的解决方法 

6. 软件开发和测试的生命周期

7. 开发模型

7.1 瀑布模型

7.2 螺旋模型

7.3 增量模型,迭代模型

7.4 敏捷开发模型 

8. 测试模型

8.1 V模型

8.2 W模型(双V模型)

9. 一个优秀的软件测试人员所具备的素质



1、什么是软件测试(CASE)

最常见的理解是:软件测试就是找BUG,发现缺陷,从而保证软件的质量!!!

1.1 软件测试就是验证软件产品特性是否满足用户的需求。

早期,人们更多的将测试看成是对软件产品“检验”,检查软件的每个功能是否运行正常。

1983年,Bill Hetzel将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了其预期的效果。

从这话我们可以看出以下两点:

  • 测试试图验证软件是“工作的”,也就是验证软件功能执行的正确性。
  • 测试的活动是以测试人员“预期的结果”为依据,这里的“预期结果”指的是需求定义。

1.2 软件测试的特点:

软件测试只是一个样本试验,具有不可穷尽性。

2、软件测试和开发的区别

1.工作内容
开发:通过不同的编程语言,最终做出软件(coding)
测试:写测试用例,执行,发送测试报告,编写自动化测试用例,开发相关的测试工具
2.技能区别
测试:技能广度的掌握(因为测试人员要对产品进行全方面的测试,外观是否好看,WEB的UI自动化,后端的接口进行测试,性能,安全…)

开发:   技能深度的掌握(因为开发要写出高效的代码)
3.开发前景
开发:初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 -> 架构师 -> CTO
测试:初级测试工程师 -> 中级测试工程师 -> 高级测试工程师 -> 架构师 -> 项目经理
4.薪资:
通常情况下,大厂测试和开发薪资是一样的。中小厂的测试薪资比开发略低

2.1 软件测试与调试的区别:

1.角色
调试:开发自己调试
测试:测试 + 开发一起执行(通常情况下,黑盒测试由测试人员执行,部分白盒测试、系统测试是由开发人员执行)
2.阶段
调试:开发的时候才调试
测试:测试是伴着整个软件的生命周期的(测试介入的时间比调试早的)
3.目的
调试:确保程序做了程序员想它做的事情
测试:确保程序解决了它该解决的问题
4.手段        
调试:debug,分析代码逻辑
测试:等价类划分法、边界值法、黑白盒测试...

2.2 软件测试的岗位

  • 软件测试工程师: 主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等
  • 测试开发工程师: 根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量,测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决能力尤为重要
  • 性能测试工程师: 针对系统进行性能测试,包括使用工具和编写性能自动化测试脚本
  • 安全测试工程师: 主要分析产品可能会出现的安全问题,做各个方面的渗透测试,提高产品的安全性
  • 其他:系统测试工程师、嵌入式测试工程师、硬件测试工程师

3. 什么是需求

需求就是用户的期望或者满足合同(文档,标准,规范)所需要的条件或者权限

需求包含了两个方面:

  1. 用户需求:可以简单的理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务,该需求一般比较简略
  2. 软件需求:从用户需求转化而来,是用户需求的细化和具体实现细节

用户需求不一定是正确的、合理的、需要进行用户需求的提取和分析(产品经理来提取),如果说用户需求是合理的,而且有开发的必要,产品经理就会将用户需求转变成软件需求文档

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

软件测试人员如何深入了解需求?

  1. 从需求分析阶段就开始介入了解需求
  2. 站在用户的角度
  3. 参加需求评审会议
  4. 查阅文档
  5. 多交流多沟通

4. 认识测试用例

4.1 测试用例的概念 

测试用例就是向被测试系统发起的一组集合,包含测试环境,测试数据,测试步骤,预期结果

示例:

4.2 为什么要设计测试用例

  1. 测试用例可以衡量需求覆盖率
  2. 测试用例可以复用,提高工作效率
  3. 测试用例具有借鉴意义
  4. 测试用例可以用于回归测试
  5. 防止遗漏测试的需求 
  6. 测试用例是建立自动化的基础

自动化就是把测试人员双手解放,让代码代替人员执行测试.

5. 关于BUG的常见问题

5.1 什么是BUG

当且仅当程序规格说明书(软件需求)存在并合理,如果软件功能和软件需求不符合,就说是软件错误(BUG)

当软件需求不存在,用户需求存在并合理,软件功能和用户功能不符合,就说是软件错误

5.2 如何描述一个BUG(面试题)

对于如何描述一个BUG,可以从以下几点来进行描述

1、发现问题的版本
开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于统计和分析每个版本的质量。
2、问题出现的环境
环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
3、错误重现的步骤
描述问题重现的最短步骤。
4、预期行为的描述
要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。要相信:测试人员是最懂需求的。
5、错误行为的描述
描述错误的现象。crash等可以上传log,UI问题可以有截图。
6、其他
某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。
7、不要把多个bug放到一起
在无法确认是同一段代码造成的故障时,不要将bug放在一起提交。

5.3 BUG的生命周期 

每个公司、每一个工具对bug生命周期的定义都是不一致的,下面仅是一个常见的例子。
测试人员应该跟踪一个Bug的整个生命周期,从Open到Closed的所有状态。

  •  New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
  •  Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
  •  Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
  •  Rejected:如果认为不是Bug,则拒绝修改。
  •  Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
  •  Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
  • Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
  • 无效的bug:open->closed   open->rejected->closed

缺陷状态变更流程每个项目团队的实际做法可能不大一样。并且需要结合实际的开发流程和协作流程来使用。

例如,测试人员新发现的Bug,必须由测试组长评审后才决定是否Open并分派给开发人员。测试人员Open的Bug可以直接分派给Bug对应的程序模块的负责人,也可以要求都先统一提交给开发主管,由开发主管审核后再决定是否分派给开发人员进行修改。 Bug的跟踪以及状态变更应该遵循一些基本原则:
1、测试人员对每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试,确保相同的问题不再出现,才能关闭缺陷。
2、对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表(或代表用户角度的人)的评审

问题:如果发现了一个BUG,开发人员修改了,但是测试人员又复现了这个BUG,是哪些原因可能导致的?

  1. 测试环境不一样
  2. 开发人员没有理解到,没有修改成功
  3. 开发人员修改后没有提交代码到远程,测试人员仍然测试的是旧代码 

5.4 如何定义bug的级别  

1、Blocker(崩溃):
阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。
2、Critical(严重):
系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。
3、Major(一般):
功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多)
4、Minor(次要):
界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

5.5 因为BUG和开发人员发生冲突的解决方法 

  • 检查自己的BUG描述,看看是否自己将BUG描述清楚
  • 站在用户角度考虑问题 应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员更加积极地、高质量地修改Bug。
  • BUG的定级要有理有据,符合公司规范
  • 提高自身的技术和业务水平. 不光要提出问题, 最好也能提出解决方案
  • 找产品经理去讨论问题的解决方案 
  • 如果开发不接受,不要争吵,可以发起第三方会议

第三方会议参加者一般是测试人员、开发人员和项目经理

开会前:一定要明确问题原因,问题是什么,解决方案是什么

开会后:确定问题要不要解决,什么时候解决,谁去解决

6. 软件开发和测试的生命周期

 软件开发的生命周期

  1. 需求分析:分析需求是否合理,需求是否完整
  2. 计划:什么时候开始、什么时候结束、耗时多久
  3. 设计: 将大的需求转变为一个个可具体执行的任务。进行开发设计(开发哪些接口、使用什么开发框架、使用什么技术)
  4. 开发:开发人员参考需求文档和技术文档等等来进行代码开发
  5. 测试:进行测试,写测试报告
  6. 运行维护:如果项目有问题,测试人员需要协助开发定位问题 + 解决问题 

 软件测试的生命周期(软件测试的流程)

  1. 需求分析:验证需求的合理性与正确性,细化需求,根据需求提炼测试点
  2. 测试计划:确定测试范围,目表,测试人员,测试环境,时间等
  3. 测试设计:开发测试用例
  4. 测试执行:执行测试,提交BUG
  5. 测试报告: 本次迭代的测试情况进行分析和总结,如写了多少测试用例,执行了多少,发现了多少BUG,修改了多少,剩余BUG的解决方案,测试的覆盖率

7. 开发模型

7.1 瀑布模型

  • 特点:阶段性强,每一个阶段比较独立,因此是线性顺序进行的软件开发模式,看重前期的需求分析和后期的测试阶段
  • 优点:   每个阶段做什么,产出什么十分清晰
  • 缺点:测试在编码后才开始介入,导致前期的问题到后期才发现,失去错误补救机会
  • 适用的项目:  小型的项目

7.2 螺旋模型

螺旋模型适合项目庞大,前期风险大,不是很明确的项目 

  • 特点:强调每一个迭代的测试质量和风险分析,抗风险能力很强
  • 优点:每个阶段都会进行风险分析,尽早的发现问题
  • 缺点:风险管控人力物力投入多,成本较大 
  • 适用项目:适用于比较大的项目,风险较多的

7.3 增量模型,迭代模型

比如同一个系统四个模块A,B ,C,D要花两周开发完

  • 增量模型:第一周开发A,B模块,第二周开发C,D模块
  • 迭代模型:第一周开发A,B,C,D的基础功能模块,第二周开发A,B,C,D的其他功能模块

特点:抗风险能力强

说明:通常开发将两个模型结合使用,在迭代的基础上使用增量

7.4 敏捷开发模型 

敏捷开发是一种以人为本、迭代、循序渐进的软件开发方法,强调在整个软件开发过程中与客户进行频繁的沟通和协作。敏捷开发的核心在于不断地快速迭代、交付、反馈和改进,以适应需求变化和市场竞争的挑战。敏捷模型的流程通常有以下价值观:

  1. 个体与交互重于过程和工具 (个体之间面对面交流)
  2. 可用的软件重于完备的文档 (文档: 开发文档,需求文档)
  3. 客户协作重于合同谈判 ()
  4. 响应变化重于遵循计划
  5. 在每对比对中,后者并非全无价值,但我们更看重前者 (强调前者,并没有否定后者)

特点:轻文档,轻流程,重目标,重产出,拥抱变化(用户可以随时更改需求)

敏捷开发有很多方式,scrum是比较流行的一种

scrum里的角色

scrum由产品经理(product owner),项目经理(scrum master),研发团队(team)组成

  • PO:将用户需求转化为user story(用户故事)
  • SM:管理整个团队,负责召开各种会议,协调项目,为研发团队服务
  • Team:由各种技能的人员组成,通过紧密协同,完成每一次迭代的目标,交付产品

scrum的基本流程

  1. 发布计划会议:产品经理收集需求形成userstory,讲解,排出本迭代需要进行开发的userstory形成sprint backlog
  2. 迭代计划会议:分析userstory,把userstory分解成一个个任务,分配开发人员,指定开发计划
  3. 每日例会:团队成员回答昨天干了什么,遇到的问题,今天的计划
  4. 产品演示会议:甲方,用户演示产品,PO把不足的地方收集整理形成新的user story
  5. 回顾计划会议:回顾整个迭代过程,把不足的地方找出,在下一次迭代过程中改进,优化迭代流程

8. 测试模型

8.1 V模型

  •  特点:每一个阶段独立性强,左边是开发,右边是测试,左边每一个阶段是右边测试阶段的依据,和右边每一个测试阶段一一对应
  •  缺点:瀑布模型的变种,编码后才进行测试,前期的错误后期才发现,会失去错误及时补救机会

8.2 W模型(双V模型)

  •  特点:开发一个v,测试一个v,测试一开始就介入,可以保证前期的问题及时发现和纠正
  •  缺点:测试人员和开发人员一定程度上还是串行的,一个阶段完了之后才会进行下一个阶段
  •  V模型和W模型都不支持敏捷开发 (因为不能拥抱变化)

9. 一个优秀的软件测试人员所具备的素质

  • 综合能力:沟通能力,编程能力,学习能力,文字描述能力
  • 自动化开发能力:开发自动化脚本和工具的能力
  • 编写测试用例的能力:能够设计出高效的发现缺陷和保证产品质量的优秀测试用例
  • 具有探索性思维,发散思维,对软件测试有浓厚的兴趣并且对工作有责任感和压力

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA采集CameraLink相机Full模式解码输出,附带工程源码和技术支持

目录 1、前言2、CameraLink协议基础3、目前我已有的CameraLink收发工程4、设计方案输入CameraLink相机视频缓存视频输出软件配置 5、vivado工程详解6、上板调试验证7、福利:工程代码的获取 1、前言 FPGA实现CameraLink视频编解码目前有两种方案: 一是使…

MyBatis 所有的 jdbcType类型

MyBatis处理MySQL字段类型date与datetime 1) DATETIME 显示格式:yyyy-MM-dd HH:mm:ss 时间范围:[ 1000-01-01 00:00:00到9999-12-31 23:59:59]2) DATE 显示格式:yyyy-MM-dd 时间范围:[1000-01-01到9999-12-31]3&#…

Unity游戏优化指南大全(持续更新中!)

Unity游戏优化指南大全 三个官方优化提示: 性能和优化 (Performance and Optimization) - 关于性能分析器以及性能和优化技巧的 Unity 学习教程。Best practices for performance optimization in Unity - 优化应用程序的最佳实践指南。Ultimate guide to profili…

【蓝桥刷题】备战国赛——区间修改、区间查询

蓝桥杯线段树模板题——区间修改、区间查询 🚀 每日一题,冲刺国赛 🚀 题目导航: 区间修改、区间查询 🎇思路:线段树 🔱思路分析: 本题涉及到了对区间操作的问题,因此&a…

软件测试目的是什么?软件测试公司可提供哪些测试服务类型?

随着科技的不断发展,软件行业的发展也越来越迅速。然而,随着软件的增多和复杂性的提高,开发者们需要更多的手段来确保软件质量。软件测试就是通过一系列的测试来发现软件的问题,从而提高软件的质量。 一、软件测试目的是什么? …

【敬伟ps教程】蒙版和通道的基础知识

文章目录 通道通道面板 Alpha 通道通道和选区的关系编辑 Alpha通道原色通道的利用 图层蒙版编辑图层蒙版快速蒙版 通道 通道是图像文件的一种颜色数据信息存储形式,它与图像文件的颜色模式密切相关 多个分色通道(如图:红R、绿G、蓝B)叠加在一起可以组成一幅具有颜…

【UE】制作追踪导弹

效果 步骤 1. 首先在虚幻商城下载所需素材 2. 打开“BP_West_Missile_M26” 勾选模拟物理 添加一个变量,命名为“Target” 该变量用来表示导弹追踪的目标,变量类型为actor的对象引用,勾选可编辑实例和生成时公开 在事件图表中添加如下节点 3…

【JavaSE】Java基础语法(二十七):Set集合和 TreeSet

文章目录 1. Set集合1.1Set集合概述和特点【应用】1.2Set集合的使用【应用】 2.TreeSet集合2.1TreeSet集合概述和特点【应用】2.2TreeSet集合基本使用【应用】2.3自然排序Comparable的使用【应用】2.4比较器排序Comparator的使用【应用】2.4两种比较方式总结 1. Set集合 1.1Se…

CNNs和视觉Transformer:分析与比较

探索视觉Transformer和卷积神经网络(CNNs)在图像分类任务中的有效性。 图像分类是计算机视觉中的关键任务,在工业、医学影像和农业等各个领域得到广泛应用。卷积神经网络(CNNs)是该领域的一项重大突破,被广…

springboot+vue高校班级管理系统 java 同学录校友录网站

本海滨学院班级回忆录管理员功能有个人中心,用户信息管理,班委信息管理,班级信息管理,加入班级管理,新闻信息管理,班级相册管理,活动信息管理,捐赠信息管理,论坛信息管理…

司空见惯 - 使用dBm表示功率的各种现实情况

前面一篇文章介绍过,使用dBm表示功率时,如何转换为mW。 那现实世界的实际情况中,使用dBm来表示电磁波的能量强度,列表如下: Power level Power Notes 526 dBm 3.61049 W 黑洞碰撞后的引力波辐射的功率&#xff0c…

Linux上安装jdk Tomcat mysql redis

1.安装JDk 1.1这里使用xshell中xfxp进行文件的上传,将jdk二进制包上传到Linux服务器上 下载地址:Java Downloads | Oracle 或者这里有下载好的安装包:链接:https://pan.baidu.com/s/1ZSJxBDzDaTwCH2IG-d2Gig 提取码:…

ChatGPT报错:Sorry, you have been blocked解决方法

今天打开ChatGPT,发现再一次报错了! 又一次出问题了。。。。。。。无语! 原因分析 1、内容过滤:某些平台或网站可能使用内容过滤系统,该系统可能将AlI语言模型视为潜在的风险,从而对其进行封锁或限制。这…

【Springboot】集成百度地图实现定位打卡功能

目录 第一章 需求分析 第二章 概要设计 第三章 详细设计 3.1 环境搭建 3.1.1 获取百度地图ak 3.1.2 创建springboot项目 3.2 配置application.properties 3.3 配置pox.xml 3.4 创建定位接口 3.5 创建前端页面 3.6 映射静态文件 第一章 需求分析 如图,当…

Redis数据类型之列表List

Redis数据类型之列表List list中的命令如下: lpush:从左边插入,插入的数据是倒叙 LPUSH key value1 [value2] 将一个或多个值插入到列表头部 lpush k1 a b c d e f ; 输出结果 f e d c b a lpop k1; 输出 f 从左边pop弹出时先弹出的是f&…

【深度学习】基于Python Qt的口罩检测与报警系统

文章目录 yolov7训练系统集成数据库报警记录查看qt页面跳转方式qt 的数据库某表查看页面如何写q742971636 yolov7训练 yolov7:https://github.com/WongKinYiu/yolov7 人脸口罩数据集:链接:https://pan.baidu.com/s/1bnxJPnoRNwUfVzLxKjIvkQ?pwdc0yc …

《OrangeS一个操作系统的实现》中printf无法打印数字问题

【问题现象】 《OrangeS一个操作系统的实现》 第9章 a目录下的代码编译运行后,所有printf打印数字的地方都有问题,如下图: HD size 始终为 0MB。 【问题分析】 通过断点,发现printf第61行: int printf(const char *…

优化|数学软件是如何求解线性方程Ax=b ?

编者按 对于大家来说,我们从学会多项式开始就得和求解矩阵方程打交道。大学之前靠手算,到了大学阶段我们学会了使用科学计算软件,然后只需要输入简单的一行指令 x A \ b x A \backslash b xA\b,就可以轻轻松松求解方程组 A x …

移动端开发

1. 视口 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…

MySQL---SQL优化上(explain分析执行计划、查看SQL的执行效率、定位低效率SQL)

1. 查看SQL的执行效率 MySQL 客户端连接成功后&#xff0c;通过 show [session|global] status 命令可以查看服务器状态信息。通 过查看状态信息可以查看对当前数据库的主要操作类型。 --下面的命令显示了当前 session 中所有统计参数的值 show session status like Com____…