【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
【测试开发】概念篇
文章目录
- 【测试开发】概念篇
- 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规范及开发流程...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...