不同于传统的瀑布式开发,开发人员不再是“流水线上的工人”,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成功的核心前提。
好文章,需要你的鼓励
许多CIO在实施AI战略时因良好初衷反而导致失败。专家指出,仅为AI而做AI会浪费资金且无实际成果,应先评估业务价值。CIO常见错误包括:让风险规避型利益相关者施加过度限制、仅依赖现成AI工具而不深度整合、在人员和流程问题未解决时强推技术转型。成功的关键是确保AI解决方案真正节省时间并带来业务价值,需要有权威的负责人推动决策,同时不惧怕小规模试错,快速迭代改进。
谷歌研究院开发出一种革命性的人工智能技术,通过学习人类眼动轨迹来提升视觉问答能力。该技术像训练侦探一样教会AI关注图像中的关键区域,准确率提升3-10%。研究发表于CVPR 2024,在教育、医疗、无人驾驶等领域具有广阔应用前景,为AI向人类智慧靠近开辟了新路径。
Kahoot是一个基于游戏的学习平台,涵盖科学、历史、地理、英语和数学等领域。该平台于2023年推出AI功能,AI生成器可从主题、文档、网站或视频链接即时创建互动学习体验,帮助教师减少备课时间,让学习更具吸引力和个性化。平台支持50种语言,拥有120亿用户,还提供翻译工具和AI驱动的学习推荐功能。
英国卡迪夫大学研究团队通过脑电图技术发现,当人们体验虚假听觉(即"听到"实际不存在的语音)时,大脑的神经活动模式与听到真实声音时几乎相同。研究揭示了大脑会根据语言经验和上下文自动"填补"缺失的语音片段,这一发现对理解听觉障碍、改进助听设备以及开发更智能的语音识别系统具有重要意义。