如何在软件测试过程中有效控制风险
2020-12-30王星华
◆王星华
(吉林银行信息科技部 吉林 130033)
随着银行业的快速发展,客户资源的竞争也日趋激烈,商业银行提供功能丰富、稳定高效的软件系统既能满足各类金融业务办理的需要,也能增强客户的信赖感,帮助银行机构获取到更多的客户资源,提高银行的收益和客户满意度。而这一切,除了有思想的业务需求设计团队和优秀的软件研发团队以外,测试团队的功劳也不可小觑。一款软件在上线前,需要经过各项细致的功能测试和非功能测试,在测试的过程中,潜藏着众多的风险因素,如何有效地识别和控制这些风险,将软件的缺陷在测试中充分地暴露出来,则变得尤为重要,本文将进行详细论述。
1 软件测试过程中常见的风险
1.1 需求变更风险
一个测试项目,如果业务需求不完整或需求不明确,导致在测试的过程中需求变更频繁,变更或新增的测试内容会增加案例编写、评审和测试执行的工作量,可能会导致测试工作延期,对项目的整体计划造成一定的影响。
1.2 测试需求理解差异风险
如果我们的业务需求描述不清晰、有歧义,或者测试人员在项目需求分析阶段的参与度不够,对软件需求的理解不深入、不准确,与软件设计的初衷出现偏差,而这一切在测试需求分析及评审阶段又未明显地表露出来,就会导致某些地方始终测试不到或验证的标准不对,给测试工作带来极大的风险,后期的调整会带来测试时间和资金投入的增加,也可能会使该测出的程序缺陷未测出来即上线运行,给银行机构带来巨大的安全隐患或损失。
1.3 测试时间进度风险
在我们日常的测试工作中,项目测试时间计划很多时候是因业务开通的迫切需要,由项目整体的计划上线时间倒推出来的,或是根据领导的指令确定的,并不是按照真正的项目规模进行测试需求分析,核算测试工作量后合理编制出来的。这种不科学、不合理的测试计划只能算是“期望状态”,会给项目能否如期测试完成和顺利上线带来很大的风险。
此外,如果软件测试人员涉足不熟悉的业务领域,实际的测试工作难度和工作量比预估的要大,在制定的时间计划内无法完成测试任务;或者软件研发时间延长使得产品送测时间延迟,都会产生测试延期的风险。
1.4 测试环境风险
由于成本的原因,通常情况下我们的测试环境和未来程序上线运行的生产环境不是完全一致的,主要体现在硬件设备的品牌或配置不同、操作系统或中间件软件的版本不同等方面,这些都会造成非功能测试的结果存在误差。
另一方面,我们在准备测试前,也可能会因为测试环境未搭建完、测试数据未准备好等问题导致测试无法按预期执行,造成测试延期。
1.5 测试人员风险
进入测试执行的环节后,如果测试人员、技术支持人员等因故不能及时到位,会造成测试延误风险。
如果测试人员的技术能力或测试经验不足,导致遗漏缺陷或交易失败时不能及时对问题进行准确定位,都会带来很大的测试风险。
1.6 测试案例风险
如果测试案例设计不充分,案例对需求的覆盖度不够,部分案例执行被人为忽略,回归测试不足,尤其对一些边界条件、深层次的逻辑和特殊场景等没有重点考虑并加以测试验证,必然会带来很大的风险。
1.7 测试质量目标风险
我们在开始测试前,如果对测试质量的标准不清晰、不统一,测试深度及预期要求不明确,如易用性测试、使用文档目标测试等容易产生仁者见仁智者见智的现象,带来测试质量目标风险。
1.8 测试技术和工具风险
测试人员不能及时准备好相关的测试工具,对测试工具的选择不当,以及对新的测试工具无法熟练运用等情况时有发生,这些都会带来一定的测试风险。
1.9 缺陷风险
我们在软件测试的过程中,经常会遇到修复一个缺陷对其他已测完的功能造成影响,偶发的程序缺陷很难重现,现象相同但是缺陷产生的原因不同,待测软件缺陷较多、缺陷修复难度大等情况,都会给测试工作带来很大的风险。
1.10 道德风险
测试团队在一个项目的整体测试流程中,会经常和项目管理人员、研发人员、运维人员以及业务人员等沟通协调和确定事项,如果有测试外包团队,还会涉及商务合同等事宜,工作的过程中难免会衍生出各种形式的主观故意或非主观的抵赖行为,这些就会形成测试的道德风险。
2 测试风险的防范和控制措施
根据上述测试过程中可能存在的各类风险,结合我们日常测试工作的实际情况,建议从管理方法、制度流程、优秀团队的组建、计划的监督执行、方案策略的制定以及道德风险的防范等方面入手,采取各项科学有效的措施以有效防控测试风险。
2.1 建立健全各项测试规范和工作制度
我们为了防范测试风险,需要建立健全各项测试规范和工作制度,用以指导软件测试的各项管理工作,明确软件测试过程中各阶段的工作任务,以及测试团队成员的工作职责,进而提高测试工作的质量和效率,降低软件上线后的运行风险。
制度规范中要包含测试工作量和测试质量的考核评价内容,要有奖赏激励措施和惩罚机制。同时,我们制定的制度规范要简单实用,易于操作和执行,还需要征求业务人员、测试团队、项目管理人员、研发团队等各方的意见和建议。
2.2 制定高效的测试流程体系
测试管理部门应参照行业通用的项目测试标准流程,结合自身的组织架构和相关制度规范,制定不同类型测试的工作流程(例如:功能测试流程、性能测试流程、用户验收测试流程、变更类项目测试流程等)。同时,我们要在测试工作中不断思考,努力发现现有流程中的不足之处,不断优化测试流程,使我们的测试工作更加高效,更加规范。
2.3 及时组建测试团队,配备优秀的负责人
我们收到项目需求后,要初步评估项目的规模,结合项目需要和实际情况,安排熟悉该项目领域的管理人员作为该项目的测试负责人,由其着手组建测试团队,根据测试项目的情况确定所需要的各类测试人员,努力保证人员及时到位。
我们测试人员可以根据需要分阶段地逐步投入,并根据测试工作的实际情况随时增减人员,但起关键作用的测试人员应该全程参与,尤其是项目测试负责人,其工作贯穿整个项目的始终,不建议中途更换,要慎重地择优选择。合适的测试负责人可以带领团队高质量地完成测试任务,帮助软件项目顺利上线运行,有效降低各类测试风险。
2.4 制定合理的测试计划并严格控制执行
我们测试团队的管理人员要充分考虑测试工作与整个软件生命周期内其他阶段之间的关联和制约关系,并深入研究软件测试流程中各阶段节点之间的前提和必要条件,根据业务需求文档做好测试需求分析工作,根据功能点细致地评估测试工作量,结合软件项目上线运行的时间预期,科学合理地编制测试计划。测试计划应具有可实施性,要与测试方案一并提交项目组评审,评审通过的测试计划要严格遵照执行。
测试团队还要时刻关注测试计划的执行情况,仔细了解每一项工作内容的进展情况、质量情况以及与时间计划的偏差情况,对于可能会导致测试延期的突发状况及时解决,严格监督测试计划的执行,努力避免时间计划修改和测试延期。
需要注意的是,测试团队的负责人要参与软件整体实施计划的制订,关注软件的研发计划安排,应使其尽量减少软件送测版本的产生,以免造成不必要的重复测试。
2.5 深入了解测试需求,确定高效的测试策略和测试方案
测试需求分析、测试内容规划、测试方案设计是防控测试风险、提高测试质量的关键。测试团队收到测试需求后,要了解软件的业务背景,要与研发团队、运维团队、业务人员建立良好的沟通合作关系,为后续的测试工作打好基础。在项目实施过程中,测试负责人要带领测试人员在项目需求分析阶段介入,与业务人员、项目管理人员、软件研发人员等一起讨论并明确业务需求,借此对软件的各项功能进行清晰准确地了解,这样测试团队就可以轻松地做好测试需求分析,确定高质高效的测试策略和测试方案。
测试方案要体现系统化的思想,编制人员要熟悉软件的系统架构和应用架构,要充分考虑软件局部缺陷的修复也可能对整个系统产生影响,引起其他环节出错,需要增加验证性测试。测试规划应体现资源节约、测试案例复用的思想,并注重软件关键环节的测试。测试内容规划和时间安排应在测试充分性、测试成本和测试质量之间寻找平衡。
此外,测试人员还要从技术角度出发,审查软件的运行环境配置要求、软件版本要求等是否明确,各类设计文档是否齐备,据此合理确定软件的测试范围、选择合适的测试平台、搭建测试环境,这些都是顺利完成测试工作和有效降低风险的必要条件。
2.6 人员风险和技术风险的有效防范
为了防范技术和人员的测试风险,我们应该做好测试人才队伍的建设工作,拟定测试人员的持续培训计划,通过讲师授课、测试案例分析、经验探讨等多重形式开展技术和业务培训,不断提升测试团队成员的技术、业务和管理能力。我们还应该树立榜样的力量,号召测试人员向技术水平高、测试经验丰富的高级工程师学习,不断超越自己,把我们的测试团队打造成一支会学习、有拼劲、技术过硬的队伍。
我们还应该采取有效措施防范技术风险。测试人员要时刻关注测试技术和测试方法等方面的发展趋势,学习和探索使用先进的测试工具和测试方法,要熟悉前沿的数据库和软件开发工具。我们也可以根据需要自己研发更加适用的测试工具,建立自己的测试管理平台,更好地把控测试流程,对测试项目进行高效地管理。另外,我们应该对测试的程序版本、测试资料等安排专人进行严格管理,可以借助SVN、VSS或其他管理工具来实现,尽全力做好软件测试的质量管理工作。
2.7 采取多重机制有效防控测试过程中的道德风险
我们在测试工作的各个环节中,对测试团队成员要加强管理和约束,应该依据测试相关制度规范的要求,对需要评审的文档(例如:测试需求分析、测试方案、测试案例、测试报告等)、会议记录、决策文档等做好签字、影像资料的存档留痕工作,这对于降低测试道德风险是至关重要的。
如果我们的测试项目涉及外部测试团队或研发团队,即使其是由招标选定的合作伙伴,我们依然要在正式合作开始前,根据监管部门的要求,也本着对我们自身负责的态度,认真做好尽职调查等工作。我们要严格要求我们的合作对象,在合同中详细约束各项条款,努力保证双方不折不扣地享受和履行各项权利和义务,防范道德风险。
3 结束语
我们测试人员要建立防患于未然的思想,采取一系列科学有效的措施来降低或消除各类测试风险,努力实现软件测试的最终目标--保证软件产品的质量。