本次上线的项目属于OA系统中的一个子模块。OA系统,百度百科上解释,Office Automation(简称OA),即办公自动化,是将计算机、通信等现代化技术运用到传统办公方式,进而形成的一种新型办公方式。办公自动化利用现代化设备和信息化技术,代替办公人员传统的部分手动或重复性业务活动,优质而高效地处理办公事务和业务信息,实现对信息资源的高效利用,进而达到提高生产率、辅助决策的目的,最大限度地提高工作效率和质量、改善工作环境。笔者所在公司的OA项目提供已授权的同事浏览各家公司首页、申请单据、审批单据等功能。本次谈及的项目模块即包含给公司首页浏览、公司专题配置以及模块编码功能。
产品提出的需求是在A部门的公司首页增加专题配置、增加单据年度编码配置。首先对需求进行分析:
需求场景1:
A部门未增加专题配置,浏览首页
需求场景2:
A部门增加专题配置,启用专题,浏览首页
需求场景3:
A部门增加专题配置,禁用专题,浏览首页
需求场景4:
A部门增加专题配置,启用专题后删除,浏览首页
需求场景5:
A部门增加专题配置,禁用并删除该专题配置,浏览首页
需求场景6:
A部门未增加单据年度编码配置,新增单据
需求场景7:
A部门增加单据年度编码配置,启用配置并跨年结转,新增单据
需求场景8:
A部门增加单据年度编码配置,启用配置并跨年不结转,新增单据
需求场景9:
A部门增加单据年度编码配置,不启用配置,新增单据
需求场景10:
A部门增加单据年度编码配置,禁用并删除配置,新增单据
进行业务场景分析后,接着设计相应的测试用例,覆盖到以上场景。但是大家没有意识到部门之间首页会有相互影响。
在开发提测后,笔者在测试环境进行全面的测试。测试场景7时,发现比较有意思的bug:增加单据年度编码配置,设置跨年结转,并启用了该配置。在新增转年的第一张单据时,抛出了异常,随即反馈给开发。开发通过代码跟踪,发现分支中没有涵盖上一年编码为空值的情况,增加了这一异常分支,该bug被彻底修复。
测试环境通过后,已到下午,逼近上线时间,预生产环境没有再验证,流转到预生产环境产品验收环节,产品验收通过后该项目上线。上线后第一天,产品经理给A部门配置好专题并启用,随后上午其他部门曝出首页加载报错的问题。开发人员查找原因,最后找到分支没有考虑专题配置为空的情况,紧急修复后再次发版。
分析原因,日后笔者要在以下三个方面加强。
·首先是测试用例的覆盖率。线上出了问题,团队首先想到测试人员把关不严。当然也有产品验收不到位的因素以及开发人员代码漏洞的原因。从我们自身出发,测试用例除了涵盖当前需求,还需要评估对周边业务的影响。从本案例中可以看出,bug埋藏点均在代码分支仅考虑variable != 0的情况,未考虑variable=0、NULL或空的情况,这也可作为测试工作中着重检查点之一。
· 其次,需要深入了解OA业务,从点到面,点面结合,避免一井之蛙的思维。除了当前需求部门之外,再检查下其他部门页面,尤其是预生产环境坚持做验收工作。如果重复性高,可加入自动化手段,测试时间不够就需要及时和上级沟通。
· 最后一点,也是笔者认为最重要的,与各方多沟通。本项目案例中,开发同学提测时提到首页业务多,不确定影响,可能会有问题。测试人员在测试过程中应该多找开发沟通,推动开发自测,与产品经理沟通,推动业务需求确认。作为测试工程师,既能考虑到项目的美好,又该有项目失败的心理准备,才能磨练内心强大,这也是测试工程师的必修之路!
作者:枫叶