天天看点

浅谈团队提高软件质量的方式

软件质量是产品或服务所满足明示或暗示需求能力的固有特性和特征的集合,软件的质量特性有功能性、可靠性、易用性、可维护性、可移植性。缺陷则指系统所需要实现的某种功能的失效或违背。在某种程度上,缺陷的数量可以用来评价软件的质量,高质量软件往往不会存在太多缺陷。那么在敏捷开发团队中,如何提高软件质量,减少测试轮次呢?如果分别从项目管理、开发人员、测试人员角度分析,可以简要归纳为下面几点:

1.让研发团队领导重视测试,测试部门和研发部门独立

研发领导重视测试,明白测试给项目带来的价值,重视每轮的测试报告,开发代码的质量会提高得多。其次,测试团队必须是独立于开发团队,在项目中不受制于开发团队,测试人员根据软件质量规范,结合项目实际情况预估测试时间,对产品进行测试,让测试驱动开发。测试团队应该是对产品经理负责 ,知道产品质量、产品进度、产品功能互相影响,追求极致,能站在客户的角度对软件进行测试,为客户提高良好的用户体验。

2.独立建立沟通机制,项目结束进行必要的复盘和总结,绩效考核加强督促力度

在实际做项目过程中,团队尽量要保持畅通的沟通环境和方式,避免因跨团队沟通不畅导致的bug,可以组织每天站会的形式,快速无边界沟通,做到信息同步,遇到问题及时沟通解决,提高效率。测试人员每天都编写测试日志,邮件抄送给项目部成员和公司领导报告每天测试情况,加强不同层次的领导对开发人员的督促力度。其次,同时可以把缺陷的数量、严重程度作为开发人员的绩效考核标准,提高开发人员的质量意识,促进开发编码规范。定期进行bug的分布分析,线上bug的分析,找到出现该bug真正的原因,bug频发的功能、场景,以及机型等,找出来一些预防避免的措施,度量与预防bug。针对项目过程中出现的问题,及时的做出调整,避免团队下次再犯同样错误。

3.保持测试和开发独立的测试环境,服务监控告警

大部分的项目硬件都非常昂贵,现在很多公司为了节省成本,开发和测试环境都在同一台机器上,开发人员在测试机器上开发,这样混乱的测试环境,导致一些测试出来的Bug可能不能够重现,增加了测试分辨定位bug的难度,甚至会把严重级别bug误以为是环境异常。所以应把测试环境和开发环境分开,测试数据库的数据再也不会随意被开发人员修改,测试出现的bug一般在开发环境也能够重现。运维层面提供完善的监控体系,分别从网络层、操作系统层、应用层、接口层、做到端口存活、进程存活、页面级别的监控,最好能做到行为级别的监控,包括后期根据业务发展进行扩容,参数调优等。通过这些方面的严格监控报警,为产品保驾护航,适应业务快速且稳定的发展。

4.规范开发编码,开发多自测,严格执行CodeReview

因为单元测试可以发现大约80%的bug,所以要求开发加大单元测试的力度,尽早发现并修复缺陷,减低测试成本。同时还可使用编程语言对应的format、link等代码审查工具对代码进行格式、引用等静态检查,规范代码格式,发现代码错误。规范编码开发不仅可以有效减少出现类似空指针、数组越界、崩溃这样的低级bug而且还很难定位bug原因的情况,快速查找bug,降低维护成本、极大地提高团队对代码的可读性,而且还有助于代码review。提交代码和sql上线时进行必有的review,可避免一条sql引起全站瘫痪。

5.细化送测标准,建立详尽的预测试和测试结束标准

测试经理在编写测试计划时,编写详细的测试规范,明确规定了软件版本的送测标准(如:某个独立模块的功能点完成了多少百分比,才能够开始测试等等,都要写成一个标准),如果被测试软件符合送测标准以后,开发部门才能够请求测试部门进行测试。测试部门接受到开发部门的配置表以后,在服务器上取下测试的版本,编译、部署后,安排部分项目核心人员,对部分主要的功能进行预测试,如果预测试通过了,就可以开始测试。如果预测试不通过,就打回开发部门修改好后再预测试,直到预测试通过为止。

6.测试部门建立完善的测试规范和上线规范

根据公司的实际情况来制定合理的测试流程,有效提高效率,明确PC、APP测试流程规范,大致分为测试需求分析、测试计划编写、case编写、case评审、接口测试、冒烟测试、功能测试、UED测试、UAT测试、性能测试、提交testin进行兼容众测,线上环境回归测试、发布版本后安装卸载升级主流程测试、测试报告编写,合理管理每个测试阶段相应的成果物产出。上线规范主要包括对代码分支的管理、代码的编译上线、上线前的自动化验证等流程。大部公司的研发分支团队很多,需要维护公共代码库,所以很有必要约定好一套规范的上线流程,保证分支代码正确才能合并到主干,再做主干整体回归,避免上线事故。

7.重视用例评审,提高测试用例的质量

就目前来说,很多的公司都不是很规范。一种情况:变更了软件需求,相应的测试用例没有及时增加,测试人员测试时,完全凭个人的理解和经验,想到哪里就测到哪里随便测试。另外一种情况就是测试人员设计测试用例的水平不高,测试用例质量较差,导致测试反复进行,也测试不出Bug。这就要求测试部门主管,加大测试用例评审的力度,力争以最少的测试用例,测试出较多的Bug。

8.部门员工进行模块交叉测试,避免漏测

测试主管在安排测试时,要注意“用人之长,避人之短”。测试启动阶段,要对这个系统集中培训,让测试部门的成员对整个系统达成一致意见,最好在第一轮测试时,尽可能发现较多缺陷,开发人员尽早修复。第二轮测试就可以进行模块交叉测试。一方面我们可以避免个人原因造成的漏测试,另外一方面也可以利用每个人不同的思维方式,很容易发现其它模块的缺陷,避免多次重复测试,提高测试人员的积极性。

简而言之,纯粹作为测试人员可以做到以下几点来提升软件质量:

1. 测试左移,测试提前介入至需求分析,甚至立项阶段。

2. 制定合理详细的测试计划,给予测试执行明确方向,杜绝盲目测试。

3. 测试用例严格评审,提高测试覆盖率,减少冗余测试用例,只需设计代表性强的等价类用例。

4. 严格测试提测标准,减少提测版本数量,一旦发现重大问题或未通过冒烟测试,则测试中断,版本打回至开发。

5. 主观能动性,积极主动沟通。与项目经理、产品经理、开发人员、市场人员及客户沟通,互相配合促进,增进感情,提高工作效率。

另外,从长远角度看,测试部门内部定期进行技能培训,阶段性测试工作完成后的总结会议,分享经验,加强沟通学习,尽早规避一些可预测性的软件风险,也是提升软件质量的重要方式。

写在后面的碎碎念:

写这篇博客主要是因为前段时间去某司面试被问到过这个问题,我当时只想出来了两点,事后深思有点意犹未尽,回来就赶紧通过在网上查阅资料,恶补了下有关测试管理的知识,感觉受益匪浅,内心久久不能平静,总觉得应该记录下来分享一下,或许下次还能用得上。嗯~这是作为软件测试小白的我停笔很久后写的第一篇博客,个人见解粗浅,可能有些地方还存在错误,欢迎大家留言纠正补充!!