注意:这篇文章从现代社交媒体关注角度来看很长。 不要怕。 阅读它可以帮助您认识到如何节省数小时,数周,数月的多余工作和不必要的工作,尤其是当您在受监管的环境中担任测试人员或经理时。
测试人员经常面临与过度强调正式的,按程序编写的测试相关的问题。 政治,官僚主义和文书工作与对测试用例的固定结合在一起。 项目经理和内部审计员要求测试用例以“由于FDA”以某种形式构造和编写。 当有人告诉您这一点时,这是一个很好的信号,表明他们还没有阅读FDA的指导文件。
因为这就是它的真正含义:
对于每个软件生命周期活动,都有某些“典型”任务可以支持对软件进行验证的结论。 但是,将要执行的特定任务,它们的性能顺序以及它们的性能的迭代和时间安排将由所选的特定软件生命周期模型以及与该软件应用程序相关的安全风险来决定。 对于极低风险的应用程序,可能根本不需要执行某些任务。 但是,软件开发人员至少应考虑这些任务中的每一项,并应定义和记录哪些任务适合或不适合其特定应用程序。 以下讨论是通用的,并不旨在规定任何特定的软件生命周期模型或执行任务的任何特定顺序。
软件验证的一般原则;
工业和FDA工作人员最终指南,2002年
“软件验证的一般原则”文档在2002年的某个时候给人留下了深刻的印象。它描述了一些重要的现实。 软件问题主要归因于设计和开发,而很少涉及构建和复制。 即使是琐碎的程序也很复杂。 测试无法找到产品中的所有问题。 软件不会像物理事物那样磨损,因此问题常常在没有警告的情况下显现出来。 微小的变化会产生巨大,广泛而意想不到的影响。 使用经过测试的标准软件组件可以解决一种风险,但是集成这些组件需要仔细注意。
“软件验证的一般原则”文档也存在很多问题。 我希望在以后的帖子中介绍其中的几个。
根据当前的讨论,该文档没有描述什么是测试用例,也没有描述如何记录。 根据我的判断,该文档提到了30个“测试用例”。 这是一个实例: “测试计划和测试用例应在软件开发过程中尽早创建。”
这里还有两个:
“软件产品应根据其内部结构来测试,并根据其外部规范来测试。
如果您选择将“测试用例”解释为工件,并且认为这一挑战就足够了,那么这将是非常糟糕的建议。 这类似于说应该给孩子喂食食谱,或者应该用蓝图建造建筑物。 浅浅的阅读可能暗示该工件和该工件所指导的性能是同一件事。 在发现孩子可以吃什么,不能吃什么以及冰箱里有什么之前,先准备好食谱; 您可以通过将建筑物与设计图进行比较来评估建筑物,然后完成。
另一方面,如果将“测试用例”替换为“测试”或“测试实践”,则这是非常好的建议。 基于内部和外部的观点,通过测试和测试活动来挑战软件产品是一个非常好的主意。
FDA在指导文件中未定义“测试案例”。 确实在《计算机系统软件开发术语表》(8/95)中出现了定义。
测试用例。 (IEEE)为测试项目指定输入,预测结果和一组执行条件的文档。 Syn:测试用例规范。 请参阅:测试程序
好吧,让我们看一下“测试程序”:
测试程序(NIST)由测试计划开发而成的正式文档,其中提供了有关每个已定义测试的设置,操作和结果评估的详细说明。 请参阅:测试用例。
因此,毕竟这是非常糟糕的建议。
(``8/95''是指1995年8月吗?是的,它是。《计算机系统软件开发术语表》(8/95)的源文件都不是1994年以后的版本。从某种角度来说,这是Windows 95之前的版本。 ;在Google之前;在智能手机和平板电脑之前;在敏捷软件开发宣言之前;在上下文驱动测试原则之前…)
但令人高兴的是,在任何有关测试本身的指南之前,“软件验证通用原则”的第2节中介绍了“最小负担方法”的原则:
我们认为,我们应该在医疗器械监管的所有领域中考虑最不麻烦的方法。 本指南反映了我们对相关科学和法律要求的认真审查,并且我们认为这是您遵守这些要求最轻便的方式。 但是,如果您认为替代方法会减轻负担,请与我们联系,以便我们考虑您的观点。
“认真审查”发生在直到2002年的这段时间,也就是本指导文件的发布日期。 在那个时代的测试社区中,除了编写脚本繁琐的过程测试用例外,其他任何人都在写作和会议演讲中非常怀疑。 得益于Cem Kaner,James Bach和测试界中其他知名人士的领导,如今,世界成为了一个更安全的测试探索场所。 而且,正如本系列文章的前一篇文章所述,FDA本身已经认识到探索性工作的重要性和重要性。
测试文档的形式可能比正式编写的程序更有效,更有效,并且只要证据充分且遵循实际法规,最小负担法似乎可以留出很多余地。 (对于那些在家中玩耍的人,这些法规包括《联邦法规》(《联邦法规》)第21篇第11.10和820部分以及《联邦公报》第61部分52602。)
几年前,詹姆斯·巴赫(James Bach)开始与一家制造医疗设备的公司进行一些咨询工作。 他们聘请他分析,报告特定的III类设备并为该类设备的测试工作做出贡献。 (我也为这家公司做了一些工作。)
该设备由技术人员操作的控制箱组成。 控制箱连接到一个Zapper箱,该Zapper箱将治疗能量传递到患者的身体。 (我们在这里修改了一些特定的单词和语言,以保护机密性并总结设备的功能。)愈合能量不足就是能量。 太多的治疗能量,或适当的时间太长,就会变成伤害能量或杀死能量。
詹姆斯到达时,他检查了提供给测试人员的文档。 他发现了一百多页这样的东西:
9.8.1验证功率精度
9.8.1.1根据常规设置文档连接组件。
9.8.1.2接通电源并连接电源监控器(而不是电极)。
9.8.1.3开启拉链箱的电源。
9.8.1.4打开控制箱。
9.8.1.5设置用于快速移动的温度和功率的默认设置。
9.8.1.6将测试夹具载荷设置为标称值。
9.8.1.7选择标称持续时间和标称功率设置。
9.8.1.8按下开始按钮。
9.8.1.9验证Zapper在显示屏上报告电源设置值±10%。
这是好的正式测试吗?
当然,这是遵循的正式程序,但是测试部分在哪里? 最接近的是最后一行中的实际测试的分子很少:通过比较控制箱上的电源设置和Zapper显示屏上报告的内容,指示测试人员应用预言。 没有任何建议建议注意电源监视器的结果来检查实际提供的功率。 也没有任何诱因来获得和扩展覆盖范围。
一方面,詹姆斯和另一位测试员解冻了这一程序。 他们尝试先打开控制箱,然后等待各种时间间隔打开Zapper箱。 令他们惊讶的是,Zapper Box可能会进入四种不同的状态之一,具体取决于他们等待启动的时间长短,并且其中至少有两个状态可能对患者或操作员构成危险。
詹姆斯用两段包含了以前未涵盖的内容替换了50页此类内容。 他首先描述了测试协议:
3.1通用测试协议 在接下来的测试描述中,单词“verify”用于突出显示必须检查的特定项目。除上述事项外,测试人员还应随时警惕任何原因不明或错误的产品行为。试验人员应牢记,无论对任何具体试验有任何具体要求,总要求是产品不得对病人造成不可接受的损害风险,包括任何可合理预见的滥用造成的不可接受的风险。 仔细阅读这一段,一个句子一个句子,一个短语一个短语。注意其中对寻找问题和风险的强调,特别是对人为错误的风险。
然后他描述了测试人员在这个产品上工作的必要条件:
3.2测试人员要求
测试人员应完全熟悉《 Zapper Box和控制箱功能要求规范》以及设备本身的工作原理。 测试人员还应了解Power Monitor Box测试工具和相关软件的工作原理,包括如何配置和校准它,以及如何识别它是否无法正常工作。 测试人员应具有足够的数据分析和测量理论技能,以掌握统计测试结果。 如果出现异常需要进行调查,测试人员应充分熟悉测试设计,以对本协议进行探索性测试。 测试人员应知道如何使测试记录保持可信的专业标准。
总结:做一名科学家。 了解领域,了解工具,成为分析师,成为研究者,保留良好的实验记录。
然后,James提供了一些简洁的测试想法,从而留出了足够的变化空间来消除错误。 这是一个真实的例子: 3.2.2字段和屏幕
3.2.2.1在Power Monitor测试工具已经运行的情况下,启动Zapper Box和Control Box。 更改启动它们的顺序和时间,保留“控制箱”和“电源监视器”日志文件,并记下任何不一致或意外的行为。
3.2.2.2目视检查显示器并确认是否符合要求以及是否存在任何可能以任何实质性方式损害产品性能或安全性的行为或属性。
3.2.2.3在系统设置为默认值的情况下,可以通过该字段的所有可能值的范围来更改每个用户可编辑字段的内容。 (例如,使用旋钮将会话持续时间从1秒更改为300秒。)以视觉方式验证是否出现了适当的值,并且屏幕上发生的所有事情看起来都是正常且可以接受的。
3.2.2.4重复3.2.2.3,将系统设置更改为最大可能值。
3.2.2.5至少选择一个字段,然后分别使用屏幕键盘,旋钮和外部键盘编辑该字段。
3.2.2.6扫描“控制箱”和“电源监控器”日志文件,以查找任何记录的错误情况或异常情况。
为了检查产品的某些方面及其行为,有时非常具体的测试设计很重要。 这是根据James的测试文档编写的具有代表性的摘要:
3.5.2单次治疗会话功率准确度测量
3.5.2.3从电源监控器日志文件中,提取被测电极的数据。 该样本应包括整个功率会话,包括冷却时间以及至少有50次测量的稳定功率周期(即在10秒的稳定周期数据中每秒至少进行5次测量)。
3.5.2.4从控制箱日志文件中,提取被测电极稳定功率周期的相应数据。
3.5.2.5通过从相应的功率监控器读数中减去报告的被测电极的功率来计算偏差(使用插值来同步功率计的时间戳和发电记录)。
3.5.2.6计算功效样本X的平均值(巴)及其标准偏差(s)。
3.5.2.7找出样品的99%置信度和99%双面公差区间k。 (使用SOP-QAD-10的表5,或对大样本使用以下公式。)
3.5.2.8用于计算公差间隔k的公式为:
其中χ2γ,N-1是自由度为N -1的卡方分布的临界值,其概率为γ; Z2(1-p)/ 2是正态分布的临界值,被概率(1-p)/ 2超过。 (请参阅《 NIST工程统计手册》。)
现在,这是一些真正的正式测试。 该组织和FDA审核员都接受了它。 更好的是,遵循此协议后,发现了一些令人惊讶的行为,这些行为促使人们更加仔细地评估产品的要求。
我们可以从中学到什么教训? 在我看来,一个关键点是,当您在规定的环境中作为测试人员工作时,请务必阅读规定和指导文档。 如果您不这样做,则有遭受未被阅读,基于神话和民间传说工作的人四处奔走的风险。 作为测试人员,我们的首要任务是寻找并发现威胁产品价值的问题。 在人类生命,健康或安全迫在眉睫的情况下,当前的主要工作是了解产品和对人身构成危险和危害的问题。 过多的官僚主义和文书工作会使我们分心。 甚至替换它。 因此,我们必须找到可能的方法来进行最好的测试,同时仍然提供最好和最少的证据,这些证据仍然完全满足我们所做的审计师和监管机构的要求。
在我们的教练课程中,弗里达(Frieda)扮演经理的角色说:“但是……我们没有时间培训测试人员去做这类事情。 我们需要他们尽快采取行动。”
我问:“达致速度实际上是什么意思?”
仍然保持个性的弗里达回答说:“我们希望他们尽快敲键。” 嗯。 想象一下负责医疗设备的开发经理说:“我们没有时间让开发人员了解他们正在开发什么。 我们希望他们尽快加快速度。 (而且,众所周知,编程实际上只是敲键。)”
这种思维方式的错误在于测试是关于按钮的。 在生产线上生产小部件; 翻转测试汉堡。 如果您将测试视为翻转测试汉堡,那么测试人员就有可能翻转任何模糊的汉堡形状的东西……汉堡,飞盘,牛派,曲棍球……您可能不会得到想要的汉堡。
如果您将测试视为对产品的调查,那么测试人员必须是调查人员,并且必须是熟练的人员。 在与产品和项目互动之后,测试人员便开始了解他们正在研究的产品以及产品的运行领域。 测试人员会保留出色的实验室笔记并仔细记录其工作,但不能达到使文档无法测试系统并发现问题的程度。 测试人员专注于风险,并经过培训以了解他们在测试过程中可能遇到的问题(根据CFR标题21第820.25(b)(2)部分)。
如果您在雇用他们时不够熟练,则将对他们进行监督和培训,直到他们熟练为止。 而且,如果他们不熟练且不能接受培训……您真的确定要他们测试可以提供杀伤力的设备吗?
无论是否在受监管的环境中,您还可以如何指导测试工作? 下次是这个话题。