测试之概念篇【需求、测试用例、Bug描述、产品的生命周期、开发模型、测试模型】

news2024/11/15 12:13:24

文章目录

  • 1. 什么是需求
  • 2. 测试用例是什么
  • 3. Bug 是描述
  • 4. 产品的生命周期
  • 5. 软件测试贯穿于软件的整个生命,如何贯穿?
  • 6. 开发模型(瀑布模型、螺旋模型、增量模型和迭代模型、敏捷模型)
  • 7. 测试模型(V模型、W模型)

1. 什么是需求

需求主要分为两种: 用户需求 和 软件需求

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

软件需求:也就是功能需求,详细描述了开发人员必须实现的软件功能

开发人员和测试人员的直接工作依据就是软件需求

用户的需求能否作为测试和开发的直接工作依据?

肯定是不能的,因为大多数的公司在进行软件开发时,是把用户需求转化为软件需求,这个过程依据,

比如技术是否可行,市场是否可行,成本投入和受益占比等多方面分析的

2. 测试用例是什么

假如要测试一个输入框,应该怎么设计测试用例

空字符串?特殊字符?超长字符串还是中英文符号

测试用例的存在就是要解决两个问题,测什么,怎么测

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hV7DfnLH-1672909452157)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672715713281.png)]

3. Bug 是描述

  1. 当前仅当规格说明(需求文档 / 产品规格说明书)是存在的并且正确,程序与规格说明之间的不匹配才是错误**
  2. 当需求规格说明没有提到的功能,判断标准最终以用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误

4. 产品的生命周期

开发流程/软件的生命周期

产品的生命周期:需求分析—— 计划 —— 设计 —— 编码 —— 测试 —— 运行维护

  1. 需求分析:市场分析、技术上是否可行、成本和收益占比

  2. 计划:什么时候开始、什么时候结束、耗时多久

  3. 设计:将大的需求转变为一个个可具体执行的任务。进行开发设计(开发哪些接口、使用什么开发框架、使用什么技术)

  4. 编码:开发人员参考需求文档和技术文档等等来进行代码开发

  5. 测试:测试人员参考测试用例来设计

  6. 运行维护:

    完善性维护:对功能进行完善

    修复性维护:对项目中没有发现的问题要及时进行修复

    预防性维护:为了避免产品在线上运行期间出现意想不到的问题,需要进行一些预防性的手段

5. 软件测试贯穿于软件的整个生命,如何贯穿?

软件测试的生命周期:需求分析 —— 测试计划 —— 测试设计与开发 —— 测试执行 —— 测试评估

  1. 需求分析:

    用户角度思考问题:软件需求是否合理

    技术角度思考问题:技术上是否可行,还是否有优化空间

    测试角度思考问题:是否存在业务逻辑冗余/冲突

  2. 测试计划:什么时候开始测试、什么时候测试结束、耗时多久

  3. 测试设计与开发:写测试文档,明确标注使用到的测试方法,测试工具,测试形式,参考需求文档,技术文档等等编写测试用例

  4. 测试执行:充分利用测试用例和其他工具对项目尽可能做到全方面的覆盖测试

  5. 测试评估:评估产品是否存在其他的质量问题,功能演示

面试题:如果线上出现问题,测试人员应该怎么做?

项目测试完成之后,需要进行项目上线。产品在线上运行期间我们测试人员也需要及时关注产品线上运行情况,是否出现了产品质量问题,如果出现了问题:

  1. 尝试复现(普遍都存在的问题还是个别问题)复现成功后通知项目组内所有成员进行问题的定位
  2. 尝试定位问题出现的原因,帮助开发人员尽快定位问题并解决问题
  3. 反思问题(为什么出现,如何解决,后续如何避免)如果问题较严重或者比较典型的问题,通常要写文档

6. 开发模型(瀑布模型、螺旋模型、增量模型和迭代模型、敏捷模型)

(1)瀑布模型

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lu7tihsa-1672909452159)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672799522258.png)]

特点:

  1. 线性结构,每个阶段只执行一次(如果需求分析不充分,有风险遗漏,那么所有的风险都会在测试阶段暴露出来)
  2. 是其他模型的基础框架

缺点:

  1. 测试后置

    1)前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会

    2)必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷暴露给用户(产品质量差)

  2. 周期太长,产品很迟才能被看到和使用(可能会导致需求/功能过时)

(2)螺旋模型

使用场景:规模庞大、复杂度高、风险大的项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MyLvcTYb-1672909452160)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672802374965.png)]

特点:螺旋模型中增加了风险分析和原型

缺点:

  1. 项目中可能存在的风险性与风险管理人员的技能水平有直接关系
  2. 需要人员、资金、时间的增加和投入,可能会导致项目的成本太高

(3)增量模型和迭代模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqxvBOGb-1672909452160)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672880495917.png)]

增量模型里把大的需求划分成一个个可以独立开发上线的功能

假如有一个软件,共有A B C D E 五个功能

增量模型:可以先开发 A B 功能,再开发 C D E

迭代模型:先开发 A B C D E 的基础版本,然后在基础版本上不断的进行功能的完善

增量和迭代两者是有区别的,增量是逐块建造的概念,迭代是反复求精的概念

(4)敏捷模型

《敏捷宣言》中的价值观:

个体与交互重于过程和工具

可用的软件重于完备的文档

客户协作重于合同谈判

响应变化重于遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者。

敏捷模型中考核标准:可交付的软件

特点:轻流程、轻文档、重目标、重产出

敏捷模型拥抱变化

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

scrum模型

三个角色和五个重要会议

三个角色:产品经理、项目经理、研发团队组成

五个重要会议:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J7reZwwU-1672909452161)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672880989669.png)]

7. 测试模型(V模型、W模型)

(1)V模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ANTDvih-1672909452161)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672805762924.png)]

特点:

  1. 测试过程中存在的不同类型的测试
  2. 测试阶段的参考标准以前面对应阶段为准

缺点:测试后置

(2)W模型(双V模型)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqGWI4q4-1672909452162)(C:\Users\28463\AppData\Roaming\Typora\typora-user-images\1672880058935.png)]

特点:W模型重流程、不能够迎接变化、W模型不适用于敏捷模型

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

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

相关文章

【Java寒假打卡】Java基础-BigDecimal

【Java寒假打卡】Java基础-BigDecimal构造方法四则运算BigDecimal的特殊方法基本数据类型包装类自动装箱与自动拆箱Integer的类型转换将数字字符串进行拆分成整数数组构造方法 package com.hfut.edu.test1;import java.math.BigDecimal;public class test3 {public static void…

Crontab命令详解

crontab命令是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行。crontab命令可以精确到分(精确到秒的一般写脚本),相当于闹钟。 如果不使用crontab,那么任…

GD32F103-TIMER模块

定时器是一个功能强大的外设。 一般功能: 定时中断,计时器,给定一个时间,到达时间后产生一个中断定时器输出比较的功能,用于PWM波形的产生,驱动电机定时器输入捕获,测频率 核心关键参数&#…

基于Java+SpringBoot+vue+element实现新冠疫情物资管理系统详细设计

基于JavaSpringBootvueelement实现新冠疫情物资管理系统详细设计 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录基于…

文件IO----(open、close、read、write、lseek)

1.文件IO 介绍:(系统IO、系统调用) POSIX(可移植操作系统接口)定义的一组函数,不提供缓冲机制,每次读写操作都引起系统调用,核心概念是文件描述符,访问各种文件类型,Lin…

Keychron 键盘指南

文章目录QQ1Q2Q3Q4Q5KK1K2k3 && k3proK3 VS K7k6 && K6prok7K8k10K12K14CVV1V2V3V4V5V6SQ Q1 Q1 是一款革命性的全金属键盘,每个开关、键帽、稳定器、旋钮甚至面板都具有可定制的功能。它专为个性化体验和卓越的打字舒适度而设计。 双垫片设计…

Cadence PCB仿真使用Allegro PCB SI配置仿真库的方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,配置方法3,总结1,概述 本文简单介绍使用Allegro PCB SI软件选择需要仿真的网络的方法。 2,配置方法 第1步:打开待仿真的PCB文件,并确认软件为Allegro PCB SI 如果,打开软件不是Allegro PCB SI则可这样…

模型微调,低预算,高期望!

作为迁移学习中的常用技术,Fine-tuning(微调)已经成为了深度学习革命的重要部分。微调不需要针对新任务从头开始学习,只需要加载预训练模型的参数,然后利用新任务的数据进行一步训练模型即可。也可以说微调是对开放域任…

一文简单了解并部署Zookeeper集群

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:蟹黄瓜子文章来源:GreatSQL社区投稿 1.Zookeeper概述 Zookeeper对于很多人开始可能都有所耳闻&am…

基于Java+SpringBoot+vue+element实现爱心捐赠平台系统

基于JavaSpringBootvueelement实现爱心捐赠平台系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

排他思想的运用

思路简述 需求:桌子上有一排灯,点哪个亮哪个,但是要求每次只能点亮一盏。如果不使用排他思想,操作过程如下: 第一次打开一盏灯,记为 A,记录下来。第二次打开灯之前,先去找记录&…

[cpp进阶]C++智能指针

文章目录为什么需要智能指针?智能指针的原理及使用智能指针的原理智能指针的使用C中的智能指针C智能指针的发展历程std::auto_ptrstd::auto_ptr的使用std::auto_ptr的模拟实现std::unique_ptrstd::unique_ptr的使用std::unique_ptr的模拟实现std::shared_ptrstd::shared_ptr的…

Springboot @InitBinder处理from-data表单传参,指定参数默认新增前缀

前言 有兄弟突然找到我,江湖救急,我以为是啥问题呢? 一看这位小兄弟也是半路出家, 没有对springboot的常用注解有过研究。 不过没大碍,还是那句话, 学习的事情,只有先知和后知 现在你看完这篇…

纳米软件分享:光伏逆变器ATE测试系统,逆变器测试解决方案

光伏并网逆变器(以下简称“逆变器”)是光伏发电系统的核心部件之一,其主要功能是将光伏阵列的直流逆变为符合电网接入要求的交流电并入电网。并网逆变器ATE测试平台,主要是模拟光伏阵列特性输入的直流电源、模拟电网电源、系统控制…

Java垃圾分类查询管理系统源码+数据库,基于SpringBoot+mybatis-plus,垃圾分类查询及预约上门回收

垃圾分类查询管理系统 完整代码下载地址:Java垃圾分类查询管理系统源码数据库 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类, 然后在网上提交订…

java学习之main方法

目录 一、main方法的注意事项 二、在IDEA中传入参数 一、main方法的注意事项 形式:public static void main(String[] args){},main方法是一个静态方法,访问修饰符是:public,形参是String数组 args 注意事项&#xf…

go语言--函数

package mainimport "fmt"func main(){//功能: 10 20var num1 int 10var num2 int 20var sum int 0sum num1sum num2fmt.Println(sum) }为什么使用函数 提高代码的复用性,减少代码冗余, 代码维护性也提高了 函数的定义 为完成摸一个功能的程序指令(…

IRCNN-FPOCS 文章解读

1、论文概述 1)待解决的问题:地震道数据缺失(野外地震数据的质量往往受到地质环境或设备参数的影响,这些数据可能在空间上不连续,导致地震痕迹缺失,也称为下采样观测) 2)目的&…

从菜鸟到团队协同大神:产品经理工具技能修炼

现在,自雇人士和自由职业者越来越普遍。受环境影响,员工们正在放弃朝九晚五的工作,转而采用更灵活的远程工作,另一方面,随着办公数字化转型、远程办公的需求强烈、在线协协同管理工具飞项等一批知名互联网工具如雨后春…

c#入门-捕获变量

局部变量捕获 局部函数,匿名函数,可以直接在函数体内使用局部变量。 如果作为委托使用,传递给别人。可能在别人使用委托的时候,这些局部变量的作用域就已经消失了。 因此,编译器会对这些变量做出特殊的操作&#xff…