当难以或无法获得硬件设置来重现错误时,如何有效地排除故障或测试新代码?


30

我在一家中型公司(拥有150名员工,约有10名规模的工程团队)工作,我的大多数项目都涉及与实验室设备(示波器,光谱分析仪等)的接口,以实现半自动化测试应用。我遇到了几种不同的情况,由于我不再或从来没有可用的硬件设置,因此无法有效地排除故障或测试新代码。

示例1:使用台式型传感器独立运行10-20个“老化”过程的设置-我能够获得一个这样的传感器进行测试,并且偶尔可以花一秒钟来模拟与之连接的所有方面多个设备(搜索,连接,流式传输等)。

最终出现了一个错误(最终最终归结于设备固件和驱动程序中),仅用一个单元就很难准确地再现该错误,但是当同时使用10-20个此类设备时,该错误接近“显示停止器”的水平。这仍未解决,仍在进行中。

示例2:需要昂贵的光谱分析仪作为其核心组件的测试。该设备相当老旧,是一家制造商遗留下来的,后者被一家较大的公司收购,并且基本上已经解散,并且它的唯一文档是冗长的(且内容不丰富的)文档,翻译起来似乎不好。在最初的开发过程中,我能够将设备保持在桌面上,但现在在24/7多周的测试中,无论是在物理上还是在计划中都将其捆绑在一起。

当错误显示出与设备相关或无关的错误时,我经常需要麻烦测试应用程序外部的代码并将其装入,或者盲目编写代码并尝试在两次运行之间的某个测试时间内进行压缩,程序逻辑要求OSA和其余测试硬件都安装到位。

我想我的问题是我应该如何处理?我可能会花一些时间来开发设备模拟器,但是弄清楚开发估算值将使它比大多数人想像的更多。它也可能无法准确地重现所有问题,而且很少有人看到同一设备在这里两次使用过。我可以在单元测试方面变得更好...等等...我也可以大声地谈论这个问题,并让其他人理解将需要暂时的延迟,这不只是研究和开发的头痛,而是通常被认为是在开玩笑当投入制造业时。


5
设备模拟器(或可模拟界面)将在方便时收回成本
棘手怪胎2014年

21
@ratchetfreak-作为一个全天都在模拟设备的人(我全职在医疗设备模拟器上工作),让我向您保证,即使是对他人设备的低保真度模拟也可能是非常困难的,具体取决于涉及的连接,协议和数据类型。如果OP使用的测试设备类似于我必须处理的设备,则可能需要花费数天或数周的时间才能弄清它到底是在做什么(与规格说明相反)。因此,模拟器是值得的,这并不是一个定局。
迈克尔·科恩

Answers:


35

管理层知道,如果您不能完全访问测试硬件,则将需要更长的时间来开发和维护软件。在进行估算时,您需要考虑到这一点。将软件投入生产的部分接受标准应该是,您可以在大多数情况下维护软件而不停止生产。如果您正在练习TDD,这应该很自然地发生。

我曾经为6000万美元的飞机编写软件。显然,这需要高度的可靠性,并且他们不愿意给每个开发人员一个人作为他们的办公桌。我们基本上有5个级别的测试环境,每个级别都有更多的实际硬件,直至完整的飞机。我估计只有使用仿真器和单元测试才能开发和调试我们95%的软件。其余功能的95%可以在下一个级别上使用,依此类推。

尝试为自己设置类似级别的测试环境。您不能期望永远都不需要访问真正的硬件,但是如果您已对其进行了设置,那么如果没有可用的硬件就无法在软件的GUI上工作,那么您将在宝贵的资源上浪费时间(而不是为了提到您的架构存在一些耦合问题)。考虑其他开发人员可能会遇到与您相同的问题。我会问硬件供应商,如果他们已经有模拟器或其他测试资源可用。

如果您只有有限的硬件访问权限,则还需要稍微改变一下思路。而不是试图以常规的串行方式调试应用程序,您通常需要专门编写代码以尽快收集信息。

例如,也许您有一个错误,并且可以想到10个可能的原因。如果您只能在操作员休息的15分钟内上机,请写一个简短,自包含,正确(可编译)的示例,该示例触发该错误,并使用该SSCCE编写10个自动测试来测试您的理论并记录一堆数据。然后,回到办公桌前,您可以花很多时间筛选下一次尝试的数据。这个想法是利用硬件来最大限度地利用有限的时间。


接受这个答案是因为它是最完整的-我认为“使管理意识”与“改变做法”之间取得了很好的平衡。我想花一些精力去耦更好的水平,一些硬件模拟器的水平应该是值得的,我可以在我的估计表明这一点。我也特别喜欢在一些快速的全功能测试中进行压缩的技巧,这些测试在调试时捕获了大量数据-谢谢。
plast1k 2014年

14
在“管理层理解”之后,我停止阅读
PlasmaHH 2014年

1
“不愿给每个开发人员一个人作为他们的办公桌”。具有讽刺意味的是,您可能会弯腰的数字足以证明,给每个开发人员自己的6000万美元飞机进行工作将比航空公司灾难的总累积成本要便宜!
JavaScript先生2014年

15

您正在尝试解决不是您要解决的问题。

管理人员需要优先处理对设备的访问。这可能意味着您最终获得了更大的访问权限,但也可能意味着您最终获得了更少的访问权限。

向您的管理团队客观地提出您面临的挑战,并要求他们提供指导。如果您与也需要访问权限的其他人进行协作,那么您的演示文稿将更加强大,因此所有人都可以同时展示您的案例。

从那里,公司(管理)必须确定谁可以访问和何时访问。这是他们需要做出的业务决策,因为资源的(缺乏)可用性正在影响业务发展。


4
与管理人员进行对话时可能会帮助做的一件事是确定设备访问的时间表(或里程碑)。您只有在没有硬件支持的情况下才能做很多事情,而且如果您清楚地表明估计是从他们提供给您的时候开始的,那么管理层就可以在充分了解的情况下做出决策。
迈克尔·科恩

4

您实际上是在盲目地编码。

如果管理层不愿意为测试设备付费,那么很可能会出现错误,甚至比使用真正的设备要花费更长的时间。

设备的成本不必完全分配给“开发”周期。也许可以将它们转用于生产用途,或作为备用。它们甚至可以转售到其他地方吗?

尝试花费时间和金钱在错误修复阶段上付出代价,并向您的团队/公司显示总体成本。


4

当您有一些数字,或者至少有一些利弊时,与老板争吵要容易得多,因此我的建议是尝试进行成本与收益分析。大概的想法是这样的:

  • 您期望编写设备模拟器需要多少开发工作?(请注意,设备模拟器无法100%替换原始硬件,尤其是当硬件有一些意外的怪癖时)。

  • 如果没有这种工具,您期望进行多少测试/调试工作?包括实验室工作人员的费用,因为您必须出于测试目的而阻塞硬件。还包括由于错误而无法使用系统并且您无法找到根本原因的时间所产生的成本。

  • 额外的硬件测试成本是多少?

  • 您预计需要多少时间来阻塞硬件以进行测试?

当然,现实可能不是那么简单,这个方程式中有很多未知变量,但是请尝试做出一些估计,如果不确定,请向您所在的环境中的其他人询问。

将结果提交给您的管理层,讨论替代方案,然后让他们决定。


我想你的意思是不能在这里需要注意的是设备模拟器很少代替原有的硬件100%,尤其是当硬件有一些意想不到的怪癖
雷米

@Rémi:也许“很少”不是普通英语单词的通常顺序吗?FWIW,我更改了答案以使这一点变得明确,感谢您的答复。
布朗

我不会说英语,但听起来很奇怪。感谢
雷米
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.