认识测试---什么是测试?

news2024/11/19 10:42:33

文章目录

  • 测试
    • 软件测试的性质
    • 测试人员的基本素养
    • 什么是需求
      • 什么是BUG
  • 开发模型和测试模型
    • 软件的生命周期
    • 开发模型
      • 瀑布模型
      • 螺旋模型
      • 增加,迭代
      • 敏捷开发
        • scrume
    • 测试模型
      • V模型
      • W模型(双V模型)

测试

一个好的开发者,不仅要懂技术也要懂业务,更要明白你的程序的稳定性,而如何确定稳定性就是为了将业务很好的实现。此时就需要一个模块单独去测试代码。这个就是程序的测试

市面上的软件测试的岗位有很多。

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

软件测试的性质

  1. 无组织性

最简单的软件测试组织形式就是没有任何组织的测试,几个人就把所有软件测试工作做完,这样做没有任何分工、没有任何层次结构。

  1. 专职VS.兼职

按照测试人员的职责明确程度,可以划分成兼职测试和专职测试两大类。目前在很多软件企业,尤其是小规模的软件企业,往往没有专职的测试人员。在做测试工作的同时还要兼顾软件幵发、配置管理、技术文档编写、用户教育、系统部署实施等工作。

  1. 项目性VS.职能性

项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密协作,一般是从头到尾跟着项目走。而职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。
而这各有缺点,
前者(项目性):因为亲密关系的情况,会有网开一面的情况。当然,作为项目的成员他能深入问题本质测试。
后者(职能型):不存在亲密关系,也就不存在网开一面的情况,但是对于项目不够深入。

  1. 综合性

尽管独立的测试部门会有一些不可避免的问题,例如参与项目的深入程度,容易导致“扔过墙”的测试。但是很多软件企业还是倾向于建立一个相对独立的软件测试组织。一个理想的软件测试组织可以是综合和兼容了几种结构方式的组织。

测试人员的基本素养

  1. 开发能力(这个就是做项目,做算法)
  2. 测试用例设计(理论+实践)
  3. 掌握自动化测试技术(设置)
  4. 探索性思维(经验)

什么是需求

用户需求:

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

软件需求:

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

业务需求—>软件功能需求点—>测试需求点—>测试用例

在这里插入图片描述

什么是BUG

专业来说:当且仅当规格说明(软件需求)存在且正确,程序与规格说明之间的不匹配才是错误。
俗语:运行结果与预期结果不符。

开发模型和测试模型

软件的生命周期

主要经历: 需求分析,计划,设计,编码,测试,维护。

  1. 需求分析:分析现实的问题,并且合理,是否完整
  2. 计划:谁开发,谁测试,开发多久,测试多久
  3. 编码:写代码
  4. 测试:测试报告(项目名称,开发(5w),测试,产品经理,bug,测试周期,开发周期,风险)
  5. 运行维护:如果有线上问题,此时测试人员需要协助开发定位问题+解决问题

开发模型

瀑布模型

在这里插入图片描述

  1. 需求分析:需求文档(是否合理)
  2. 计划:什么时候开始等等
  3. 设计:技术文档(涉及哪些接口,库表,MQ,定时任务…),设计UI视觉稿
  4. 编码:代码
  5. 测试:执行测试用例,提交BUG,验收

特点:线性的

优点:每个阶段做什么,产出什么非常清晰。

  • 强调开发的阶段性
  • 强调早期计划及需求调查
  • 强调产品测试

缺点:风险往往,到后期测试阶段才能显露,因而失去了及时纠正的机会

  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化
  • 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程

适用的项目:小型的项目

螺旋模型

在这里插入图片描述
1.需求计划–2.风险分析–3.软件需求–4.确认需求–5.开发计划–6.风险分析–7.软件产品设计–8.设计确认与验证–9.组装与测试–10.风险风险–11.详细设计(编码-》测试(单元测试,组装与测试,验收测试),实现)

优点:每个阶段都会进行风险缝隙,避免一些线上问题发生

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

缺点:开发周期长,风险分析可能会出错,需要人力财力的投入(比如聘请风险分析师)

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

适用项目:适用比较大的项目。

增加,迭代

增量:一个功能开发完成后再去开发一部分(促使开发小组以一种循环的、可预测的方式驱动产品
的开发)

  • 增量是逐块建造的概念
  • 增量开发能显著降低项目风险

迭代:一个功能开发一个部分,然后再去开发另一个功能的一部分。

  • 勒出基本雏形,再细化、着色。

敏捷开发

敏捷宣言:

  1. 个体与交互重于过程和工具(沟通)
  2. 可用的软件重于完备的文档(完整的产品最好)
  3. 客户协作重于合同谈判(需求变化要满足客户)
  4. 响应变化重于测试计划(需求在变)
  5. 在每对比对中,后者并非全无价值,但我们跟看中前者
scrume

scrum由product owner(产品经理)(PO)、scrum master(项目经理)(SM)和team(研发团队)组成。
team(后端开发,前端开发,UI设计师,测试)
三大角色:

  • product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责(收集需求)
  • scrum master 负责召开各种会议,协调项目,为研发团队服务(需求进行优先级的划分,什么时候开始什么时候结束,由谁去做)
  • 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品(写代码)

项目流程:

在这里插入图片描述

产品经理收集用户需求–》项目经理(优先级安排)—(每日例会-----》演示会议—》总结)----》研发团队

  1. 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
  2. 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
  3. 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
  4. 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
  5. 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

测试模型

V模型

在这里插入图片描述
(以下是开发人员)
用户需求:产品经理收集用户需求形成软件需求
需求分析:验证需求是否正确
系统设计:确定编程语言,确定框架
概要设计:项目结构如何设计
详细设计:每个接口,涉及哪些库表,设计哪些任务
(以下是测试人员)
编码:写代码
单元测试:java中测试每个一个方法,类C语言中函数
集成测试:将许多的方法集成到一起测试
系统测试:模块和模块之间没有影响
验收测试:产品和运营

特点:左边开发,右边测试(类似于瀑布模型)
优点:测试被划分成许多类型
缺点:测试人员介入太晚,发现问题时机太晚

W模型(双V模型)

在这里插入图片描述
特点:开发一个V,测试一个V
优点:测试人员尽早,介入需求
缺点:测试人员和开发人员在一定程度上是串行的。测试中遇到问题,要层层变化(不能变化,不适用敏捷开发)

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

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

相关文章

【cpu_entry_area mapping】SCTF2023-sycrop

前言 也算学习到了,这样对 DB_stack 的利用与 pt_regs 很相似。都是利用在用户态切换在内核态时,会保存用户态的上下文信息在内核栈中,所以我们就可以控制部分内核栈中的数据,以此为我们栈迁移做好准备。 程序分析 启动脚本啥的…

14-k8s-基本存储之EmptyDir、HostPath、NFS

文章目录 一、相关概念二、EmptyDir存储三、HostPath存储四、NFS存储 一、相关概念 概述 Volumn定义在Pod上,然后被该Pod里面的多个容器挂载到具体的文件目录下。实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命周期不和Pod中的单个容器的…

出海 SaaS 企业增长修炼手册:聊聊 PLG 的关键指标、技术栈和挑战

产品驱动增长 Product-Led Growth (PLG) 近几年可谓火遍海外 SaaS 圈,但想要真正落地 PLG 还是存在不少挑战的。了解 PLG 背后的增长指标,不仅可以帮助企业跟上发展节奏,更能从纷繁复杂的业务细节中获取有价值洞察。那么,如何高效…

【3】c++11新特性(稳定性和兼容性)—>类成员的快速初始化

在进行类成员变量初始化的时候,C11标准对于C98做了补充,允许在定义类的时候在类的内部直接对非静态变量进行初始化,在初始化的时候可以使用等号,也可以使用花括号{},等号可以省略不写;静态成员变量需要在类…

二叉树的三种遍历方式的本质

二叉树的定义就不在这里多说了,下面这个图就是一个简单的二叉树: 二叉树的三种遍历方式: 前序遍历:头左右,也就是先头后左再右:1245367 public static void prePrint(BinaryTreeNode root) {if (root ! n…

pycharm社区版创建Django项目的一种方式

pycharm社区版创建Django项目 pycharm创建New project安装django,如果安装过可略过安装完成后查看安装情况生成Django项目需要的文件这里注意生成语句后面的 . 不可以省略 生成文件后,框架搭建完成,配置启动我这里在配置完后,报了…

徐建鸿:深耕中医康养的“托钵行者”

为什么是“庄人堂”?杭州“庄人堂”医药科技公司董事长徐建鸿很乐意和别人分享这个名称的由来,一方面是庄子首先提出“养生”这个概念,接近上工治未病的上医,取名“庄人堂”代表庄子门生,向古哲先贤致敬!另…

vscode使用code runner乱码

"code-runner.executorMap": {"python": "set PYTHONIOENCODINGutf8 && python $fullFileName"}

unordered_set unordered_map 的封装

目录 1. 哈希的概念 1.1. 哈希冲突 1.2. 哈希函数: 1. 直接定址法 2. 除留余数法 1.3. 闭散列实现哈希 1.4. 开散列实现哈希 2. 哈希的应用 2.1 位图的概念 2.1.1. 问题: 2.2.1. set ​编辑 2.2.2. reset 2.2.3. test() 2.2. 位图的实现…

软件工程与计算总结(十五)详细设计中面向对象方法下的信息隐藏

软件工程与计算总结(十三)详细设计中的模块化与信息隐藏 之前的博客中,模块需要隐藏的决策主要由“职责的实现”and“实现的变更”两类,在面向对象方法中,需要做到的就是: 封装类的职责,隐藏职…

MyBatisPlus(十九)自动填充

说明 自动填充指的是,当数据被 插入 或者 更新 的时候,会为指定字段进行一些默认的数据填充。 比如,插入时,会自动填充数据的创建时间和更新时间;更新时,会自动填充数据的更新时间。 实现方式 配置处理器…

python--短路运算,把0、空字符串和None看成 False,其他数值和非空字符串都看成 True

代码 print(3 and 4 and 5) # 5 print(5 and 6 or 7) # 6 4 > 3 and print(‘hello world’) # 输出hello world 注释: 在逻辑运算中,不一定逻辑运算符的两边都是纯表达式。也可以是数值类型的数据。 Python把0、空字符串和None看成 False&#xff…

字节码进阶之Lombok底层原理

字节码进阶之Lombok底层原理 文章目录 前言lombok 原理Lombok工作原理 举个简单的例子 前言 例如,我们经常在Java代码中为类的属性生成getter和setter方法,这是一种重复且繁琐的工作。使用Lombok可以极大地简化这个过程。 假设我们有如下的Java类&…

微软AutoGen框架:让聊天解决问题成为一种“酷”体验!

今天要给大家介绍一款在人工智能领域引起巨大轰动的产品——微软AutoGen框架。这款框架的出现,让多个LLM智能体通过聊天来解决任务成为可能,令人激动不已! 首先,我们先来了解一下LLM智能体。LLM代表"Language Learning Mode…

【MySQL】索引的增删查

上篇博客讲解了索引的底层结构 本篇介绍索引的使用 文章目录 一. 主键索引二. 唯一键索引三. 普通索引四. 全文索引五. 查询索引六. 删除索引结束语 一. 主键索引 MySQL默认会按照主键索引进行排序 关键字:primary key 即使建表时没有指明主键,MySQL也会…

25.0 MySQL 数据库概述

1. 数据库介绍 1.1 简介 数据库是用于存储, 管理和组织数据的一种技术.使用数据库有以下几个重要的原因: * 1. 数据的持久化存储: 数据库可以将数据持久地保存在磁盘上, 确保数据在计算机系统关闭或发生故障时不会丢失.这样可以保证数据的安全性和可靠性.* 2. 数据共享和协作…

excel+requests管理测试用例接口自动化框架

背景: 某项目有多个接口,之前使用的unittest框架来管理测试用例,将每个接口的用例封装成一个py文件,接口有数据或者字段变动后,需要去每个py文件中找出变动的接口测试用例,维护起来不方便,为了…

记IIS升级迁移之旅

场景 有一台Windows Server 2008机器,因为操作系统更新的原因,需要升级到 2022, 这台机器上原先部署了IIS 应用, 所以需要一并迁移。 旧机器: Windows Server 2008 , IIS7 ,.NET 版本v4.0新机…

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容

qt笔记之qml下拉标签组合框增加发送按钮发送标签内容 code review! 文章目录 qt笔记之qml下拉标签组合框增加发送按钮发送标签内容1.运行2.文件结构3.main.qml4.main.cc5.MyClass.h6.MyClass.cc7.CMakeLists.txt8.ComboBox.pro9.qml.qrc 1.运行 2.文件结构 3.main.qml 代码 …

Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1)

Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1) 假设实现一个简单的功能,对传入要加载的path路径增加一定的筛选、容错或“重定向”,需要自定义一个模型,基于这个模型,让Glide自动匹配模型…