【测试】测试概念篇和基础篇

目 录

  • 一.了解软件测试的基础概念
    • 1.需求
    • 2.测试用例
    • 3.BUG
  • 二.开发模型和测试模型
    • 1.瀑布模型
    • 2.螺旋模型
    • 3.增量模型和迭代模型
    • 4.敏捷模型
  • 三.软件测试模型
    • V模型
    • W模型
  • 四.BUG篇
    • 1. 如何合理的创建 bug
    • 2. bug 级别
    • 3. bug 的生命周期
    • 4. 跟开发产生争执怎么办

一.了解软件测试的基础概念

1.需求

什么是需求?

在企业中,需求主要分为两类,用户需求软件需求

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

软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。

软件需求是测试人员进行测试工作的基本依据。(用户需求不可以直接作为测试/开发工作的依据! ! ! 用户的需求不一定是正确的、合理的,需要进行用户需求的提取和分析~)

如果说用户需求是合理的,而且有开发的必要产品经理就会将用户需求转变成软件需求文档


2.测试用例

测试人员在执行测试之前需要编写测试用例,测试用例的好坏与产品测试质量具有很大的关联关系

假如我们现在要测试这样的一个输入框,我们该怎么测试?能够设计出哪些测试用例
 
输入一个空内容,检查结果
输入一个关键词,检查结果是否跟关键词相关
输入C语言/c语言,检查结果是否相同
输入字符串检查结果是否符合预期
输入带有空格的关键词,检查结果
是否存在SQL注入的情况

想一个测试一个,尤其是软件功能比较复杂的时候,仅仅通过头脑风暴来记住测试肯定是不科学的同时,测试用例的存在能够提高测试覆盖率,如果不设计测试用例来进行测试, 可能会造成漏测的风险,测试人员要尽可能的去避免漏测,保证线上不会出现明显的问题。

测试用例的出现主要解决了两个问题:测什么,怎么测。

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


3.BUG

当且仅当规格说明(软件需求文档)是存在的并且正确,程序与规格说明之间的不匹配才是错误。

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


二.开发模型和测试模型

也可以理解为 开发流程/项目推进 流程(软件的生命周期)。

在这里插入图片描述


软件测试贯穿于软件的整个生命周期

软件测试人员需要执行的测试 任务/动作 也是分阶段的

软件测试的生命周期:需求分析——测试计划——测试设计与开发——执行测试——测试评估。(测试设计开发:测试人员需要借助需求文档+技术文档来编写测试用例)

1.瀑布模型

在这里插入图片描述

线性结构∶意味着前一个阶段结束后一个阶段才能开,导致风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。

测试被后置,需要保留足够的时间给测试,否则导致测试不充分,缺陷直接暴露给用户

一个最大缺陷在于,可以运行的产品很迟才能被看到瀑布模型是不能够很好的迎接变化

适用场景:需求固定的小型项目


2.螺旋模型

在这里插入图片描述

在瀑布模型的基础上增加了风险分析生成新的原型(原型图)

螺旋模型增加了风险分析阶段一定是耗时耗力,会专门招聘风险分析人才

成本高,团队需要耗费一定的资金和时间去招聘风险分析人才

适用场景:需求不确定,变化的可能性很大的大型项目


3.增量模型和迭代模型

在这里插入图片描述
增量模型:将项目进行模块化,使其每个模块都能够进行独立的开发和上线。

优势︰产品能够在较短时间内尽快的交付给用户去使用

迭代模型:假如说有一个产品包含五个功能 A B C D E,迭代模型会先完成这五个功能的基础版本,会再经历一起一起的迭代优化,直到这五个功能非常的优秀。

4.敏捷模型

  • 个体与交互重于过程和工具
  • 可用的软件重于完备的文档
  • 客户协作重于合同谈判
  • 响应变化重于遵循计划

敏捷宣言的解读:强调团队内部人员尽可能的进行高效的沟通敏捷模型最终的标准就是︰可交付的软件

敏捷宣言的特点:轻流程、轻文档、重目标、重产出

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

scrum:

了解三个重要的角色五个重要的会议

三个角色:产品经理+项目经理+研发团队

产品经理:定义商业价值,负责收集用户需求,把用户需求整合为软件需求,推动研发团队进行研发,对产品负责。

项目经理:在一定时间内检验团队是否完成工作,召开会议,协调项目,为研发团队服务。

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

收集用户需求,在需求池中评估需求,展开以下会议:

  • 会议1:需求发布会议

产物:确定本次迭代要是实现的需求

  • 会议2:迭代计划会议

需求拆分成一个个任务,明确每个任务对应的责任人,初步评估工时

  • 会议3:每日会议

会议中每个研发团队成员需要回答三个问题:

  1. 昨天做了什么
  2. 今天要做什么
  3. 遇到了什么问题

每日会议结束之后的产物:可交付的软件

  • 会议4:演示会议

每日会议结束之后的产物︰用户的需求

  • 会议5:回顾会议

scrum 模型中每个迭代周期为1 ~ 4 周,通常情况下为一周。


三.软件测试模型

V模型

在这里插入图片描述

左边和右边是一一对应的,其中单元和集成测试一般都是开发人员根据详细和概要设计文档来测试的,而系统测试是根据需求分析和系统文档来由测试人员测试的。

特点:明确了测试有不同类型,而且每个类型和前期的开发工作之间的对应关系。

缺陷:测试后置


W模型

在这里插入图片描述

优点:测试从一开始就介入(软件测试贯穿于软件的整个生命周期),有利于尽早发现问题

缺点:开发和测试虽然是同步的,但是仍然存在着前后的线性关系,不支持敏捷模型。


四.BUG篇

1. 如何合理的创建 bug

创建 bug 的要素:问题的版本,发现问题的环境,发现问题的步骤,预期结果,实际结果等等。

问题的版本:QQ浏览器 xxx 版本
发现问题的环境:windows10家庭版
发现问题的步骤:…
预期结果:用户可以快速通过输入框找到想要的标签
实际结果:没有可以用的输入框,用户只能挨个儿查找,对用户不友好


2. bug 级别

  • 崩溃

  • 严重

  • 一般

  • 次要

为什么要介绍 bug 的优先级?
 
bug 的等级跟优先级有一定关系
出现线上问题进行问题定级,定级会涉及到对应的惩罚范围


3. bug 的生命周期

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

在这里插入图片描述
在这里插入图片描述

4. 跟开发产生争执怎么办

  1. 先检查自身,是否 bug 描述不清楚

  2. 站在用户的角度去考虑问题,可以反问:如果你是用户,你能够接受这样的实现吗?

  3. BUG 定级要有理有据, bug 等级对于开发人员来说是非常敏感

bug等级越严重,说明程序员在实现的实现出现的问题比较严重,就可能上升到工作态度问题?开发能力问题?

  1. 不光能提出bug,最好也要能提出解决方案

  2. 组织bug评审

邀请代表人参加:产品代表、开发代表、测试代表

bug评审会议里要解决以下问题:
1)如何修改bug
2)如何避兔类似的问题发生

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

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

相关文章

springboot190基于springboot框架的工作流程管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

循序渐进-讲解Markdown进阶(Mermaid绘图)-附使用案例

Markdown 进阶操作 查看更多学习笔记:GitHub:LoveEmiliaForever Mermaid官网 由于CSDN对某些Mermaid或Markdown语法不支持,因此我的某些效果展示使用图片进行 下面的笔记内容全部是我根据Mermaid官方文档学习的,因为是初学者所以…

分布式锁redisson

文章目录 1. 分布式锁1.1 基本原理和实现方式对比synchronized锁在集群模式下的问题多jvm使用同一个锁监视器分布式锁概念分布式锁须满足的条件分布式锁的实现 1.2 基于Redis的分布式锁获取锁&释放锁操作示例 基于Redis实现分布式锁初级版本ILock接口SimpleRedisLock使用示…

解决LeetCode编译器报错的技巧:正确处理位操作中的数据类型

一天我在leetcode上刷题时&#xff0c;遇到了这样的题目&#xff1a; 随即我写了如下的代码&#xff1a; int convertInteger(int A, int B) {int count 0;int C A ^ B;int flag 1;while(flag){if (C & flag){count;}flag<<1;}return count;} 但LeetCode显示如下…

Linux常见指令(一)

一、基本指令 1.1ls指令 语法 &#xff1a; ls [ 选项 ][ 目录或文件 ] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 .…

第9章 网络编程

9.1 网络通信协议 通过计算机网络可以实现多台计算机连接&#xff0c;但是不同计算机的操作系统和硬件体系结构不同&#xff0c;为了提供通信支持&#xff0c;位于同一个网络中的计算机在进行连接和通信时必须要遵守一定的规则&#xff0c;这就好比在道路中行驶的汽车一定要遵…

实验二 物理内存管理-实验部分

目录 一、知识点 1、计算机体系结构/内存层次 1.1、计算机体系结构 1.2、地址空间&地址生成 1.3、伙伴系统&#xff08;Buddy System&#xff09; 2、非连续内存分配 2.1、段式存储 2.2、页式存储 2.3、快表和多级页表 2.4、段页式存储 3、X86的特权级与MMU 3.…

如何让Obsidian实现电脑端和安卓端同步

Obsidian是一款知名的笔记软件&#xff0c;支持Markdown语法&#xff0c;它允许用户在多个设备之间同步文件。要在安卓设备上实现同步&#xff0c;可以使用remote save插件&#xff0c;以下是具体操作步骤&#xff1a; 首先是安装电脑端的obsidian&#xff0c;然后依次下载obs…

【Java】文件操作与IO

文件操作与IO Java中操作文件针对文件系统的操作File类概述字段构造方法方法及示例 文件内容的读写 —— 数据流Java提供的 “流” API文件流读写文件内容InputStream 示例读文件示例1&#xff1a;将文件完全读完的两种方式示例二&#xff1a;读取汉字 写文件谈谈 OutputStream…

进程状态

广义概念&#xff1a; 从广义上来讲&#xff0c;进程分为新建、运行、阻塞、挂起、退出五个状态&#xff0c;其中新建和退出两个状态可以直接理解字面意思。 运行状态&#xff1a; 这里涉及到运行队列的概念&#xff0c;CPU在读取数据的时候&#xff0c;需要把内存中的进程放入…

软件工程师,OpenAI Sora驾到,快来围观

概述 近期&#xff0c;OpenAI在其官方网站上公布了Sora文生视频模型的详细信息&#xff0c;展示了其令人印象深刻的能力&#xff0c;包括根据文本输入快速生成长达一分钟的高清视频。Sora的强大之处在于其能够根据文本描述&#xff0c;生成长达60秒的视频&#xff0c;其中包含&…

太炸了!Sora深夜发布!网友:我要失业了

2022年末&#xff0c;OpenAI聊天机器人ChatGPT的面世无疑成为了引领人工智能浪潮的标志性事件&#xff0c;宣告了新一轮科技革命的到来。无论是聊天娱乐、教育学习&#xff0c;还是工作生产、医疗健康等领域&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。 …

深入解析ESP32C3(3)- bootloader启动流程

ESP32C3启动流程可以分为如下3 个步骤&#xff1a; 一级引导程序(PBL)&#xff1a;被固化在了ESP32-C3 内部的ROM 中&#xff0c;它会从flash 的0x0 偏移地址处加载二级引导程序至RAM (IRAM & DRAM) 中。二级引导程序(SBL)&#xff1a;从flash 中加载分区表和主程序镜像至…

什么是数据同步利器DataX,如何使用?

转载至我的博客 https://www.infrastack.cn &#xff0c;公众号&#xff1a;架构成长指南 今天给大家分享一个阿里开源的数据同步工具DataX&#xff0c;在Github拥有14.8k的star&#xff0c;非常受欢迎&#xff0c;官网地址&#xff1a;https://github.com/alibaba/DataX 什么…

【Java程序设计】【C00265】基于Springboot的地方废物回收机制管理系统(有论文)

基于Springboot的地方废物回收机制管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的地方废物回收机构管理系统 本系统分为管理员功能模块以及员工功能模块。 管理员功能模块&#xff1a;管理员登录系统后…

spring boot3登录开发-1(整合jwt)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码&#xff0c;通过类名.静态方法使用 2.配置项写到…

算法刷题:无重复字符的最长字串

无重复字符的最长字串 .题目链接题目详情算法原理题目解析滑动窗口定义指针进窗口判断出窗口更新结果 我的答案 . 题目链接 无重复字符的最长字串 题目详情 算法原理 题目解析 首先,为了使字符串遍历的更加方便,我们选择将字符串转换为数组 题目要求子串中不能有重复的字符…

LaTeX中的documentclass命令:指定文档的类型和整体布局

诸神缄默不语-个人CSDN博文目录 documentclass 是 LaTeX 中一个基础且重要的命令&#xff0c;用于定义文档的整体布局和样式。这个命令告诉 LaTeX 编译器文档是属于哪一类的&#xff0c;比如是文章、报告、书籍等&#xff0c;每一类都有其预定义的格式和结构。 文章目录 基本语…

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

Swagger是什么&#xff1f; Swagger是一个规范且完整API文档管理框架&#xff0c;可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口&#xff0c;可以让人和计算机拥有无须访问源码、文档或网络流量监测就…

JDBC 核心 API

引入 mysql-jdbc 驱动 驱动 jar 版本的选择&#xff1a;推荐使用 8.0.25&#xff0c;省略时区设置java 工程导入依赖 项目创建 lib 文件夹导入驱动依赖 jar 包jar 包右键 - 添加为库 JDBC 基本使用步骤 注册驱动获取连接创建发送 sql 语句对象发送 sql 语句&#xff0c;并获…