回顾上一篇博客:软件测试-概念篇
一: 什么是需求?
能够满足用户的期望或者是合同规定的文档(标准,规范,合同)所需要的条件和权限,包含用户需求和软件需求
用户需求:
该需求比较粗略,直接实现会有困难,因为他没有细节,一般他是有甲方提出的需求,需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程性文档
软件需求:
就是用户需求转换而来的,他就是用户需求的细化,使用户需求的具体实现细节和规范
二: 什么是BUG?
1:
当且仅当软件需求存在且合理
,如果软件功能和软件需求规格说明书不相符合,就是软件错误(BUG)
2:
如果软件需求规格说明书(软件需求文档)不存在,用户需求存在且合理
,如果用户需求和软件功能不相符合,我们就说是软件错误(BUG)
三: 什么是测试用例?
向被测试系统发起的一组集合,这组集合包含测试环境,测试数据,测试步骤,预期结果(这四个要记住)
,还有测试的功能模块,优先级等等…
四: 软件开发的生命周期?
软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。 如果把软件看成是有生命的事物,那么软件的生命周期可以分成6个阶段,即需求分析、计划、设计、编码、测试、运行维护。
五: 软件开发的 5 大模型?
1:瀑布模型
项目前期的问题到后期才会被发现,适用于需求稳定的项目
2:螺旋模型
抗风险能力强,适用于项目比较庞大,风险大的项目
3、4:增量、迭代模型
抗风险能力较强
5:敏捷模型
轻文档,轻流程,重目标,重产出,拥抱变化(能够适应需求的变化)
六: 软件测试的两个模型?
1:V模型
阶段性独立强,前期的需求分析和设计阶段和后期测试阶段一一对应,前期的每一个阶段,是后期每一个测试阶段的依据,前期的问题到后期项目测试才会发现,导致问题失去及时纠正的机会
2:W模型
也叫双V模型(开发每一个阶段V,测试的每个阶段V)测试介入早,在需求阶段就介入,缺点就是串行过程,无法适应需求变化,不支持敏捷模型
也可能会被问到软件测试的流程是什么?
需求分析-->测试计划-->测试设计/测试开发-->测试执行-->测试评估
需求分析:
要分析需求的正确性,合理性;细化需求,找出测试项,写测试用例
测试计划:
要考虑测试人数,测试环境,测试时间,测试设备等
测试设计/测试开发:
要根据需求写测试用例
测试执行:
到这里开发已经完成;我们要执行测试用例,验证功能是否完善,有BUG就提交BUG,验证BUG
测试评估:
写了多少测试用例,执行了多少,剩余的测试用例数有多少,有多少BUG数量,解决的BUG数量,遗留的BUG以及解决方案,测试范围以及测试功能等
我们测试人员就是要发现BUG后跟开发人员沟通解决BUG,所以我们怎样清楚的描述一个BUG是很重要的
1:发现问题版本
开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于统计和分析每个版本的质量
2:测试环境
环境分为硬件环境和软件环境
如果是web项目,软件设备:
需要描述操作系统,浏览器版本(哪一个浏览器,IE,火狐,Chrome,edge,Safari,夸克,搜狗等)等,硬件设备:
客户机操作系统,电脑版本,型号等
如果是app项目,软件设备:
需要描述系统(安卓,IOS,鸿蒙,塞班等),系统版本号等,硬件设备:
需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
3:测试数据
通过测试数据让开发人员更加快速的修复问题
4:测试步骤
操作到哪一步出现了BUG,让开发人员看过了再去解决
5:测试实际结果与预期结果
通过最后的实际结果与预期结果进行比对,找出应该达到的效果而没有达到,进行解决
6:附件,错误日志,错误截图等等
通过交流信息给开发人员从而更快的解决BUG
7:其他
某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高.
8:不要把多个BUG放到一起
在无法确认是同一段代码造成的故障时,不要将bug放在一起提交…
等等,总之就是要跟开发人员描述清楚BUG才能更快的解决BUG
1:崩溃(Blocker)
阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题较少出现,一旦在线上出现这种情况,应立即中止当前版本,回退到一个稳定的版本)
。
2:严重(Critical)
系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题
、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)
。
3:一般(Major)
功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多)
4:次要(Minor)
界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)
从描述BUG 再到解决 BUG,每一个公司,每一个工具对bug生命周命周期的定义都是不一样的,(下面的图仅供参考)
●
New:
新发现的Bug,未经评审决定是否指派给开发人员进行修改。
●Open:
确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
●Fixed:
开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
●Rejected:
如果认为不是Bug,则拒绝修改。
●Delay:
如果认为暂时不需要修改或暂时不能修改,则延后修改。
●Closed:
修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
●Reopen:
如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
无效的bug:open->closed, open-rejected-closed
缺陷状态变更流程每个项目团队的实际做法可能不大一样。并且需要结合实际的开发流程和协作流程来使用。
例如,
测试人员新发现的Bug,必须由测试组长评审后才决定是否Open并分派给开发人员。测试人员Open的Bug可以直接分派给Bug对应的程序模块的负责人,也可以要求都先统一提交给开发主管,由开发主管审核后再决定是否分派给开发人员进行修改。 Bug的跟踪以及状态变更应该遵循一些基本原则:
1:
测试人员对每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试,确保相同的问题不再出现,才能关闭缺陷。
2:
对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表(或代表用户角度的人)的评审。
1:
检查,看看是不是自己的问题,是不是 BUG 没有描述清楚
2:
从用户的角度去说服开发人员
例如:需求要求可以上传图片作为头像,但是没有定义格式。开发人员在上传时限制为只能传png格式的。站在用户角度考虑一下:png,jpg那种格式更多?是否要用户自己进行格式转换再上传?
或是要上传图片,当选择1.png,2.png,2-2.png时点击一个删除按钮,实现的效果是三个都被删除了,而用户只想删除一张…
3:
BUG 定级要有理有据(根据公司的规范)
BUG定级时,不仅要参考BUG级别,还要考虑BUG是否会影响到流程,往往用户的BUG级别和我们的是有区别的,需站在用户的角度定考虑定位级别。(不要自己觉得严重就严重,不严重就不严重)
4:
不断提升自己的业务水平和技术水平
我们不但能够发现BUG,并且还能够定位,还能提出解决方案,这样能让人更信服,从而提高自己的权威性
5:
不要争吵,找产品经理理论
可能你已经经过了多轮沟通,但是开发人员仍然拒不接受。此时可以发起Bug评审。通过三方会议(测试人员,开发人员,产品经理)
会讨论这个BUG的最终解决方案