软件测试-基本概念

软件测试-基本概念

1.什么是软件测试

测试指的是对我们生产出来的产品特性进行一些校验,例如对传感器、手机等的测试,而软件测试是对我们开发出的软件进行校验是否存在问题,测试软件特性是否符合用户需求。

2.软件测试的基本概念

软件测试的基本概念包括需求、测试用例、bug。

2.1什么是需求

分为两大类,分别是用户需求和软件需求。

用户需求:由用户提出的需求,比如用户要求制作一个点餐小程序等。该需求一般比较简略。自研产品的话,一般由产品经理提出需求。

例如:用户对点餐小程序提出需求

在这里插入图片描述

软件需求/功能需求:将用户需求转化为软件需求,详细描述开发人员需要实现的功能。

注意:用户需求不等于软件需求。用户需求不一定合理、需要对用户需求进行提取和分析。

软件需求是我们测试人员进行测试工作的基本依据,而用户需求不能。

2.2什么是测试用例

测试人员在执行测试前需要编写测试用例,测试用例的质量与产品的质量具有很大的关联关系,一份好的测试用例可以降低软件在线上环境出现问题的概率。但是任何测试样例都不能不能保证是完美的。

例如:对搜索框编写测试用例。

在这里插入图片描述

测试用例主要解决两个问题:测试什么、怎么进行测试。

测试用例的要素:测试环境、测试步骤、测试数据、预期结果等要素。

2.3什么是bug

bug的由来:格蕾丝·赫柏1945年9月9日,格蕾丝使用的Mark Ⅱ出现故障,导致工作无法进行。经过了近一天的检查,格蕾丝找到了故障的原因:继电器中有一只死掉的蛾子。蛾子被夹了出来。后来,”bug” (小虫) 和”debug” (除虫) 这两个本来普普通通的词汇成了计算机领域中特指莫明其妙的“错误”和“排除错误”的专用词汇而流传至今,而格蕾丝·赫柏也因此成了第一个发现“bug”的人。

软件缺陷的概念和界定:

当且仅当存在规格说明且正确时,程序与规格说明之间不匹配就是错误的,可以提出bug。

例如:登录页面,规格说明要求昵称为4-12个字符,而测试时发现2个字符也能注册成功,可以认定为bug。

当规格说明没有提到的功能,判断标准以用户体验为准,当程序没有实现用户合理预期的功能,也可以认为是软件错误,可以提出bug。

例如:选择框供选项的元素非常多,几十甚至几百个,影响用户体验,也能提出bug。

3.开发模型

开发模型:可以理解为开发流程/项目推进流程。软件从没有到上线的过程(软件的生命周期)。

软件的生命周期:需求分析->计划->设计->编码->测试->运行维护

需求分析:对用户需求进行分析、市场分析、技术分析。

计划:什么时候开始动工,什么时候结束,不同模块需要的时间等。

设计:将软件需求进行拆分,每个模块有谁来管理,设计哪些接口,采用哪些技术,使用什么框架等待。

编码:由开发人员参考需求文档和技术文档来进行编码。

执行测试:测试人员参考测试案例执行测试。

运行维护:

  1. 修复性维护,对项目中未发现的文件进行修复。
  2. 完善性维护:对功能进行完善,增强功能或预防维护。

3.1瀑布开发模型

在这里插入图片描述

瀑布模型是其他模型的基础框架,一个阶段结束才能开始下一个阶段,线性顺序进行的软件开发模式,

缺点:

  1. 很多风险往往后期的测试阶段才被发现。失去尽早纠正的机会(没有充分的了解客户需求,导致在开发阶段花费了大量时间和资源开发了一个不符合用户实际要求的程序,导致需要更多的时间来修复问题)
  2. 测试在后期开展,需要足够的时间来测试,否则容易造成测试不充分,软件问题直接暴露给客户。
  3. 运行的产品很迟才能被看到,不能够很好的迎接变化(变化需要消耗更多的时间和资源)。

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

3.2螺旋模型

采用渐进式的开发模型,在瀑布模型的基础上添加了风险分析,然后生成新的原型。增加了风险分析阶段,团队需要耗费更多的时间和资金。

在这里插入图片描述

适用场景:初期阶段需求不确定,变化概率大的大型项目。

计划:制定一个详细的项目计划,包括项目目标、时间表等等。

风险分析:对潜在的风险进行评估、识别和管理,可能包含技术风险、需求风险等等。可以制定相应的风险应对策略。

原型阶段:根据计划阶段确定的需求和目标,构建一个可交互的软件原型,能够展示系统关键功能以及交互流程。通过原型,尽早的发现潜在的设计问题,验证技术可行性。

产品实施阶段:开发团队将原型转为实际的软件产品,并进行全面的测试。保证软件的质量。

3.3增量模型和迭代模型

增量模型:将项目进行模块化,使其每一个功能都能够独立开发和上线。

在这里插入图片描述

迭代模型:先完成功能的基础版本,在经历一次次的迭代优化,直到功能完善。

3.4敏捷模型

软件开发敏捷宣言特点:

  1. 强调人与人之间的沟通
  2. 轻文档
  3. 重视目标
  4. 重视产出

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

scrum中的角色:

  1. 产品经理:负责整理用户需求,定义其商业价值等等
  2. 项目经理:负责召开各种会议,协调项目进度。
  3. 研发团队:紧密配合、完成每一次迭代交付产品。

迭代开发:scrum将产品的开发分解成若干个小的迭代,周期不等,一般不超过四周,每周要完成的需求是固定的。每一次迭代产生一定的交付。

scrum的基本流程:

  1. 需求发布会议:确定本次迭代要实现的需求。
  2. 迭代计划会议:将需求拆分成一个个任务,明确每个任务对应的负责人等等。
  3. 每日会议:回答三个问题,昨天做了什么?今天要做什么?遇到了什么问题。
  4. 演示会议:一次迭代结束后,展示完成的工作。
  5. 回顾会议:讨论并反思本次迭代中的优点和不足,以及需要改进的地方。

4.测试模型

软件测试的什么周期:需求分析->测试任务->测试设计于开发>-执行测试->测试评估

4.1V模型

明确了测试有不同类型,而且每个类型和前期的开发工作相对应。

在这里插入图片描述

缺陷:测试后置

4.2W模型

测试从最开始就介入,有利于尽早的发现问题。但是开发和测试虽然是同步的,但是仍然存在着前后的线性关系。

在这里插入图片描述
不支持敏捷模型。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sudo+vim+g++/gcc+makefile+进度条

目录 一、信任表中加入指定的普通用户(使其能使用sudo) 二、vim的使用 (一)基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) (二)vim正常模式…

关于 Qt串口不同电脑出现不同串口号打开失败 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132842297 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

应用(Application)部署容器化演进之路

目录 一、应用程序部署痛点 1.1 应用程序部署流程 1.2 应用程序扩缩容 1.3 应用程序多环境部署 二、 计算资源应用演进过程 2.1 使用物理服务器痛点 2.2 使用虚拟机优点与缺点 2.2.1 使用虚拟机优秀点 2.2.2 使用虚拟机缺点 2.3 使用容器的优点与缺点 2.3.1 使用容器…

【算法挨揍日记】day07——904. 水果成篮、438. 找到字符串中所有字母异位词

904. 水果成篮 904. 水果成篮 题目描述: 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了…

Docker搭建私有仓库

Docker搭建私有仓库 一、私有仓库搭建 # 1、拉取私有仓库镜像 docker pull registry # 2、启动私有仓库容器 docker run --nameregistry -p 5000:5000 registry # 3、打开浏览器输入 http://你的服务器地址:5000/v2/_catalog 看到 {"repositories":[]} 表示搭建成功…

Python日志处理器,同时打印到控制台和保存到文件中,并保证格式一致

使用logging模块的时候,默认是输出到控制台的,当然也可以配置输出到文件中,但是当你配置了文件后,控制台的输出就消失了,所以,需要一个策略即能保存到文件中,又能输出到控制台中。 下面是我做的…

基于PHP的医药博客管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的医药博客管理系统 一 介绍 此医药博客系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。用户可注册登录,查看/评论/搜索博客,建议留言。管理员可对用户&a…

添加一个仅管理员可见的页面

例如我新加一个页面 申请一个路由 《插播》 前端是如何知道我们是管理员的呢,ant-design框架会帮我们存到InitialState里,做为全局变量 在access.ts里我们获取到了用户是否为管理员 (用户存在且为管理员) 框架为我们打通了个路由…

[hive]搭建hive3.1.2hiveserver2高可用可hive metastore高可用

参考: Apache hive 3.1.2从单机到高可用部署 HiveServer2高可用 Metastore高可用 hive on spark hiveserver2 web UI 高可用集群启动脚本_薛定谔的猫不吃猫粮的博客-CSDN博客 没用里头的hive on spark,测试后发现版本冲突 一、Hive 集群规划(蓝色部分) ck1ck2ck3Secondary…

基于Java+freemarker实现动态赋值以及生成Word文档

前言 有一个需求就是给定一个正确格式的 Word 文档模板&#xff0c;要求通过动态赋值方式&#xff0c;写入数据并新生成 该模板格式的 Word 文档。这很明显使用 Javafreemarker 方式来实现颇为简单。 一、导入依赖 <!-- freemarker --> <dependency><groupId…

基于Qt4的拉格朗日插值实现及使用

目录 1 拉格朗日插值算法 2 实现思路 3 子程序编写 1 框架搭建 2 加载节点值 3 加载插值点 4 位置查找 5 二点线性插值 3 子程序使用 1 拉格朗日插值算法 拉格朗日插值是一种常用的散点插值算法,是是以法国十八世纪数学家约瑟夫拉格朗日命名的一种多项式插值方法。是…

创建线程的方式打开记事本

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 今天操作系统课老师讲到进程&#xff0c;提出了一个有趣的小实验&#xff1a;能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣&#xff0c;姑且写一个玩…

【小程序】实现经典2048小游戏

概述 经典小游戏2048&#xff0c;2048小游戏对于逻辑要求还是很有技术含量的&#xff0c;有兴趣的可以看看 详细 以前学习时写的小游戏2048&#xff0c;技术含量还是不错的&#xff0c;有兴趣的可以看看 2048已经封装好了&#xff0c;在主页面直接引入文件可以直接调用 演…

k8s优雅停服

在应用程序的整个生命周期中&#xff0c;正在运行的 pod 会由于多种原因而终止。在某些情况下&#xff0c;Kubernetes 会因用户输入&#xff08;例如更新或删除 Deployment 时&#xff09;而终止 pod。在其他情况下&#xff0c;Kubernetes 需要释放给定节点上的资源时会终止 po…

Mybatis框架学习

什么是mybatis&#xff1f; mybatis是一款用于持久层的、轻量级的半自动化ORM框架&#xff0c;封装了所有jdbc操作以及设置查询参数和获取结果集的操作&#xff0c;支持自定义sql、存储过程和高级映射 mybatis用来干什么&#xff1f; 用于处理java和数据库的交互 使用mybat…

八股文学习三(jvm+线程池+锁)

1. jvm (1)概念 JVM是可运行 Java 代码的假想计算机 &#xff0c;包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收&#xff0c;堆 和 一个存储方法域。JVM 是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互。 java运行过程&#xff1a; 我们都知道 Java…

【Linux】:Kafka组件介绍

目录 环境简介 一、消息 二、主题 三、分区 四、副本 五、生产者 六、消费者 七、消费者组 八、offsets【偏移量】 环境简介 Linux内核&#xff1a;Centos7 Kafka版本&#xff1a;3.5.1 执行命令的目录位置&#xff1a;Kafka安装目录的bin目录下&#xff1a;/usr/loca…

读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]

文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…

【操作系统笔记】链接阶段ELF文件

链接阶段&#xff1a;符号解析 链接阶段主要包含&#xff1a; 符号解析重定位 一般情况下&#xff0c;每个 C 文件可以看成一个程序模块&#xff0c;比如下边的main.c就是一个程序模块 #include <stdio.h>extern int shared; int sum(int *a, int n); int array[2] …

springcloud3 分布式事务-seata的四种模式总结以及异地容灾

一 seata四种模式比较 1.1 seata的4种模式比较 二 seata的高可用 2.1架构 1.建TC服务集群非常简单&#xff0c;启动多个TC服务&#xff0c;注册到nacos即可。 2.做异地多机房容灾&#xff0c;比如一个TC集群在上海&#xff0c;另一个TC集群在杭州&#xff0c; 3.微服务基…