不同于传统的瀑布式开发,开发人员不再是“流水线上的工人”,DevOps更关注软件开发人员和操作人员之间的有效协作,我们可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集。
在理想的DevOps周期中,遵循着这样步骤——开发人员编写代码,在QA环境中构建并部署二进制文件,执行测试用例,以稳定的集成流程将成果部署至生产环境当中。很明显,这种方法非常强调构建、部署与测试环节的自动化。使用持续集成(CI)工具,自动化测试工具已经成为DevOps周期中的一种规范性因素。
敏捷测试与DevOps测试之间仍存在着不少细微差异,但熟悉敏捷开发人员一般能够快速适应DevOps。事实上,敏捷原则主要体现在开发及QA迭代当中,但在运营领域则普及度不高。DevOps的核心,正是纠正这一差距。现在,DevOps不再单纯强调持续集成,而更多强调“持续开发”。在流程中,编写出的代码将被提交至版本控制系统,而后在生产环境中进行构建、部署、测试与安装,之后交付最终用户使用。
由于整个环境与流程严格遵循标准化要求,各环节中的每位参与者都将因此受益。链内各项操作都以自动化方式进行,利益相关方能够将精力集中在设计并编码高质量的可交付成果之上,彻底摆脱构建、运营与QA流程带来的负担。从编写代码、到提交代码、再到生产部署以供最终用户使用,整个周期被显著缩短到3到4个小时之内。
DevOps中的QA角色
在传统的软件测试中,QA人员会在指定环境中对已部署的build成果进行功能与回归测试,并投入几天时间持续测试,关注现有成果还有哪些问题。但这一切在DevOps当中都变得完全不同。比如,QA人员需要在DevOps周期内协同工作,保证所有测试用例全面实现自动化,并获得接近100%的代码覆盖率;他们需要保证环境标准化,实现环境与QA框架间的自动对接;所有预测试任务、清理、后测试任务等全部自动执行,与持续集成周期保持统一。
DevOps要求交付链内的各项功能实现高度协同。这也意味着链内各参与者的角色定位有所变化,或者说开始相互融合,这为开发人员赋予了一定的部署权限。部署工程师可以将测试用例添加至QA repo当中,QA工程师则负责提供自动化测试用例。总体而言,链内的每位参与者都将为交付成果的质量与及时性负责。
DevOps与测试自动化
为了实现这种强大的速度与敏捷性,最重要的就是实现测试流程的全面自动化,确保其能够在QA环境中完成部署并自动运行。为此,我们需要构建起专门的自动化测试工具与持续集成工具,建立一套成熟的自动化测试框架,借此快速编写出新的测试用例,具体来看有以下几点。
第一,为特定build挑选合适的测试用例;第二,测试执行在本质上应该遵循精益原则;第三,QA与开发人员需要当面交流,确定特定build中可能产生重要影响的具体因素,同时执行针对性测试与健壮性测试;第四,需要配置专门的代码分析与覆盖率工具,确保能够实现接近100%的代码覆盖率;第五,回归测试的结果将很快过时,必须熟悉持续测试这一全新理念;第六,需要明确指定与新功能相关的测试策略,将临时build交付给QA人员,QA人员创建测试脚本并在临时build上运行自动化测试,直到代码稳定性达到要求并足以部署至生产环境中为止;第七,所有测试环境必须实现标准化,且部署流程必须全面自动化;第八,使用多种自动化技术,确保QA人员能够在多种跨平台环境或浏览器内运行自动化测试;第九,并发执行测试以缩短存活时间,这又将反过来促进DevOps的成功实施;第十,为每轮测试运行设置退出标准,确保在将测试结果反馈给流程后,由其做出明确的通过或未通过决策;第十一,在生产环境中部署代码之前,需要报告并修复已发现的问题或严重bug,相关信息通过同一事件链进行传递。
除此以外,应用程序监控的工作也不容忽视。QA人员还应及早发现问题并主动报告,在生产环境上设置监控机制以便在bug引发实际故障之前将其识别出来,还可以设置专门的计数器,如响应时间、内存与CPU利用率等,为最终用户提供全面的洞察能力。举个例子,如果在各个build中,登录的平均响应时间逐渐增加,则后续build很可能因为响应时间过长而影响到最终用户的实际使用体验。
同样的,QA人员还可以在生产环境中定期执行部分现有高优先级测试用例,借此主动监控运行环境。此项策略可以捕捉到“偶发性”或者“无法重现”的bug,最终提升应用程序稳定性、增强最终用户满意度。最终,这些监控结果都能够以丰富的报告形式,如包括故障日志与屏幕截图等自动收集并发布。
结语
瀑布式流程让位于V-Model,V-Model又被敏捷化取代。软件开发理念就是这样一代代快速更迭。毫无疑问,DevOps代表着未来。这样一种持续改进周期,将让软件开发流程获得全面的动态特性。我们有必要接纳DevOps、理解DevOps并最终贯彻DevOps。以往的测试概念仍然有效,将这些宝贵的经验与自动化、特别是更高水平的自动化相结合,正是实现DevOps成功的核心前提。
好文章,需要你的鼓励
OpenAI CEO描绘了AI温和变革人类生活的愿景,但现实可能更复杂。AI发展将带来真正收益,但也会造成社会错位。随着AI系统日益影响知识获取和信念形成,共同认知基础面临分裂风险。个性化算法加剧信息茧房,民主对话变得困难。我们需要学会在认知群岛化的新地形中智慧生存,建立基于共同责任而非意识形态纯洁性的社区。
杜克大学等机构研究团队通过三种互补方法分析了大语言模型推理过程,发现存在"思维锚点"现象——某些关键句子对整个推理过程具有决定性影响。研究表明,计划生成和错误检查等高层次句子比具体计算步骤更重要,推理模型还进化出专门的注意力机制来跟踪这些关键节点。该发现为AI可解释性和安全性研究提供了新工具和视角。
传统数据中心基础设施虽然对企业至关重要,但也是预算和房地产的重大负担。模块化数据中心正成为强有力的替代方案,解决企业面临的运营、财务和环境复杂性问题。这种模块化方法在印度日益流行,有助于解决环境问题、满足人工智能的电力需求、降低成本并支持新一代分布式应用。相比传统建设需要数年时间,工厂预制的模块化数据中心基础设施可在数周内部署完成。
法国索邦大学团队开发出智能医学文献管理系统Biomed-Enriched,通过AI自动从PubMed数据库中识别和提取高质量临床案例及教育内容。该系统采用两步注释策略,先用大型AI模型评估40万段落质量,再训练小型模型处理全库1.33亿段落。实验显示该方法仅用三分之一训练数据即可达到传统方法效果,为医学AI发展提供了高效可持续的解决方案。