首页 » 软件开发 » 软件研发全攻略(二)(测试软件研发代码全攻略)

软件研发全攻略(二)(测试软件研发代码全攻略)

落叶飘零 2024-07-25 04:31:06 0

扫一扫用手机浏览

文章目录 [+]

上篇文章,我们谈到了软件研发的需求和设计,确保软件研发“做正确的事”,并“把事情做正确”,本篇我们将继续软件的编码,发布及测试章节的内容。
最后,我们谈一谈关于研发管理的软实力:技术研发与产品研发的双轮驱动以及组织文化与人才的基石建设。

三、软件编码与测试:质量之盾

软件编码是将设计转化为可执行代码的过程,需要遵循相应的编程语言规范和组织内部编码标准(例如,谷歌C++代码规范:Google_Cpp_Style_guide_CN.pdf @https://sosohu.github.io/),辅以静态代码扫描和动态测试,代码评审等工作,确保代码质量。

软件研发全攻略(二)(测试软件研发代码全攻略) 软件开发
(图片来自网络侵删)

伴随着AIGC的泛化,AI 辅助编码和代码评审也逐步成为现实,比如Github Copilot X,可以协助程序员实现结对编程。
同样,类似ChatGPT,也可以帮助我们实现代码评审的工作。
例如,我们把下面这段冒泡算法的C代码(图12)输送给ChatGPT,GPT会给出非常中肯的评审建议以及重构后的代码,大大减少了代码评审的工作量。

图12

图13是ChatGPT重构后的代码。
GPT的反馈如下。
他不仅仅反馈了代码的逻辑错误,对程序的性能也给出了建议(第2条反馈)

冒泡排序算法的内层循环条件for (j = 0; j < len - 1 - i; j++)中的len - 1 - i可能会导致数组越界。
应该将内层循环条件修改为for (j = 0; j < len - 1; j++)。
在冒泡排序算法中,如果数组已经是有序的,仍会执行完所有的比较和交换操作,造成了性能上的浪费。
可以在内层循环中增加一个判断条件,如果没有发生交换,即可提前退出循环。

图13

需要注意的是目前GPT仍然是概率算法,他的反馈需要一定的人工复核,确保剔除AI给出的噪音反馈。

图14

测试则是软件质量的守护神,涵盖单元测试、集成测试、功能测试、系统测试及验收测试等不同层次,目的是尽早发现问题、减少后期修复成本、确保软件符合客户需求与期望。
无论是在V模型或者敏捷开发模型中,软件测试活动的目的是一致的,而测试活动贯穿整个开发周期(图14所示的V模型)。
早期集成测试能有效缩短交付周期,提高客户满意度。

图15

测试执行过程从时间顺序上可以分为三大部分:单元测试,集成与功能测试和系统验证与验收测试(图15)。

单元测试聚焦单个代码单元的功能正确性;集成与功能测试检查模块间交互与整体功能完整性;系统与验收测试则验证软件系统在真实环境下的表现是否满足需求。
通过及早发现问题,测试不仅能节约成本,还能提升软件的稳定性和可靠性,为市场成功奠定坚实基础。

在实际操作过程中,无论是敏捷或是V模型,测试过程并没有这么严格的顺序区分,往往是循环迭代的反复过程。
对于如何确保已经验证功能仍然是可信的,往往是需要经验和智慧的积累。
关于软件测试,我们必须清晰地认识到“测试不是银弹。
穷尽测试是不可能也不现实”。
所以,端到端的软件质量保障,从需求到设计,从编码到测试,全链路的保障才是我们需要竭尽全力的目标。

图16

伴随着AGI及数字化技术的发展,测试技术手段也在日益改进,新的测试技术开始逐步开始向RPA,AI赋能的测试手段方向发展(见图16)。
而对汽车行业软件开发而言,自动化测试技术,RPA,AI,新的应用场景的测试也慢慢开始渗透,成为测试团队的新挑战。

四、软件发布:舞动的韵律

软件发布的全过程是一个严谨有序且不断迭代前行的。

进入开发阶段后,采用CI/CD(持续集成/持续部署)的实践,包括代码提交、规则检查、代码评审、预编译、软件包构建、内部发布、测试验证以及对外发布等一整套流程,确保软件质量的持续性和稳定性。
在这一过程中,构建Sanity、自动化测试以及各类环境下的验证是必不可少的环节(见图17)。

CICD在软件开发全生命周期中体现的核心思想是快速反馈、频繁交付和可靠质量。
通过自动化构建和部署流水线,让开发团队能够迅速响应变化,减少人工干预带来的延误和错误,确保软件在各个阶段都能高效地完成集成、测试和部署,最终达到高质量、高效率的产品交付目标。

图17

在软件的维护阶段,针对存在的问题和错误进行及时修复,根据用户反馈和市场需求持续进行功能改进与性能优化。
对于汽车行业的嵌入式软件而言,还涉及到与硬件结合的复杂集成测试,以及类似FOTA,SOTA(空中下载技术)更新等特殊的软件升级场景。

此外,汽车行业软件发布遵循项目生命周期的各个阶段,如工程样车(EP)、产品及过程验证(PPV)、预试生产(PP)、试生产(P),直至正式投产(SOP)。
在整个过程中,项目质量管理扮演着关键角色,不仅要保证软件产品的质量和性能,还要确保软件开发与发布过程符合既定的质量标准和国标,企标。

五、研发基础:技术研发与产品研发的“双轮驱动”

技术研发与产品研发虽同属创新范畴,但各有侧重。

技术研发着眼于长远,追求技术先进性与知识积累,目标是开发出具有竞争优势的技术成果,为未来的市场化产品提供技术支持(TPF过程)

产品研发更直接面向市场,关注产品创新与商业化进程,旨在快速推出符合用户需求的新产品,创造价值与利润(PMF过程)。

如图18所示,技术研发和产品研发在生命周期、市场定位、技术难度、管理手段等方面存在显著差异,但均需紧密围绕用户需求展开。
技术研发往往领先数年,承担探索未知、孵化前沿技术的角色;产品研发则紧跟市场脉搏,力求在短期内实现产品的更新换代。
二者相互依赖,共同推动企业技术创新与产品迭代的良性循环。
当然,因为技术研发与产品研发的定位不同,企业在实际管理过程中,不能把产品研发的管理手段,比如某款车型研发,简单地套用到技术研发管理中(比如,某款新材料或者新动力电池,平台架构等)。

图18

六、研发基础:组织与人才发展的软实力构建

软件开发的成功离不开强大的组织支撑与人才队伍建设。
研发组织应注重能力建设,涵盖组织架构设计、业务流程梳理、数字化工具链集成(如禅道管理软件,CICD工具链,云端软件DevOPS工具链等)、知识管理、信息安全等多个维度。
同时,建立健全绩效考核与激励机制,确保人才的成长与发展与组织战略目标相一致。

人才发展方面,提供管理与专业技术两条晋升通道,满足不同类型人才的职业发展需求。
管理路线涵盖研发主管、经理、总监等。
专业技术路线包括了高级项目经理、产品经理、质量经理等专业角色;专业技术路线还包括了技术专家、高级专家、资深专家等技术精英。
通过明确的职业发展路径,激发人才潜能,形成稳定且富有活力的人才梯队,避免“重技术,轻职业化”的问题。

根据PRTM的产品开发能力成熟度评估模型(图19),软件研发组织的成熟度可以分为5级。
建议优秀的车企应该向成熟度4级(Stage 3)努力,提升组织的核心竞争力,确保打赢汽车智能化和汽车产业数字化这一仗!

图19 (Source:PRTM 产品开发能力)

结束,

本文为我们勾勒出一幅从理论到实践、从模型选择到组织构建的全景图。
无论是初涉软件行业的新人,还是寻求优化研发流程的企业管理者,都可以从中汲取宝贵的知识与经验,助力在瞬息万变的科技浪潮中稳操胜券。
软件开发并非孤立的编程活动,而是涵盖了需求分析、架构设计、编码实践、测试保障、技术研发、产品研发、组织管理与人才培育等多元要素的系统工程。
唯有深入理解并妥善驾驭这些要素,方能在激烈的市场竞争中立于不败之地。

<全文完>

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0