“软件质量”,构筑企业值得信赖的护城河

引子

质量是产品的生命线,质量问题不仅会导致企业财产损失,还可能引发业务中断、客户满意度下降、企业品牌声誉受损等负面影响。如何在软件开发过程中全方位构建产品质量防护盾,是各行业保障产品高质量的重要课题。

如何保障软件质量?

保障高质量的产品研发,需要在软件开发生命周期中实现有效的质量管理与控制,让缺陷在开发、测试、部署各阶段无处遁形。从华为公司自身实践来看,需要从代码质量、CI/CD流程质量、持续反馈与改进三个方面入手,构建全流程质量管理能力。

1、代码质量如何保障?

首先,要对代码进行检视。《代码大全》的研究结果显示,各种研发活动中,代码检视的代码检测率高达60%,可以有效提前发现显而易见的错误随代码上库,提升代码质量,并且实现高级开发人员的知识传递,增强团队意识。

其次,要建立代码上库流程。在软件生命周期中,缺陷发现越早、修复越早,缺陷的影响和修复代价就越小。数据显示,产品发布后每个缺陷的平均修复成本是验证阶段的6倍以上。为提前拦截产品缺陷,避免有缺陷的代码合入主干,同时保证代码符合不同企业的流程规范,灵活有效的门禁控制是必不可少的。

然后,作为门禁看护的重要步骤,要进行代码检查。软件开发事前预防的成本远低于事后补救。如果程序员在代码编写阶段能够及时修正软件缺陷和安全隐患,避免缺陷流向后端,就可以有效提升产品质量。

  1. 提前发现问题:代码检查能发现逻辑、语法错误和性能问题,预防系统崩溃。
  2. 提高代码质量与安全性:确保代码符合标准,通过自动化检查工具快速定位并修复问题,增强系统稳定性和安全性。
  3. 持续集成与预防:作为CI/CD流程的一部分,代码检查有助于快速响应修复,同时积累经验预防未来问题,提升软件长期稳定性。

最后,要进行单元测试。单元测试是软件开发过程中的一种重要测试方法,可以针对程序模块进行测试从而检验其正确性。。

  1. 确保功能正确:单元测试验证代码单元功能,确保预期输出,提高代码质量。
  2. 早期发现与自动化:早期发现问题,自动化回归测试,支持持续集成,减少系统级问题。
  3. 促进维护与重构:增强代码可维护性,支持重构,提高开发效率,提升用户信心。

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多个质量度量指标,支持按照功能、性能、可靠性等维度评估质量,还支持按照需求、缺陷等维度评估,测试评估从天级缩短到小时级。同时还提供了分支和测试计划两级测试质量看板和实时质量报告,全方位、可视化呈现研发测试过程和结果数据,支持产品研发阶段随时评估质量,方便研发团队及时、高效、准确的掌握产品质量现状,实时掌控产品的研发进度和风险。

灰度发布

华为云灰度发布提供模板化管理,可将发布流程预置为模板,提升发布编排效率,规范发布流程;支持多场景灰度发布模式,包括蓝绿发布、金丝雀发布、滚升发布等多种灰度策略编排。提供发布流程控制,将一次发布任务分解为多个步骤,发布与测试同步,通过监控浸泡进行步骤流转,降低发布风险。同时整个发布过程可视化,通过发布单实时观测微服务的健康情况,异常情况可一键回滚至旧版本,从而全方位保证发布的质量和安全。

从数字世界迈向智能世界,软件已经成为企业越来越重要的资产。守护软件质量,也就是守护企业长期构筑“值得信赖”的品牌。“软件质量”绝非一时兴起,而应该在企业中形成“软件质量”文化,并将质量保障相关的研发工具融入到企业软件生产过程中,使其每时每刻发挥作用,才能真正将“软件质量”落地。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3268010.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

五、SpringIoC/DI的使用

1. 类注解、方法注解 告诉spring管理bean—>bean的存储 1、类注解:五大注解 Controller(控制器存储)、 Service(服务存储)、 Repository(仓库存储)、 Component(组件存储&#xf…

【Linux】管道通信和 system V 通信

文章目录 一、进程通信原理(让不同进程看到同一份资源)二、管道通信2.1 管道原理及其特点2.1 匿名管道和命名管道 三、共享内存通信3.1 共享内存原理3.2 创建和关联共享内存3.3 去关联、ipc 指令和删除共享内存 四、消息队列和信号量(了解&am…

VirtualSurveyor9.0.3 无人机测绘软件功能介绍

Virtual Surveyor9.0.3中文版是功能强大的无人机测绘软件,使用旨在为用户提供完整的地理空间数据可视化和分析功能,带来提高的生产力,功能全面而强大,在无人机到CAD模型的过程中,使用Virtual Surveyor软件来拆卸输送机…

情绪稳定的人有什么特点?

第一部分:至纯之人,大器晚成 1.1 单纯,不是天真 你知道吗?那些能够成就大事的人,往往在人性上非常单纯。他们对外界的需求很低,更多的是向内寻求。这样的人,他们的内心世界像一片净土&#xff…

数据结构与算法--顺序表(Java)

📝个人主页🌹:誓则盟约 ⏩收录专栏⏪:Java SE 🤡往期回顾🤡:Java SE--基本数据类型(详细讲解) 🌹🌹期待您的关注 🌹🌹 什么…

每日任务:TCP/IP模型和OSI模型的区别

介绍一下TCP/IP模型和OSI模型的区别? OSI模型由国标准化组织提出,而TCP/IP模型是由美国国防部开发的; OSI模型由七个层次组成,从下到上依次为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP模型只有四层…

AI视频生成(即梦)

1.打开即梦网页版 https://jimeng.jianying.com/ai-tool/home 2.图片生成-导入参考图(这里原本的红色或者灰度图都是可以的)-精细度5(最高图质量越高) 注:根据需要,选择不同的生图模型,具有…

线上监控诊断 - Arthas

简介 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并且能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,…

SAPUI5基础知识20 - 对话框和碎片(Dialogs and Fragments)

1. 背景 在 SAPUI5 中,Fragments 是一种轻量级的 UI 组件,类似于视图(Views),但它们没有自己的控制器(Controller)。Fragments 通常用于定义可以在多个视图中重用的 UI 片段,从而提…

项目实战1(30小时精通C++和外挂实战)

项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…

FPGA:流水灯设计

本次基于FPGA实现流水灯,即让LED[0:7]从左到右依次电量,每个LED灯频闪周期为1s钟,在这里,给出下面三种实现思路: 1、实验思路 1、使用位运算符 在复位时令LED灯为LED8’b0000_0001,然后每过一秒钟&#x…

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 (1)软件生存周期 (2)软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程,提出了两个模型:能力成熟度模型(CMM&#…

嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)

目录 项目概述 系统设计 硬件设计 软件设计 系统架构图 代码实现 1. STM32微控制器与传感器代码 代码讲解 2. MQTT Broker设置 3. 数据接收与处理 代码讲解 4. 数据存储与分析 5. 数据分析与可视化 代码讲解 6. 数据可视化 项目总结 项目概述 随着电子商务的快…

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

暴风骑士S9电摩上市,定义青少年骑行安全新标准

暴风骑士&#xff0c;作为全球高端儿童电动车的开创品牌&#xff0c;以其卓越的技术实力和创新精神&#xff0c;不断推动行业发展。如今&#xff0c;暴风骑士再次突破自我&#xff0c;推出了全新力作——S9青少年电摩。这款全新上市的青少年专属电摩&#xff0c;以其领先的安全…

LCD 横屏切换为竖屏-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

LCD 横屏切换为竖屏 横屏显示如何切换为竖屏显示 LCD 屏默认横屏显示 开发板配套的 LCD 屏默认都是横屏显示&#xff0c;如 4.3 寸、7 寸和 10.1 寸的不同分辨率的 RGB LCD 屏 固定坐标体系 &#xff08;以 800*480 分辨率为例&#xff09;横屏模式下的固定坐标&#xff1a;…

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

Vitis AI 使用 VAI_Q_PYTORCH 工具

目录 1. 简介 2. 资料汇总 3. 示例解释 3.1 快速上手示例 4. 总结 1. 简介 vai_q_pytorch 是 Vitis AI Quantizer for Pytorch 的缩写&#xff0c;主要作用是优化神经网络模型。它是 Vitis AI 平台的一部分&#xff0c;专注于神经网络的深度压缩。 vai_q_pytorch 的作用…

如何应对SQL注入攻击?

引言 在现今的网络世界中&#xff0c;安全性已成为至关重要的话题。SQL注入&#xff08;SQL Injection&#xff09;是一种常见且危险的网络攻击方式&#xff0c;攻击者通过向SQL查询中插入恶意代码来操控数据库&#xff0c;从而获取敏感信息或破坏数据。了解SQL注入的各种类型…

2024中国大学生算法设计超级联赛(2)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 &#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 A - 鸡爪解题思…