软件测试的基础知识

news2025/1/12 6:46:49

目录

前言

软件测试的生命周期

如何描述一个bug

如何定位bug的级别

bug的生命周期

和开发人员产生争执怎么办

设计一个测试用例


前言

上篇文章主要写了软件测试的一些基本概念以及软件测试的前置知识,这篇文章主要带大家了解在进行软件测试之前要准备的工作.

软件测试的生命周期

在上篇文章中我们提到了软件开发的生命周期,软件的生命周期是:

需求阶段->计划阶段->设计阶段->编码阶段->测试阶段->运行维护

可以看出测试阶段是在整个软件的生命周期的后面才开始进行介入的.

在测试介入之后,软件测试的生命周期:

需求分析->测试计划->测试设计->测试开发->测试执行->测试评估

  1. 需求分析:主要是分析需求是否正确,是否完整
  2. 测试计划:主要是谁测试,怎样进行测试,什么时候开始测试.
  3. 测试设计:设计测试用例.
  4. 测试开发:开发测试工具,开发自动化测试用例.
  5. 测试执行:提高bug,验收.
  6. 测试评估:产出测试报告.

如何描述一个bug

当我们在测试的过程中,如果发现了bug,那么我们应该正确的描述一个bug呢?

首先一个完整的bug有以下及部分组成:

  • 发现问题的版本
  • 问题出现的环境
  • 错误出现的步骤
  • 预期行为的描述
  • 错误行为的描述
  • 其他

出现问题的版本:开发人员需要知道出现问题的版本,才会获取到对应版本的代码来复现bug,并且版本的标识也有利于统计和分析每个版本的质量。

问题出现的环境:环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器的版本,客户机操作系统版本等,如果是App项目,需要描述机型,分辨率,操作系统版本等。

错误出现的步骤:描述问题出现的最短步骤.

预期行为的描述:要让开发人员指导怎么样才是正确的,尤其是以用户的角度来描述程序的行为是咋样的.

错误行为的描述:描述错误出现的现象。

如何定位bug的级别

当我们找到了一个bug,并且成功的将这个bug进行描述之后,那么这个bug对应的级别应该如何设置呢?

bug的级别主要有以下几种:

  • 崩溃
  • 严重
  • 一般
  • 次要

1、Blocker(崩溃): 阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单 功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。

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

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

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

bug的生命周期

当我们发现了bug并且定位了bug的级别之后,需要注意的是,bug也是有生命周期的,也就是bug从发现开始到彻底的修复的过程.

以下就是一个bug的生命周期流程图:

Start 开始

New 发现了一个bug

Open 指定了开发,打开这个bug

Fixed 修复完成

Closed 关闭

Reopen 重新打开

Rejected 拒绝

Delay bug延期修复(在未来的某一刻要修复)

 可以通过上述图片来完整的理解一个bug从发现到修复的整个过程,

和开发人员产生争执怎么办

排除自身的原因:排除自己的误操作,对需求了解有误

排除自己的工作方式问题:提交的bug不详细

提供给开发解决方案和思路

站在用户的角度去考虑问题

如果上述策略都不能完全的解决问题,可以采用下面这个方案:

第三方会议:一定要描述清楚bug,bug如何解决要有自己的思路,拿到一个结果:bug到底要不要修复。

设计一个测试用例

以微信付款设计一个简单的测试用例:

基本测试点:

(1)零钱支付功能(零钱充足时)

(2)零钱不足时,支付

(3)支付的钱数为为整数,小数

(4)首次使用微信零钱功能(必须要绑定银行卡)

(5)没有钱时支付

(6)扫微信收款码付款

(7)扫非微信付款二维码支付

(8)零钱支付上限(有上限)

(9)零钱可支付的最小金额(下线)

(10)收到转账或者红包零钱金额是否正确

(11)每次消费零钱,都有消息提醒

(12)可以将零钱提取到银行卡(收手续费,到账时间)

(13)可以向微信零钱充钱(从银行卡)

兼容性:

(1)测试不同的微信版本

(2)测试不同的手机系统(iOS,Android,包括不同安卓机不同品牌的机型)

性能:

支付零钱,给零钱充值,提取零钱的速度(单条,全部,清空)

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

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

相关文章

常见的数码管中的引脚分布情况

简单介绍 数码管,实际就是用了7段亮的线段表示常见的数字或字符。常见的像下面几种(图片是网络中的截图)。事件中使用到的知识还是单片机中最基础的矩阵扫描。记得其中重要的有“余晖效应”,好像是要把不用的亮段关闭&#xff0c…

【C++】string 之 assign、at、append函数的学习

前言 在学习string类的过程中,我发现了assign这个函数,感觉很有用,就来记录一下 assign函数原型: void assign(size_type n, const T& x T());void assign(const_iterator first, const_iterator last);assign函数有两种使…

格林公式推导

∫ D ∫ ( ∂ Q ∂ x − ∂ P ∂ y ) d x d y ∮ P d x Q d y \int _D \int (\frac{\partial Q}{\partial x} - \frac{\partial P}{\partial y})dx dy \oint P dx Qdy ∫D​∫(∂x∂Q​−∂y∂P​)dxdy∮PdxQdy 证明: 假设 ∫ Q ( x , y ) d y 的原函数是 q …

linux万字图文学习进程信号

1. 信号概念 信号是进程之间事件异步通知的一种方式,属于软中断。 1.1 linux中我们常用Ctrlc来杀死一个前台进程 1. Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。2. S…

Git的ssh方式如何配置,如何通过ssh方式拉取和提交代码

git的ssh配置 HTTPS和SSH的区别设置SSH方式配置单个仓库配置账户公钥 大家通过git拉取代码的时候,一般都是通过http的方式,简单方便。但是细心的童鞋肯定也注意到Git也是支持ssh方式的。可能很多人也试过使用这个方式,但是好像没有那么简单。…

企业架构LNMP学习笔记57

MongoDB的安全设置: 安全: MongoDB的安全事件: 2017年年初: 利用SMB漏洞可以获得系统最高权限。wannacry勒索病毒。当年确实遇到过这个事情。 比特币的概念:开源软件 P2P网络 P2P形式的数字货币。交易记录公开透明。…

Mysql--Java的JDBC编程

Java的数据库编程:JDBC JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是 Java中的数据库连接规范。 下载驱动包作为项目的依赖,数据库驱动包的版本要和数据库服务器的版本…

前端中的跨域请求及其解决方案

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域(Cross-Origin)⭐CORS(跨域资源共享)⭐JSONP(JSON with Padding)⭐代理服务器⭐ WebSocket⭐服务器设置响应头⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a…

Spring + vue 项目部署(全网最详细教程_含内网穿透部署)

本项目以Springboot 2.7.11和vue2做参考示例 第一步 展示前后端代码的成品 前端Vue 后端Java 项目写完后,差不多就是这个样子,仅供参考! 第二步 开始打包前后端项目 前端打包的方式有以下几种: 方法1: #直接打包&#xff0…

【数据结构】【C++】红黑树RBTree的模拟实现(平衡搜索二叉树)

【数据结构】&&【C】红黑树的模拟实现(平衡搜索二叉树) 一.红黑树的性质二.红黑树的模拟实现1.结点的定义2.搜索树的插入3.变色向上处理4.旋转变色 三.红黑树与AVL树的差别四.完整代码 一.红黑树的性质 1.什么是红黑树? 红黑树是一种搜索二叉树…

页面上下左右滑动事件

1.下载插件 npm install vue-touchnext -S 2.main.js加入以下代码 import VueTouch from vue-touch Vue.use(VueTouch, { name: v-touch }) VueTouch.config.swipe { threshold: 50 //设置左右滑动的距离 } 3.完整代码 <template><div><v-touch swipe…

Java 基础——运行第一个Java程序

【学习笔记】Java 基础——运行第一个Java程序 关键词&#xff1a;Java、Spring Boot、Idea、数据库、一对一、培训、教学本文主要内容是在IDEA中运行第一个Java程序&#xff1a;Hello World计划30分钟完成&#xff0c;请同学尽量准备工具有学习需要请联系&#xff1a;xujian_…

css多个物体椭圆旋转

实现效果 html代码 <div class"background-img"><div class"area"><div class"ball ball1"></div><div class"ball ball2"></div><div class"ball ball3"></div><div …

道路空间功率谱密度与时间功率谱密度(笔记)

1.先上代码其中之一 clc clear close all %% SimTime200; dt0.01;%仿真步长 time0:dt:SimTime; sim_step length(time); Ntlength(time); % 采样点&#xff08;可能要修改&#xff09; u10; % m/s df1/(Nt*dt); % 采样频率间隔 f0:df:1/(2*dt); % 采用频率一…

数据脱敏的风险量化评估介绍

1、背景介绍 当前社会信息化高速发展&#xff0c;网络信息共享加速互通&#xff0c;数据呈现出规模大、流传快、类型多以及价值密度低的特点。人们可以很容易地对各类数据实现采集、发布、存储与分析&#xff0c;然而一旦带有敏感信息的数据被攻击者获取将会造成个人隐私的严重…

NTIRE2023-RTSR-Track2 冠军方案详解

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/JQ5g9yn_OdjR8hi_tWc4jA arXiv:2305.02126 , cvpr2023 , code , video 本文了一个实时&轻量图像超分方案Bicubic&#xff0c;它通过下采样模块降低图像分辨率以减少计算量&#xff0c;在网络尾部采用…

R语言绘制染色体变异位置分布图,RIdeogram包

变异位点染色体分布图 今天分享的内容是通过RIdeogram包绘制染色体位点分布图&#xff0c;并介绍一种展示差异位点的方法。 在遗传学研究中&#xff0c;通过测序等方式获得了基因组上某些位置的基因型信息。 如下表&#xff0c;第一列是变异位点的ID&#xff0c;第二列是染色体…

Python 字典的定义

视频版教程 Python3零基础7天入门实战视频教程 字典dict 字典也是Python提供的一种常用的数据结构&#xff0c;它用于存放具有映射关系的数据。 字典的定义 比如有成绩表数据——语文:68&#xff0c;数学:98&#xff0c;英语: 76&#xff0c;这组数据看上去像两个列表&…

每天几道Java面试题:集合(第四天)

目录 第四幕 、第一场&#xff09;大厦楼下门口第二场&#xff09;大门口 友情提醒 背面试题很枯燥&#xff0c;加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第四幕 、 第一场&#xff09;大厦楼下门口 【面试者老王&#xff0c;门卫甲…

浅谈C++|STL之stack+queue+priority_queue篇

一.stack基本概念 栈&#xff08;Stack&#xff09;是一种常见的线性数据结构&#xff0c;遵循后进先出&#xff08;Last-In-First-Out&#xff0c;LIFO&#xff09;的原则。类似于我们在现实生活中堆叠书本或盘子的方式&#xff0c;最后放入的元素最先被取出。 在栈中&#…