分享

软件质量持续改进浅谈

 金色的太阳32 2016-03-11

软件质量持续改进,这是一个对我来说非常泛的题目,在经过7年的软件质量工作中摸爬滚打之后,还是想说说自己的一些理解。

软件质量保证的手段,在目前的流程化建设思维模式下,可能要求项目团队过程中主要涉及到需求变更把控、开发风险控制、持续集成设计以及测试能力建设来控制和保证。

第一点,需求变更把控,主要是在敏捷开发测试模型下的需求迭代变更时,团队对于变更的快速、准确的理解把控,在快速迭代过程中能够及时高效的将变更需求予以实现;

第二点,开发风险控制,主要开发团队在设计、编码以及Bug修改过程中的风险控制能力,设计是否达到需求(变更后)要求、是否是最优实现方案、是否具备一定的可扩展能力等等,编码阶段的编写格式统一要求是否达到,代码管理的严谨性以及设计转编码过程中的准确实现能力,Bug修改过程中需要能够准确评估波及影响、准确定位和解决、自测自检规范的严格执行;

第三点,持续集成设计,是一种依托敏捷开发模型流行起来的质量保证方法实践,通过自动化构建(编译、发布、自动化测试)的手段能够尽快发现集成问题,增强项目的可见性。但是这种实践对于团队的内部的积极配合有非常高的要求,计划性工作、里程碑的节点设置,都需要各个小组之间能够无缝衔接。同时,此实践对于团队的技术水平也有较高的要求,包括敏捷模型理念的普及、自动化的构建技术等;

第四点,测试能力建设,对于一个软件质量人来说,测试能力不仅仅是软件测试技术水平,更重要的是对于软件质量提升的意识能力建设。测试团队的人员构成在组建初期就需要有明确且清晰的岗位定义,从单元、集成、系统、安全、性能、自动化技术掌握程度等各方面予以不同的技术侧重定义,测试流程/方案/计划的设计能力定义,以及整体质量控制能力定义。

那么基于以上四点,项目团队如何在实际项目化过程中加以应用呢?

第一步,项目团队组建

其实,关于团队的建设,在“挨踢”行业,能力水平、思想文化是最为重要的两点,能力水平最大化、思想文化高度一致,说白了,任何事情都是由人来推动完成的,所以,中心永远是人。

预算&工期、团队结构、岗位职责、任务分配是在项目团队组建初期需要明确这几个最基本的因素,另外,在团队架构设计时也需要将后期的动态调整空间预留出来。

在软件开发项目,基本的角色有架构设计、项目管理、开发执行、过程管理、质量控制、需求管理、销售实施,不同的角色有不同的定义和要求,在组建初期,需要根据我们预算&工期进行合理的人员配置,每一个人都必须有严格且清晰地岗位职责,根据项目不同角色的任务划分来完成每一个人的工作任务下发和统计跟进。

在这一步多说一些,那就是思想和文化,这或许比能力技术之于项目推进更为重要,一定要避免“踢皮球”现象的产生,推卸责任是团队工作的大辟,管理人员一定要高度关注此类心态的产生。这里结合自己以前所参与过的项目经验,首先一定要有”合情合理合法“的管理制度,通过制度的约束一定程度上能够弥补个体自觉能力不足的缺陷,其次,作为多人配合组团完成的工作,一定也要有奖惩方案,在目前的行业文化中能够激发非常强大的力量,最后,互帮互助、鼓励犯错、团队至上的思想要时刻贯穿于项目过程中,把要所有人的力量集中于一点,才能够有丰硕的项目成果产出。

第二步,项目需求分析转设计

1)客户的需求收集分析

调研客户的需求,客户的定位、分类以及特点,客户的核心需求,核心功能有哪些,分别满足客户的哪些核心需求;

调研竞争和市场发展,要以市场发展为中心,通过调研竞争对手以及对应的产品的有缺点,学会自我突破和创新,准确把握产品技术的发展趋势;

分析产品定位、不足和解决什么问题,要知道我们做的是什么,我们产品的核心价值,以及和市场同类产品差异化在哪,优势是什么;

分析投入和盈利能力,产品满足客户的需求的基础上,我们通过什么样的方式来盈利;

需求的有层次分解是需求分析的最终目的,当然,这里的需求分析是要通过各种手段方法确认需求正确性、合理性、必要性等各个方面进行综合分析,这是为下一阶段完成产品设计模型做的基础。

2)需求转化设计

这是成熟团队在项目初期必不可少的步骤,如果缺失此步骤,那么就会出现需求直接跳到编码,无异于空中楼阁,会形成一个非常大的产品隐患。正确的做法是,在完成需求收集分析的基础上完成设计模型的勾勒,针对不同的需求形成独立的多角度的设计方案,通过控制成本、功能健全、性能稳定、用户友好等不同的维度对所有的方案进行综合的考量,最后形成一个最优的设计方案并形成设计模型。

第三步,项目过程质量优化方案

关于过程质量优化,我会根据工作性质的差异分成如下几个阶段进行说明。

需求:需求变更导致的迭代设计变化,要求能够准确理解、高效控制,即在需求有变更的时候,要求能够对于新老需求进行准确地理解,在可控范围内完成产品需求的增删改,同时也要有高效率的变更能力,能够及时响应需求的变更,对于新旧需求变更带来的关联性影响也需要有强大的控制力。

编码:最优设计模型的基础上,根据功能的模块化分解,以工作量作为划分依据完成编码工作的责任到人。同时,要形成本阶段的工作计划,包括进度、成本、质量、自验证等,工作推进过程中的各项资产的跟进管理,如文档、版本等等。通过编码标准、阶段化检查、公用资产有效管理等手段进一步加强编码阶段的质量控制。

测试:由于测试是质量持续改进非常重要的一个环节,而且,这个阶段所有的工作都是围绕产品质量,所以,本阶段各个工作的开展都是至关重要的且必不可少的。由于不同的项目会有特定的开发模型,如瀑布模型、螺旋模型以及现在流行的敏捷开发等等,在不同的开发模型下测试工作也会有差异性存在,包括产品形态,如互联网产品、大数据产品、手机APP等等,各个产品也会有不同的测试侧重点,但是不过大体的测试流程不会有太大的差异性。

这里主要说明的是在测试环节里,测试团队需要具备的几个能力以及如何正确应用以达到产品质量的持续改进。测试方法与技术、测试过程管理、计划方案及用例的设计、Bug跟踪管理、持续优化,首先在一个项目实践开始之前一定要有一套测试合适的体系,也就是说一定要根据多种元素去合理的制定一套将测试方法与技术、测试过程管理、计划方案及用例的设计、Bug跟踪管理、持续优化其中的体系,否则,测试工作将不能发挥最大的效果,这是需要测试经理或主管具备此种建设能力。

在现今敏捷大行其道的形势下,如何提高测试的效率、降低测试的风险是摆在所有测试人面前的一个难题,这就需要我们更要具备以下几个基本的基础能力:自动化应用能力、扩展思维能力、需求分析能力、框架设计能力,自动化现在已经成为最为基础的一个tester能力要求,扩展思维能力则是要求测试人员能够根据产品的形态和行业发展态势进行合理的功能化建议,需求分析能力是要求具有需求转计划和用例的构思能力,准确的对需求进行分解并形成测试计划和测试用例,框架设计更多的是要具有将不同测试方法、测试类型、测试技术完美结合形成适合自己的产品测试的实践。

第四步,项目实施控制

在这一步中,其实,实际需要去讲的东西不太多,主要就是能够将以上几个步骤中的内容进行严格监控并执行即可。实施控制过程中要学会灵活变通与严格要求相结合、内部沟通与外部采集相结合,根据项目的模型不同可以去应用一些持续集成的实践框架,这样其实更利于实时管理和风险的提前预警。

说了这么多,其实就一个核心思想,无论什么样的人员在什么样的项目应用什么样的技术去做什么样的产品,一定要具有技术和管理持续优化改进的能力,这样才能够推动软件产品质量的不断地持续地改进。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多