软件测试基本概念

news2024/12/19 14:15:05

目录

  • 本章要点
  • 什么是软件测试?
  • 软件测试的特定?
  • 软件测试和开发的区别?
  • 软件测试和软件开发中的调试有什么区别?
  • 软件测试在不同公司的定位?
  • 一个优秀的测试人员应该具备的素质(你为啥要选择测试开发)
  • 需求是衡量软件测试的依据
  • 从软件测试人员角度看需求
  • 为啥需求对软件测试人员如此重要?
  • 如何才可以深入理解别测试软件的需求?
  • 测试用例的概念?
  • 软件错误bug的概念?
  • 软件的生命周期?
  • 开发模型和测试模型?
  • 软件测试的生命周期(软件测试流程)?
  • 如何描述一个bug?
  • 如何定义bug级别?
  • bug的生命周期?
  • 和开发人员产生争执怎么办?

本章要点

  • 什么是软件测试?
  • 软件测试和研发的区别?
  • 软件测试都有那些岗位?
  • 软件测试在不同类型公司定位?
  • 优秀的测试人员需要具备的素质?
  • 什么是需求?
  • 什么是bug?
  • 什么是测试用例?
  • 开发模型和测试模型?
  • 软件测试的生命周期?
  • 如何描述一个bug?
  • 如何定义bug级别?
  • bug的生命周期?
  • 如何开始第一次测试?
  • 测试的执行和bug管理?
  • 和开发人员产生争执怎么办?

什么是软件测试?

通俗讲:软件测试就是找BUG,发现缺陷!
软件测试就是验证软件特性是否满足用户的需求!

软件测试的特定?

软件测试只是一个样本实验,具有不可穷举性,没有办法进行一个完整的测试

软件测试和开发的区别?

技能:开发要求技能集中,专业度高,测试要求的是技能广泛,专业要求不那么高 … 难易程度,薪资,发展前景
测试要求技能广泛:接口测试,自动化测试,性能测试工具,抓包,APP测试工具,以及有一定的编程基础

软件测试和软件开发中的调试有什么区别?

  • 目的:
    软件调试:开发人员验证软件是否实现了他想让软件实现的功能
    软件测试:测试人员验证软件是否实现了用户需求
  • 角色:
    软件调试:开发人员 软件测试:测试人员+开发人员(白盒测试代码相关)
  • 阶段:
    软件调试:开发阶段
    软件测试:贯穿整个软件开发过程中,处处有软件测试

软件测试在不同公司的定位?

无组织,专职,兼职…
项目性:就是一个项目分配测试人员进这个项目组直到项目结束!
职能性:就是测试部门派遣测试人员进行项目跟进,一个测试人员可能同一时间需要跟进多个项目!

一个优秀的测试人员应该具备的素质(你为啥要选择测试开发)

  • 综合能力
    沟通能力,学习能力(新技能业务)开发能力(测试开发),文字描述能力(文档,描述BUG)
  • 测试用例的编写能力(掌握了测试用例设计的基本方法)
  • 自动化测试能力(掌握了selenium等自动化测试工具的使用)
  • 兴趣责任感,抗压能力!
  • 探索性思维:不会被条条框框束缚,发散性思维,结合实际思考问题
    核心竞争力:开发+测试用例设计+掌握自动化测试技术

需求是衡量软件测试的依据

需求的概念:
满足用户期望或者正式规定文档(合同,标准,规范)所具有的条件和职能
包含用户需求和软件需求
用户需求:甲方提出的需求,如果没有甲方,那么就是用户使用
软件需求:软件需求是用户需求转换而来的,是用户需求的细化,是用户需求的具体实现细节和规范
用户需求比较粗略,直接实现比较困难,因为没有细节,所以需要软件需求将用户需求细节实现和规范,把用户需求变成一个具体可实现的过程文档

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

需求是测试人员开展软件测试工作的依据
在设计测试用例的时候,首先需要搞清楚每个业务需求对应多个软件需求功能点,在分析每个软件功能需求点对应的多个测试需求点,然后针对每个测试需求点设计测试用例

业务需求->软件功能需求点->测试需求点->测试用例
假如要写一个用户登入
用户登入就是一个业务需求,登入又有注册和用户登入2个软件功能需求点,然后登入功能需求点又需要测许多测试需求点,功能,性能,兼容性,安全性等待测试点,然后根据不同的测试点编写测试用例!

为啥需求对软件测试人员如此重要?

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

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

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

测试用例的概念?

测试用例是为了实施测试而先被测试的系统提供的一组集合,这组集合包含:
测试环境,测试步骤,测试用例,预期结果等要素!
测试用例解决了2个问题,测什么和怎么测!
编写测试用例可以解决测试过程中遇到以下的问题:

  • 不知道是否全面的测试了所有功能
  • 测试的覆盖率无法衡量
  • 对新版本重复的测试很难实施
  • 存在大量冗余测试影响测试效果

软件错误bug的概念?

  • 当仅当软件需求文档规格说明存在并且正确,程序与规格说明不匹配才是bug
  • 当需求规格说明书没有提到的功能,判断标志以最终用户为准:当程序没有实现用户合理预期的功能要求时就是bug!

软件的生命周期?

6个阶段:需求分析,计划,设计,开发,测试,运行维护

开发模型和测试模型?

瀑布模型,螺旋模型,增量,迭代,敏捷

  • 瀑布模型:
    按照软件的生命周期进行串行开发
    特点:阶段性强,每个阶段比较独立;看着前面的需求分析和后期的测试
    缺点: 测试在开发后才介入,导致前期的问题后期才发现,会失去错误补救机会!
  • 螺旋模型:前期需求不是很明确,一般针对项目庞大,复杂度高,风险大,采用渐进式的开发模型,迭代开发模式!
    特点:强调每一个迭代测试质量和风险分析
    缺点:风险管控人力物理投入较多,成本比较大
  • 增量模型:
    第一周开发A,C功能模块,第二周开发B,D功能模块
  • 迭代模型:
    第一周想开发ABCD的基础功能,第二周在第一周开发的基础上增加功能
    特点:抗击风险能力强
  • 敏捷模型:
    敏捷宣言:
    个体与交互重于过程和工具
    可用的软件重于完备的文档
    客户协作重于合同谈判
    响应变化重于遵循计划
    在每对比对中,后者并非全无价值,但我们更看重前者。
    特点:轻文档,轻流程,总目标,总产出
    敏捷开发有很多种方式,其中scrum是比较流行的一种!
    scrum:
    • 角色:
      scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成
      product owner:负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
      scrum master: 负责召开各种会议,协调项目,为研发团队服务。
      team研发团队:则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品
    • 迭代开发:
      与瀑布不同,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。
    • scrum的基本流程:
      产品负责人负责整理user story,形成左侧的product backlog。
      发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
      迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
      每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
      演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
      回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果
    • 敏捷中的测试:
      挑战: 轻文档, 快速迭代
      1、测试工作的核心内客是没有变的,就是不断地找Bug,只是要调整好自己的心态,一切以敏捷的原则为主。
      2、测试人员不能依赖文档,测试用例作用减弱,更多的采用思维导图、探索性测试(强调自由度,设计和执行同时执行,根据测试结果不断调整测试计划)、自动化测试
      3、敏捷讲求合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究Bug出现的原因。

V模型:
在这里插入图片描述
特点:
每一个阶段的独立性很强左边开发阶段是右边测试阶段的依据
缺点:
瀑布模型的变种,前期的错误后期才会发现,会失去错误及时纠正的机会

W模型:
在这里插入图片描述
特点:
每一个阶段的独立性很强,测试一开始就介入,可以保证前期问题及时发现和纠正,测试和开发并行!
缺点:
每一个阶段都是串行的过程,一个阶段完了之后就进行下一个阶段
不支持敏捷开发

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

需求分析->测试计划->测试设计/测试开发->测试执行->测试评估

  • 需求分析:验证需求的正确性,合理性,细化需求找出测试项,写测试用例
  • 测试计划:测试人数,测试环境,测试时间,测试设备
    测试设计/测试开发:根据需求写测试用例,开发自动化脚本
    测试执行:开发已经完成,执行测试用例,验证功能,bug,提交bug,验证bug
    测试评估:写了多少测试用例执行了多少,剩余测试用例,bug数量,解决的bug数,遗留的bug及解决方案,测试的范围和测试的功能

如何描述一个bug?

依赖于Bug管理工具,通过文字的形式进行描述,有禅道,jira,tapd等bug管理工具

  • 测试版本号(代码版本信息):代码第几个迭代版本,方便开发人员复现
  • 测试环境:硬件信息:电脑品牌及型号web端:操作系统及版本,浏览器及版本
    app端:手机品牌及型号,系统 网络环境,WiFi还是数据4g还是5g
  • 测试数据:测试用例,更加快速的复现问题
  • 测试步骤:最快导致bug的测试步骤
  • 测试实际结果
  • 测试预期结果
  • 附件,错误日志,错误截图等

如何定义bug级别?

每个公司对bug级别定义不一样(以下是典型普遍情况)
1.崩溃
系统无法正常运行出现崩溃,操作死锁,死循环,黑屏,阻碍测试人员工作
如果线上版本出现了这样的情况,那就回退一个版本即可进行补救
2.严重
系统运行,但不稳定,继续运行会造成严重损失,重要功能没有实现,或者功能和需求不符合,数据库中的用户数据存储错误,威胁到用户的安全(信息,财产)
3.一般
次要的功能没有实现或者有错误,系统可以稳定运行
4,建议
会影响用户体验,排版(仓促),颜色不符合大众审美,信息没有换行或者提前换行!

bug的生命周期?

bug的状态转换图
在这里插入图片描述
New(新建):新发现的bug,未经评审决定是否指派给开发人员修改
Open(确认):确认是bug,并且认为需要修改,指派给相应的开发人员
Fixed(已解决):开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证
Rejected(拒绝修改):认为不是bug,拒绝修改
Delay(延后修改):如果认为暂时不需要修改或者暂时不能修改,则延后修改
Closed(关闭):修改状态的bug经测试人员回归测试验证通过,则关闭bug
Reopen(重开bug):如果验证bug依然存在,则需要重新打开bug,开发人员重新修改
无效的bug:open->closed open->rejected->closed

和开发人员产生争执怎么办?

  1. 检查看bug描述是否清楚
  2. 从用户的角度说服开发人员修改
  3. bug定级有理有据(根据公司规范)
  4. 不断提高自己的业务水平和技术水平(权威)
    不但能发现bug,并且能够定位,还能提出解决方案
  5. 不用争吵,找产品经理理论
    三方会议,测试人员,开发人员,产品经理讨论这个bug的最终解决方案

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

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

相关文章

SpringBoot 面试题总结 (JavaGuide)

SpringBoot 面试题总结 (JavaGuide) 用 JavaGuide 复习 SpringBoot 时,找到一些面试题,没有答案,自己花了一天时间在网上找资料总结了一些,有些答案的来源比较杂忘了没有标注,望见谅。 1. 简单…

Visual Studio 2022开发Arduino详述

目录: 一、概述 二、软件的下载与安装 1、前言 2、Visual Studio 2022的下载与安装 3、Visual Micro扩展插件的导入 4、Visual Micro的使用 1)安装修改插件 2)搜索 : Visual.Micro.Processing.Sketch.dll 3)打开Visual.…

【Linux学习】基础IO

目录前言一、C语言文件IO1. C语言文件接口以及打开方式2. 对当前路径的理解3. 默认打开的三个流二、 系统文件IO1. 系统接口openwritereadclose系统接口和库函数2. 文件描述符及其分配规则文件描述符文件描述符分配原则3. 重定向及dup2系统调用重定向标准输出和标准错误的区别d…

Linux XWindow的安装和配置

1.开始安装XWindow必须需要的组件 输入指令:yum groupinstall "X Window System" yum groupinstall "X Window System" 选择y继续安装。 当看到complete表示已经安装成功了。 输入startx测试一下 看到如上界面就证明你的XWindow安装成功了。 2…

Python数据分析(3):pandas

文章目录二. pandas入门2.1 数据结构2.1.1 Series对象2.1.2 DataFrame对象2.2 读取数据2.2.1 读取Excel:read_excel()1. 读取特定工作簿:sheet_name2. 指定列标签:header3. 指定行标签:index_col4. 读取指定列:usecols…

TypeScript接口——interface

目录 一、接口概述: 二、接口类型介绍: 1、属性接口: 2、 函数接口: 3、可索引接口: (1)可索引接口约束数组示例: (2) 可索引接口约束对象示例&#xf…

【Python】numpy矩阵运算大全

文章目录前言0 遇事不决,先查官网,查着查着就查熟了1 矩阵运算及其必要性2 矩阵的创建2.1 普通矩阵2.2 特殊矩阵3 矩阵的索引3.1 str, list, tupple的索引3.2 numpy索引4 矩阵的运算4.1 通用函数与广播机制4.3 矩阵乘法4.4 矩阵求逆4.5 矩阵转置4.6 向量…

SpringBoot整合mybatis-plus 实现增删改查和分页查询

SpringBoot整合mybatis-plus 实现增删改查和分页查询整体的运行图片:一、环境搭建:1、依赖2、application.yml文件3、数据库二、实体类:三、数据层开发——基础CRUD四、业务层开发——分页功能制作4.1分页配置类 configuration4.2service接口…

【Node.js】模块化学习

Node.js教学 专栏 从头开始学习 目录 模块化的基本概念 什么是模块化 现实中的模块化 编程领域中的模块化 模块化规范 Node.js中的模块化 Node.js中模块的分类 加载模块 Node.js中的模块作用域 什么是模块作用域 模块作用域好处 向外共享模块作用域中的成员 module对象 modu…

第二站:分支与循环(终幕)一些经典的题目

目录 一、计算n的阶乘 1.一般解法 2.优化不能表示出较大数的阶乘 二、 计算 1!2!3!……10! 1.循环嵌套解法 2.一次循环解法(优化计算时间) 三、在一个有序数组中查找具体的某个数字n 1.遍历查找 2.二分查找算法(优化了查找时间) 四、编写代码&am…

IDEA Out of memory 问题

文章目录1. 前提2. 问题记录与解决方案1. 前提 阅读本文之前,读者要首先把 Out of memory 这个问题的解决方案多搜几个帖子,先按照其他帖子的解决方案(修改配置文件Xmx属性等)尝试一遍,不能解决再参考本文。 本文所描…

前端小游戏——植物大战僵尸

给大家分享一个植物大战僵尸网页游戏源代码,感兴趣的小伙伴可收藏学习 👉完整源码 文章目录⌛️效果展示⌛️游戏介绍⌛️游戏内容(1)冒险模式(2)小游戏⌛️图片资源⌛️代码展示(1)…

【黑猩猩算法】基于加权反对技术和贪婪搜索进化黑猩猩优化算法求解多模态工程问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

终于拿到了阿里P8架构师分享的JCF和JUC源码分析与实现笔记java岗

时代的一粒尘,落在每个人身上,就是一座山”。 时代更迭变换,我们好像都知道今天与昨天不同,又好像肉眼看不出哪里不同。 但其实它就正在以各种各样的方式体现在每一个普通人身上。 疫情爆发三个月的时间,截止2020年…

~外中断~

目录 一、接口芯片和端口 二、外中断信息 三、PC机键盘的处理过程 一、接口芯片和端口 外设的输出不直接送入内存和CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入端口,再由相关的芯片送到…

C语言程序设计--火车订票系统

任务要求: 创建一个火车票管理系统,功能包括: (1)录入班次信息(信息用文件保存),可不定时地增加班次数据 (2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班 次的发车时间,则…

js中map()的使用详解

引入: 有网友有如下困惑: map是数组的方法,有一个参数,参数是一个函数,函数中有3个参数 参数1:item必须。当前元素的值 参数2:index,可选。当前元素在数组中的索引值 参数3&#xff…

CentOS 7迁移Anolis OS 7 ——筑梦之路

迁移注意事项 Anolis OS 7生态上和依赖管理上保持跟CentOS7.x兼容,一键式迁移脚本centos2anolis.py,实现CentOS7.x到Anolis OS 7的平滑迁移。 使用迁移脚本前需要注意如下事项: 迁移涉及到软件包的重新安装,是不可逆过程&#…

BBR/CUBIC 共存时的 buffer 挤兑

BBR 与 CUBIC 共存时的收敛图,理论情况: 理论上 BBR 不会挤占 buffer,inflight 保持为恒定的 BDP。 但 BBR 的 inflight 做不到恒定,多流共存时,依然会 “主动占用 buffer” 而相互挤兑带宽,而该行为是必须…

java - 序列化

钱应该怎么花 前几天看到一个新闻,一女子打拼了5年攒了30万买房钱,最后因为意外被一场突如其来的大火烧了,经过多家银行,长达4小时的鉴定,挽回了15万损失。 还看到一个新闻,老人攒5000元钱遭虫蛀烂&#…