【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
【测试开发】概念篇
文章目录
- 【测试开发】概念篇
- 1. 什么是需求
- 1.1 需求的定义
- 1.2 为什么有需求
- 1.3 测试人员眼里的需求
- 1.4 如何深入了解需求
- 2. 什么是测试用例
- 2.1 为什么有测试用例
- 2.2 练习=>手机打电话
- 3. 什么是bug
- 4. 开发模型和测试模型
- 4.1 软件生命周期
- 4.2 开发模型
- 4.3 测试模型
- 4.3.1 敏捷中的测试
- 4.3.2 V模型
- 4.3.3 W模型(双V模型)
- 4.3.4 H模型
【测试开发】概念篇
1. 什么是需求
“想睡觉”,“不想上课”,“想吃饭”,这就是需求
而在互联网行业,什么是需求呢?
1.1 需求的定义
- 用户/甲方需求
- 例如QQ截图,用户想要长截图
- 软件/功能需求
- 对于刚才的用户需求,则需要(产品经理)写成细致的功能描述文档,例如长截图如何触发,如何操作(滚动),限制(大小/长度)
再例如一个软件需要有注册功能,注册这个笼统的就是用户需求,而其具体功能(输入姓名,邮箱,密码,确认密码,邮箱验证码,点击注册,是否同意协议,不同意会怎么样,输入不规范会怎么样…)这个详细的就是软件需求
我们开发一个产品,或者测试一个产品,要拿着这个软件需求进行测试/开发!
1.2 为什么有需求
没有需求拿来目标,怎么实现目标?
1.3 测试人员眼里的需求
而测试人员要将软件需求书里的每一个点,转化为一个个的测试点:
小练习:qq登录
- 账号
- 功能
- 账号密码正确,登录成功
- …
- 兼容
- 性能
- 安全
- 密码
- 登录按钮
- …
对测试点分类是必须要的!
1.4 如何深入了解需求
在项目的需求评审会议上了解:
- 有什么需求
- 为什么做这样的一个需求
- 收益达到什么标准
- 软件要做成啥样
- 测试要何时开始,期限为多少天
- 开发要何时开始,期限为多少天
- …
但在开始做项目时,我们可以查阅文档(会议记录/笔记、软件需求文档、技术文档)
沟通一下,找产品经理了解软件功能,找开发了解软件的实现
2. 什么是测试用例
测试用例是一组集合,包含测试环境,测试数据,预期结果,操作步骤…
- 测试环境
- 例如OJ刷题系统,提供给学生一个测试环境(浏览器的一个页面)
- 测试数据
- 例如OJ刷题系统,自己输入测试数据、这道题检验是否通过的一组测试数据
- 预期结果
- 例如OJ刷题系统,通过率为100%
- 操作步骤
- 例如OJ刷题系统,写代码,提交
- 测试序号
- 例如OJ刷题系统,第1,2,3…
- 测试标题
- 例如OJ刷题系统,达到预期后,展现一个动画效果
- 也就是对这一组测试用例的简单描述
在工作中,常常将测试用例称为 CASE
2.1 为什么有测试用例
-
测试用例可以提高的是人员的工作效率
-
测试用例可以降低测试人员工作的重复性问题
如果没有事先列举出测试用例,假设现在有两个人去测试一个功能:
- 大马自己去测试功能,质疑对方的能力,就把能测的都测了执行了,大概100条吧
- 小马也是,就把自己想到的都测了一遍,大概90条吧
这样就会出现,花费时间过长,并且两人测试重复性高的问题
所以,他们的领导要求他们写成测试用例,统计起来再去执行,大概一百条,一半给大马,一半给小马~
-
测试用例是建立自动化的基础,甚至是开发测试工具的基础
自动化就是把测试人员的双手解放,让代码代替人员执行测试,既然如此我们就要有测试用例的集合,让代码以这些测试用例进行测试
2.2 练习=>手机打电话
3. 什么是bug
不严谨的说法:程序和规格说明书之间不匹配
准确的来说:当且仅当规格说明书存在的并且正确,程序与规格说明书之间的不匹配才是bug
- 规格说明书 => 软件需求文档
当需求规格说明书没有提到的功能和没有考虑到的点,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是bug
4. 开发模型和测试模型
4.1 软件生命周期
人的生命周期是:呱呱坠地 到 死亡
而软件的生命周期是:
-
需求分析(诞生)
- 分析需求是否合理,遵纪守法…
- 比如,有登录没注册就不合理
-
计划
- 谁开发,谁测试,开发多久,测试多久…
- 就是那五个W…
-
设计
-
编码
- coding
-
测试
- 测试报告
-
运行维护
- 如果有线上问题,此时测试人员需要协助开发定位问题 + 解决问题,之后重新上线
-
停服(死亡)
4.2 开发模型
-
瀑布模型
无非就是把刚才的生命周期串在一起:
特定:线性的
优点:每个阶段做什么,产出什么非常清晰
缺点:风险往往迟至后期的测试阶段才显露,因此失去及时纠正的机会!
- 例如,需求分析出现问题,却在测试才被发现,一步步回溯到需求分析才发现问题,这样花费的时间、人力、精力也很大
适用的项目:
- 小型项目适用于此模型
-
螺旋模型
无非就是把刚才的生命周期反复几次:
特性:迭代的
优点:
- 每个阶段都会进行风险分析,避免一些线上问题发生
缺点:
- 可能迭代次数太多,项目迟迟无法上线
- 风险分析可能会分析错,请专家则人力和财力的投入
适用项目:
- 适用于比较大,风险比较多的项目
对于以下模块,略讲,以一个上课软件为例(登录,创建课程,上课)
- 主要是区分模型是“增量型”还是“迭代型”
-
增量模型
- 登录功能开发完毕 -> 创建课程功能开发完毕 -> 上课功能开发完毕
-
迭代模型
- 登录功能开发一部分 -> 创建课程功能开发一部分 -> 上课功能发一部分
-
敏捷开发
- 个体之间的高效交互
敏捷宣言:
个体与交互重于过程和工具
- 个体之间面对面沟通
可用的软件重于完备的文档
开发文档,需求文档,更 关注最终的软件符不符合用户需求客户协作重于合同谈判
- 一份合同必然无法涵盖每个需求,所以要多与客户合作沟通,也就是客户协作
响应变化重于遵循计划
- 变化是特别常见的,而不是一昧追求计划,而是拥抱变化!
在每对比对中,后者并非全无价值,但我们更看重前者。
- 以上的对比,后者并不能摈弃,后者也很重要,而是更看重前者
- 敏捷开发中的 scrum模型
三个角色:
- scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成
其中:
- product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布
计划,对产品负责。- scrum master 负责召开各种会议,协调项目,为研发团队服务。
- team 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品
- 后端开发,前端开发,UI设计师,测试工程师…
流程:
4.3 测试模型
4.3.1 敏捷中的测试
挑战1:轻文档
挑战2:快速迭代
- 测试工作的核心内客是没有变的,就是不断地找Bug,只是要调整好自己的心态,一切以敏捷的原则为主
- 测试人员不能依赖文档,测试用例作用减弱,更多的采用思维导图、探索性测试(强调自由度,设 计和执行同时执行,根据测试结果不断调整测试计划)、自动化测试
- 敏捷讲求合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一 起研究Bug出现的原因。
4.3.2 V模型
特点:左边是开发,右边是测试,类似于瀑布模型(折了一下)
优点:测试被划分为许多类型
缺点:测试人员介入太晚,发现问题的时机太晚,故不适用于敏捷
4.3.3 W模型(双V模型)
特点:开发一个V,测试一个V
优点:测试人员在较早地介入了需求
缺点:
- 测试人员和开发人员一定长度上还是串行的(相关的准备都依赖于其左侧的开发模块,例如集成设计测试依赖概要设计、单元测试设计依赖详细设计)
- 这个测试模型不能拥抱变化,在验收测试发现问题,依旧要在测试V上不断回溯找到问题,故也不适用于敏捷
4.3.4 H模型
优点:
- H模型中的测试活动是一个独立的流程,只要满足了测试就绪条件,就可以开始测试活动
- 这种灵活的组织方式,使得H模型完全具备了前两个模型的优点——测试既可以与所有的开发活动紧密结合,又足够灵活满足敏捷和迭代的开发模型
缺点:
- H模型的灵活也造就它难以驾驭的特点
- 如果管理者没有足够的经验就实施H模型,可能会事倍功半,测试活动的成本收益比会比较低
总之,测试模型有三种,优缺点各不相同==建议一般的软件开发过程采用W模型,实施敏捷和迭代开发的可以考虑采用H模型。==
文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆!’希望枯燥的概念没有让你丧失对测试的兴趣!
相关文章:
【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
【测试开发】概念篇 文章目录 【测试开发】概念篇1. 什么是需求1.1 需求的定义1.2 为什么有需求1.3 测试人员眼里的需求1.4 如何深入了解需求 2. 什么是测试用例2.1 为什么有测试用例2.2 练习>手机打电话 3. 什么是bug4. 开发模型和测试模型4.1 软件生命周期4.2 开发模型4.3…...
1. 快速体验 VSCode 和 CMake 创建 C/C++项目
1. 快速体验 VSCode 和 CMake 创建 C/C项目 本章的全部代码和markdown文件地址: CMake_Tutorial,欢迎互相交流. 此次介绍的内容都是针对于 Linux 操作系统上的开发过程. 1.1 安装开发工具 VSCode: 自行下载安装, 然后安装插件 Cmake:在 Ubuntu 系统上, 可以采用 ap…...
【JAVA-Day18】用大白话讲解 Java 中的内存机制
标题 用大白话讲解 Java 中的内存机制摘要引言一、Java 内存机制1.1 栈内存1.2 堆内存 二、Java 如何管理内存三、合理管理内存的必要性与其他方式相比优势劣势建议四、总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《…...
[Hadoop] start-dfs.sh ssh报错
Permission denied (publickey 决解方案 相关命令 cd ~/.sshssh-keygen -t rsa -p""cat id_rsa.pub >> authorized_keyschmod 0600 authorized_keys 相关链接Hadoop: start-dfs.sh permission denied - Stack Overflow Java HotSpot(TM) Server VM warning…...
amlogic 多wifi 多bluetooh 兼容方案
WiFi部分: vendor/amlogic/common/wifi_bt/wifi/configs/wifi.mk 或者 hardware/amlogic/wifi/configs/wifi.mk ################################################################################## realtek wifi ifneq ($(filter rtl8188eu rtl8188ftv rtl8192eu rtl8…...
Apache Hive概述,模拟实现Hive功能,Hive基础架构
1、Apache Hive 概述 1.1、分布式SQL计算 对数据进行统计分析,SQL是目前最为方便的编程工具。 大数据体系中充斥着非常多的统计分析场景 所以,使用SQL去处理数据,在大数据中也是有极大的需求的。 MapReduce支持程序开发(Java…...
postgresql|数据库|centos7下基于postgresql-12的主从复制的pgpool-4.4的部署和使用
前言: postgresql数据库只用自身的一些配置是无法做到最优的优化的,需要通过一些外置插件(中间件)来提高服务器的整体性能,通俗的说就是数据库仅仅依靠自身是无法达到性能最优的,很多时候需要更改数据库的…...
python之pyQt5实例:PyQtGraph的应用
1、显示逻辑 "MainWindow": "这是主窗口,所有的其他组件都会被添加到这个窗口上。", "centralwidget": "这是主窗口的中心部件,它包含了其他的部件。","pushButton": "这是一个按钮,…...
Java——键盘输入的几种常见方式
Java——键盘输入的几种常见方式 文章目录: Java——键盘输入的几种常见方式一、IO流二、Scanner类三 、BufferedReader写入 一、IO流 在Java的输入中,是以输入流的形式进入程序,因此无法直接指定输入的类型,仅能读取键盘上的内容…...
Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法
文章目录 命令行脚本参考 - bat命令行脚本参考 - bash值得学习的知识点1. 识别终端使用的语言2. 函数的编写3. 获取用户的输入4. bat文件老是乱码怎么办 有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写.bat cmd批处理脚…...
stringBuffer.append(analyze);使用这个拼接时候如何在字符串参数字符串参数整数参数字符串数组参数内容之间添加空格
stringBuffer.append(analyze);使用这个拼接时候如何在字符串参数字符串参数整数参数字符串数组参数内容之间添加空格? 在添加参数到 StringBuffer 时,你可以在每次添加参数之后都添加一个空格,如下所示: StringBuffer stringBu…...
点云从入门到精通技术详解100篇-大范围田间场景 3D 点云语义分割研究(续)
目录 3.2 自制数据集展示 3.2.1 收集航拍图像 3.2.2 3D 点云重建 3.2.3 语义标签标注...
Mysql详解Explain索引优化最佳实践
目录 1 Explain工具介绍2 explain 两个变种3 explain中的列3.1 id列3.2 select_type列3.3 table列3.4. type列3.5 possible_keys列3.6 key列3.7 key_len列3.8 ref列3.9 rows列3.10 Extra列 4 索引最佳实践4.1.全值匹配4.2.最左前缀法则4.3.不在索引列上做任何操作(计…...
STM32H7 Azure RTOS
STM32H7 是意法半导体(STMicroelectronics)推出的一款高性能微控制器系列,基于 Arm Cortex-M7 内核。它具有丰富的外设和高性能计算能力,适用于各种应用领域。 Azure RTOS(原名 ThreadX)是一款实时操作系统…...
基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将gamma2.2和gamma1/2.2的数据分别导入到matlab进行对比: 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps //…...
Function模块
0 Preface/Foreword 1 数据结构 1.1 func_cb_t //task control block typedef struct {u8 sta; //cur working task numberu8 last; //lask task number #if BT_BACKSTAGE_ENu8 sta_break…...
Prometheus PromQL数据查询语言
PromQL 简介 PromQL(Prometheus Query Language)是 Prometheus 内置的数据查询语言。支持用户进行实时的数据查询及聚合操作。 Prometheus 基于指标名称(metrics name)以及附属的标签集(labelset)唯一定义一…...
如何将转换器应用于时序模型
一、说明 在机器学习的广阔环境中,变压器作为建筑奇迹屹立不倒,以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。 自 2017 年创建第一台变压器以来,变压器类型呈爆炸式增长,包括强大的生成 AI 模型&#…...
数据结构:队列
文章目录 队列一,概述二,添加数据三,删除数据 队列 一,概述 队列是一种特殊的数据结构,它遵循先进先出(FIFO)的原则。在队列中,元素被添加到末尾,并从头部移除。队列只…...
AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现
目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 AUTOSAR规范及开发流程...
计网第五章(运输层)(四)(TCP的流量控制)
一、基本概念 流量控制就是指让发送方的发送速率不要太快,使得接收方来得及接收。可以使用滑动窗口机制在TCP连接上实现对发送方的流量控制。 注意:之前在讨论可靠传输时,讨论过选择重传协议和回退N帧协议都是基于滑动窗口的机制上进行实现…...
【华为OD机试python】查找众数及中位数【2023 B卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 众数是指一组数据中出现次数最多的那个数,众数可以是多个。 中位数是指把一组数据从小到大排序后,如果这组数据的总数是奇数, 那最中间的那个数就是中位数; 如果这组数据总数是偶数,那…...
阿里云无影云电脑详细介绍:价格、使用和功能优势说明
什么是阿里云无影云电脑?无影云电脑(原云桌面)是一种快速构建、高效管理桌面办公环境,无影云电脑可用于远程办公、多分支机构、安全OA、短期使用、专业制图等使用场景,阿里云百科分享无影云桌面的详细介绍、租用价格、…...
【实践篇】MySQL执行计划详解
文章目录 本文知识大纲速览1. 前言2. 基本介绍1. 什么是执行计划2. 如何查看执行计划3. 执行计划的组成部分 3. 执行计划的关键元素1. id2. select_type3. table:4. type:5. possible_keys:6. key:7. key_len8. ref:9. rows:10. Extra 4. 底层原理5. 执行计划示例解读本文知识图…...
二维凸包(Graham) 模板 + 详解
(闲话) 上了大学后没怎么搞oi,从土木跑路到通信了(提桶开润大成功!),但是一年上两年的课(补的),保研也寄掉了( 说起来自从博客被大学同学发现并…...
ElasticSearch(ES)简单介绍
ES简介 Elasticsearch(通常简称为ES)是一个开源的分布式搜索和分析引擎,旨在处理各种类型的数据,包括结构化、半结构化和非结构化数据。它最初是为全文搜索而设计的,但随着时间的推移,它已经演变成一个功能…...
OpenCV(三十五):凸包检测
1.凸包检测介绍 凸包检测是计算凸包的一种技术,凸包就是:给定二维平面上的点集,将最外层的点连接起来构成的凸边形,它是包含点集中所有的点。 2.凸包检测函数convexHull() void cv::convexHull ( InputArray points, OutputArra…...
PS 透视裁剪工具
上文 PS 裁剪工具及工具栏配置讲解 我们讲完了裁剪工具 然后 我们继续来研究 透视裁剪工具 切换到 透视裁剪工具 后 我们先点击左上方的清除 先不要这些多的配置 然后 我们可以先用鼠标在图像上 画出一个局域 然后 我们去拖他四个角中的其中一个 就能拖出一些不同的形状 然…...
每日一个C库函数-#1-memset()
每日一个C库函数-#1-memset() 来源 C 标准库 - <string.h> 声明 void *memset(void *str, int c, size_t n);str:要填充的内存块;c:要被设置的值(以何值填充)。该值以 int 形式传递,填充内存块时…...
GraphQL基础知识与Spring for GraphQL使用教程
文章目录 1、数据类型1.1、标量类型1.2. 高级数据类型 基本操作2、Spring for GraphQL实例2.1、项目目录2.2、数据库表2.3、GraphQL的schema.graphql2.4、Java代码 3、运行效果3.1、添加用户3.2、添加日志3.3、查询所有日志3.4、查询指定用户日志3.5、数据订阅 4、总结 GraphQL…...
网站建设客服术语/无锡营销型网站建设
公众号关注 「运维之美」设为「星标」,每天带你玩转 Linux !需求:某业务 MySQL 迁移,但是迁移前需要做如下准备工作。统计各个业务表的 DML 操作情况。统计各个业务表的最后访问时间。条件:60 min 一个 1GB 的 Binlog。…...
做网络歌手的网站/百度一下你就知道123
比explain更加详细的分析计划:Query Profiler 2019-05-10 14:47:45 阅读:78 来源: 互联网 标签:profile show explain sql profiles Profiler query Query 一、前言 这篇博客是之前总结的一个知识点,也是偶然看别人…...
网上外贸网站怎么做/代写文章
概述 从指定的表格中读取指定Key的列表的所有数据。 示例代码 同步调用参见章节:[List表]读取列表所有数据示例代码。 异步调用参见章节:异步调用接口示例代码。 Request对象方法说明 注:如有未列出来的Request对象方法,即表…...
福鼎市城市建设监察大队网站/949公社招聘信息
先看UC浏览器的温度 uc_weather.png要实现17这样的极细的字体 自定义View 继承TextView,在onDraw方法中设置画笔粗细 TextPaint tp new TextPaint(); tp.setAntiAlias(true); tp.setStyle(Paint.Style.FILL_AND_STROKE); tp.setStrokeWidth(0.1f); setStrokeWidth方…...
蓟州网站建设/阿里云万网域名注册
导读 lint是著名的C/C语言静态代码分析工具之一,Android Lint顾名思义,针对Android的静态代码分析工具,能够对Android项目中潜在的bug、可优化的代码、安全性、性能、可用性、可访问性、国际化等进行检查。 在Android SDK Tools 16及更高的…...
wordpress flash加载插件/百度刷自己网站的关键词
最近跟我的一些读者交流,有一位读者的经历让我记忆深刻:“有一次和大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了…...