软件测试入门基础知识

news2024/11/25 6:34:30

目录

1.软件测试的定义

2.软件测试的生命周期

3.如何描述一个bug

4.bug的级别如何定义

5.bug生命周期

6.软件测试策略

7.软件测试模型

   7.1传统瀑布模型

   7.2V模型

   7.3W模型(双V模型)

   7.4敏捷模型

   7.5X模型


1.软件测试的定义

首先要明确测试的定义,所谓测试,就是以检验产品是否满足需求为目标。

而软件测试,自然是为了发现软件(产品)的缺陷而运行软件(产品)

比较标准的软件测试的定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。

IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

2.软件测试的生命周期

首先先来看软件的生命周期

然后根据软件的生命周期可以对比下图的软件测试生命周期

 

 3.如何描述一个bug

首先我们站在开发人员的角度看看测试人员描述bug不准确会带来什么问题?

1.描述bug不清晰,就一句话,没有具体的操作步骤。
比如:拨打电话出现死机。(就简单的一句话,就啥都没了,拨打什么号码–没写,在什么情况下拨打电话–没写)


2.提交的bug看不懂啥意思,不知所云。
这种bug只有测试工程师自己能看懂,别人根本看不懂,他却以为别人能懂。


3.没有写出现的概率
偶发的bug没有log和其他更多信息,有的bug概率很小,小到不影响用户使用,如果不写清楚,开发人员将浪费大量时间去定位问题。


4.bug发生的前提条件都不写。
比如:bug描述是充电图标显示重叠。但是没有写什么条件下出现,开机状态?还是关机状态?开发工程师懵逼,还要自己去一个个去试,浪费开发人员的时间,描述不详细但是测试工程师还觉得自己没毛病,一切挺好。


5.bug等级乱定位
比如一个很小的甚至是建议性的问题,把bug等级提到最高。软件开发一看,全是致命性1级bug,仔细一看很多小问题也被提为1级bug,此时开发人员的心情肯定的奔溃的。


6.测试工程师描述bug,却不写预期结果。

开发都不知道要修改成什么样,一脸懵逼。结果开发理解错了,修改的结果不是预期的结果,这就浪费开发的时间了,你想想此刻开发人员的心情是怎样的?


7.出现问题的软件版本没写清楚,开发人员不知道是在哪个软件版本出现的。

所以正确的bug描述才是开发人员和测试人员好的沟通方式

1.bug标题要简洁明了,不要啰嗦一堆


2.要写出现问题的前提条件。

什么情况才会出现,必须要写清楚。


3.操作步骤要分步骤一步步写清楚,不要怕麻烦。比如步骤1,步骤2,步骤3。


4.要写实际结果和预期结果,让开发清楚要修改bug到达的预期效果。


5.要写出现的概率,比如操作10次出现1次。


6.提供必要的截图和log,甚至复杂的操作步骤要提供视频。

7.bug等级要分类好,致命性bug、严重bug、一般性bug、建设性意见,必须严格按照标准划分。


8.出现bug的软件版本号,要写清楚。

例如:

 

 4.bug的级别如何定义

Blocker(崩溃):

阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等

Critical(严重):

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

Major(一般):

功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等

Minor(次要):

界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等

5.bug生命周期

发现BUG-->提交BUG-->指派BUG-->研发确认BUG-->研发去修复BUG-->回归验证BUG-->是否通过验证-->关闭BUG

 

 

6.软件测试策略

1、选择测试方法:选择最合适当前项目的测试方法(比如项目紧急的时候?项目频繁发版)(例如:重复测试的工作可以采用自动化测试)

2、角色和职责:需要在测试策略里面明确定义各个角色,以及该角色的职责。比如项目经理、测试组长、测试工程师。

3、环境需求:这一点非常重要,它将描述测试时需要的系统环境(软件,服务器Linux,windows,数据库MySQL),包括软硬件以及网络环境等等。在澄清环境需求的时候,测试组织可以识别出资源方面的风险。

4、风险分析:影响测试过程的风险都应该尽早被识别出来,而且必须有相应的解决办法以便消除或减轻这些风险。(例如:人员休假、软件是否完成)

5、测试进度评估:测试进度将会评估完成测试所需要的时间。在设定进度的时候,首先需要明测试范围(比如说这次增加一个D模块,部分功能会影响原来已经上线的B模块的功能)然后根据测试资源的多少来指定能被各方面认可的测试进度计划。

6、回归测试(Regression Testing)策略:回归测试用来保证之前fix bug的代码不会影响软件的其他部分,这样需要我们选择已经执行过的测试用例重新运行。测试人员需要找到一个方法来确定哪些测试用例应该在回归测试中运行,用例不能太多,因为资源有限,用例也不能太少,否则会达不到必须的测试强度。

7、优先级:测试范围内的东西不会都是一样重要的,加上测试资源各种有限,所以为测试的模块排定优先级是十分的必要。

 7.软件测试模型

   7.1传统瀑布模型

 

优点:

强调需求,设计的作用,前一阶段完成后只需关注后续阶段;

为项目提供按阶段划分的检查点,里程碑清晰
缺点:

线性研发过程难以适应需求的频繁变化

项目周期后段才可看到成果,用户要到末期才能看到开发结果,增加了开发的风险

强制的里程碑,对于开发过程中出现的变化,适应能力较差,

文档工作量较大,测试在项目的后期,文档的开发带来很大的工作量。

   7.2V模型

优点:

  在V模型里,强调软件开发的协作和速度,反应测试活动和分析测试的关系,并且将软件的实现和验证有机的结合了起来,V模型,明确的界定测试过程是存在不同阶段的。

缺点:

  但是V模型也有一定的局限性,它仅仅把测试过程放在需求分析、系统设计、编码之后的一个阶段,忽视了测试对于需求的分析和验证。我们对需求的验证,对系统设计的验证,到后期的验收测试才有可能被发现,对于我们测试当中的测试需要尽早进行的原则在V模型中没有体现,这是V模型的局限。

   7.3W模型(双V模型)

 

优点:开发与测试并行,有利于尽早发现问题,有利于及时的了解项目的测试风险,来及早的执行相应的应对方案,加快项目的进度。

局限性:需求、设计、编码仍然是串行进行的,测试和开发保持线性的关系,上一个阶段完成之后才能进行下一个阶段,不能够很好的支持迭代的开发模型。

   7.4敏捷模型

敏捷模型是在互联网的快节奏下应运而生的,也是当前最为主流的开发测试模型。

举一个例子:

以抖音为例,在需求分析阶段,先收集用户的需求:市场上目前缺少短视频的APP,同时,有了今日头条的成功,能不能沿用它的设计思路,将展现形式由文字转变为短视频,通过标签推荐的算法,向用户推送他可能感兴趣的短视频呢?

基于这样的需求,形成需求文档,接下来,产品经理拉着团队里开发、测试、设计一起做需求评审。

除了开发根据需求文档做开发计划之外,与此同时,测试人员由于更早的介入到软件项目当中,也可以根据需求文档开始编写测试计划了。

形成测试计划之后,开始着手测试用例的设计与开发。

跟传统的瀑布模型、V模型不同,等到开发人员提测的时候,测试用例已经设计开发完成,可以直接开展测试工作。

执行测试的过程中,发现了 bug 立即反馈给开发团队进行修复,修复后进行回归测试,直到全部测试用例通过,由产品经理来验收。

以上就是关于敏捷模型的介绍

    7.5X模型

左边描述的是针对单独的程序片段相互分离的编码和测试,此后进行频繁的交接,再通过集成,最终合成可执行的程序,对这些程序进行测试,这些程序还是需要冀衡测试,已经通过的程序可以进行封板提交给用户,也可以作为更大集成的一部分,X模型还定位了探索式测试,探索式测试是不进行事先计划的特殊类型的测试,能够帮助测试人员在测试计划之外发现更多的错误。 

 

 

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

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

相关文章

systemVerilog基础9——类的继承

1、 描述子类继承父类的关键词:extends 之前定义过的类Packet,可以进一步扩展构成一个它的子类LinkedPacket。类Packet的定义如下: class Packet ;//class定义类 类名 packet//类 packet的成员//数据或类属性bit [3:0] command; bit [40:0] …

【css】背景图片附着

属性&#xff1a;background-attachment 属性指定背景图像是应该滚动还是固定的&#xff08;不会随页面的其余部分一起滚动&#xff09;。 background-attachment: fixed&#xff1a;为固定&#xff1b; background-attachment: scroll为滚动 代码&#xff1a; <!DOCTYPE h…

TypeScript基础学习

目录 一、安装 1、下载国内镜像 2、安装 3、查看安装情况 4、使用例子 二、变量声明 1、规则 2、声明的四种方式 3、注意 4、类型断言 5、类型推断 6、变量作用域 三、基础类型&#xff08;共11种&#xff09; 1、Any 类型 2、Null 和 Undefined 3、never 类型…

医药化工企业洁净厂房改造消防防爆安全的重要性

设计 【摘要】&#xff1a;近年来&#xff0c;我国医药化工企业规模不断扩大。医药化工企业的情况复杂&#xff0c;稍有不慎将发生火灾或者爆炸&#xff0c;对人员生命以及财产安全造成巨大的损害&#xff0c;酿成悲剧。所以&#xff0c;“三同时”原则的落实&#xff0c;如何…

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码&#xff0c; 后端是java源码。

tinkerCAD案例:30. 冰球挑战赛

tinkerCAD案例&#xff1a;30. 冰球挑战赛 这些简单易学、循序渐进的 Tinkercad 课程将指导你设计出属于自己的超棒曲棍球冰球&#xff1b;这些设计将性能和风格推向了极限&#xff01; 本课有两个目标利用科学方法提高曲棍球球的性能。通过在冰球上添加图案&#xff0c;发挥设…

rust怎么搞的,这么简单的代码也报“borrow of moved value“?

奇了怪了&#xff0c;这么简单的代码也编译不过&#xff1f; let hello String::from("hello");let world hello;hello.push_str("world"); // error[E0382]: borrow of moved value: hello看下完整报错 error[E0382]: borrow of moved value: hello--&…

picgo 图床 七牛云的设置

网站 PicGo github Molunerfinn/PicGo: &#x1f680;A simple & beautiful tool for pictures uploading built by vue-cli-electron-builder PicGo/Awesome-PicGo: A collection of awesome projects using PicGo. 设置 AcccessKey (AK) SecretKey(SK) 在个人中心&…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 三)

Link装饰器&#xff1a;父子双向同步 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 概述 Link装饰的变量与其父组件中的数据源共享相同的值。 装饰器使用规则说明 Link变量装饰器 说明 装饰器参数 无 同步类型 双向同步。 父组件中State, Stor…

无法访问Microsoft Store

可以先试试把代理工具关了 如果不行 winr, 输入inetcpl.cpl 勾上TLS 1.1,TSL1.2 重启&#xff0c;再试试

react学习笔记——1. hello react

包含的包一共有4个&#xff0c;分别的作用如下&#xff1a; babel.min.js&#xff1a;可以进行ES6到ES5的语法转换&#xff1b;可以用于import&#xff1b;可以用于将jsx转换为js。注意&#xff0c;在开发的时候&#xff0c;这个转换&#xff08;jsx转换js&#xff09;不在线上…

杨辉三角,给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

题记&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: …

千元内初学者吉他买什么好?SAGA萨伽SF700和VEAZEN费森VZ200评测对比,哪一款更出众适合新手入门选购!

大部分了解过相关吉他知识或者有点音乐意识的初学者&#xff0c;都会摒弃烧火棍去选择买一把千元单板&#xff0c;亦或者少数资金充足的琴友会选择更贵的吉他。所以翻阅很多有关吉他推荐的帖子&#xff0c;我们可以看到在千元的价位里&#xff0c; **VEAZEN费森VZ200和 SAGA萨伽…

ZeRO Memory Optimizations Toward Training Trillion Parameter Models

1总述 Zero Redundancy Optimizer: 提高了可以被有效训练的模型的大小&#xff0c;极大提高了模型训练的速度。 保持了较小的通信量保持较高的计算粒度 数据并行DP 并没有减少每个device上的内存占用当模型有1.4B 参数时&#xff0c;就会超过GPU的32GB显存通过PP, MP&#…

P4D编程遇到乱码?别急,这里有解决方案!

P4D简介&#xff1a; P4D&#xff08;Python for Delphi&#xff09;是一种用于在Delphi开发环境中嵌入Python的技术&#xff0c;它允许开发人员使用Python语言编写脚本和模块&#xff0c;然后将其集成到Delphi应用程序中。这使得开发人员可以利用Python的强大功能来扩展和增强…

JavaWeb(7)——前端综合案例1(面向对象)

一、需求 JS进阶-day3-184-综合案例-模态框构造函数写法 二、 实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta…

Meta AI研究团队新AI模型:Segment Anything图像分割任务

Segment Anything是Meta AI研究团队开发的一种新的AI模型&#xff0c;用于图像分割任务。该模型可以对任何图像中的任何对象进行分割&#xff0c;即将对象从图像中"剪切"出来。Segment Anything模型&#xff08;SAM&#xff09;是一个可提示的模型&#xff0c;可以根…

Linux常用命令——dpkg-preconfigure命令

在线Linux命令查询工具 dpkg-preconfigure Debian Linux中软件包安装之前询问问题 补充说明 dpkg-preconfigure命令用于在Debian Linux中软件包安装之前询问问题。 语法 dpkg-preconfigure(选项)(参数)选项 -f&#xff1a;选择使用的前端&#xff1b; -p&#xff1a;感兴…

我国科学家揭秘河蚌铰链耐疲劳的秘密

《科学》杂志发表了中国科学技术大学俞书宏院士团队联合吴恒安教授团队的研究成果。他们揭示了河蚌铰链耐疲劳的奥秘&#xff0c;并提出了一种耐疲劳材料设计的新思路。 在此次研究中&#xff0c;研究人员探明了河蚌铰链中折扇形组织的设计原理&#xff0c;发现这种生物组织在河…

【Redis】内存数据库 Redis 基础

目录 内存数据库Redis概念Redis 安装Redis的启动方式Redis命令行客户端 Redis通用命令Redis key结构Redis value数据类型String 和基础操作Hash 和基础操作List 和基础操作Set 和基础操作Sorted_set 和基础操作 Redis的Java客户端Jedis客户端SpringDataRedis客户端自定义RedisT…