软件测试基础(1)

软件测试的生命周期

软件测试的生命周期: 需求分析 -> 测试计划 -> 测试设计, 测试开发 -> 测试执行 -> 测试评估.

软件测试 & 软件开发的生命周期

1.需求阶段

测试人员了解需求, 对需求进行分解, 得出测试需求.

2.计划阶段

根据需求编写测试计划/测试方案

3.设计阶段

测试人员适当地了解设计, 对于设计测试用例是很有帮助的, 测试人员搭建测试用例框架, 根据需求和设计编写一部分测试用例.

4.编码阶段

测试人员一般是不需要编码的, 但已经编码的模块, 专业的白盒测试人员可以计划执行单元测试, 完善, 细化测试用例以及调整测试计划和方案.

5.测试阶段

测试阶段是软件测试人员最为重要的工作阶段, 根据测试用例和计划执行测试, 在执行的过程中记录, 管理缺陷, 测试完成后编写测试报告.

6.运行维护

测试人员需要参与项目的实施工作. 测试人员对项目产品的业务和操作非常了解, 加上测试人员的沟通表达能力一般都比较强, 所以测试人员可以参与用户使用软件的培训, 在试运行项目时收集问题并及时反馈给相关负责人.

如何描述一个BUG

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

1. 发现问题的版本(这个软件/项目是什么版本)

开发人员需要知道出现问题的版本, 才能够获取对应版本的代码来重现故障. 并且版本的标识也有利于统计和分析每个版本的质量.

2.问题出现的环境(与PC/手机端, 操作系统, 浏览器什么的有关)

环境分为硬件环境和软件环境, 如果是web项目, 需要描述浏览器版本, 客户机操作系统等, 如果是app项目, 需要描述机型, 分辨率, 操作系统版本等. 详细的环境描述有利于故障的定位.

3. 错误重现的步骤

描述问题重现的最短步骤.

4.预期行为的描述

要让开发人员知道怎么样才是正确的, 尤其要以用户的角度描述程序的行为是怎样的. 如果是依据需求提出的故障, 能够写明需求的来源是最好的.

5.错误行为的描述

描述错误的现象. crash等可以上传log, UI问题可以有截图.

6.其它

某些公司会有一些其它的要求, 例如故障的分类: 功能故障, 界面故障, 兼容性故障等. 有些有优先级的分类, 严重影响测试需要开发人员优先修改的, 可以设置优先级为高.

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

在无法确认是同一段代码造成的故障时, 不要将bug放在一起提交.

案例:

提交了如下bug:

1.在短信列表, 选择一条短信, 进行删除, 删除失败

2.在短信列表, 选择一条短信, 进行查看, 在查看页面中进行删除, 删除失败.

明显可以看出, 描述2要比描述1更好.

故障发现版本: VPS20180226_01

故障类别: 兼容性

故障优先级: 中

故障标题: ie下界面显示异常, 界面文字有重叠

故障描述:

        测试环境: win7 + IE8

        测试步骤:1.打开vps首页, 点击"通知"链接, 进入通知页面.

        预期结果:通知页面显示正确, 一页显示10条通知, 按时间顺序倒序排列.

        实际结果:页面显示10条通知, 通知顺序正确, 但是页面文字有重叠.

附件:上传截图

如何定义bug的级别

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

以下为样例:

 1.Blocker(崩溃):

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

2.Critical(严重):

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

3.Major(一般):

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

4.Minor(次要):

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

bug的生命周期

每个公司, 每一个工具对bug生命周期的定义都是不一致的, 下面仅是一个常见的例子.

测试人员应该跟踪一个Bug的整个生命周期, 从Open到Closed的所有状态.

BUG状态转换图

New:新发现的Bug, 未经评审决定是否指派给开发人员进行修改.

Open:确认是, 并且认为需要进行修改, 并指派给相应的开发人员.

Fixed:开发人员进行修改后标识为修改状态, 有待测试人员的回归测试验证. 

Rejected:如果认为不是bug, 则拒绝修改.

Delay:如果认为暂时不需要修改或者暂时不能修改, 则延后修改.

Closed:修改状态的Bug经测试人员的回归测试通过, 则关闭bug.

Reopen: 如果经验证Bug仍然存在, 则需要重新打开bug, 开发人员重新修改.

无效的bug: open->closed, open->rejected->closed

缺陷状态的变更流程每个项目团队的实际做法可能不太一样. 并且需要结合实际的开发流程和协作流程来使用.

例如, 测试人员新发现的Bug, 必须由测试组长评审后才决定是否Open并分派给开发人员.测试人员Open的Bug可以直接分派给Bug对应程序模块的负责人, 也可以要求都先统一提交给开发主管, 由开发主管审核后决定是否分派给开发人员进行修改. Bug的跟踪以及状态的变更应该遵循一些基本原则:

测试人员对于每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试, 确保相同的问题不再出现, 才能关闭缺陷.

对于拒绝修改和延迟修改的Bug, 需要经过包含测试人员代表和开发人员代表, 用户方面的代表(或代表用户角度的人)来评审. 

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

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

相关文章

Web核心

目录 Web核心HTTP概念:协议特点:请求数据格式响应数据格式 Tomcat简介基本使用配置部署项目IDEA中创建 Maven Web 项目 IDEA使用Tomcat Servlet简介快速入门执行流程生命周期体系结构Servlet urlPattern配置一个Servlet,可以配置多个 urlPatt…

java-springboot实现图片的上传

我们在resources目录下创建image目录来存放上传的图片 service层懒的写,就都写controller层了。 RestController RequestMapping("/upload") public class upload {PostMapping("/pic")public String upLoad(RequestParam("multipartFile…

PTA金字塔游戏

幼儿园里真热闹,老师带着孩子们做一个名叫金字塔的游戏,游戏规则如下: 首先,老师把孩子们按身高从高到矮排列,选出最高的做队长,当金字塔的塔顶,之后在其余小朋友里选出两个最高的,…

12个好玩又实用的Python迭代器和生成器实例

大家好!今天我们要来一场编程奇趣之旅,一起揭秘那些既让代码变得更简洁高效,又能带你领略Python魅力的12个迭代器和生成器实例。别担心,我会用轻松易懂的语言帮你掌握这些小技巧,准备好你的笔记本,咱们这就…

MySQL 练习三

select sname,sex,class from student;select distinct depart from teacher;select * from student;select * from score where degree between 60 and 80;select * from score where degree in(85,86,88);select * from student where class’95031’ or sex’女’;select * …

transductive transfer learning

如图所示,传统的机器学习方法尝试去学习每一种任务,而迁移学习则根据已经学习处理过的任务推广到有较少训练数据的新任务上。在传统的机器学习中, transductive learning指所有测试数据在训练时被要求看到的情况,并且对于新的数据…

谈谈计算机科学与技术这门专业

原文地址:谈谈计算机科学与技术这门专业 - Pleasure的博客 下面是正文内容: 前言 这是一篇个人性质的笔记。 专业代码080901 或许也可以理解为计算机科学与技术专业大致都要经历的学习路线(主要还是根据本校)。 正文 主要专业课程…

Redis中的事件(二)

文件事件 文件事件的处理器 Redis为文件事件编写了多个处理器,这些事件处理器分别用于实现不同的网络通信需求,比如说: 1.为了对连接服务器的各个客户端进行应答,服务器要为监听套接字关联连接应答处理器2.为了接收客户端传来的命令请求&a…

数据结构与算法分析引论1

1.解决问题的算法有很多,但是在输入不同的情况下,不同算法之间的差异也很大,我们总是追求一个更快、更有效的方法。比如说普通的依次查找和二分查找,两者的差异就很大。我们使用大O表示法来表示算法的速度。依次查找就是O(n)&…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获(capture),也可以加载或存储捕获的流量 (1)Capture Traffic:默认勾选,勾选此项才可抓包&#xff…

USB HOST移植

一、USB简介 USB有USB1.0/1.1/2.0/3.0多个版本,标准USB由4根线组成,VCC,GND,D,D-,其中D和D-是数据线,采用差分传输。 在USB主机上,D-和D都是接了15K的电阻到地,所以在没有设备接入的时候,D、D-均是低电平。…

Scala环境搭建

目录 前言 Scala的概述 Scala环境的搭建 一、配置Windows的JAVA环境 二、配置Windows的Scala环境 编写一个Scala程序 前言 学习Scala最好先掌握Java基础及高级部分知识,文章正文中会提到Scala与Java的联系,简单来讲Scala好比是Java的加强版&#x…

【Java多线程(2)】Thread常见方法和线程状态

目录 一、Thread类及常见方法 1. join() 等待一个线程 2. currentThread() 获取当前线程引用 3. sleep() 休眠当前线程 二、线程的状态 1. 线程的所有状态 2. 状态转移 一、Thread类及常见方法 接上文:多线程(1)http://t.csdnimg.cn/…

git-怎样把连续的多个commit合并成一个?

Git怎样把连续的多个commit合并成一个? Git怎样把连续的多个commit合并成一个? 参考URL: https://www.jianshu.com/p/5b4054b5b29e 查看git日志 git log --graph比如下图的commit 历史,想要把bai “Second change” 和 “Third change” 这…

cinder学习小结

1 官方文档 翻译官方文档学习 链接Cinder Administration — cinder 22.1.0.dev97 documentation (openstack.org) 1.1 镜像压缩加速 在cinder.conf配allow_compression_on_image_upload True可打开开关 compression_format xxx可设置镜像压缩格式,可为gzip 1.2 …

手撕算法-数组中的第K个最大元素

描述 分析 使用小根堆&#xff0c;堆元素控制在k个&#xff0c;遍历数组构建堆&#xff0c;最后堆顶就是第K个最大的元素。 代码 class Solution {public int findKthLargest(int[] nums, int k) {// 小根堆PriorityQueue<Integer> queue new PriorityQueue<>…

【python从入门到精通】-- 第二战:注释和有关量的解释

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

鸿蒙 HarmonyOS应用开发之API:Context

Context 是应用中对象的上下文&#xff0c;其提供了应用的一些基础信息&#xff0c;例如resourceManager&#xff08;资源管理&#xff09;、applicationInfo&#xff08;当前应用信息&#xff09;、dir&#xff08;应用文件路径&#xff09;、area&#xff08;文件分区&#x…

mybatis 实验报告1

文章目录 新建数据库新建项目&#xff0c;并导入jar包添加配置文件conf.xml定义实体类定义操作表user的sql的映射文件 userMapper.xml注册&#xff1a;将mapper.xml文件注册到conf.xml配置文件中一共6步&#xff0c;这个只是测试类&#xff0c;这个不算 新建数据库 命名是 随便…

nandgame中的控制单元(Control Unit)

关卡说明的翻译&#xff1a; 控制单元除了ALU指令之外&#xff0c;计算机还应支持数据指令。在数据指令中&#xff0c;指令值直接写入A寄存器。创建一个控制单元&#xff0c;根据指令I的高位执行数据指令或ALU指令&#xff1a;位 15 0 数据指令 1 ALU指令ALU指令 对于ALU指令&…