写点什么

西门子医疗的持续测试经验

2015 年 3 月 11 日

Marco Achtziger 分享了西门子医疗在大规模敏捷项目中开展持续测试的经验。在德国举办的 OOP 2015 大会上,他谈论了他们遇到的陷阱以及克服他们的方法。

InfoQ 采访了 Achtziger,谈论了持续测试和持续集成、持续测试中基础架构与社会性挑战、测试流程与工具以及改进持续测试。

InfoQ:您可否解释一下持续测试与持续集成是如何关联的?

Achtziger持续测试是持续集成的一部分。在大型项目中,持续集成的测试部分是非常复杂的,必须分别处理。但我认为他们互不分离。

InfoQ:在您的演讲中,您谈到持续测试在基础架构方面的一些挑战,可否详细阐述一下?

Achtziger你使用的工具非常重要,尤其是对于大型项目来说。作为产品软件本身,你也必须意识到这一点。例如基础架构的可扩展性或者可靠性。所以需要考虑的典型事情是:

  • 工具的可用性。理想情况下,测试执行的时候,开发人员不必做任何额外的东西。
  • 你是否必须并行地运行测试?如果是,基础架构是否支持?
  • 你的工具可否扩展?由此可以处理多台测试机器,并且能够简单地增加机器的数量?
  • 测试执行的瓶颈在哪里?例如,在我们的例子中,如果我们使用了工具提供的默认机制,那么虽然测试的执行不会有问题,但部署测试所需的二进制文件将会决定测试执行的时间。

InfoQ:您也谈到了持续测试所面临的社会性挑战。您都经历过哪些问题,以及如何解决的呢?

Achtziger你会发现这方面的主要问题就是“在我机器上好用”的老开发人员。在我看来,敏捷概念之前的软件开发流程支持了这样的思维模式(没有持续集成、测试仅在集成后运行,…)。不幸的是,并没有什么银弹来解决这个问题。在某种程度上必须做的就是改变开发人员的思维模式。在我们的环境中,有帮助的就是建立我们所谓的测试到处运行(TRA(Tests run anywhere))原则。通过给他们一些他们可以提供的帮助(“所有的测试到处都可以运行不是很好吗?”),就可能不会谈论负面的事情(“你做错了,因为它只在你的机器上工作”)。

InfoQ:您提到在测试流程中有多个阶段:团队整合、资源(Assets)整合以及系统整合。您可否分别描述一下不同的阶段,以及他们是如何在这个测试链中一起工作的?

Achtziger这是切分你的测试框架的一种简单方法。资源整合对我们来说就是工作在同一领域的几个团队的聚合。所以,如果你有这样的一个结构,你可以把你的测试按照这种方式划分:让团队执行单元测试,并且可能已经做了一些整合测试。下一阶段就是执行主要的整合测试,确保不同的团队不会互相影响,然后,作为最终的整合,所有资源的变化聚合到一起就称为所谓的系统整合。这样你就可以决定:是否要基于这些变化执行测试,或者是否想要建立一组静态测试,在其中包含所有的系统,并且确保它仍然工作。

InfoQ:对不同的阶段和构建,您是使用什么机制来选择那些必须执行的测试呢?

Achtziger原则上我们使用简单的 XML 文件,它与我们所编译的每个程序集文件共同放置在源代码控制系统中。该文件是可配置的,如果某些东西在那个地方做了更改,就应该执行什么样的测试。所以没有什么花哨的东西。非常简单有效。

InfoQ:当由于缺陷原因导致测试失败的时候,你们使用一种测试隔离的流程,它是如何工作的呢?

Achtziger首先应该清楚的是,测试的失败并不仅仅是由产品代码中的缺陷所造成的。当然有时测试代码本身也需要改进。但如果测试偶尔失败了,隔离流程就有效果了,你应该检查原因是什么。如果是一个严重的产品缺陷,接下来当然要修复缺陷了。如果缺陷不是很严重、问题出在测试代码本身,或者很难修复这个测试以使其重新回到绿色状态,你可以决定暂时关掉这个测试(例如使用 NUnit 的 Explicit 属性)。这样可以让你的编译回到绿色状态,他们再也不会被一系列的失败的测试用例所破坏。隔离测试的数量必须得到监控,应该尽可能地接近于 0。所以整个的隔离是一个特例,用来处理偶发的测试失败,从而避免开发人员开始忽视编译结果,那样甚至会比偶发的测试失败更严重。

InfoQ:如果人们采用持续测试并且想要改进,您可否给一些建议?

Achtziger我认为首要的事情永远都是与系统的用户交谈。然后告诉开发人员并找出他们现有的痛点,以及在你的工具基础架构中如何支持。最好再看看其他一些事情:

  • 监控你的测试执行时间,并尝试不断地改进最慢的那部分。
  • 如果某个缺陷找不到,做一个深入的根本原因分析并且试图弥补差距。
  • 经常检查你的测试并且删除不需要的或冗余的测试。

如果你遵循这三件事情,我会说你涵盖了持续改进测试的主要部分。其他的事情通常是组织所特有的,并且是必须由组织自身处理的。

查看英文原文: Experiences from Continuous Testing at Siemens Healthcare


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015 年 3 月 11 日 03:441152
用户头像

发布了 55 篇内容, 共 11.0 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

终于见到!华为18级专家把操作系统与网络,讲解得如此通俗易懂

神奇小汤圆

Java 编程 程序员 架构 面试

双非渣渣的上岸之路!备战60天,三战滴滴侥幸收获Offer

Crud的程序员

Java 架构 java程序员

精彩3000字!给讲得明明白白:配置 logback

比伯

Java 编程 程序员 架构 计算机

ipfs挖矿靠谱吗?ipfs手机挖矿是不是真的?

v:IPFS456

Filecoin FIL挖矿需要注意什么 IPFS手机挖矿靠谱吗 IPFS怎么挖矿 FIL矿机怎么买

【Java 从入坑到放弃】No 5. 控制流程

村雨遥

Java for if 控制流程

史上最详细的Linux命令行与shell脚本编程手册 (收藏这篇就够了)

Machine Gun

Linux 网络安全 编程语言 信息安全 linux运维

【剑指 Java】第 2 弹:剑指大厂,这份数据库面试总结请收好

村雨遥

Java MySQL 数据库 sql

开发两年,双非渣硕,苦刷算法47天,四面字节斩获offer

Crud的程序员

算法 java程序员 数据结构与算法 程序员面试

网络协议学习笔记 Day7

穿过生命散发芬芳

网络协议 4月日更

鹅厂首推569页Netty+Redis+ZK+高并发的笔记,开启面试必杀技

Java架构师迁哥

【Java 从入坑到放弃】No 3. 变量与数据类型

村雨遥

Java 变量 数据类型

IPFS前景如何?IPFS有什么运用价值?

投资矿机v:IPFS1234

IPFS前景如何 IPFS有什么运用价值

圆梦阿里之后,我收集整理了这份“2021春招常见面试真题汇总”

云流

Java 程序员 架构 面试

【剑指 Java】第 4 弹:绝对硬货,Spring 面试知识点总结大全

村雨遥

Java spring 面试

为什么越来越多的人不敢结婚?

徐说科技

婚姻 情感 恐婚

【Java 从入坑到放弃】No 6. 数组操作的奇技淫巧

村雨遥

Java 数组

【剑指 Java】第 3 弹:纯干货,计算机网络面试知识点总结

村雨遥

Java 面试 计算机网络

【Java 从入坑到放弃】No 1. Java 开发环境搭建

村雨遥

Java jdk

IT专业本科生毕业选择【就业】/【攻读硕士】调查问卷

Aldeo

考核 大学生毕业 问卷调查

五一啃透这份阿里巴巴Java面试指导手册(泰山版),节后直接面试找工作!

Java架构追梦

Java 阿里巴巴 架构 泰山版 面试参考指南

只是给面试官讲了18种Java队列,竟然当场拿到offer!网友:牛批

java专业爱好者

Java

TcaplusDB君的小知识之TcaplusDB的高可用性和数据安全性介绍

数据人er

数据库 nosql TcaplusDB Tcaplus

阿里云 RTC QoS 弱网对抗之 LTR 及其硬件解码支持

阿里云视频云

音视频 WebRTC 视频解码

HTTP/2做错了什么?刚刚辉煌2年就要被弃用了

学Java关注我

Java 编程 架构 程序人生 计算机

【剑指 Java】第 1 弹:靠这份 Java 基础知识总结,我拿到了满意的 Offer

村雨遥

Java 面试

【InfoQ 写作平台 1 周年】我和写作平台剪不断的“孽缘”

三掌柜

征稿 InfoQ 写作平台 1 周年

【Java 从入坑到放弃】No 4. 操作符

村雨遥

Java 运算符

网易云课堂个性化推荐实践与思考

有道技术团队

推荐系统

政采云:数据可视化探索之SpreadJS 表格控件

Geek_Willie

IT之家专访庄秉翰:未来全球5G vRAN将达90%,英特尔5G布网参与度非常高

新闻科技资讯

鸿蒙系统(HOS)终于上线,微内核操作系统科普

北游学Java

Java 操作系统 微内核

西门子医疗的持续测试经验-InfoQ