测试——基础篇

内容纲要:

软件测试的生命周期

如何描述一个bug

如何定义bug的级别

bug的生命周期

如何开始第一次测试

测试的执行和bug管理

产生争执怎么办

1. 软件测试的生命周期

需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估

  • 需求分析:需求是否正确,是否可行
  • 测试计划:项目什么时候开始测试,结束测试,由谁测试
  • 测试开发:设计测试用例,开发测试工具
  • 测试执行:执行测试用例,发现bug,提交bug,验收bug
  • 测试评估:测试人员需要产出一个测试报告

测试报告:

项目名称,项目代码地址,开发人员,测试人员,项目计划,测试用例,bug......

文档:

以邮件方式周知到项目相关人,整个产品,开发,测试团队

问:

测试执行阶段要用到的测试方法确定了吗?

答:

确定了,在测试计划已经选择了测试方法

 

2. 如何描述一个bug

 一个合格的bug描述应该包括以下几个部分:

  • 发现问题的版本
  • 问题出现的环境
  • 错误重现的步骤
  • 预期行为的描述
  • 错误行为的描述
  • 其他
  • 不要把多个bug放到一起

举个例子:

版本:V1.0

环境:浏览器

错误重新的步骤:输入账号123,密码123(均正确)

预期行为:登录成功,跳转到首页

错误行为:跳转到列表页面

优先级:严重

3. 如何定义bug的级别(依公司而定)

①Blocker(崩溃):

阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。

如:代码错误、死循环、数据库发生死锁等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。

②Critical(严重):

系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用等。

如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。

③Major(一般):

功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。

如:格式错误、边界条件错误等(该问题实际测试中存在最多)

④Minor(次要):

界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。

如:错别字、界面格式不规范(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

 

4. BUG的生命周期

 

注: 

  • Delay的BUG不是不修复,只是当前版本不修复,但是未来一定要修复.
  • 如果出现了Delay和Rejected这种BUG,QA一定要将这些BUG告知给相关人,以及项目相关人的Leader.
  • 发送测试报告时一定要指出Delay和Rejected这种BUG. 

5. 如何开始第一次测试

5.1 测试的准备工作

  • 阅读所有项目有关的文档,包括:需求文档、设计文档、用户手册
  • 尽可能参加各种项目会议,了解项目的背景、人员组成、尽可能的了解需求和业务。特别针对业务专业性较强的项目,例如银行业务,需要了解各种业务知识,如高低柜等。
  • 熟悉项目所使用的测试管理工具、配置管理工具,获取对应的地址和登录方式
  • 阅读已有的测试方案和测试案例
  • 阅读旧有的bug库,了解系统功能。尤其重要的是和现有的测试团队保持一致的故障定级原则
  • 了解公司的规范要求,特别是用例编写规范、用例执行规范、bug提交规范、测试工具工具使用规 范等

5.2 具体的工作内容

  • 测试的计划是什么?
  • 测试的内容是什么?test case有多少?安排了几天执行?有没有自由测试的时间?
  • 我要测试的内容开发人员是谁?需求人员是谁?
  • 分配给我的测试内容是否需要特殊的测试资源?资源是否满足需要?

之后就可以开始执行测试了......

6. 测试的执行和BUG管理

6.1 进行测试

  1. 打开待测试的系统
  2. 打开测试管理工具用例模块,开始执行用例
  3. 发现bug!进行复现并确认bug的复现步骤
  4. 记录bug
  5. 沟通bug
  6. 验证以前提交的bug
  7. 确认本次测试完成
  8. 编写测试报告 

6.2 如何发现更多的BUG 

  • 软件测试同样存在二八原则,80%的故障集中于20%的模块,如果某部分问题较多,加强测试广度和深度!(某些复杂逻辑的模块容易出现BUG)
  • 开发人员也存在二八原则,80%的故障集中于20%的开发人员,如果某些开发人员的bug较多,加强他开发模块的测试广度和深度!(某些开发人员开发质量低)
  • 多进行逆向思维和发散性的思维
  • 不要局限于用例和需求文档(是依据,不完全依赖)
  • 尽早介入项目

7. [重点]产生争执怎么办(处理人际关系)

问:当你发现了一个BUG,但是开发却认为这不是一个BUG,怎么办?   

①先检查自身,是否bug描述不清楚

②站在用户角度考虑问题,问:如果你是用户,你可以接受么?

③BUG定级要有理有据

④提高自身的技术和业务水平. 不光要提出问题, 最好也能提出解决方案

案例:

某网站经常隔几天访问时会出现500错误,但是之后就不会复现。

测试人员会提出问题:网站偶发性出现500错误。

开发人员回答:不常见,不影响使用,暂不修改

资深测试人员提出问题:网站偶发性500错误,查看日志,是由于mysql数据库8小时超时问题造成。需要修改 连接池配置定期校验连接

开发人员处理:修改xml,增加校验配置项

⑤开发人员不接受时,不要争吵

⑥三方讨论会

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

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

相关文章

Qt基础 | Qt全局定义 | qglobal头文件中的数据类型、函数、宏定义

文章目录 一、数据类型定义二、函数三、宏定义 QtGlobal头文件包含了 Qt 类库的一些全局定义 ,包括基本数据类型、函数和宏,一般的Qt类的头文件都会包含该文件。 详细内容可参考:https://doc.qt.io/qt-5/qtglobal.html 一、数据类型定义 为了…

《Python机器学习项目实战》书籍介绍

文章目录 书籍介绍主要内容书籍目录 书籍介绍 《Python机器学习项目实战》带领大家在构建实际项目的过程中,掌握关键的机器学习概念!使用机器学习,我们可完成客户行为分析、价格趋势预测、风险评估等任务。要想掌握机器学习,需要…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…

网络准入控制设备是什么?有哪些?网络准入设备臻品优选

小李:“小张,最近公司网络频繁遭遇外部攻击,我们得加强一下网络安全了。” 小张:“是啊,我听说实施网络准入控制是个不错的选择。但具体什么是网络准入控制设备?我们有哪些选择呢?” 小李微笑…

数据结构历年考研真题对应知识点(哈夫曼树和哈夫曼编码)

目录 5.5.1哈夫曼树和哈夫曼编码 1.哈夫曼树的定义 2.哈夫曼树的构造 【分析哈夫曼树的路径上权值序列的合法性(2010)】 【哈夫曼树的性质(2010、2019)】 3.哈夫曼编码 【根据哈夫曼编码对编码序列进行译码(201…

乘积量化pq:将高维向量压缩 97%

向量相似性搜索在处理大规模数据集时,往往面临着内存消耗的挑战。例如,即使是一个包含100万个密集向量的小数据集,其索引也可能需要数GB的内存。随着数据集规模的增长,尤其是高维数据,内存使用量会迅速增加&#xff0c…

达梦 ./disql SYSDBA/SYSDBA报错[-70028]:创建SOCKET连接失败. 解决方法

原因 达梦命令./disql SYSDBA/SYSDBA默认访问端口5236,如果初始化实例的时候修改了端口,需要指定端口访问 解决 ./disql SYSDBA/SYSDBA192.168.10.123:5237

数据结构(5.2_1)——二叉树的基本定义和术语

二叉树的基本概念 二叉树是n(n>0)个结点的有限集合: 或者为空二叉树,即n0;或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树又分别是一颗二叉树。 特点:每个结点至多只有两颗字数;左子树不能颠倒(二叉树…

09 深度推荐模型演化中的“平衡与不平衡“规律

你好,我是大壮。08 讲我们介绍了深度推荐算法中的范式方法,并简单讲解了组合范式推荐方法,其中还提到了多层感知器(MLP)。因此,这一讲我们就以 MLP 组件为基础,讲解深度学习范式的其他组合推荐方…

pico+unity3d手部动画

在 Unity 开发中,输入系统的选择和运用对于实现丰富的交互体验至关重要。本文将深入探讨 Unity 中的 Input System 和 XR Input Subsystem 这两种不同的输入系统,并详细介绍它们在控制手部动画方面的应用。 一、Input System 和 XR Input Subsystem 的区…

每日练习,不要放弃

目录 题目1.下面叙述错误的是 ( )2.java如何返回request范围内存在的对象?3.以下代码将打印出4.下列类定义中哪些是合法的抽象类的定义?()5.以下代码段执行后的输出结果为6.以下代码运行输出的是总结 题目 选自牛客网 1.下面叙述…

【node-RED 4.0.2】连接操作 Oracle 数据库实现 增 删 改 查【新版,使用新插件:@hylink/node-red-oracle】

总览 上节课,我们说到,在 node-red 上链接 oracle 数据库 我们使用的插件是 node-red-contrib-agur-connector。 其实后来我发现,有一个插件更简便,并且也更好用:hylink/node-red-oracle !!&am…

Linux--网络基础

计算机网络背景 计算机网络背景是一个复杂而丰富的领域,涵盖了从计算机单机模式到网络互联的演变过程,以及网络技术的不断发展和创新。 计算机单机模式和独立发展 在早期,计算机主要以单机模式存在,即每台计算机都是独立的&…

传知代码-揭秘AI如何揪出图片中的“李鬼”(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 文字篡改图像的“照妖镜”:揭秘AI如何揪出图片中的“李鬼” 在数字化时代,我们时常被各种图像信息所包围。然而,这些图像中有时隐藏着不为人知的秘密——被篡改的文字或图像。这…

C++ | Leetcode C++题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int length nums.size();// L 和 R 分别表示左右两侧的乘积列表vector<int> L(length, 0), R(length, 0);vector<int> answer(l…

188数码管轮询扫描

前言 最近用到了188数码管&#xff0c;总结一下。 188数码管&#xff0c;用5个IO&#xff0c;在不借助外部驱动芯片的情况下&#xff0c;可以点亮20个灯。188数码管广泛应用于电子烟、充电器、充电宝、DVD、高级音响、工业设备控制面板、医疗器械等多个领域&#xff0c;满足不…

【iOS】——TaggedPointer

TaggedPointer介绍 在为了改进从 32位CPU 迁移到 64位CPU 的内存浪费和效率问题&#xff0c;在 64位CPU 环境下&#xff0c;引入了 Tagged Pointer 。旨在提高内存效率和运行性能&#xff0c;尤其针对小的、频繁使用的对象&#xff0c;如NSNumber, NSDate, 和NSString等。在64…

昇思学习打卡-19-生成式/Pix2Pix实现图像转换

文章目录 网络介绍训练推理结果 网络介绍 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;可以实现语义/标签到真实图片、灰度图到彩色图、航空图到地图、白天到黑夜、线…

mmdetection

首先下载mmdetection 3.2.0版本的 https://github.com/open-mmlab/mmdetection/tree/v3.2.0 第二步&#xff1a;创建虚拟环境 conda create -n mmdetection python3.8 -y conda activate mmdetection第三步&#xff1a;安装包 pip install torch2.0.1cu118 -f https://downl…