畅聊云原生·第十四期|揭秘软件质量之谜
前言 第十四期·畅聊云原生如期举办,本期主题聚焦大家热议话题软件质量。本次活动筹备及主持工作特别邀请九章云极技术合伙人王俊鹏先生,联合出品人邀约招商证券资深研发效能专家黄俊、华为软件测试工具TMG主任宿敏以及毕马威中国数字化赋能及人工智能主管合伙人张庆杰,聚集软件质量发展背景、应用价值和未来发展趋势三个方向给我们带来高质量软件的践行之道的主题与创原会会员开展研讨和剖析。
▍软件质量与研发成本
九章云极技术合伙人王俊鹏表示:
“从认识到软件质量的价值到真正实现软件质量的价值,需要企业持续投入积累沉淀,以产品运营的思路运营软件质量产品,聚焦行业应用和典型场景打造软件质量产品。具体可以从三个维度来考虑:首先是企业运营支持和管理决策的需要,其次是企业业务转型的创新的需要,最后产业链工具对外赋能的需要。”
从招商证券资深研发效能专家黄俊了解到,
“软件的高质量通常是建立在研发的高产出基础上的,这种高产出并不全等于高投入,而是高效率。一方面研发投入不能过少,否则系统建设的基本质量都无法保障;另一方面,盲目增加人力投入也不是有效解决办法,特别对于中大型系统研发,盲目增加人力反而可能因为信息沟通成本增加反而降低了研发质量。因此,人员素质与过程质量控制就显得尤为重要。”
这里面,个体员工研发素质的提升是需要一个长期艰巨的建设过程。但另一方面过程质量控制的建设,通过强大的DevOps研发效能平台,切实能实现“短期治标、长期治本”的研发质量提升目标。当然,在企业落地执行的时候,除了效能平台本身提供强大的工具能力,更需要效能平台团队能将涵盖软件研发生命周期的各研发流程节点,与研发效能平台产品的能力工具集进行充分融合,最终形成适合企业自身发展要求与特点的务实解决方案,这对于团队的整体效能产品解决方案设计能力要求其实挺高的,而这往往又是现代企业中最容易被忽视的部分。
▍研发流程与工程效率
在探讨新科技应用对软件质量需求时,来自复旦大学计算机学院副院长彭鑫表达了他的观点,
“基于代码静态分析的代码缺陷检测,我们在研究并实现自己的基于中间表示的程序分析框架;自动化测试方面,在多个层面开展模糊测试等自动化测试工作,包括面向微服务接口的自动化测试技术。”
在基于大模型的智能化方面,我们近期在做基于大模型的软件缺陷和漏洞方向研究,这方面企业兴趣非常大,大模型确实在代码分析方面与传统的程序分析有很好的互补性;基于此前说的软件开发质量追溯体系,我们也在研制自己的开源软件供应链风险方向平台和代码质量追溯分析平台。
黄俊深表认同,
“他说DevOps研发体系总体而言是强调效率质量、注重高效高频率的信息沟通与协作的。这一点在不同行业落地时,可能会遇到不同程度的流程管控与卡点的阻力,例如证券行业,会非常强调过程文档留痕、各研发阶段的流程化管理与交付。因此,流程管控最终是要深度融入到DevOps研发生命周期的各环节中,与各阶段的效能工具能力做充分融合打通,特别是在当前大模型能力加持之下,软件研发全生命周期中的需求分析、产品设计、编码开发、系统测试、部署发布、运维监控、运营推广等环节,均具备自动化高效产出、流程智能化管控的潜力,人性化交互借助AI能力也是具备充分的可落地性的。”
前海联合创新部副总裁张水涛同意并补充道
“金融行业既要稳定又要创新的背景下,IT for IT意味着需要较长的时间和较大的成本投入,管理层的思维框架还是IT for business。”
▍微服务架构的争议与应用实践
黄俊表示:
“微服务架构与Scrum敏捷运作风行多年,两者都是针对上巨石应用(Monolith)的交付质量改进的两个维度的解决思路——微服务架构是“巨石”应用的架构层面解法,敏捷迭代是巨石应用在项目交付层面解法(杜绝大批量、一次性、需求滞后性交付)。微服务拆分,从我们实践来看,如果做不到彻底的依赖解耦,它带来的跨节点访问延时、基础设置资源浪费、调用链路过长等问题反而会造成得不偿失的局面,特别现在单节点资源规模越来越大、基础资源池化、云硬件设施软件可定义后,在中小规模系统、低延时应用等场景,过去被忽视的单体应用也还是有存在价值场景的。”
彭鑫补充道,
“随着云原生软件基础设施的不断完善,应用层服务主要考虑业务和领域驱动的边界划分,很多非功能性需求主要依托基础设施及运维保障能力来实现。对于这一话题他补充道,以微服务为代表的云原生软件系统会朝着复杂生态系统的方向发展,服务直接普遍互联,传统的系统边界被打破,系统演化面临的质量挑战会更加突出。”
▍如何设计专属的软件质量体系
华为软件测试工具TMG主任宿敏表达了自己的观点,
“他说设计专属的软件质量体系,对于不同行业、不同发展阶段的产品,是不一样的, 对于涉及国计民生的“大国重器”类产品,例如航空类、高铁、通讯、金融等软件产品,对软件Bug的容忍度非常低,因为Bug可能导致生命财产巨大损失,需要设计重量级的质量体系保障软件产品“0”缺陷。”
对于需要快速发布的应用类APP、预研探索类新产品,发布上线的速度优先级更高,这种类型的软件对Bug的容忍度相对就较高,可以选择轻量级的质量流程体系,支持快速迭代、快速发布、快速试错,通过小循环加速产品上市。
对于这个话题极星科技架构和开发总监赵旭华深有体会他补充道:
“我们在实践中,代码静态扫描对质量的提高非常有帮助,致命的逻辑问题、安全问题、重复率问题(无脑复制粘贴),IO关闭问题都逃不掉。最近的一次大规模0-1新建系统群,70万行代码量,每日自动出代码静态扫描报告跟踪解决,上线前清零,解决掉2000多个问题,算是守好了第一个质量门。”
来自某创业团队技术负责人陈东表示
“自动化的确是很重要的一个迭代质量必备能力。否则只靠人在快速迭代中是很难保证质量的。我们也在加强自动化建设。此外,在快速迭代的每个环节中,提高准出标准,尽量在每个环节都有明确质量要求,也是保证整体质量的一个关键点。单元测试覆盖率,sonar门禁,冒烟测试,都是对研发的准出要求。包括bug修复时长,bug reopen率,也是要求研发在迭代中能快速修复bug。”
宿敏表示同意
“他说能力比较好的团队,从提交代码开始,后续就可以全自动化了,包括个人构建,版本构建,自动化测试,灰度,AB测试等,减少人工工作量,可以大幅提升效率。”
▍软件质量体系建设思路和框架
谈到软件质量的建设思路,宿敏认为:软件质量体系建设的思路和框架需要考虑如下因素:
全面质量管理:从管理职责、资源管理、价值创造过程、测量分析与改进等工程活动和管理活动方面进行规范化、系统化管理,保证软件质量可控。
过程决定质量:明确定义软件开发过程,明确每个过程的交付件质量,设计质量门禁,将质量要求构筑在流程中。包括管理好需求的质量、设计的质量、代码的质量、构建的质量、测试的质量等一系列过程质量,通过层层过滤,确保不把脏水流到下游。
选择合适的软件质量控制方法,增加/裁剪质量控制点、设计风险应对措施,确保自己的路走的好、走的快。
最常见的案例来说,天翼数字生活CTO王刚进一步说明,
“现在数字化平台的稳定性和质量已经成为是关民生的重大问题,软件质量差对平台稳定性造成重大隐患,因此要系统考虑软件质量问题。目前代码质量做的相对比较好,但是测试质量、运维质量和故障处理质量,甚至架构质量,目前还相对还有很大差距。”
▍如何保障软件质量管理不回潮
宿敏认为,
“华为公司非常重视研发能力和工具链建设,将IPD研发流程融入到IT系统中,持续提升研发能力和效率。当前华为云CodeArts工具链承载了相关的能力和经验,看护“需求的质量”、“设计的质量”、“代码的质量”、“测试的质量”...
其中典型软件质量管理相关工具如CodeArts Req,CodeArts Check和 CodeArts TestPlan,沉淀华为30年高质量测试工程方法和经验,融入IPD精髓的测试设计、自动化、测试管理实践,支持大规模、高并发、全场景的自动化测试生成、执行和评估。
谈到软件质量的解决方案,王刚补充道:
“我们开发运营天翼视联网平台,属于超大型分布式架构,因此在质量方面:除了继续加强代码和平台功能、性能测试外,在架构治理(架构质量评估)、系统韧性(混沌工程)、质量根因(问题追溯机制)等方面都在积极尝试,目前也取得了很好的效果。”
承载软件质量管理的工具链的问题,赵旭华表示
“软件测试,尤其是单元测试,面临很大的难题,企业业务需求急迫,迭代快,交付时间非常短,要求开发团队实施高质量的UT非常困难。往往就开发自测,非常难在CICD流水线上作为一个质量指标来管理。期待有开源的基于大模型的好用的方案,能在UT这个阶段节省人力,又能把质量管理的抓手量化进去。”
宿敏总结道
“开展软件产品质量的趋势分析,常常发现是“好三年坏三年”的趋势,需要基于“流程+工具+团队文化”保障软件质量管理不回潮。伟大的时代总有一部分人是默默无闻的伟大。夯实质量、捍卫产品质量的人就是这个时代伟大的人。”
▍探索前沿的软件质量管理方法
毕马威中国数字化赋能及人工智能主管合伙人张庆杰表示:
“软件质量管理(SQM)是一套高效、系统化的流程,专注于提升软件产品的质量和性能。在这一过程中,自动化测试成为关键,它通过快速、一致的测试执行,帮助及时发现并修复潜在的缺陷。”
SQM通过这些方法和工具的整合应用,不仅提升了软件的质量和性能,也加强了团队的协作效率,确保了产品的市场竞争力和用户满意度。
▍AI时代下软件质量面临的新挑战
随着业务成长,软件质量的技术环境日益复杂,技术部门往往陷入进退维谷的两难境地:要么推导重来,投入巨大但是短期无法见到效果的信任危机;要么静观其变,任由软件质量和AI技术应用日新月异,但却束手无策的能力危机。我们亟需新的数据运营架构设计思想,打破这个僵局。
张庆杰在这点上深有体会,他阐述道:
“AI时代,软件测试及质量管理面临的是机遇与挑战并存。机遇存在于智能化测试大发展,持续集成与持续部署(CI/CD)普及,自动化测试深化以及测试模式转型供给侧提供定制化的测试解决方案以满足不同需求。同样面临挑战,包含AI算法可解释性,数据质量,数据偏见,技术快速迭代,安全防范和合规与伦理问题等要素,这也需要在软件质量管理中予以关注。”
名灵智能也在探索的路上,其创始人王永海这样说,
“AI可以极大的提升代码的生产效率,同时对于代码质量的提升也会有相当大的帮助。但关于AI对代码质量与安全的影响却是不能忽略与回避的,AI在专业领域的使用,必须进行严格的限制与审计,不是所有能力level的人都能用AI,也不是什么场景都可以适配AI,团队的管理与专业人员须发挥大脑的作用,对AI的使用进行正确的引导与论证。AI是把双刃剑,驾驭好对软件的质量会有质的提升!”
深圳广联数科CTO沈剑表示在我们的一些比较容易提炼的场景中,我们的AI写的单测用例采纳在70%左右,再往上对人的能力和花费的调优或训练成本就是巨大的挑战了,目前我们也是在尝试,特别是幻觉抑制还要我们自己不断的工程优化来提升。
“在我们的一些比较容易提炼的场景中,我们的AI写的单测用例采纳在70%左右,再往上对人的能力和花费的调优或训练成本就是巨大的挑战了,目前我们也是在尝试,特别是幻觉抑制还要我们自己不断的工程优化来提升。”
彭鑫说,
“当前以大模型为代表的AI技术在软件开发运维过程中的应用一个最大的问题是对于软件设计知识以及软件的业务和技术背景知识缺失,对于复杂软件项目的维护性任务支持不足。当前大模型包括代码大模型的进展主要是从AI和NLP的角度实现的,要想推动基于大模型的智能化开发向纵深发展需要更多的软件工程方面的思考和知识积累。”
王刚同意并补充道
“大模型赋能是技术趋势,也会越来越成熟,对软件质量提升是有非常大的跨越式提升。”
▍AI技术在提升软件质量中的潜力和可能
谈到AI可以显著提升软件质量,张庆杰表达他的观点:
“主要通过以下几个方面, 自动化测试,缺陷预测,测试用例生成,代码审查辅助,性能监控, 持续集成/持续部署(CI/CD)及安全性测试。”
AI的应用不仅提高了软件测试的效率和准确性,还帮助团队更早地发现问题,从而减少了后期修复的成本和风险。随着AI技术的不断进步,其在软件质量提升方面的作用将变得更加重要。
王永海深表赞同,他补充道,
“大模型可以帮助提升软件质量,但要分多个阶段策略进行推进:第一阶段,只有公共或开源模型可用阶段,第二阶段,用自己的数据微调模型,形成自己业务的AI能力模型阶段。后续阶段,需要不断的打磨自己的AI模型,形成迭代优化。”
面对企业应用分析软件质量的优化分析,张庆杰提出他的观点,
“测试管理包含测试用例设计,自动化测试及人工复审引入领域专家参与测试,利用其专业知识评估模型的输出质量。”
张庆杰总结道:
“AI的“矛”和“盾”,时刻是应用中的两面性思考要素。AI目前在软件质量管理中的应用,的确大多表现在“术”层面,期待后续有全流程的应用尝试,更期待AI应用能够上升到“道”层面,能够创新出测试新模式、新玩法。”
随着技术进步,未来趋势发展,AI将更加精准地预测和识别问题,深入地融入软件开发生命周期。AI工具将根据具体需求提供定制化服务,AI在软件安全领域的应用将进一步增强,AI技术将在跨领域中得到更广泛应用。
- 点赞
- 收藏
- 关注作者
评论(0)