软件测试基础(V模型W模型)

news2024/11/15 11:43:55

软件测试基础

1. 软件测试的生命周期

在这里插入图片描述

  • 需求分析:站在用户的角度查看需求逻辑是否正确,是否符合用户的需求和行为习惯。站在开发的角度思考需求是否可以实现,或者说实现起来难度高不高
  • 测试计划:指定测试计划(包括不限于测试的工时,人力的安排等)
  • 测试设计、测试开发:设计测试用例,经验丰富的白盒测试人员可以开始单元测试
  • 测试执行:参考测试用例来执行测试
  • 测试评估:测试人员需要记录测试、做好缺陷管理,然后进行测试评估

我们知道软件测试是贯穿于整个软件的声明周期的

软件测试的生命周期vs软件的生命周期?

回想一下软件的生命周期

  • 需求分析
    • 测试也要对需求进行分析,分析需求逻辑是否合理,需求是否符合用户的行为习惯,站在开发人员的角度思考技术实现难度,针对技术难度来合理调整需求
  • 计划
    • 根据需要编写测试计划/测试方案
  • 设计
    • 测试人员适当的了解设计,合理的进行测试用例设计和调整
  • 编码
    • 专业的白盒测试人员可以计划执行单元测试,完善、细化测试用例以及调整测试计划和方案
  • 测试
    • 参考测试用例来执行测试
  • 运行维护
    • 测试往往是最了解需求的人。测试人员通常来进行产品的演示和功能的介绍(演示会议),期间记录下来大家反馈的建议,反馈给产品经理,成为以新的用户需求。

2. 如何描述一个Bug?

一个合格的 b u g bug bug应该需要包含以下几点

  1. 发现问题版本

    开发需要知道是哪个版本出现了问题,才能获取到对应版本的代码来重现出问题。并且说明版本也有利于统计和分析每个版本的质量。

  2. 出现问题的环境

    环境分为硬件环境和软件环境,如果是一个web项目,则需要提供浏览器版本,出现问题的操作系统版本等,如果是一个手机app项目,就需要描述出现问题的机型、分辨率、操作系统版本等等,详细的描述出现问题的环境更有利于问题的定位。

  3. 重现出现错误的步骤

    以最短的不走描述能重现问题的步骤。

  4. 预期行为的描述

    要让开发人员知道怎么样才是正确的,尤其哟啊已用户的角度来描述程序的行为到底是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。(要坚信测试是最懂需求的!)

  5. 错误行为的描述

    描述出现错误的现象,奔溃等问题可以上传日志,如果是UI有问题可以截图

  6. 其它

    有些公式可能对故障进行分类或者是优先级进行分类,严重影响测试的故障需要开发修改的,可以设置高的优先级

  7. 不要把多个bug放到一起

    如果是无法确定是同一段代码照成的故障,不要把bug放在一起!

示例:

标题:通过谷歌浏览器登录进入首页后,导航栏的信息有两行文字重叠
发现bug版本:Chrome版本: 113.0.5672.93(正式版本) (64 位)
发现bug环境:win10 Chrome
发现bug步骤:通过win10打开Chrome浏览器打开登录页面直接登录跳转首页
期望结果:跳转后首页右下角的两行文字正常间距展示
实际结果:跳转后首页的右下角的两行文字出现重叠
其它:(bug类型:前端问题,bug等级:次要)

3. Bug的级别

bug的定义不同的公司都不一致,在定义级别之前需要查看公式的规范

举几个列子:

  1. Blocker(奔溃)

    阻碍开发或者测试工作的问题,照成系统奔溃、死机、死循环甚至数据丢失,连接数据库出错,主要功能丧失,基本模块缺失等。比如:代码错误或者是发生死循环、死锁等,重要的一级菜单不能使用。不过这种问题在测试中是很少出现的,一般在开发阶段就会发现,但是如果一旦出现就应该立即终止当前版本测试

  2. Critical(严重)

    系统主要功能部分丧失、数据库保存数据调用错处、用户数据丢失,一级功能菜单不能使用但是不影响其他功能测试。功能设计与需求严重不符,模块无法调用或者启动,程序自动重启或退出,关联程序调用冲突、安全问题、稳定性等。比如:软件中数据保存后数据库中显示出错,用户所要求的功能缺失,程序的接口错误,数值计算统计错误等。(该类问题如果出现,在不影响其它功能测试的情况下可以继续测试该版本)。

  3. Major(一般)

    功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。比如:操作反应慢、查询数据时间长、格式有点问题、删除没有确认框,数据库表中字段多等(该问题在测试中存在是最多的)

  4. Minor(次要)

    界面或者是性能有缺陷,建议类问题,不影响功能的执行,可以优化性能的方案等。比如:错别字。界面根式不规范、页面显示重叠、不该显示的要影藏、描述不清楚。提示语丢失,文字排列不整齐,光标位置不正确、用户体验感受不好,就是一些优化建立类的问题。(这类问题在测试初期较多,优先级程度较低,在测试后期出现较少,应及时处理)

4. Bug的生命周期

不同的公司、不同的工具对bug生命周期的定义都是不一致的

下面是比较常见的bug生命周期的列子

在这里插入图片描述

  • NEW:发现新Bug,为经评审决定是否指派给开发人员进行修改
  • Open:确认是Bug,并且认为需要进行修改,指派个相应的开发人员修改
  • Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证
  • Rejected:如果认为不是Bug,则拒绝修改
  • Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改
  • Closed:修改状态的Bug经测试人员的回归验证并验证通过,则关闭Bug
  • Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改

5. 测试模型

1) 软件测试V模型

其实软件测试模型和瀑布模型也是非常类似的。

在这里插入图片描述

软件测试V模型从上到下是一个开发模型,而从下到上则是一个测试模型。

  • 概要设计一般设计整体架构、框架
  • 详细设计一般设计的是模块和模块之间的详细设计
  • 单元测试和继承测试通常由开发人员完成

其实这个软件测试V模型是有对应关系的,单元测试一般是参照详细设计进行的,继承测试是参照概要设计进行的,系统测试则是参照需求分析和系统进行的,最后的验收一般是有用户来验收的。

在这里插入图片描述

软件测试V模型的特点

  • 明确标注了测试的类型
  • 明确标注了阶段和开发阶段之间的对应关系

明显的缺点:就是测试被后置了,和瀑布开发模型有点类似,风险被推迟到测试时才发现,导致测试没有时间即时发现Bug导致Bug最后遗留给用户

2) 软件测试W模型(双V模型)

W模型又可以叫做双V模型,由两个V组成,一个是开发模型一个是测试模型。

在这里插入图片描述

W模型的优点: 测试从需求开始阶段就介入了

缺点:

  • 上一个阶段完成之后下一个阶段才能开始
  • 开发模型和测试模型也保持这一种前后的线性关系,看图可以看出只有等用户需求完成之后才能做验收做测试准备,需求分析完成后才能做系统测试准备,只有等编码完成之后才能开始单元测试等…

可以看出W模型也是重文档、重过程的一个模型,也就是说W模型是不支持敏捷模式的。

6. 合理判断性思维

避免和开发发生争执

  1. 具有批判性思维,多反思自己是不是bug描述的不清楚(无效的bug)
  2. bug的等级要有依据
  3. 合理友好的沟通,并站在用户的角度反问:如果你是用户你能接受这样吗?
  4. 不仅要提出问题,最好能够给出解决问题的方案

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux用户和组管理

1、用户和组简介 Linux 是多用户多任务操作系统。换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。不同用户具有不问的权限,毎个用户在权限允许的范围内完成不同的任务。 用户组是具…

进攻即是最好的防御!19个练习黑客技术的在线网站

前言 进攻即是最好的防御,这句话同样适用于信息安全的世界。这里罗列了19个合法的来练习黑客技术的网站,不管你是一名开发人员、安全工程师、代码审计师、渗透测试人员,通过不断的练习才能让你成为一个优秀安全研究人员。以下网站希望能给各…

智能排班系统 【技术选型与工具版本】

技术架构图 前端工具及环境 名称版本介绍NodeJS16.13.2开源、跨平台的 JavaScript 运行时环境Npm8.1.2npm包管理工具可以快速引入别人开发好的工具包进行使用Webpack4.0.0打包工具Vue2.6.14Vue 的核心库只关注视图层,易于上手,便于与第三方库或既有项目…

每日学术速递5.17

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.HACK: Learning a Parametric Head and Neck Model for High-fidelity Animation 标题:HACK:学习用于高保真动画的参数化头颈模型 作者:Longwe…

FEC功能在40G和100G光模块中的应用和注意事项

FEC(Forward Error Correction,前向纠错)功能是一种在数字通信中用于纠正传输过程中产生的误码的技术。在100G和40G光模块中,FEC功能被广泛应用于光纤传输过程中,以提高传输的可靠性和抗干扰能力。 本期文章我们主要介…

Twitter架构决策

技术决策需要在不同限制条件下做出权衡,本文介绍了Twitter早期应对用户大规模增长所做出的技术架构决策。原文:Twitter’s Tough Architectural Decision[1] Jeremy BezangerUnsplash 研究大规模互联网应用可以学到很多东西,像Netflix这样的公…

强大而可靠的DiskQ:持久化队列的解决方案

强大而可靠的DiskQ:持久化队列的解决方案 简介: 在软件开发中,处理大量数据和任务调度是常见的挑战。为了有效地处理这些问题,开发人员需要一种可靠的队列解决方案,以确保数据和任务在处理过程中不会丢失。DiskQ作为一种持久化队…

浏览器如果免费安装ChatGPT插件?

一、什么是ChatGPT? ​ ChatGPT是一种基于自然语言处理的机器学习算法,通过大规模的训练数据和优化算法来生成自然语言响应。目前,它在聊天机器人,自动回答问题,自动文本生成等方面有广泛的应用。ChatGPT是由OpenAI公…

[组合数学] 排列组合

文章目录 加法法则 --每一类都能够独立的完成任务乘法法则 --集合论 任务分步骤1000和9999之间有多个具有不同数位的奇数n 7 3 1 1 2 1 3 4 ^311^213^4 3112134 求除尽n的整数个数0到10000之间有多少个整数恰好是有一位数字是5两位数字可以组成多少两位互异且非零的两位数 减…

suricata中command的实现分析和自定义命令方法

suricata提供了suricatasc这个工具用来与其进行通信,比如修改规则文件后,通知suricata重新加载规则,就可以通过suricatasc下发重新加载规则命令,suricatasc和suricata通过unix socket进行通信,unix socke好处就是不占用…

libevent高并发网络编程 - 06_基于libevent的C++线程池实现

文章目录 1 功能简介线程池的初始化线程池执行流程 2 线程池类的设计线程类XThreadXThread.hXThread.cpp 线程池类XThreadPoolXThreadPool.hXThreadPool.cpp 任务基类taskXTask.h 3 自定义任务的例子自定义任务类ServerCMDServerCMD.hServerCMD.cpp 测试程序运行效果 1 功能简介…

华为机试(JAVA)真题Od【A卷+B卷】2023

目录 华为OD机试是什么?华为OD面试流程?华为OD机试通过率高吗?华为OD薪资待遇?华为OD晋升空间? 大家好,我是哪吒。 本专栏包含了最新最全的华为OD机试真题,有详细的分析和Java代码解答。已帮助…

【信息安全案例】——信息内容安全(学习笔记)

📖 前言:在数字化时代,信息内容安全问题越来越引起人们的关注。信息内容安全主要包括对数据的机密性、完整性和可用性的保护,以及对用户隐私的保护等方面。针对信息内容安全的威胁,采取科学有效的安全措施和技术手段至…

每日学术速递5.20

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Improved baselines for vision-language pre-training 标题:改进视觉语言预训练的基线 作者:Enrico Fini, Pietro Astolfi, Adriana Romero-Soriano, Jak…

10-《简单算法》

10-《简单算法》 一、时间复杂度二、空间复杂度三、排序算法1.比较排序1.1冒泡排序:1.2选择排序:1.3插入排序:1.4归并排序(非常重要)1.5快速排序(非常重要)1.6堆排序1.7排序算法稳定性 2.线性排序2.1桶排序2.2计数排序…

数据结构初阶(3)(链表:链表的基本概念、链表的类型、单向不带头非循环链表的实现、链表的优缺点 )

接上次博客:和数组处理有关的一些OJ题;ArrayList 实现简单的洗牌算法(JAVA)(ArrayList)_di-Dora的博客-CSDN博客 目录 链表的基本概念 链表的类型 单向、不带头、非循环链表的实现 遍历链表并打印节点值: 在链…

uni-app小程序uni.navigateBack返回上一个页面并传递参数.返回上个页面并刷新

返回上一个打开的页面并传递一个参数。有种办法就是使用 假如从B页面返回A页面: var pages getCurrentPages(); var prevPage pages[pages.length - 2]; //上一个页面 prevPage.setData({ mdata:1 })经过测试,在uni.app中使用B页面使用setData设置A页…

【Spring篇】AOP案例

🍓系列专栏:Spring系列专栏 🍉个人主页:个人主页 一、案例:业务层接口执行效率 1.需求分析 这个需求也比较简单,前面我们在介绍 AOP 的时候已经演示过 : 需求 : 任意业务层接口执行均可显示其执行效率(执行时长&…

如何选对适合你的FPGA?快速掌握选型技巧!

FPGA厂家和芯片型号众多,在开发过程中,特别是新产品新项目时,都会面临FPGA选型的问题。 如何选择出适合的FPGA型号非常关键,需要评估需求、功能、成本、存储器、高速收发器等各种因素,选出性能与成本平衡的FPGA芯片。…

从零玩转设计模式之外观模式-waiguanmos

title: 从零玩转设计模式之外观模式 date: 2022-12-12 15:49:05.322 updated: 2022-12-23 15:34:40.394 url: https://www.yby6.com/archives/waiguanmos categories: - 设计模式 tags: - 设计模式 什么是外观模式 外观模式是一种软件设计模式,它提供了一种将多个…