提到“码农”,提到“程序猿”,大家都非常熟悉。但是提到测试,很多人都只是听过,但并不太清楚测试人员到底是做什么的;即使每天跟测试人员接触的“程序猿”,他们看到的也只是我们在写用例,我们在手工测试,我们在提bug,我们在发报告。其实他们所看到的这些工作也只是我们的一部分,或者只是我们其中的一个角度。
不同的人在不同的阶段对测试会有不同的认识。我们负责京东零售平台的测试工作,一直也在思考;测试团队到底有什么样的价值?以及如何发挥一个测试团队的价值?
“价值”可以分开理解,“价”和“值”可以有不同的含义:
“价”:要求我们测试人员必须做好我们的质量保障工作,减少线上问题,降低系统在线上运行的风险;这就是我们的“价”之所在。
“值”:就需要我们思考,如何更好的发挥我们的“价”,让我们测试团队更“值”!
比如,我们测试就需要我们通过编写用例、执行用例去发现bug;但是如何能够在最短的时间发现最多最重要的问题?以及如何在保证质量的同时,能够让我们的项目快速上线?这就是我们测试团队的“值”。京东零售平台测试团队是如何发挥我们的价值的呢?主要是通过下面三个方面进行的。
一、全流程质量保证
测试,只是项目过程中的一个阶段;我们不是软件的生产者,但是我们是软件质量的守护者。为了保证我们的产品质量,不能完全依赖于测试,或者依赖于开发;因为产品的质量不是依靠一个团队或一个阶段就可以保障的。我们必须在软件生产的整个流程、每一个阶段进行控制、监管,所以我们提出了“全流程质量保证”。
1. 需求阶段:让bug停留在纸上。
大家都知道测试介入越早越好,因为介入越早,测试人员就可以尽早的了解需求,更深入的理解业务,也可以更早的发现一些问题。尤其是在需求阶段,如果能帮助产品提前发现一些需求或流程上的问题,这样就可以避免后期设计、编码、测试很多不必要的时间浪费,可以大大降低项目的风险。
据微软统计,产品发布以后修复一个问题的成本是150万美元(间接成本在200万美元),发布之前的修复成本是5万,设计阶段修复成本是1千,需求阶段修复成本是1百。
在京东零售平台,我们都会要求测试人员在需求分析阶段就介入,参与与业务方沟通需求中,深入理解需求的背景及目的。然后站在测试的角度分析需求的范围、重点、可用性、易用性、流程的完整性、异常处理能力等。帮助产品经理提前完善需求,站在测试角度进行需求的补充。尽可能地提前将产品中的遗漏、缺陷、问题暴露,让需求阶段的bug提前发现,提前修复,只停留在需求分析阶段,而不会遗漏到编码或测试阶段再去发现、修复。
2. 研发阶段 :让bug止于摇篮。
研发阶段就是把产品进行代码实现的阶段,一个产品90%的bug 都是产生在这个阶段;按照正常的测试流程,这些bug一般都是在测试阶段被发现。但是如果我们能够在编码阶段就提前发现代码中的缺陷,那修复bug的成本以及后续的测试成本都会大大降低。
在京东零售平台,我们是通过这几种方式来提前发现代码缺陷的:
参与开发的设计评审,并根据我们在业务及系统方面的经验积累,可以帮助开发提前补充代码设计方面遗漏和缺陷。
通过白盒测试,在编码过程中就投入测试资源,测试单元模块中的问题。
通过sonar平台对代码进行静态扫描,发现代码中的问题。
通过流程控制,要求开发必需经过代码评审才能提交测试。
3. 测试阶段 :让bug无处可藏。
测试阶段,也是我们工作最重要的一个阶段。在这个阶段系统各个模块都已集成,并部署到测试环境中。我们就需要进行系统的测试,站在用户的角度,通过专业的测试分析进行用例设计并测试。
在测试阶段我们还会分为用例设计、用例评审、冒烟测试、分支测试、主干测试、联调测试、回归测试、用户验收测试等不同阶段;根据业务类型及业务情况我们会进行功能、性能、兼容性、易用性、稳定性、用户体验等方面的测试;通过不同阶段不同类型的测试,让bug无处可藏。
但是如果线上发现了问题或待优化的功能,我们每周都会组织线上问题分析会。由产品、研发、测试共同参加,分析问题的根本原因及解决方案,从技术、管理和流程等方面对问题进行分析,以保证同样的问题后续不再发生。
4. 上线阶段 :线上排查,抓捕漏网之鱼。
经过前面几个阶段的测试,系统就可以保证正常上线了。但是测试团队是否就可以撤出了呢?答案一定是否定的。虽然系统经过了严格的测试,但是毕竟线上的情况和场景会更加复杂多变,为了保证系统在线上正常运行,我们必须在系统上线后进行验证和监控,保证系统正常的跑起来;一旦有漏网之鱼,我们也会在最短的时间内进行补救。保证不会因漏网之鱼导致更大的漏洞和损失。
二、效率提升
能够保证项目的质量,保证项目按时上线,这是对我们的基本要求。如果目标更高,就要求我们能够投入最少的资源,在最短的时间内完成项目测试,让项目早日上线,帮助我们的用户解决问题。我们提升工作效率是从下面几方面进行的。
1. 工具辅助:
在测试过程中,所有工作都是由人工进行执行的。但是有些重复性的,或者可以利用代码利用机器帮我们实现的工作,我们都会编写一些测试工具来帮助我们完成,这样我们就可以解放我们的双手解放我们的大脑,投入到其他工作中,而且工具永远也不会感到累,他们执行的速度也会比我们快很多。所以利用工具来辅助我们测试,使我们的效率会大大提高。
当然我这里说的工具不仅仅指的是一些小的测试工具,还包括我们的UI自动化测试、接口自动化测试、持续集成平台、自动部署、静态代码扫描工具等。只要是能够帮助我们分担测试工作,提高工作效率的,都是我们的好帮手。
为了提高开发所提交代码的可测性,可以让我们的工具,持续集成、自动化测试等应用到开发环节,帮助开发在代码编写阶段进行自测。通过自测,提升了提测代码的可测性,在测试阶段就可以减少很多因为代码不可测而浪费的时间。
有一些系统,开发拥有自己的测试环境;这样开发同学在开发过程中就可以充分利用我们的持续集成平台,进行自动部署测试环境,自动运行UI和接口自动化程序,快速反应代码合并后的质量。利用我们的工具帮助我们的研发和测试完成持续开发、持续集成、持续测试,让每一次代码的合并都得到有效、快速的质量保障。
2. 流程优化:
作为商城研发下的重要部门,零售平台一直注重项目和需求流程规范管理,在京东研发管理体系的基础上,零售平台内部产品、研发和测试团队一起对整体流程进行梳理,评审和讨论,最终形成适合本部门的质量管理体系。目前这套流程规范已经在零售平台内部进行宣贯和推广使用。通过规范项目过程和大家的工作流程,减少不必要的沟通成本,力争一次性把事情做对,从而保证最终产品质量。
首先,我们总结了项目/需求过程的三四五原则,并在整个部门大力推广,由质量保证人员定期审核项目需求流程规范性,每周以质量周报形式通报结果和改进方向。
三指项目的三大阶段需求、研发、测试阶段,每个阶段都有明确的活动及产物定义;四是四次主要评审需求、设计、代码和测试用例评审,要求项目组全体成员参与,力争在项目前期将问题暴露出来并解决;五指的是五大主要文档,包括需求文档、设计文档、测试用例、测试报告、线上验证报告,项目组严格按照该原则要求,在每一个阶段完成时,完成本阶段的活动,并提交相关产物,从而确保后续工作顺利开展。
同时,将流程规范与系统相结合,通过TIP(测试集成平台)实现流程的自动化:
以TIP测试集成平台为核心,我们已经通过与PMP项目管理系统、Jone统一工作平台、Source代码共享平台相互协同,实现需求管理,研发管理,测试管理等相关活动流程化、标准化和自动化。目前已实现研发线上提测、测试人员发送测试报告,研发人员发送自测报告等功能,给研发和测试人员的日常工作带来极大效率提升,同时通过系统及时保存了珍贵的项目/需求过程资产。另外测试阶段可通过工作流的形式,通过可配置化任务将编译、打包、部署、测试等任务组合起来,实现一系列持续集成流程,每天定时执行,定时反馈,极大的提高了测试人员的效率。TIP平台功能仍在不断完善和丰富,为不断提升零售平台整体质量水平,我们一直在不懈努力。 |