引子
质量是产品的生命线,质量问题不仅会导致企业财产损失,还可能引发业务中断、客户满意度下降、企业品牌声誉受损等负面影响。如何在软件开发过程中全方位构建产品质量防护盾,是各行业保障产品高质量的重要课题。
如何保障软件质量?
保障高质量的产品研发,需要在软件开发生命周期中实现有效的质量管理与控制,让缺陷在开发、测试、部署各阶段无处遁形。从华为公司自身实践来看,需要从代码质量、CI/CD流程质量、持续反馈与改进三个方面入手,构建全流程质量管理能力。
1、代码质量如何保障?
首先,要对代码进行检视。《代码大全》的研究结果显示,各种研发活动中,代码检视的代码检测率高达60%,可以有效提前发现显而易见的错误随代码上库,提升代码质量,并且实现高级开发人员的知识传递,增强团队意识。
其次,要建立代码上库流程。在软件生命周期中,缺陷发现越早、修复越早,缺陷的影响和修复代价就越小。数据显示,产品发布后每个缺陷的平均修复成本是验证阶段的6倍以上。为提前拦截产品缺陷,避免有缺陷的代码合入主干,同时保证代码符合不同企业的流程规范,灵活有效的门禁控制是必不可少的。
然后,作为门禁看护的重要步骤,要进行代码检查。软件开发事前预防的成本远低于事后补救。如果程序员在代码编写阶段能够及时修正软件缺陷和安全隐患,避免缺陷流向后端,就可以有效提升产品质量。
- 提前发现问题:代码检查能发现逻辑、语法错误和性能问题,预防系统崩溃。
- 提高代码质量与安全性:确保代码符合标准,通过自动化检查工具快速定位并修复问题,增强系统稳定性和安全性。
- 持续集成与预防:作为CI/CD流程的一部分,代码检查有助于快速响应修复,同时积累经验预防未来问题,提升软件长期稳定性。
最后,要进行单元测试。单元测试是软件开发过程中的一种重要测试方法,可以针对程序模块进行测试从而检验其正确性。。
- 确保功能正确:单元测试验证代码单元功能,确保预期输出,提高代码质量。
- 早期发现与自动化:早期发现问题,自动化回归测试,支持持续集成,减少系统级问题。
- 促进维护与重构:增强代码可维护性,支持重构,提高开发效率,提升用户信心。
2、CI/CD流程质量如何保障?
首先,要建立分层的质量门禁措施。Policy As Code(策略即代码)是一种通过代码来定义和管理自动化策略的方法,基于代码的自动化而不是依赖手动流程来管理策略,允许团队更快地交付并减少人为配置错误的可能性,是一种提高软件交付质量的最佳实践。
其次,针对开源软件要进行风险治理。据调查,全球超过90%的企业在其软件开发过程中使用了开源软件,开源软件的风险直接影响到产品软件。开源软件使用面临3大威胁:网络安全,开源软件供应链面临持续漏洞/恶意代码攻击风险,过去三年针对软件供应链的攻击平均年增长高达742%;供应安全,部分场景下无法继续参与或获取开源软件;合法合规,违反开源License会引发相应法律纠纷或诉讼。除了使用软件成分分析工具对软件进行扫描,识别使用的开源软件,进行风险治理,从前端开源软件引入阶段进行开源管控可以更有效的进行开源风险管理。同时要对开源软件进行漏洞扫描。软件漏洞不仅会带来严重的安全隐患,还会给企业和用户造成巨大的损失。
最后,通过灰度发布,企业可以在保持发布效率的同时降低潜在的负面影响。灰度发布模式包括蓝绿发布、金丝雀发布、滚升发布等。同时整个发布过程可视化,通过发布单实时观测微服务的健康情况,异常情况可一键回滚至旧版本;从而全方位保证发布的质量和安全。
3、如何通过测试持续改进软件质量?
首先,通过启发式测试策略与设计,生成高质量用例。及时识别并修正软件中的缺陷至关重要,因为这些缺陷如果在产品推向市场后才被察觉,其修复成本将显著上升。统计数据表明,修复市场发布后发现的缺陷的成本是产品测试阶段的六倍。这不仅会加大企业的财务压力,还可能损害产品形象和客户满意度。因此,增强测试的全面性,确保在产品发布前捕捉到所有潜在缺陷,是企业必须重点关注的战略问题。
其次,第一时间拦截现网问题,实时看护运行态质量。功能测试是质量保证中的重要环节,主要目的是验证软件的各项功能是否按设计要求正常运行。在功能测试的范畴内,冒烟测试是一种快速检查关键功能是否正常工作的方法,通常用于尽早发现可能影响主要功能的严重缺陷,保障测试环境与现网环境部署的质量。
然后,全面质量度量与评估,让质量管理不开盲盒。科学的质量管理离不开成熟的测试质量评估模型和规范,让产品质量可视化、可度量,“让质量暴露在阳光下”,达成高质量的目标。
最后,持续集成自动化测试,保障高质量部署。出色的自动化测试可以提高测试效率、覆盖率、降低成本,提供快速反馈,帮助开发团队了解代码更改的影响,快速定位问题并修复。自动化测试在持续集成环境中也是不可或缺的一部分,它可以在代码每次提交后自动运行,确保新代码不引入新的错误。
华为云软件质量保障方案
华为云软件开发生产线CodeArts是华为30年研发实践的沉淀,其端到端质量保障的流程与方法一直在华为研发团队中打磨、精进,深入软件开发各环节,助力提升代码质量、DevOps流程质量、产品质量,为企业打造可持续改进的、保障高质量产品的平台,助力企业效率提升,业务无忧。以下几个重点产品在软件生命周期质量管理中起到重要作用。
代码检视
华为云CodeArts Repo提供多维度的代码检视能力,以合并请求为维度,提供分散式协同检视,配合门禁系统保证检视意见的闭环,从局部层面确保在每次代码入库前的质量;以仓库为维度,提供团队集中检视,从全局层面对入库后的代码进行检视,持续保证代码质量。其检视功能支持多种角色协同配合,保证检视意见能够在不同的角色间灵活的流转,并且通过权限控制,确保检视意见可跟踪,有效闭环。
代码检查
华为云CodeArts Check为用户提供深度代码检查服务。从开发编码、代码合入、版本发布等多个研发阶段提供代码扫描服务,及时发现研发过程中出现的代码问题或潜在风险。不仅提供了开箱即用的DevOps解决方案,还提供了友好的API接口,为CI/CD提供快速接入能力。
测试计划
华为云CodeArts TestPlan提供需求覆盖率、需求通过率、用例执行率、遗留缺陷指数等10多个质量度量指标,支持按照功能、性能、可靠性等维度评估质量,还支持按照需求、缺陷等维度评估,测试评估从天级缩短到小时级。同时还提供了分支和测试计划两级测试质量看板和实时质量报告,全方位、可视化呈现研发测试过程和结果数据,支持产品研发阶段随时评估质量,方便研发团队及时、高效、准确的掌握产品质量现状,实时掌控产品的研发进度和风险。
灰度发布
华为云灰度发布提供模板化管理,可将发布流程预置为模板,提升发布编排效率,规范发布流程;支持多场景灰度发布模式,包括蓝绿发布、金丝雀发布、滚升发布等多种灰度策略编排。提供发布流程控制,将一次发布任务分解为多个步骤,发布与测试同步,通过监控浸泡进行步骤流转,降低发布风险。同时整个发布过程可视化,通过发布单实时观测微服务的健康情况,异常情况可一键回滚至旧版本,从而全方位保证发布的质量和安全。
从数字世界迈向智能世界,软件已经成为企业越来越重要的资产。守护软件质量,也就是守护企业长期构筑“值得信赖”的品牌。“软件质量”绝非一时兴起,而应该在企业中形成“软件质量”文化,并将质量保障相关的研发工具融入到企业软件生产过程中,使其每时每刻发挥作用,才能真正将“软件质量”落地。