看看现在世界上的关键系统,你都会发现软件。从水、电力和公用事业到核电站、工厂和汽车,几乎所有的一切都成为数字设备和网络的集成。我们需要基于风险的方面去进行测试,并向公众负责,承认哪些测试了,哪些没有。
我经常写关于测试的文章,特别关于物联网和嵌入式环境方面。然而,最近的恐怖袭击和网络犯罪让我停下来想想我们所在的软件测试界要做什么或应该做什么来保护我们的系统。希望这篇文章也能让你停下来想一想。
多年前我为美国核管制委员会(NRC)做一些咨询工作。我为一个非常资深研究员和从业者团体中的年轻一员,我们认为需要NRC,当公司把数字设备引入核系统时。
从历史来看,核系统主要模拟电气和机械,但是NRC知道这正在改变,因引入的嵌入式软件数字设备。专家们担心,当(软件)存在bug时,在核系统中引入软件会出现问题。我们提出的建议,以及嵌入式软件设备已成功地应用于核电站。在这一点上,我们不担心设备到互联网的连接,(连接)几乎没有。
然而,代码接管了世界
看看现在世界上的关键系统,你都会发现软件。从水、电力和公用事业到核电站、工厂和汽车,几乎所有的一切都成为数字设备和网络的集成。很长一段时间,嵌入式软件真的不必担心与外部世界的连接,这些连接是不存在的或最小的,通常通过间接连接。然而物联网,或者IOT,改变了所有这些。
在过去的几年里,大部分的专业软件工程和测试界已经很好意识到嵌入式和物联网设备的安全威胁。在这方面,公众也经常听到车辆被黑客攻击,基础设施的偷盗,以及数字武器如Stuxnet。同样,IOT也正在改变我们的世界。
测试需要成长
虽然我意识到和人们所说,“是的,是的,物联网的测试和质量是很重要的”。但我看不到我觉得必须要有的,真正的行动和责任。公众甚至一般的物联网产业似乎愿意等到更坏的事情发生,如网络恐怖主义针对核电站或重大基础设施(搞破坏)。如果这确实发生了(也许我应该说,当这种情况发生),这将成为一个有力的呐喊,关于更好的质量、工程和测试。已经宣传的概念,往往需要通过几年软件的不断改进。
在之前,测试正如詹姆斯巴赫曾经说的,有点小飞侠(《Peter Pan》)。我们做了大量可能和可能不增加价值的事情。如果有故障,我们可能会说,哎呀,这程序员也搞砸了,或者需求不明确,再或者这组合是不可能完全测试的。正因为如此,测试从来没有真正需要“成长”。
从我开始在一个主要的国防承包商工作,到现在已经35年了。我在社区里的角色是这样的,我可以做我认为需要做的,而不是追求薪水。我开始相信我是一个领头羊,在真正糟糕的事情发生之前提前预警,例如当开车时看到车控系统可能被黑客攻击,扩展思路告诫大停电或核熔毁的可能。
测试员,工程师和公司现在必须把工作做得更好,并对我们的用户和公众负责,其中包括我们的家庭。我们所生产软件设备的责任不能完全由标准或我们的法律系统来解决。大多数这些系统似乎保护的是软件生产者,而不是客户。当我们生产一个嵌入式或IOT设备,特别是工业用途的,我们需要基于风险的方面去进行测试,并承认哪些测试了,哪些没有,这个设备具备着什么样的质量,以及任何未测试件对部分或整体的影响。这些可能已经发生了,但客户并不知道,他们简单的相信我们的判断。
设想一个世界,在那里测试策略被文档化,并清晰的传达给客户和利益相关者,用一种他们能理解的方式,在测试,成本和上市时间中去权衡。而不是,仅仅基于品牌和价格去选择(他们)想买和使用的产品,以及得到一个附加尺寸的测试策略。
我定义测试人员有责任以个人或组织的义务去解释他们的活动,承担赋予他们的责任,并以透明的方式披露(测试)结果。没有标准告诉我们需要对我们的软件测试负责。曾参与有关软件故障法律行动的测试人员了解到软件可能将承担责任或被法院问责。那为什么我们要等到那时才负责呢?
通常我们需要清楚关于嵌入式和物联网系统的质量。我们的工程师影响着它们,所以责任是必不可少的。如果我们不做好我们的工作,黑客或其它坏家伙,最终会利用我们责任的缺失(所造成的漏洞)。是测试人员,以及测试成长的时候了。
本文由“51ste软件测试部落”的ruink翻译自hagarjond的《Accountability in Testing Embedded and IoT Software Systems》一文。