【51CTO.com快译】测试实践在向左右移动,改变了完成软件工程的方式。除了本文介绍的多种测试类型外,测试驱动开发(TDD)、渐进式工程和混沌工程如今也被视为测试。
TDD
由于可节省时间,TDD在敏捷和DevOps团队中大受欢迎。以用例和用户故事的形式根据需求编写测试,然后编写代码以通过那些测试。TDD进一步倡导构建较小的代码段这一概念,代码质量方面的小成功积累成大成功。TDD立足于极限编程(XP)这个旧概念。
Gartner的高级主管分析师Thomas Murphy说:“测试驱动开发从一开始有助于提高质量,并[帮助开发人员]在需要编写代码之前发现需求方面的瑕疵。”
健康福利公司Anthem的质量保证架构师Todd Lemmonds表示,由于其团队在过渡阶段进退不得,在这方面遇到过困难。
Lemmonds说:“TDD是朝敏捷方向发展的第一步。我向人们解释,您基本上将所有精力都集中在根据这个故事[验证]这些验收标准上。然后他们想,‘那么,我需要创建并完成哪些测试,才能进入到下一个阶段?他们在验证技术规范,而[验收测试驱动开发]在验证业务规范,这就是到头来向利益相关者展示的内容。”
渐进式软件交付
渐进式软件交付常因咬文嚼字而被错误定义。其想法是,如果测试向前发展(变得更现代或更成熟),那么它就是“渐进式”。渐进式交付是拥有CI/CD流水线的敏捷和DevOps团队用来实现更快速地交付用户真正喜欢的高质量应用程序这一使命的工具。它可能涉及众多测试和部署,包括使用功能标记、蓝绿部署和金丝雀部署以及可观察性的A/B测试和多变量测试。“渐进式”部分向逐渐扩大的受众群体推出某项功能。
数字化转型代理机构SPR的测试服务执行主管Nancy Kastl说:“渐进式软件交付是一种有效的策略,可以降低产品变更给业务运营带来的风险。目的是借鉴试点小组的经验,迅速解决可能出现的任何问题,并针对全面部署计划改进措施。”
Kastl认为的其他好处包括如下:
- 为业务用户验证权限设置的正确性
- 发现测试活动期间未发现的业务工作流程问题或数据不正确
- 软件产品方面进行有效培训
- 能够在首次使用产品期间提供响应支持
- 能够在包括服务器和网络在内的实际生产条件下监视软件产品的性能和稳定性
Kastl说:“跨国公司拥有庞大的软件产品用户群,并按国家或地区进行定制配置,常常采用这种方法来计划部署软件产品。”
混沌工程
混沌工程实际上是测试混乱(基础架构、网络和应用程序故障)的影响,这关系到应用程序的弹性。这个想法起源于Netflix,最初是一项名为“Chaos Monkey”的计划:随机选择一台服务器并将其禁用。最终,Netflix创建了一整套开源工具(名为Simian Army),以测试更多类型的故障,比如网络故障或AWS区域或可用区服务下降。
Simian Army项目不再被积极维护,但它的一些功能已移至其他Netflix项目。混沌工程延续了下来。实际上,Gartner发现它备受关注。
Gartner的Murphy说:“现在您开始看到几个商业实施。混沌工程想更广泛地被接受,您常常需要更商业的东西。倒不是需要商业软件,而是围绕它的社区,那样如果我需要某个东西,有人可以帮助我了解如何安全地做。”
混沌工程不是团队突然可以做的。通常需要几年的时间,因为他们要分阶段进行实验,比如实验室测试、应用程序测试和预生产。
技术咨询公司DMW Group的工程主管Chris Lewis表示,他公司尝试过小规模的混沌工程,并将这个概念介绍给了DMW相当保守的客户。
Lewis说:“我们通过试点介绍混沌工程,表明它可以用来深入非功能性需求,表明需求实际上得到了满足。我认为很少有人愿意在生产环境中使用混沌工程,因为他们仍惴惴不安。那些客户中担任领导职务的人出身极传统的背景。”
混沌工程在数字颠覆者和小型创新公司中更为常见,它们利用最新的技术和方法来脱颖而出。
H2:谨慎行事
组织实际准备这么做时,运用更多的测试技术大有益处。一个常见的错误是过早步子迈得过大,随后未能获得预期的效益。定制软件开发公司Narwal的创始人兼首席执行官Raj Kanuparthi表示,在一些情况下,人们要现实点。
Tricentis的大力支持者Kanuparthi说:“如果我还没有落实好任何东西,那么我做好基本面,制定路线图,然后逐步使用工具。您可以迅速来做,但要知道如何着手处理。好多人一开始什么方面都想做,却没有在任何一方面取得实质性的进步,于是就说‘这不行’。”
原文标题:Engineering practices that advance testing,作者:Lisa Morgan
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】