世间万物变幻莫测,我们不能预知所有灾难,但是我们能预防灾难和应对灾难。
在软件领域,测试的其中一个目的就是在寻找与避免软件可能存在的风险。但是,针对测试本身,也是有许多风险需要我们了解,例如测试的覆盖率、测试环境的差异、人员的调动、需求的变更、……,都影响着整个测试,乃至整个产品的质量。我们虽然不能预知所有风险,但是我们有预防风险的措施以及解决风险的方法。
什么是风险?
风险,顾名思义 ,就是发生不幸事件的概率。
也就是说:在某一特定环境下,在某一特定时间段内,某种损失发生的不可预料的后果。
2015年8月 天津爆炸(意外事件)
12306系统瘫痪(访问量过大)
2008年5月 日汶地震(自然灾害)
2007年10月 2008年奥运会售票系统停售(访问量过大)
在软件领域,测试的其中一个目的就是在寻找与避免软件可能存在的风险。
1.出现什么风险
测试过程中风险大概分为三类:
(1)时间风险
【项目进度停滞:项目初期进度因某种原因停滞(代码框架选择不合适),后期导致测试进度压缩和测试工作量的增大。
测试时间不足:项目里程碑中留给测试的时间无法满足全程测试要求
整个项目时间点延长:由于客户(需求方)突然宣布原进度表中的里程碑时间点延后,导致项目的进度延长。影响到其它项目的测试进度。
】
(2)测试过程风险
【测试计划或方案设计有误:测试计划设计不能指导整个测试过程,测试方案没有正确采用测试方法和技术。或者某些测试方法被忽视掉,如边界测试、错误推测法等,从而导致测试不充分。
测试用例设计问题:因对需求没有进行完整的测试分析导致测试用例设计不能完整覆盖需求。因测试方法使用不当或方法缺失导致测试用例不完整。设计测试用例的预期结果存在歧义。
测试用例执行风险:因测试进度原因或是回归测试原因导致测试用例执行不充分;测试用例
场景缺失或部分缺失:因关注点主要放在功能测试上而导致忽略了业务场景测试,或是导致部分业务场景的缺失。
测试数据准备不充分:测试过程中测试数据准备不完整,或是测试数据没有依照业务流程进行准备而导致测试数据不准确。
工具的风险:测试工具有许多种,测试员对测试工具选择不当会给软件带来难以预知的风险。
还有研发修复缺陷带来的风险,潜在未测试的区域的风险等。
】
(3)资源风险(人、资料、环境)
“人”风险,即测试人
【业务不熟:由于测试前期对需求理解不准、不透彻和错误。导致测试人员对被测系统的业务流程不熟悉。
测试人员变动:离职,岗位调动,请假等。
定位效应:多次测试过的功能,认为是没有问题的,在回归测试时,错误理解为,不需要进行测试。
疲态:某一些功能点一直由某一位测试人员测试,经过多次回归后,测试人员对该功能点的测试显示出倦意和缺乏兴趣。
思想同化效应:经过和开发的长时间接触,往往会被开发的思维逻辑所同化,渐渐丧失从用户角度出发的测试观察点。】
开发风险
【主要表现在程序架构不合理和变更较频繁,编码质量不高,开发进度缓慢,导致测试时间压缩。】
资料风险
【文档缺失:部分测试文档不具备,如原始需求、测试计划、测试方案、测试用例以及项目后期的验收大纲等。
需求发生变更:需求变更在软件生命周期中变更较频繁,影响测试进度
设计不充分(计划、方案、用例、测试数据):编写文档人员的个人因素或是时间限制等方面原因导致输入测试文档设计的不充分和不完整,遗漏了一些重要内容。
质量标准不统一: 文档和测试过程中的质量标准没有统一的标准,导致测试人员和开发人员认识不同。
文档质量问题:输入测试的文档内容含糊、表述不清,以及内容不完整。该问题将影响测试质量和初期 测试设计质量。
】
环境风险,指测试环境
【测试环境问题:测试环境所需要的硬件设施未及时到位;使用的测试硬件环境不满足用户
需求、产品需求或者项目需求;使用的软件环境,如操作系统类型、操作系统干净程度等。导致测试准确性降低,测试环境配置错误。
兼容性问题:测试环境中软硬件不兼容。
测试程序版本不一致:程序版本导致测试不准确,有多种原因造成包括开发没有提交最新程序版本、测试环境没有及时更新配置最新的程序版本等问题。】
2.如何缺解决风险?
【上面说了那么多风险,我相信大家子在测试过中会经常遇到这些情况。一旦遇到这些问题,改怎么办?怎么找到合适的方法去解决,这是我接下来将要讲解的。
大家都知道,我们要根据遇到的风险,制定解决问题的方案,我们还要制定一套备选方案。避免风险处于不解决的状态。
解决风险的方法:
测试时间进度风险控制:与客户协商,顺延交付;将已有的低优先级的功能或特性推迟;降低对第优先级的功能或特性的测试
测试方法:测试负责人需要有良好的测试技术基础和一定的实践经验,在能很好的把控测试计划和测试策略的同时能够对测试人员进行测试技能培训,能够从根本上解决测试方法问题;
需求变更:适时对需求变更进行跟踪,并及时同项目经理、产品经理、研发人员进行沟通。以确认最新的需求进行适当测试调整。
测试质量保证:依照测试生命周期过程,在每个阶段输出的资料都要进行相关评审,对整个过程进行监控。
测试用例/数据设计不充分:尽可能的让测试经验丰富的人员设计,如测试负责人,会专门负责测试资料设计人员进行编写,但是有个问题,专门设计人员如果没有真正参与过测试,极有可能导致设计不充分。
测试环境:在测试环境配置前将所有相关的环境检查进行列表核对,在测试环境配置完毕后,由指定人员按已列出环境检查内容逐一检查;
】
3.如何去预防风险?
【
风险伴随着整个测试过程。由于有些风险是不能控制的,严重影响了测试进度,甚至影响了产品的发布和交付。针对这些未知的风险,我们如何去预防,并设法把这些风险降到最低。针对于一些不可控的测试风险主要的控制方法如下:
a.风险预测
在项目开始前,把一些环节或边界上的可能会有变化、难以控制的因素列入风险管理计划中; 并针对测试的各种风险,建立一种“防患于未然”或“以预防为主”的管理意识。如:确定采用的测试技术和方法;确定测试范围;确定测试用例的优先级;测试资源的分配来减少风险。
b.资源控制
资源、时间、成本的控制措施:做资源、时间、成本等估算时,要留有一定余地,不要过度饱和;对每个关键的测试工程师培养后备人员,做好测试人员流动的准备,采取适当措施确保人员一旦离开公司,其所在项目的测试工作不会受到严重影响,仍然能可以正常有序的开展;
c.文档质量的控制措施:制定文档标准或模板,并建立相应可行的管理机制和变更措施,以保证文档及时产生和适时变更;
d.风险跟踪:对软件生命周期的所有过程进行日常跟踪,及时发现影响测试风险所显现的各种征兆,采取适当措施避免风险。
e.其他措施:对测试生命周期中的所有工作多进行互审,以便能够及时发现问题并解决问题,包括对不同的测试人员在不同的测试模块上相互调换。
因篇幅问题不能全部显示,请点此查看更多更全内容