测试阻碍交付,如何破解这一难题
DevOps 的目标是以更快的方式交付软件。如今,越来越多的企业正努力通过 DevOps 实践提高生产力,加快发布周期。然而在DevOps 实践中,开发人员专注于功能创建,而业务领导者则专注于交付,测试的重要性常常被忽略。这就导致,虽然交付过程的其他方面得到了简化和加速,测试却成为了软件交付的瓶颈。
软件交付的最大阻碍
GitLab 曾经发起一项针对开发者和工程师的调查。调查发现,有 52% 的受访者认为,与开发过程的其他部分相比,测试造成的延迟更多。
DevOps Review 也得出了相同的结论,63% 的受访者表示,“测试”是导致软件延迟交付的第一大因素。该调查主要针对实施 DevOps 企业的 IT 部门领导者。第二大阻碍软件交付的因素是“计划”,不过只有 32% 的受访者如此认为,远远低于站队“测试”的人群。
软件生产过程中的主要障碍在哪里?
为什么测试是一个如此可怕的瓶颈? 测试咨询公司 Tricentis 的创始人 Wolfgang Platz 经过调查后,总结了以下原因:
绝大多数测试(超过 80%)仍然是手动执行的——在大型企业中甚至更多。
正在构建、维护和执行的测试用例中,大约 67% 是多余的,对工作没有任何价值。
在具有重要测试自动化的企业中,测试人员将 17% 的时间用于处理误报,另外 14% 的时间用于额外的维护任务。
超过一半的测试人员每周花费 5 到 15 个小时处理测试数据(数据的平均等待时间约为2 周)。
84% 的测试经常因测试环境访问受限而延迟,测试环境的平均等待时间为32天。
从开始到结束——包括计划、实施和测试,执行回归测试套件平均需要 16.5 天,但敏捷冲刺平均需要两周时间。
现在,被测应用程序平均与 52 个相关系统交互——这意味着单个端到端事务可以跨越从微服务和 API 到各种移动和浏览器界面、打包应用程序(SAP、Salesforce、Oracle、ServiceNow…… )、自定义/遗留应用程序和大型机。
如何破解测试难题?
随着软件发布变得越来越频繁,采用传统的测试方式已经跟不上开发节奏。企业应该怎么做,才能确保,测试不是软件交付的瓶颈,而是更快的催化剂。
Forrester 的一项研究发现,成功实践 DevOps/敏捷开发的企业,有一些共同点,比如通过自动化端到端功能测试等方式将软件测试转变为持续测试。还有很关键的一点是,它们会对关键测试和 QA 流程,如测试用例设计、功能测试、测试数据管理等,进行高度自动化。
这些企业证实了,有效、连续、自动化的测试方式要遵循这几大要点:
(1)尽早介入测试
测试或软件 QA,一直以来都是软件交付难题的最后一部分。在发布周期结束时测试和发现错误是常态。但这带来了问题,因为间隔了一段时间后,开发人员可能不记得问题出现的背景,修复这些缺陷、改变设计和重新开发功能会导致更多的时间花在重新测试和回归负载上,造成开发效率低下。因此,在软件开发的的各个阶段,越早进行测试,就能越早发现错误并且修复它们。测试带来的反馈还可以帮助开发流程向前推进。
(2)测试用例自动化
在 PractiTest 和 Tea-Time with Testers 最近的一项调查中,软件测试团队发现,过去已经足够好的手动流程已经跟不上交付步伐。尽管 85% 的受访者表示他们的公司使用自动化,但只有 19% 的受访者在超过 50% 的测试用例中使用自动化。
如果出现测试任务耗时、重复、停机时间长,人工测试容易出现错误,需求、测试或任务风险低、稳定等情况,测试用例应该自动化。
不过要注意,在测试用例自动化过程中,单元测试应该放在首位,其次是集成测试和功能测试。因为单元测试是最快的测试方法,更容易调试,修复成本很低,因此把单元测试作为自动化的最高优先级。而集成测试主要测试接口或模块,能够提供反馈,确保一切都按预期工作,放在第二位。
(3)回归测试自动化
回归测试意味着软件测试可以验证最近的更改——无论是程序还是代码——没有对软件的现有功能产生负面影响。利用测试自动化和持续测试工具来完成回归测试,可以让团队专注于新功能以及创新。在流程的早期揭示缺陷,可以降低风险以及开发人员修复它们所需的时间。
很多的回归测试自动化工具都可以跨 Web、移动、桌面、大型机、ERP、相关模拟器等进行测试,可以轻松添加或更新测试用例,快速运行端到端回归测试,缩短测试周期、满足最后期限和减少所需资源,同时提高软件可靠性,为公司带来巨大优势。
(4)做好测试数据管理
测试数据很重要,因为整个测试套件(包括手动测试和自动化测试)中的各种测试都需要测试数据。良好的测试数据可让验证常见或高价值用户转化历程、测试边缘用例、重现缺陷以及模拟错误。由于测试自动化可以更快、更频繁地执行测试,因此团队还必须拥有工具来管理所创建的大量数据。
工具或平台必不可少
利用特定的工具实现测试自动化是必不可少的。这个工具可以是一个简单的测试框架,比如 Jest,也可以是一个特殊的软件框架,比如 Selenium,甚至可以是一整个平台——它可以帮助你完成你所想要做的一切。
一个好的工具会告诉你,自动化测试并没有那么难。近期,飞算发布了飞算SoFlu全自动测试平台,该平台有三大功能特性:
1.测试生命周期管理。它提供测试用例管理、测试用例评审、测试计划跟踪和测试报告生成等测试生命周期管理相关功能;
2.测试数据管理。全自动测试平台基于测试脚本与测试数据分离的思路,方便研发测试协同、方便自动化测试中的测试数据使用,支持 UI、接口等自动化工具快速可重复地使用;
3.精准回归测试。它在项目测试时,可以自动识别所有变动的接口,自动查找接口关联的所有测试用例,进行精准回归测试。
曾经,飞算云智总裁陈定玮对测试耗时长深有感触:“以前,我们公司流传过一句话:开发多久,测试就要多久。如果开发三个月,那么测试就要三个月。这样,半年就过去了。因此,整个成本非常高。并且产品、开发和测试人员的思维模式和视角不同,沟通难度不小,最终搞得大家怨声载道。"
现在,他带领团队开发的自动化测试平台几乎解决了测试中遇到的大部分问题。
比如,在进行性能则试前,必须先做好性能测试的搭建工作,一般包括硬件环境、软件环境及网络环境,这往往需要配置和开发工程师来协助完成。而在飞算SoFlu全自动测试平台,仅需要一个测试人员,即使是一个新手,也完全可以搞定,因为资源池具备支持虚拟机模式,测试人员可以自己搭建虚拟机环境,在平台上通过选择虚拟机的类型来对接口进行性能测试。
测试是软件开发生命周期的重要组成部分,测试“托后腿”折射出来的,可能是整个开发过程的管理问题。
飞算也看到了这一点,因此,不仅开发了全自动测试平台,还推出了全自动开发平台,未来还将推出全自动运维平台,它们将共同组成飞算 SoFlu 全自动软件工程平台。通过飞算 SoFlu ,可以管理从需求、研发、测试、部署、上线到运维的整个软件生命周期,真正实现了软件工程开发、测试、运维全流程自动化。