软件测试 - 基础(软件测试的生命周期、测试报告、bug的级别、与开发人员产生争执的调解方式)

一、软件测试的生命周期

测试贯穿软件的整个生命周期
软件测试的生命周期: 需求分析 测试计划测试设计、测试开发测试执行测试评估->上线->运行维护
需求分析:判断用户的需求是否合理,是否可实现
测试计划:计划项目由谁做,什么时候测试开始,什么时候测试结束,什么时候上线
测试设计:设计测试用例
测试开发:开发可以支持测试,提高测试效率的工具(web、应用等)
                开发人员需要有主观能动性,发现bug是本职,还需要发掘工作中的痛点。
测试执行:执行测试用例,目的是为了发现BUG,验收BUG
测试评估:产出测试报告
测试报告可以理解为一个邮件
        抄送人:项目相关人(测试领导、研发领导、产品领导)
        收件人:项目直接相关人(开发,产品)
        内容:        测试项目名称
                           仓库地址
                           项目直接人员
                           测试用例链接
                           BUG
                           产品规格说明书
                           技术文档 ...
上线:项目测试结束后,将项目发布到线上环境,测试人员需求跟踪上线并测试线上环境下软件运行是否正确
        上线分为多个步骤:沙盒、小流量、全流量、全线上
                沙盒:企业内部的线上环境,可以供内部人员进行测试
                小流量:部分线上真实用户可以使用到,测试人员要线上手动测试,还要观察有没有错误日志。
                全流量:所有真实用户都可以使用到。
                全线上:将真实代码发布到所有服务器上。

二、描述一个BUG

bug的概念:

        首先我们要明白 软件测试就是验证软件产品的特性是否符合用户的需求。

一切要以需求出发,在产品前期,产品经理就已经写好了需求文档,我们就要以需求文档为依据。

1.当且仅当规格说明(需求文档)是存在的并且正确,程序与规格说明之间的不匹配才是错误。

2.当需求规格说明书没有提及到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误

2.1 为什么要写测试报告? 

        写报告,会留有一个记录,一些bug很难复现,这个可以在以后做参考,并且报告可以互相学习。

2.2 提交的BUG应该包含以下的内容:

1 、发现问题的版本
        网页或者app等代码(软件产品)的版本
        开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于 统计和分析每个版本的质量。
2、问题出现的环境(产品运行环境)
        电脑操作系统、浏览器等
        环境分为硬件环境和软件环境,如果是web 项目,需要描述浏览器版本,客户机操作系统等,如果是 app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
3 、错误重现的步骤
        描述问题重现的最短步骤。
4 预期结果 的描述
        要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需 求提出的故障,能写明需求的来源是最好的。 要相信:测试人员是最懂需求的。
5 实际结果 的描述
        描述错误的现象。crash 等可以上传 log UI 问题可以有截图。
6 、其他
        某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级 的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。
7 、不要把多个 bug 放到一起
        在无法确认是同一段代码造成的故障时,不要将bug放在一起提交
例如
提交了如下 bug
1 、在短信列表,选择一条短信,进行删除,删除失败
2 、在短信列表,选择一条短信,进行查看,在查看页面,进行删除,删除失败
故障发现版本: VPS20180226_01
故障类别:兼容性
故障优先级:中
故障标题 :ie 下界面显示异常,界面文字有重叠
故障描述:
测试环境: win7+IE8
测试步骤: 1 、打开 vps 首页,点击 通知 链接,进入通知页面
预期结果:通知页面显示正确,一页显示 10 条通知,按时间顺序倒序排列
实际结果:页面显示 10 条通知,通知顺序正确,但是页面文字有重叠
附件:上传截图

 2.3 如何定义 bug 的级别

2.3.1 bug的优先级

        有多个bug时,有些bug会直接影响到接下来的测试工作,急于处理,这类bug就属于优先级较高的bug,得优先修复。而有的bug,可能并不直接影响,可以排在后面。

例如一个网站:

1) 登录密码展示位置错位

2) 背景图颜色不对

3) 登录功能有问题

...

从这几个bug中,优先级最高的就是 3 了,因为登录功能有问题的话,登都登不了,根本没办法继续测试网页里面的其他内容了。

2.3.2 bug 的级别

为什么要给bug定义级别?

1)评估程序员的开发能力(经常写出严重的bug,代表着开发能力欠缺)

2)年终奖(经常写出严重的bug,影响评估,影响年终奖)

3)bug修复顺序排序(优先级高的bug,优先修复,其他bug可以不急)

bug 的定义每个公司都不一致,在定义级别之前需要查看公司规范。
以下为样例:
1Blocker (崩溃)
        阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。
2Critical (严重)
         系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。
3Major (一般)
        功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询 时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等( 该问题实际测试中存在最多)
4Minor (次要):
        界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格 式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置 不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;
要注意
bug的提交一定要有理有据
        如果项目需要按时交付,还有很多bug没有及时处理,周知项目相关人员,将次要的bug,放到下一个版本迭代。
        开发在修复 BUG的时候,优先级高的先修改,优先级低的后修复。

2.3.2 bug 的生命周期

(new阶段)测试人员创建了一个  bug

(open阶段)开发人员确认是否为有效 bug,判断bug优先级是否要立即修改

        如果是有效bug:

       (delay阶段) 如果优先级很低,时间很紧,可以推迟修改

        (fixed阶段)如果优先级很高,时间充足,立即修复,并且把 bug 的状态改为 已修复

        如果是无效bug:(rejected)

                则bug状态流转为 rejected,也就是拒绝掉

测试人员,验收 bug

        (closed阶段)如果验收通过,没问题了,确认bug已修复

        (reopen阶段)如果验收不通过,重新打开bug ,回到open阶段

三、如果和开发人员产生争执了怎么办?

bug的数量和级别都会影响到程序员的年终奖,所以很多时候测试人员和开发人员都会因为bug出现争论(甚至争吵)

开发说:这不是bug  /  这个bug级别太高了,不应该是这样  /  bug影响不大,我不改了 

        诸如此类..

为避免产生争执,需要有效沟通。

1)先检查自身提出的bug,是否描述不清楚?

        能用文字描述bug,就尽量描述精准,这样就能减少沟通成本

        但有时,bug的确很难用文字表达,词不达意。那么在提交bug的时候,就找到对应的开发人员对bug进行解释,确保程序员明白bug的描述

        不要等到开发人员找自己,而是主动沟通

2)站在用户角度考虑问题

        应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员 更加积极地、高质量地修改Bug。在争执时,可以问一句:如果你是用户,你可以接受么?

        案例: 例如:需求要求可以上传图片作为头像,但是没有定义格式。开发人员在上传时限制为只能传png格式的。 站在用户角度考虑一下:png,jpg那种格式更多?是否要用户自己进行格式转换再上传?

3)bug级别的定义要有理有据

        bug定级描述文档拿出来,然后将bug的表现和bug定级描述文档进行匹配,说服程序员

4)提高自身技术和业务水平,做到不能提出问题,最好也能给出解决方案

(说话预期要委婉,不要以命令式的口吻来要求别人按照自己的逻辑来修改)

        测试小白:更多的是提出问题(bug)

        测试大牛:除了提出问题也能定位到问题,给出解决方案

5)开发人员比较犟,怎么说都不听的情况下,就需要进行bug评审

多轮沟通,但是开发人员仍然拒不接受。此时可以发起Bug评审。

Bug评审要注意的问题 缺陷的评审应该包括以下两个层面

● 决定如何处理Bug。

● 分析缺陷产生的原 因,找出预防的对策。

(1)决定如何处理Bug。 这一方面评审需要项目组各个方面的代表参加,通常不可缺少的是测试代表、开发代表、产品代表

        测试代表:(测试领导、一起测试的同事)

                主要从Bug的具体表现、严重程度等方面提供信息,并提出自己对Bug的处理意见。需要注意 的是,测试人员不应该一味地要求对Bug进行修改,因为修改可能带来回归的风险,同时带来的是回归 测试的工作量,如果时间比较紧迫,修改后剩余的时间若不足以做一次有效的回归测试,可能不修改是 个明智的选择。

        开发代表:(开发领导、开发人员)

                主要从修改缺陷的难度和风险出发,考虑缺陷修改需要付出的代价,以及可能影响的范围、可 能引发的风险等,如果决定要修改,还要讨论出修改的初步方案。

        产品代表:(产品经理)

                主要从产品的整体计划、用户的要求等方面对缺陷的修改必要性、缺陷修改的时间和版本提出 自己的意见。 这在微软的做法叫“Bug三方讨论会”,参加者一般是测试人员、开发人员和项目经理。 案例: 某网站经常隔几天访问时会出现500错误,但是之后就不会复现。 测试人员会提出问题:网站偶发性出现500错误。 开发人员回答:不常见,不影响使用,暂不修改 资深测试人员提出问题:网站偶发性500错误,查看日志,是由于mysql数据库8小时超时问题造成。需要修改 连接池配置定期校验连接 开发人员处理:修改xml,增加校验配置项 比特就业课

 (2)分析缺陷产生的原因,找出预防的对策。 缺陷评审还应该包括原因分析,找出Bug出现的原因,尤其 是那些重复出现的Bug。应该找出出现错误的根源,并且制定出相应的预防措施,确保同类型的Bug不 再出现。 例如:有些Bug出现的原因不是简单的“引用为空”之类,而是开发人员的编码不规范或者编程 习惯不好而导致,所以必须建立起正确的编程方式才能预防这些错误的出现,否则只是在玩无聊地重复 发现相同的Bug的游戏。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值