软件测试基础详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

“尽早的介入测试,遇到问题的解决成本就越低” 

随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,探索测试,破坏程序的过程,测试活动贯穿于整个软件生命周期中,故称为全程软件测试

全程软件测试,强调整个软件生命周期中,各阶段的测试活动。无论是需求阶段,开发阶段,还是测试阶段,都需要确定在当前阶段测试活动的内容以及成都,确保每个阶段的质量,才能保证产品最终的质量。

全程软件测试


全程软件测试图解

根据全程软件测试的时间轴线图,我们可以发现测试活动贯穿软件开发的整个生命周期,各个阶段测试活动内容如下:

那每个测试活动又到底是如何进行的?需要用的哪些技能或者方法呢?

需求阶段

一、测试需求分析

我个人一直认为需求分析是整个测试活动中除了测试用例设计之外最重要的部分。

  • 需求分析目的是理解需求,理解业务。
  • 弄清楚我们的产品有哪些功能?有哪些非功能性需求?
  • 明白我们的用户群体是什么?用户会如何来使用我们的产品?

那我们到底该怎么来进行需求分析呢?

具体执行如下:

二、测试计划制定

当对需求有完整和全面的理解后,接下来我们需要制定详细的测试计划,为即将开始的测试工作做好充足的准备。对于测试计划的理解,我一直分为两种工作规模去看(个人理解,不正确的地方还请见谅)

小公司团队

小公司测试团队可能本身都没几个人,按照传统理论需要考虑测试活动中各方面的问题,给人的感觉就像杀鸡用3米长的大砍刀一样。

我的理解是小团队的测试计划讲清楚以下四个要素就行。

  • 时间:根据以往经验以及需求理解进行时间估算(小建议:时间节点多争取1到2天时间缓冲,项目过程中难免出现意外事件)
  • 任务:将测试活动拆分成具体的任务
  • 人:任务的执行人以及质量监控负责人
  • 风险控制

大作坊团队

大公司测试团队往往是涉及多个项目,整个公司的硬件、时间、人力等资源的分配就更为复杂。在这种情况下,需要对各方面有更为精细的计划。

  • 资源估算:整个项目需要多少资源?硬件资源,人力、时间资源等
  • 进度控制:每个测试活动时间点控制
  • 风险控制:对于在测试活动过程中出现问题的解决方案
  • 资源配置:如何更有效率的使用资源
  • 验收标准:文档、项目、测试过程的验收标准定义
  • 测试策略:测试中使用的测试策略

小结:

在需求分析阶段,测试人员既要详细的理解产品需要,又要从用户的角度出发,分析出需求中不完善的地方,还要协调开发与测试对于需求理解的一致性,保证需求信息在开发和测试双方中的统一。

这也就是尽早的将产品缺陷给暴露出来,也会有效的预防缺陷。

开发阶段

在经过需求阶段的准备工作后,进入开发阶段就意味着撸起袖子加油干的时候。开发阶段对于软件生命周期而言是最重要的阶段。那在这个阶段,又是如何开展测试活动的呢?

一、测试用例设计

测试用例设计是软件测试工作的灵魂。

任何一项测试活动的核心都是测试思维,即如何进行测试。而测试用例就是测试思维的体现。功能的测试优先级、如何操作、输入什么数据、应该有什么的结果等等都体现在测试用例中。那么问题来了

到底怎么设计测试用例呢?

(由于篇幅原因,这次我主要介绍一下接口测试用例设计方法)

首先,我们来看一看接口的执行过程

任何一个接口其实都由这三部分构成,那我们在设计测试用例时就可以根据这方面进行考虑。

针对接口的输入条件进行设计:

针对接口的处理逻辑进行设计:

针对输出结果设计:

其他方面考虑:

  • 接口超时处理
  • 废弃接口处理

二、测试用例评审

测试用例的评审无疑是为了给测试用例进行查漏补缺。

评审方式:

  • 测试内部评审
  • 项目组评审:项目相关人参与评审(开发、测试、产品)

注意:

项目组评审时,一般是会议的形式,由于测试用例的数量关系,会议上评审会占用很长的时间,造成时间资源的浪费。

建议大家在评审前先将测试用例邮件发送给评审会议相关人,让他们提前能对测试用例进行了解,熟悉。会议中进行反馈,记录后,会后再修改。

三、测试执行

前面的工作做的充足的话,在测试执行的时候就会非常简单了。只需要根据测试用例一条一条去执行程序即可。发现缺陷就提交缺陷,测试通过就继续回归。

各位看官现在应该是心里一万个XXX呼啸而过~~哪有说的那么简单。

其实测试执行的过程真的很简单,只是在执行的过程中各部门的协作,沟通以及各项文档的输出很复杂。下面我们来聊聊在测试执行过程要注意的几方面问题。

1、测试与开发的沟通

 “XXX 我这有个问题,你过来看下”

 “什么问题?你演示下我看看”

 “这不是问题,这个地方只能这样做”或者 “这不是问题,我刚刚跟需求确认过的”

 “这样做不合逻辑啊!”

 “那你说怎么处理?” 

 “我觉得应该....处理”

“你先跟需求确认下吧”

这应该是测试工程师的日常吧。测试与开发沟通无疑是关于某个功能或者产品的,主要围绕几个以下几个点:

  • 程序某个地方存在问题
  • 产品需求信息在测试和开发中不统一
  • 程序某功能应该是怎么处理
  • 缺陷修复后的验证

既然知道问题的核心,我们就要想办法规避这些问题。假设一开始提问题的时候就把问题的特征,位置,以及操作步骤,截图都一目了然的提交给开发,是不是很大程度上可以节省测试演示的时间?

另一个最容易出现的问题就是信息不统一,这个需要整个项目组有意识的培养健全的工作流程,通过工作流程来规避这种信息不对称的情况。这种情况将大大增加测试与开发的沟通成本。

2、测试与需求的沟通

测试人员与需求的沟通难点主要还是体现在需求不明确或者需求变更上。 

很多时候需求人员的需求文档都是不全面的,测试人员在写测试用例时需要一次又一次的与需求进行确认,一来二去,需求估计有种想把桌子里40米长的大刀放桌上来。

另一方面在项目过程中,不可避免的会出现需求变更,只要出现变更就意味着之前的测试准备工作就作废。

所以在与需求的沟通是非常频繁又火星四溅的,那怎么更好的与需求进行沟通呢?

  • 切记不能停留在口头沟通,确认
  • 所有的需求确认或者需求变更都需要文档化,实在不行也需要发邮件
  • 每一次确认、变更都需要通过项目相关人
  • 建立完善的需求变更体系,流程上控制需求变更

3、测试结果的反馈

相信大家应该遇到过偶现的缺陷,开发重现时就没有了,忙活了半天,被开发嫌弃了一顿

测试结果的反馈容易出现问题的地方就是结果描述不清楚,增加项目的时间和沟通成本。解决这个问题最好的办法就是将测试结果尽可能的描述清楚。

测试结果反馈分为两种:

  • 在沟通工具中向开发反馈缺陷
  • 在缺陷管理工具中提交缺陷

到底怎样提交/描述清楚一个缺陷?在下文中,我会详细介绍。 

四、缺陷管理 

在开发阶段,测试人员最重要的产出就是缺陷。缺陷不仅仅是数量多,就越有价值。更应该关注缺陷的质量、缺陷的管理以及缺陷分析。

怎么样提出质量高的缺陷?怎么样对缺陷进行管理和分析?见下图

缺陷处理流程图

缺陷管理是软件测试活动中极其重要的一环,很多时候测试用例并没有发现多少缺陷,反而自己在运行程序的过程中发现了很多缺陷,那这些缺陷就是对测试用例的补充,对之后的测试就可以提供思路。

小结:

在开发阶段,测试人员最主要的工作就是发现缺陷,但是在这个过程中会伴随着很多其他的问题,需要我们在工作流程中去规避。最重要的就是把测试放在整个项目中,是各个部门的团队协作。

很多团队的问题并没有出在测试用例设计,测试执行,缺陷提交中,更多的出现在各部门之间的沟通、协作中。

发布阶段 

进入发布阶段就意味着产品已经通过了测试,可以发布到线上,交付给用户使用。那如何确认测试已经通过?在发布过程中,我们测试人员又需要完成哪些工作?

测试通过准则规范

上线前,需要确认测试已经通过,现在程序越来越复杂,如果没有量化的规范,就很难确定测试到什么时候可以上线。所以我们需要设定测试通过的准则,只有达到准则才能上线

测试需求功能覆盖率100%

测试用例通过率95%以上

遗留缺陷没有严重程度3级以及以上的缺陷

测试报告

完成测试后,提交测试报告,给出此次测试过程中的数据,例如:测试用例的数量,发现缺陷的总数,各个严重程度的缺陷数量,总共修复的缺陷数量以及缺陷修复率等等

系统回滚方案

每一次发布都不能说百分之百的没有问题,如果真的出现问题,我们该如何处理?

如果线上出现的问题不是很严重,尽量当时处理掉再上线

如果线上出现的问题很严重,就必须要系统回滚,保证线上用户的正常使用

系统回滚方案须跟开发/项目经理确认

线上功能检查

程序原有功能的回归测试

新上线的功能全面测试

小结:

每一次发布后,测试人员都应该持续反馈,改进、总结每个版本中遇到的问题,不管是缺陷还是流程问题,从一次次的问题中总结一些经验,提高整个软件生命周期的质量

日常维护阶段 

产品上线后,用户能稳定的长期使用,就意味着发布的功能进入到日常维护阶段。而这里并不是终点,这个阶段将一直存在。

在这个阶段,测试人员的主要工作就比较简单

  • 持续测试,没有产品是没有缺陷的
  • 即使收集用户反馈的问题,并尽快组织人员修复
  • 长时间稳定性测试(自动化测试)

总结 

全程软件测试,关注的是在整个软件生命周期中,各个阶段的测试活动。

通过对各个阶段的过程质量把控,从而提高产品的测试质量。产品的质量并不是测试能决定的,而是整个项目构建过程中,通过一次次的优化过程,不断的总结成长,是整个项目团队决定的。

不同的工种都在这个过程中起到举足轻重的作用,而全程软件测试强调不断提高每个阶段的质量,最终提高项目团队的综合能力,从而提高产品质量。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

​这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

人工智能知识分享第六天-机器学习_​逻辑回归(Logistic Regression)

简介 在机器学习中,分类问题是一种常见的任务,目标是根据输入特征将数据点分配到不同的类别中。为了实现分类,我们需要训练一个分类器,该分类器能够根据输入数据的特征进行预测。 逻辑回归(Logistic Regression&…

OpenCV-Python实战(11)——边缘检测

一、Sobel 算子 通过 X 梯度核与 Y 梯度核求得图像在,水平与垂直方向的梯度。 img cv2.Sobel(src*,ddepth*,dx*,dy*,ksize*,scale*,delta*,borderType*)img:目标图像。 src:原始图像。 ddepth:目标图像深度,-1 代表…

Docker- Unable to find image “hello-world“locally

Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…

【UE5 C++课程系列笔记】19——通过GConfig读写.ini文件

步骤 1. 新建一个Actor类,这里命名为“INIActor” 2. 新建一个配置文件“Test.ini” 添加一个自定义配置项 3. 接下来我们在“INIActor”类中获取并修改“CustomInt”的值。这里定义一个方法“GetINIVariable” 方法实现如下,其中第16行代码用于构建配…

互慧-急诊综合管理平台 ServicePage.aspx 任意文件读取漏洞复现

0x01 产品简介 互慧急诊急救快速联动平台,是用于管理门诊急诊病人的系统,主要包括门诊急诊业务和急诊物资管理两部分,其中门诊急诊业务主要包括院前急救、院内抢救、留观监护、绿色通道、预检分诊等;急诊物资管理包括急诊药品管理、急诊设备管理、抢救车管理、急救箱管理、…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(五)

****非斜体正文为原文献内容(也包含笔者的补充),灰色块中是对文章细节的进一步详细解释! 五、 解释评估(Explanation Evaluation) 在前面的章节中,我们介绍了不同的解释技术和它们的用途&#…

pyside6-deploy 提示相对路径错误

Pyside6.5的nuitka_helper.py中的 qml_args.extend([f"--include-data-files{qml_file}./{qml_file.relative_to(source_file.parent)}"for qml_file in qml_files])在qml_file为相对路径的时候会报错。通过增加resolve()来强制转为绝对路径

Echart实现3D饼图示例

在可视化项目中,很多地方会遇见图表;echart是最常见的;这个示例就是用Echart, echart-gl实现3D饼图效果,复制即可用 //需要安装,再引用依赖import * as echarts from "echarts"; import echar…

Linux之ARM(MX6U)裸机篇----6.BSP工程管理实验

一,BSP工程管理 定义:是为了模块化整理代码,相同属性的文件存放在同一个目录下。 ①先mkdir多个文件夹er ②把共同.h文件转移到指定文件夹下 二,启动文件 .global _start /* 全局标号 *//** 描述: _start函数&am…

vue使用vue-seamless-scroll进行轮播滚动展示内容

我这里只是记录下一些基本的东西,具体大家可以查看官网介绍,有更详细的使用文档(目前有vue和js版本): https://chenxuan0000.github.io/vue-seamless-scroll/zh/ 安装组件: npm install vue-seamless-scro…

HTML——58.value和placeholder

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>value和placeholder属性</title></head><body><!--input元素的type属性&#xff1a;(必须要有)1.指定输入内容的类型2.默认为text,单行文本框-->&l…

C语言面的向对象编程(OOP)

如果使用过C、C#、Java语言&#xff0c;一定知道面向对象编程&#xff0c;这些语言对面向对象编程的支持是语言级别的。C语言在语言级别不支持面向对象&#xff0c;那可以实现面向对象吗&#xff1f;其实面向对象是一种思想&#xff0c;而不是一种语言&#xff0c;很多初学者很…

使用C#构建一个论文总结AI Agent

前言 我觉得将日常生活中一些简单重复的任务交给AI Agent&#xff0c;是学习构建AI Agent应用一个很不错的开始。本次分享我以日常生活中一个总结论文的简单任务出发进行说明&#xff0c;希望对大家了解AI Agent有所帮助。任务可以是多种多样的&#xff0c;真的帮助自己提升了…

vs 2022 中xml 粘贴为Class 中,序列化出来的xml 的使用

上图是visual studio 2022 中使用的粘贴功能的菜单位置 在生成的xml 中&#xff0c;有些是类似如下类型的 [System.Serializable] [System.Xml.Serialization.XmlType] public class Item {private bool isVisibleField;private bool isVisibleFieldSpecified;[System.Xml.Se…

代际超越:方太冰箱勾勒“蛙跳模型”轮廓

文&#xff1a;互联网江湖 作者&#xff1a;志刚 每一代人&#xff0c;都有其独特的新需求、新创造和新使命。 曾经的手机领域&#xff0c;苹果以其革命性创新颠覆了诺基亚的塞班系统&#xff0c;惊艳了整个行业。而如今&#xff0c;华为凭借其三折叠和自主研发的鸿蒙系统&am…

spring-boot启动源码分析(二)之SpringApplicationRunListener

在上一篇《spring-boot启动源码分析&#xff08;一&#xff09;之SpringApplication实例构造》后&#xff0c;继续看了一个月的Spring boot启动源码&#xff0c;初步把流程看完了&#xff0c;接下来会不断输出总结&#xff0c;以巩固这段时间的学习。同时也希望能帮到同样感兴趣…

Linux-Redis哨兵搭建

环境资源准备 主机名IP端口号角色vm1192.168.64.156379/26379mastervm2192.168.64.166379/26379slavevm3192.168.64.176379/26379slave 6379为redis服务暴露端口号、26379为sentinel暴露端口号。 安装Redis # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2…

MySQL 03 章——基本的SELECT语句

一、SQL概述 &#xff08;1&#xff09;SQL背景知识 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是使用关系模型的数据库应用语言&#xff0c;与数据直接打交道不同的数据库管理系统生产厂商都支持SQL语句&#xff0c;但都有特有内容 …

[羊城杯 2024]1z_misc

得到FL4G.zip和天机不可泄露.txt文件&#xff0c;其中压缩包需要解压密码&#xff1a; 二十八星宿&#xff1a; 东方苍龙七宿&#xff1a;角、亢、氐、房、心、尾、箕 南方朱雀七宿&#xff1a;鬼、井、柳、星、张、翼、轸 西方白虎七宿&#xff1a;奎、娄、胃、昴、毕、觜、…

QT----------多媒体

实现思路 多媒体模块功能概述&#xff1a; QT 的多媒体模块提供了丰富的功能&#xff0c;包括音频播放、录制、视频播放和摄像头操作等。 播放音频&#xff1a; 使用 QMediaPlayer 播放完整的音频文件。使用 QSoundEffect 播放简短的音效文件。 录制音频&#xff1a; 使用 QMe…