测试1:测试相关概念
1.测试相关概念
1.1.测试概念
1.1.1.需求
符合正式文档规定的条件和权能,包括用户需求和软件需求
它们之间的的转换是:沟通
用户需求和软件需求的区别:
能否指导开发人员开发,测试人员编写测试用例
1.1.2.缺陷Bug
与正确的需求规格说明书不一致或与用户合理的期望不相同
缺陷的状态:
new、open、fixed、closed、reopen、rejected、delay
1.1.3.测试用例
向被测程序输入的一组集合,包括要素:
测试环境、测试数据、测试步骤、测试预期结果、测试版本、备注
思路:
1.对核心主要功能进行测试
2.进行异常(逆向、扩展、发散)–容错性测试
3.写功能测试之外的测试点(安全、性能、界面、易用)
存在的问题:
1.设计测试用例是费时费力的工作,比执行时间长
2.测试的覆盖率无法衡量,对新版本的重复测设很难实施
2.开发模型和测试模型
1.软件生命周期
软件生命周期是指软件的产生直到报废的生命周期。从软件产品的设想开始到软件不再使用而结束的时间
具体包括:
问题的定义及规划,需求分析,软件设计(概要,详细),软件编码,软件测试(单元测试,集成测试,系统测试,验收测试),运行维护
2.测试生命周期
测试周期是指从测试项目计划建立到BUG提交的整个测试过程。 软件测试周期并行与软件生命周期,存在于软件生命周期的各个阶段。
参考 :软件测试的流程
1、需求分析阶段:阅读需求、对需求进行分解、分析,主要就是对业务的学习,分析需求点,参与需求评审会议
2、测试计划阶段:主要任务就是编写测试计划、测试方案,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
3、测试设计、测试开发阶段:测试人员适当的了解设计,对于设计测试用例是很有帮助的,测试人员搭建测试用例框架,根据需求和设计编写一部分测试用例。
4、测试执行阶段:测试执行阶段是软件测试人员最为重要的工作阶段,根据测试用例和计划执行测试。
搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束
5、测试评估阶段:执行的过程中记录、管理缺陷,测试完成后编写测试报告,进行测试评估,确认是否可以上线
-
测试报告包含哪些内容
测试概况–测试过程分析–缺陷分析–测试结论–测试清单
3.开发模型
3.1 瀑布模型:串行
适用:项目需求稳定,需求变更较少的项目或是之前已有的做过的产品
优点:
分步清晰,阶段性强:测试阶段单独分出来
缺陷:集成之日就是爆炸之时
(1)测试阶段靠后,发现问题的时机晚,修改成本高,风险大。
(2)测试阶段靠后,误认为测试不重要
(3)项目成果不能及时分享其它项目
(4)不能适应需求变化
瀑布模型:
把软件开发模型分为好几个阶段,包括软件计划、需求分析、设计、实现、软件测试、软件运行维护。
具有一种比较明显的分层,每一阶段的结果文档会作为下一阶段的输入,强调文档,整个周期完成的差不多了才能看到结果;
没有迭代和反馈,只能一步一步来,流程没有回头路。不能适应客户不断变化的需求,后期需要改动时成本也比较大
测试比较晚,基本上是在软件完成之后进行的测试
3.2 螺旋模型:渐进式
适用:复杂度高、风险大、规格大,做一点测一点,测试必须跟随开发。没有独立的测试时间和阶段
强调:风险,保证各个阶段的质量
缺陷点:对人员的要求比较高,投入时间多,人力成本高,进度缓慢
3.3 增量和迭代:
目的:大型项目,为减少项目的风险
增量:显著降低项目风险,逐块建造,一部分一部分的做,新版本、新加功能对软件其他功能没有影响
迭代:反复求精,先轮廓再细化,新版本、新加、删除功能对软件其他功能有影响,原来功能需要修改
3.4敏捷开发模型:快速迭代,若干小迭代
敏捷宣言4条:(敏捷开发与传统开发的区别)
(1)轻文档,对文档依赖度低,但还是需要。强调软件的可用性
(2)强调人与人之间的沟通
(3)客户参与
(4)在正式发布之前拥抱变化,
敏捷开发有很多方式,SCRUM是比较流行的一种
特点:
(1)三种角色:产品经理、项目经理、研发团队
(2)不超过10人(5-9人)
(3)每天有站立会不超过15分钟,回答昨天做了什么,今天要做什么,有什么问题
(4)迭代时间1-4周。每次迭代产生一定的交付(会做出一点功能,即使还不完善)
流程:
po整理USER STORY --开会学习USER STORY,确定每次迭代完成的USER STORY
----分配USER STORY,确定完成时间–开发完成–测试中–测试完成–待发布上线–发布上线
敏捷开发:
按一个短的迭代周期工作,强调“快”,每次迭代交付一些成果,(或者说先做出一个不完美但能实现一定的功能的版本);让客户参与进来,有新需求就,快速响应变化,迭代产生新版本,缩短软件版本的周期。
强调开发软件而不是文档。
特点:让客户参与进来,客户需求的变动和软件有些不符合需求的地方可以第一时间进行了解和改动; 缩短版本周期; 每隔一段时间(一个迭代周期),团队可以在工作方面进行反省和改进,调整自己的行为; 强调开发软件而不是文档,提高编程人员的积极性。
敏捷测试:
以用户需求为中心,在每一个迭代周期都需要进行测试,
基于自动化测试->速度快、敏捷
更强调测试的速度和适应性,侧重计划的不断调整以适应需求的变化
强调面对面的沟通、协作,强调团队的责任,不太关注对缺陷的记录与跟踪。缺陷修复的成本也较低
4. 软件测试V模型
目的:改进软件开发的效率和效果
是瀑布模型的变种
单元和集成测试:检测程序的执行是否满足设计的要求
系统测试:检测系统功能和性能的质量特性是否达到系统要求的指标
验收测试:确定软件的实现是否满足用户需求、合同要求
局限性:测试阶段在编码之后,未在许爱u阶段就进入测试
4.2 W模型(双V)
解决V的缺点,每个阶段都有测试工作,不一定是测试人员参与
特点:
1.测试与开发并行
2.测试的对象不仅是程序,好包括需求、设计等
3.能尽早全面发现问题
局限性:测试盒开发保存一种线性的前后关系,上一阶段完全结束,才可开始下一阶段,不能支持敏捷开发模式
V模型和W模型的比较:
V模型:把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。(应该比较多包括系统测试和验收测试)
W模型:测试的活动与软件开发同步进行,测试的对象不仅仅是程序,还包括需求和设计。因为在需求阶段测试就已经介入了,后面每一阶段的开发都需要经过测试,能够尽早发现软件的缺陷,降低debug的成本
4.3 敏捷测试(解决V\W的缺陷):
沟通、适应
文档可以写粗略,可以画思维导图,借助自动化
3.如何描述一个缺陷
对bug的描述尽量简短但要求清晰,对bug出现的条件进行详细的描述,包括输入的测试用例、使用的环境、有没有和其他软件同时运行,以及需要写清bug出现的位置,帮助开发更好定位。
按照用户体验(bug是否很严重的影响用户体验)、影响系统的程度进行评级。
3.1 要素(一条bug记录的组成)
测试环境、测试数据(内容)、测试步骤、预期结果、实际结果、缺陷级别、测试版本、前提条件、发生的位置
3.2 缺陷的级别(如何对一个bug评级)
3.2.1 简单版
崩溃 严重 一般 次要 建议
A B C D E
崩溃:直接造成软件不能使用,造成死机、数据丢失等
严重:功能不能使用,数据丢失。与需求严重不符,不影响其他功能测试的情况下可以继续版本测试
一般:功能没有完全实现但不影响使用,不影响系统的稳定性
次要:界面、性能缺陷,建议类问题,文字错误等
3.2.2 详细描述
Bug的priority()和severity()是两个重要属性,通常人员在提交bug的时候,只定义severity,而将priority交给leader定义,通常bug管理中,severity分为四个等级blocker、critical、major、minor/trivial,而priority分为五个等级immediate、urgent、high、normal、low。 Severity:
1、blocker:即系统无法执行,崩溃,或严重资源不足,应用模块无法启动或异常退出,无法测试,造成系统不稳定。常见的有严重花屏、内存泄漏、用户数据丢失或破坏、系统崩溃/死机/冻结、模块无法启动或异常退出、严重的数值计算错误、功能设计与需求严重不符、其它导致无法测试的错误, 如服务器500错误。
2、critical:即映像系统功能或操作,主要功能存在严重缺陷,但不会映像到系统稳定性。常见的有:功能未实现,功能错误、系统刷新错误、数据通讯错误、轻微的数值计算错误、影响功能及界面的错误字或拼写错误。
3、major:即界面、性能缺陷、兼容性,常见的有:操作界面错误,边界条件错误,提示信息错误,长时间操作无进度提示,系统未优化,兼容性问题。
4、minor/trivial:即易用性及建议性问题。 Priority 1、immediate:即马上解决, 2、urgent:急需解决 3、high:高度重视,有时间要马上解决
5、low:在系统发布前解决,或确认可以不用解决。
3.3 bug的生命周期
Start–New :测试人员发现bug,提交到平台后的状态为new
New–Open:测试人员将bug提交给某个研发人员的状态为Open
Open–Regected:研发人员验证不是缺陷,将状态改为rejected,返回给测试
Open–Delay:研发人员验证是缺陷,但不影响使用,等下个版本在修改,Delay
Open–Fixed:研发人员验证是bug,进行修改
Fixed–Closed:研发人员修改完成,测试人员验证通过,就Closed改bug
Fixed–Reopen:研发人员修改后,测试人员没有验证通过,就是Reopen再到Fixed
无效的bug:
open–closed open–rejected–closed
3.4bug都有哪些周期,请你描述不同类别的bug?
3.5 如何发现更多的缺陷
1.二八原则–人员、模块
2.逆向思维、扩展性思维
3.不要依赖需求和测试用例
4.测试尽早介入
相关文章:

测试1:测试相关概念
1.测试相关概念 1.1.测试概念 1.1.1.需求 符合正式文档规定的条件和权能,包括用户需求和软件需求 它们之间的的转换是:沟通 用户需求和软件需求的区别: 能否指导开发人员开发,测试人员编写测试用例 1.1.2.缺陷Bug 与正确的…...

2.19 索引和事务
一.联合查询面试问题:聚合查询与联合查询的区别聚合查询是行与行之间的数据加工聚合函数 :count,sum,avg...group by 进行分组,指定列的值,相同的记录合并到同一个组,每个组又可以分别进行聚合查询分组还可以指定条件筛选,如果分组之前指定条件 用where,如果对分组之后指定条件…...
算法导论【摊还分析】—聚合分析、核算法、势能法
算法导论【摊还分析】—聚合分析、核算法、势能法聚合分析核算法势能法假定我们对一个数据结构执行一个由 n 个操作组成的操作序列,当 i 严格为 2 的幂时,第 i 个操作的代价为 i,否则代价为 1 聚合分析 总共有n个操作,1,2,4.....…...

【LeetCode】剑指 Offer 08. 二叉树的下一个节点 p65 -- Java Version
题目链接:无题目链接,不知道为啥力扣上找不到这一题。 1. 题目介绍(08. 二叉树的下一个节点) 题目:给定一个二叉树和其中的一个节点,请找出中序遍历顺序的下一个节点并且返回。注意,树中的节点…...

Python 之 Pandas Series 数据结构
文章目录一、Series 结构二、数据结构 Series 创建1. 创建1.1 列表/数组作为数据源创建 Series1.2 字典作为数据源创建 Series1.3 通过标量创建2. 参数说明2.1 index 参数2.2 name 参数2.3 copy 参数三、Series 的索引/切片1. 下标索引2. 标签索引3. 切片四、Series 数据结构的…...

【java基础】Java常用类———包装类
包装类 wrapper 装箱与拆箱 装箱:基本类型->包装类; 拆箱: 包装类->基本类型 public class Integer01 {public static void main(String[] args) {//演示int <--> Integer 的装箱和拆箱//jdk5前是手动装箱和拆箱//手动装箱 in…...

linux shell 入门学习笔记3 shebang
shebang 计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#! 在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如 以#!/bin/sh 开头的文件,程序在执行的时候会调用/bin/sh,也就…...
写作小课堂:简历模版【A4纸正反两面】(20230219)
文章目录 I 联系方式II 个人信息III 求职意向IV 工作经验2018年-11月-至今全城淘信息技术服务有限公司2017年07月-2018年-11月湖南微流网络科技有限公司2014年06月-2017年07月湖南高阳通联信息技术有限公司V 项目经验2018年11月-至今全城淘淘管家2017年10月-2018年11月ASO(机刷…...

一文搞懂 DevOps
前言 DevOps作为一个热门的概念,近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具&#…...
深入讲解Kubernetes架构-租约
分布式系统通常需要租约(Lease);租约提供了一种机制来锁定共享资源并协调集合成员之间的活动。 在 Kubernetes 中,租约概念表示为 coordination.k8s.io API 组中的 Lease 对象, 常用于类似节点心跳和组件级领导者选举等…...

微信小程序学习第11天——Vant Weapp组件库、API Promise化、全局数据共享Mobx、分包
目录一、小程序对npm 的限制二、使用Vant Weapp组件库1、安装组件2、使用组件3、定制全局样式三、API Promise化1、下载miniprogram-api-promise2、引入3、使用四、全局数据共享五、分包1、分包概念2、使用分包3、独立分包4、分包预下载一、小程序对npm 的限制 在小程序中使用…...

Python3-基本数据类型
Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 等号&…...

RPA落地指南:什么是RPA
什么是RPA RPA在企业中起什么作用并扮演什么角色呢?想要充分了解RPA,我们需要知道RPA的相关概念、特点、功能以及能解决的问题。接下来对这些内容进行详细介绍。 1.1 RPA的3个核心概念 RPA的中文译名是“机器人流程自动化”,顾名思义&…...

跨域问题的三种解决办法
我们平时对于前后端联调的项目,以下的错误是经常常见的,我们查看浏览器报错: Access to XMLHttpRequest at http://localhost:63110/system/dictionary/all fromorigin http://localhost:8601 has been blocked by CORS policy: No Access…...
c++提高篇——string容器
一、string基本概念 string是C风格的字符串,而string本质上是一个类。 与c语言不同,string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器。在根本上与c语言字符串是一致的。 在string类内部封装了很…...

[软件工程导论(第六版)]第6章 详细设计(复习笔记)
文章目录6.1 结构程序设计6.2 人机界面设计6.3 过程设计的工具6.3.1 程序流程图(程序框图)6.3.2 盒图(N-S图)6.3.3 PAD图(问题分析图)6.3.4 判定表6.3.5 判断树6.3.6 过程设计语言6.4 面向数据结构的设计方…...

RabbitMQ核心内容:实战教程(java)
文章目录一、安装二、入门1.分类2.核心概念3.工作原理4.六大模式三、模式一:"Hello World!"1.依赖2.生产者代码3.消费者代码四、模式二:Work Queues1.工作原理2.工具类代码:连接工厂3.消费者代码4.生产者代码5.分发策略不公平分发预…...

RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法
平台U-Boot 版本Linux SDK 版本RK356x2017.09v1.2.3文章目录 一、设备树与config配置二、pci命令的定义三、nvme命令的定义四、pci与nvme命令的用法3.1 pci总线扫描3.2 nvme设备信息3.3 nvme设备读写一、设备树与config配置 RK3568支持PCIe接口,例如ROC-RK3568-PC: 原理图如…...
微信头像昵称获取能力的变化导致了我半年没更新小程序
背景 2022年9月份,微信更改了获取头像昵称的规则,回收了原有 wx.getUserProfile 中的部分能力,为了减小对【微点记账】小程序的影响,长达半年未做任何更新,今天为了增加这个聊天机器人的功能,不得不重新查…...

【深度学习编译器系列】1. 为什么需要深度学习编译器?
本系列是自学深度学习编译器过程中的一些笔记和总结,参考文献在文末。 1. 概述 深度学习(DL)编译器的产生有两方面的因素:深度学习模型的广泛应用,以及深度学习芯片的层出不穷。 一方面,我们现在有非常多…...
C#封装HttpClient:HTTP请求处理最佳实践
C#封装HttpClient:HTTP请求处理最佳实践 在现代的.NET应用程序开发中,与外部服务进行HTTP通信是一项常见需求。HttpClient作为.NET框架中处理HTTP请求的核心组件,为我们提供了强大而灵活的API。然而,直接使用原生的HttpClient可能…...
《前端面试题:JS数据类型》
JavaScript 数据类型指南:从基础到高级全解析 一、JavaScript 数据类型概述 JavaScript 作为一门动态类型语言,其数据类型系统是理解这门语言的核心基础。在 ECMAScript 标准中,数据类型分为两大类: 1. 原始类型(Pr…...
惠普HP Deskjet 9600 打印机信息
基本参数 产品定位:彩色喷墨打印机。打印速度:14 页 / 分钟。最高分辨率:48001200dpi。打印内存:8MB4。打印语言:HP PCL 3 增强型。打印负荷:每月 5000 页。接口类型:USB、并口。 功能特点 自动…...

引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
6月5日,网络安全行业年度盛会——"Accelerate 2025北亚巡展北京站"圆满落幕!来自智库、产业界、Fortinet管理层及技术团队的权威专家,与来自各行业的企业客户代表齐聚一堂,围绕"AI智御全球引领安全新时代"主题…...

Redis底层数据结构之深入理解跳表(2)
上一篇文章中我们详细讲述了跳表的增添、查找和修改的操作,这篇文章我们来讲解一下跳表在多线程并发时的安全问题。在Redis中,除了网络IO部分和大文件的后台复制涉及到多线程外,其余任务执行时全部都是单线程,这也就意味着在Redis…...

Cesium使用glb模型、图片标记来实现实时轨迹
目录 1、使用glb模型进行实时轨迹 2、使用图片进行实时轨迹 基于上一篇加载基础地图的代码上继续开发 vue中加载Cesium地图(天地图、高德地图)-CSDN博客文章浏览阅读164次。vue中加载Cesium三维地球https://blog.csdn.net/ssy001128/article/details…...

Sklearn 机器学习 缺失值处理 检测数据每列的缺失值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在代码与灵感交织的数字世界里和大家相遇~💖 ✨ 在这个技术浪潮奔涌的时代,我们既是探索者,也是分享者。我始终相信,每一行代码都是通往创新的钥匙,而分享则能让这把钥匙照亮更多人的…...
C++编程——关于比较器的使用
注: 简单记录一下C里比较器的构建,常用于自定义 sort() 函数和优先队列的改写优先级。 简单构建比较器: sort() 函数: vector<int> arr;//(a, b) -> true : a < b //升序排列 bool compare(int a, int b) {retur…...
【Python 算法零基础 4.排序 ⑪ 十大排序算法总结】
目录 一、选择排序回顾 二、冒泡排序回顾 三、插入排序回顾 四、计数排序回顾 五、归并排序回顾 六、快速排序回顾 七、桶排序回顾 八、基数排序 九、堆排序 十、希尔排序 十一、十大排序算法对比 十二、各算法详解与应用场景 1. 选择排序(Selection Sortÿ…...
Elasticsearch的搜索流程描述
Elasticsearch 的搜索流程是一个结合 分布式查询、分片协同、结果聚合和排序 的复杂过程,其设计目标是在海量数据中实现快速检索和精准结果返回。以下是搜索流程的详细解析: 一、搜索流程总览 Elasticsearch 搜索流程示意图 (图源:Elastic 官方文档) 二、详细步骤解析 …...