【软件测试】软件测试的基本概念和开发模型

1. 前言

在进行软件测试的学习之前,我们要了解软件测试一些基本概念. 这些基本概念将帮助我们更加明确工作的目标以及软件测试到底要做什么.

2. 软件测试的基本概念

软件测试的基本概念有3个,分别是需求,测试用例和BUG.

2.1 需求

这里的需求还可以分为 用户需求和软件需求,用户需求: 简单理解为甲方提出的需求. 软件需求: 开发人员要实现的软件功能. 软件也会作为开发和测试的依据.

一般来说 用户需求不能直接作为软件需求. 我们要对用户需求进行分析,这里的分析可能是从技术上分析(看技术是否可行). 从市场上分析(市场需求量),从成本上分析(成本与收益占比).

2.2 测试用例

测试用例意义就是:测什么,怎么测. 明确出要测试的要素,测试用例的要素包括标题,测试环境,操作步骤,测试数据和预期结果这五大要素.

标题: 简要说明这个测试用例是干什么的

测试环境: 不同的环境测试出来的结果可能不同

操作步骤: 不同的操作步骤测试出来的结果也可能不同

测试数据: 根据测试环境和测试步骤得出的结果

预期结果: 期望得到的结果

2.3 BUG

与产品规格说明书(需求文档)不符就算的上是BUG

主要有以下几点:

当且仅当产品规格说明书(需求文档)存在且正确的时候,程序实现地功能与产品规格说明书(需求文档)要求不匹配时,那就是软件错误.

当产品规格说明书(需求文档)没有提出的功能时,以用户为准.当程序没有实现用户合理预期(需要测试人员具有良好的产品思维)的需求时,这也是软件错误

3. 开发模型

开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架

3.1 软件/软件开发 的生命周期

软件/软件开发 的生命周期一般分为6个阶段: 需求分析->计划->设计->编码->测试->运行维护

需求分析: 这里的分析与前面一致,要进行市场分析,技术分析(站在技术的角度上看技术是否支持),成本和收入占比分析.

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

设计: 将大的需求拆分成一个个小的可执行任务

编码: 开发人员参考测试文档和开发文档等进行功能实现

测试: 测试人员进行测试

运行维护: 运行维护要具有完善性,修复性和预防性.当产品上线之后,用户开始使用.当用户发现了测试人员没有发现的BUG,后面测试开发人员对BUG进行修复,同时也对可能出现的BUG进行处理

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

3.2 软件测试的生命周期

软件测试分为以下几个阶段: 需求分析->测试计划->测试设计与开发->测试执行->测试评估

需求分析: 1. 站在用户角度上思考问题: 判断软件需求是否合理. 2. 站在技术的角度上思考问题:技术上是否可行,还有没有优化空间. 3. 站在测试的角度上思考问题: 判断当前的业务逻辑是否存在冗余/冲突

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

测试设计与开发:1.写测试文档,明确标注测试方法,测试工具,测试形式等等. 2. 编写测试用例

测试执行:充分利用测试用例和其它工具对项目尽可能的全覆盖测试

测试评估: 评估产品是否有其它质量问题,功能演示

项目测试完成之后,需要进行项目上线.项目上线之后,测试人员也需要及时关注产品是否出现了问题.

如果出现了问题:

尝试复现,判断这个问题是普遍出现的还是个别情况.

尝试定位问题出现的原因,帮助开发人员定位尽快定位问题并解决问题

反思问题:为什么会出现问题,如何解决,今后如何避免问题.

3.3 瀑布模型

瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

瀑布模型流程图:

主要就是以下几个步骤:

瀑布模型的特点:

1.线性结构,每个结构只执行一次

2.是所有其他模型的基础框架

瀑布模型的缺点:

1.测试后置.(1)测试前的各阶段遗留的风险推迟到测试阶段才会被发现,这会导致项目大规模返工,失去了早点发现解决问题的机会. (2) 必须留足够的时间给测试阶段,如果测试不充分,缺陷就会暴露给用户.

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

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

3.4 螺旋模型

螺旋模型流程图:

上面这张图不太好看,接下来我们用瀑布模型的方式来理解这张图.

看这张图:

螺旋模型与瀑布模型相比增加了 风险分析和原型. 在需求分析,计划和设计之后要进行风险分析,每次风险分析之后就会得到一个新的原型.而在经过设计之后的风险分析之后就会得到一个可执行原型.

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

螺旋模型的缺点:

项目中可能存在的风险性和风险管理人才的技能水平有直接关系

需要人员,资金,时间的成本增加和投入,项目的成本太高

螺旋模型的适用场景: 规模庞大,复杂度高,风险大的项目

3.5 增量模型

增量模型流程图:

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

例如一个项目里面要实现很多功能,可以先开发里面的一部分功能,开发完成之后就可以先进行上线,等其它也开发完成之后,再去上线其它功能. 这就是增量模型的流程

3.6 迭代模型

迭代模型就是先完成基本的功能,然后在根据需求不断地取改善优化这些基本的功能

3.7 敏捷模型

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

scrum模型中有三个角色: 产品经理,项目经理和研发团队.

五个重要会议:发布计划会议,迭代计划会议,每日例会,演示会议和回顾会议

发布计划会议: 确定最终的需求

迭代计划会议: 任务拆解,确定责任人,工时评估

每日例会: 了解当前项目的进度,每日会议后要给出"可交付的软件"

演示会议: 产出用户需求

回顾会议:总结当前迭代周期中的不足,并在下一次迭代中进行优化

敏捷模型的特点:1. 轻流程 2. 轻文档 3. 重目标 4. 重产出

4. 测试模型

以上都是开发模型,测试模型有V模型和W模型

4.1 V模型

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

缺点: 测试后置(与前面相同)

4.2 W模型

W模型也称"双V模型"

W模型增加了软件各开发阶段中应同步进行的验证和确认活动。

W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的

W模型优点:1.有利于尽早地全面的发现问题。2. 对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。

W模型的缺点:1. W模型重流程,不适应与敏捷模型. 2.测试和开发活动也保持着一种线性的前后关系,前一项工作完成才能开展后一项工作

5. 总结

本文主要讲解了软件测试的三个基本概念,开发模型和测试模型的特点,缺点和适用场景. 概念较多,看起来也很枯燥乏味,但是掌握基本概念才能更好地学习软件测试.

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

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

相关文章

【时事篇-05-03】20240316 一笔145元拆分成3笔存款存入(排除有相似性的十位数字)

背景需求 前文提到,每笔都存一样的数目,容易被银行识别违法, 【时事篇-05-01】20240112 150元存46只货币基金-CSDN博客文章浏览阅读580次,点赞15次,收藏11次。【时事篇-05-01】20240112 150元存46只货币基金https://…

2核4G服务器够用吗?性能测评自己看

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

riscv 各种版本 gcc 工具链编译与安装

riscv 各种版本 gcc 工具链编译与安装 riscv gcc工具下载 Riscv 的 gcc 交叉编译器,以开源的方式托管在 github 上。链接如下: https://github.com/riscv/riscv-gnu-toolchain 该仓库,里面包含了一些子仓库。 使用以下这个命令&#xff0…

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

【OJ】string类题目

个人主页 : zxctscl 如有转载请先通知 题目 1. 415字符串相加1.1 分析1.2 代码 2. 344反转字符串2.1 分析2.2 代码 3. HJ1字符串最后一个单词的长度3.1 分析3.2 代码 4. 387.字符串中的第一个唯一字符4.1 分析4.2 代码 5. 125验证回文串5.1 分析5.2 代码 1. 415字符…

20240309web前端_第一周作业_完成电子汇款单

作业二&#xff1a;完成电子汇款单 成果展示: 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

【MatLab】之:Simulink安装

一、内容简介 本文介绍如何在 MatLab 中安装 Simulink 仿真工具包。 二、所需原材料 MatLab R2020b&#xff08;教学使用&#xff09; 三、安装步骤 1. 点击菜单中的“附加功能”&#xff0c;进入附加功能管理器&#xff1a; 2. 在左侧的“按类别筛选”下选择Using Simulin…

2024043期传足14场胜负前瞻

2024043期售止时间为3月17日&#xff08;周日&#xff09;21点30分&#xff0c;敬请留意&#xff1a; 本期深盘多&#xff0c;1.5以下赔率1场&#xff0c;1.5-2.0赔率7场&#xff0c;其他场次是平半盘、平盘。本期14场整体难度中等偏上。以下为基础盘前瞻&#xff0c;大家可根据…

深入浅出FISCO BCOS:区块链底层平台

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.c…

kkview远程控制: 内网远程桌面控制软件

内网远程桌面控制软件&#xff1a;高效、安全的远程管理方案 在信息技术日新月异的今天&#xff0c;内网远程桌面控制软件已成为许多企业和个人用户不可或缺的工具。这类软件允许用户通过内部网络&#xff0c;实现对其他计算机的远程访问和控制&#xff0c;从而大大提高工作效…

ARM 寄存器学习:(一)arm多种模式下得寄存器

一.ARM7种状态以及每种状态的寄存器&#xff1a; ARM 处理器共有 7 种不同的处理器模式&#xff0c;在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式&#xff0c;没有spsr寄存器)状态寄存器&#xff08;cpsr和spsr&…

环形链表2(C++), test ok

1. 题目 2. 思路分析&#xff1a; 与环形链表1一样&#xff0c;我们需要定义慢指针和快指针&#xff0c;确定链表是否有环&#xff0c;如果链表没有环的话&#xff0c;直接置空即可。如果链表有环&#xff0c;则需要向环形链表1一样&#xff0c;让快指针不断追赶慢指针&#x…

Python爬虫:原理与实战

引言 在当今的信息时代&#xff0c;互联网上的数据如同浩瀚的海洋&#xff0c;充满了无尽的宝藏。Python爬虫作为一种高效的数据抓取工具&#xff0c;能够帮助我们轻松地获取这些数据&#xff0c;并进行后续的分析和处理。本文将深入探讨Python爬虫的原理&#xff0c;并结合实战…

6.【Linux】进程间通信(管道命名管道||简易进程池||简易客户端服务端通信)

介绍 进程间通信的方式 1.Linux原生支持的管道----匿名和命名管道 2.System V-----共享内存、消息队列、信号量 3.Posix------多线程、网路通信 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。…

最大异或对(trie树)

题目描述&#xff1a; 思路&#xff1a; 1、首先此题我们要知道异或的规则&#xff0c;这里不赘述了&#xff0c;可以百度 2、如果利用trie树去找到一个数字与其异或能得到最大值 比如二进制数&#xff1a;1010.....是一个很大的数 我们想要异或得到的值更大&#xff0c;就需…

AST解web控制流平坦化

此代码可以解决大部分 while if else 控制流平坦化原理&#xff1a; 先将 if 语句转为 switch 语句&#xff0c;再将 switch 分支合并&#xff0c;最后删除已合并的分支&#xff08;具体看代码&#xff09; 实现效果图 首先安装依赖&#xff1a; npm install babel/parser npm…

分布式文件存储与数据缓存(一)| FastDFS

目录 分布式文件系统FastDFS概述_简介FastDFS特性&#xff1a;分布式文件服务提供商 FastDFS概述_核心概念trackerstorageclientgroup FastDFS概述_上传机制内部机制如下 FastDFS概述_下载机制内部机制如下 FastDFS环境搭建_Linux下载安装gcc下载安装FastDFS下载安装FastDFS依赖…

c语言的字符串函数详解

文章目录 前言一、strlen求字符串长度的函数二、字符串拷贝函数strcpy三、链接或追加字符串函数strcat四、字符串比较函数strcmp五、长度受限制字符函数六、找字符串2在字符串1中第一次出现的位置函数strstr七、字符串切割函数strtok&#xff08;可以切割分隔符&#xff09;八、…

THM学习笔记—RootMe

nmap扫描&#xff0c;发现22端口和80端口打开 dirsearch扫描&#xff0c;注意到/panel和/uploads&#xff0c;在浏览器中打开 可以上传文件&#xff0c;尝试反弹shell 在尝试过程中发现网站不能上传.php文件&#xff0c;只需要将后缀更改为.php5之类即可 成功 查找文件&#x…

页面事件

下拉刷新事件 1. 什么是下拉刷新 下拉刷新是移动端的专有名词&#xff0c;指的是通过手指在屏幕上的下拉滑动操作&#xff0c;从而重新加载页面数据的行为。 2. 启用下拉刷新 启用下拉刷新有两种方式&#xff1a; ① 全局开启下拉刷新  在 app.json 的 window 节点中&…