关键要点
- 一个明确的战略和路线图,对于推动持续改进,以提高软件应用程序集成和验证的效率、有效性等都是非常必要的。
- 一种快速有效的方式是测试左移,能预防的每一个缺陷都不需要花大力气修复,并节省了回归测试和验收测试的工作量。
- AI(人工智能)和ML(机器学习)技术为提高验证活动效率和有效性的提供了可能。比如对系统基础数据进行数据分析、影响分析以及缺陷分类等。
- 了解客户如何使用产品,并生成典型的客户工作流程,可以有效地提高测试覆盖率。
- 相比现有的测试数据,利用生成合成数据的算法,有可能在测试自动化的情况下得到更逼真的图像数据,从而提高测试覆盖率。
大家都知道,开发计划中的测试验证时间表往往很长。按照计划保证发布日期,响应最后一刻的临时更改和缺陷修复,这些都需要测试验证团队的有足够的灵活性。那么,我们需要自问一下:我们能增加灵活性吗?我们能增加测试覆盖率吗?我们能提高测试效率吗?有没有可能将我们的验证交付周期缩短50%呢?
在本文中,我将解释我们测试验证战略的两个重要“支柱”:测试左移和使用最先进的技术来支持我们的验收活动。
集成和验证面临的挑战
我们面临的挑战很多,比如产品复杂性日益增加、应用程序执行过程中需要覆盖的配置数量不断增加,以及我们需要组织并与多个内部和外部供应商接口合作调用,这也增加了系统的复杂程度。这些挑战都直接影响了项目的测试验证计划、工作量分配和交付周期。
影响测试验证执行及交付周期的一个巨大挑战是缺陷不收敛,尤其是当我们在项目的后期才发现的缺陷。在这个方面,我们其实可以做得更好。在测试验证的最后阶段,我们不应该还在“测试XX功能”,而应该是做一些“文档工作”,比如基于产品文档的功能核对,以证明我们的产品符合其要求规范。
测试验证总是在研发过程的最后阶段,这使得交付的“压力”越来越大。为了管理这种“压力”,我们必须在验证方面变得更聪明、更高效。我们的愿景是将验证交付周期缩短50%,这需要放弃基于风险/影响的测试策略,而在每次发布时进行简单高效的测试验证!
要实现这一美好的愿景,需要以下的支柱:
- 测试左移——从缺陷检测转变为缺陷预防,将测试重点从测试验证转向对需求、开发和持续集成的过程质量控制。
- 卓越团队——打造专业化的测试验证团队。
- 测试覆盖率——测试用例设计基于需求,又从需求中分离出来,并增加一些基于专业测试的验证内容。也可以通过研究用户场景的业务配置和业务流程,来提高测试用例的覆盖率。
- 测试自动化——使用最先进的技术(比如AI和ML)来提高验证效率和测试自动化覆盖率。
提高测试和验证活动的效率和有效性的最重要收效是缺陷快速收敛。除此之外,它还可以推动研发组织的整体生产力。
另外,你是否正在使用或考虑使用人工智能(AI)和机器学习(ML)来提高测试验证过程的效率和有效性呢?这也将是我们下面要讨论的问题。
测试左移:从缺陷检测到缺陷预防
我们的策略是围绕缺陷逃逸进行度量。原则上,对于每一个缺陷,都有三个问题需要问:
- 缺陷是在哪个研发阶段发现的?
- 缺陷本应该在哪个阶段发现?
- 是什么原因导致缺陷的逃逸?
一旦对缺陷逃逸进行了评估,下一步就是查看数据。哪一个研发阶段的逃逸幅度最大?“热图”将清楚地显示这一点:
说明:缺陷逃逸是指本应在前一阶段发现的缺陷,结果到后面第二甚至第三阶段才发现。
通过创建Pareto图,可以放大其他细节,例如哪些子系统或功能范围显示出最高的逃逸。
指望我们能一次解决所有问题是不现实的。我们选择逃逸最多的前2-3个领域,并与多学科团队一起深入研究,以了解真正的根本原因。根本原因的例子包括需求缺失、需求分解中的前后不一致、测试用例缺失、影响评估中的差异等。
了解根本原因使我们能够确定并实施所需的行动和改进方案,以防止目标功能范围再次出现相同的失误。在最近的项目中,我们更多地关注软件集成测试,因此,我们看到验证的首次通过率显著提高,这使得我们的验证时间计划表更加可控。
机器学习和人工智能在测试中的应用
如前所述,测试验证总是在项目研发的后期,这就使得压力越来越大。为了应对这些“压力”带来的挑战,我们认为可以采用一些先进的技术手段。例如,机器学习(ML)/人工智能(AI)能否帮助我们在测试方面变得更高效呢?我们相信是可以的。
基于现有客户数据的数据分析
我们可以通过访问运行数据库中系统的日志文件,来提高产品的质量和可靠性。通过分析日志,了解客户如何使用我们的系统,使我们能够通过设计有针对性的测试用例来提高我们的测试覆盖率,这样尽可能地接近我们产品的真实使用情况,而这些信息都可以从我们的日志文件中提取。
比如,客户工作流程的一个重要方面是扫描以生成不同解剖结构的用户画像。我们可以根据客户的偏好,例如对比度、分辨率、扫描速度等,以此来创建了扫描协议。结果是,针对该领域使用的不同解剖结构,提供了各种各样的扫描协议。
我们问自己:是否有一套已安装的正在使用的扫描协议,代表了典型的用户使用场景?通过过程挖掘和过滤技术,我们可以在几分钟内生成160多个解剖区域的典型扫描协议,这是手动无法实现的。结果是一套可管理的扫描协议覆盖了不同的解剖结构,具有最佳的可实现覆盖范围,并尽可能接近真实的客户使用场景。下一步,我们可以进一步寻找机会,提取与这些扫描协议结合执行的典型操作,如图像后处理步骤、存档和/或打印数据等。
升级版的自动化测试回归范围分析
我们正在产品级别试验代码覆盖率度量。如果我们能够在产品级别测量我们现有的自动化测试的代码覆盖率,我们就可以训练测试和代码之间的可追溯性算法。然后,如果我们一旦更改代码,我们就可以自动识别要作为CI管道的一部分运行的自动化测试脚本。事实上,我们可以使用人工智能来分析我们需要进行自动化回归测试的功能范围。
进一步地,如果我们可以包括测试执行结果(通过/失败的用例)和缺陷的历史数据,那会怎么样呢?那么,我们是否可以自动分析适合的自动化回归测试范围和结果?我们还需要进一步地探索和验证。
合成测试数据
测试MR(磁共振)功能时需要图像数据。我们主要使用Phantoms。Phantoms是专门构建MR(磁共振)扫描的图像。Phantoms包含的模式和液体可以在扫描时产生一致和可预测的结果。通过使用Phantoms,我们避免了解剖结构的变化,我们会遇到扫描患者的真实图像数据测试。对于内部验证和验证活动,我们可以扫描一些志愿者,但他们的可用性以及图像数据仍然有限。因此,我们正在探索使用AI(人工智能)来合成数据作为验证测试的输入数据。
“无限制”的数据和数据的变化将增加测试的覆盖范围。合成数据作为自动化测试的输入,使我们能够提高测试系统的利用率。
缺陷分类
探索使用人工智能机会的另一个领域是缺陷管理。如果根据缺陷标题、缺陷描述和其他属性,如果我们希望自动将缺陷分配给适当的团队进行分析研究并提供解决方案,那该怎么办?我们可以决定缺陷是否是先前提交的缺陷的副本,或者根据先前的拒绝建议来拒绝它,或者根据先前类似的修复方案来修复它。
目前,缺陷都由缺陷审查委员会(DRB)管理。DRB由来自不同岗位/职能部门的关键专家组成,他们花大量时间阅读和理解缺陷内容,并决定下一步应该采取什么行动。在没有DRB讨论的情况下,只需审查并同意人工智能算法提出的建议,就可以显著提升缺陷的流转效率。使用现有缺陷数据库中数据来进行训练和测试,看起来还是很有希望的。面临的挑战是一些属性数据的更改存在风险,因此在训练算法之前,需要进行数据验证和完善数据的工作。
提高效率的好处
我们提升效率最重要的好处是提高验证执行的可预测性,缩短验证交付周期。如前所述,我们的目标是将验证交付周期缩短50%。这使我们能够在设计和集成过程中越来越多地使用我们的专业知识,而不是运行验证测试。我们开始了旅程,但还没有到达理想的终点。
可预测验证执行的一个重要促成因素是减少缺陷逃逸。错过缺陷的每个开发阶段都会增加其修复成本。在验证中发现缺陷会导致重新验证和基于影响范围评估的额外回归测试。假设每个缺陷平均需要3-5天的努力,对于分析、解决和验证整个过程,很容易计算出我们的努力节省了多少成本。这样计算起来,我们的努力还是很有价值的。
我们学到了什么
基于缺陷逃逸的测量和分析,质量左移可确保正确聚焦并继续进行缺陷逃逸测量,从而显示所实现的改进效果。人工智能和机器学习技术已经被证明,在更接近我们产品的实际客户使用场景的测试覆盖范围内是非常有用的。目前可行的探索结果显示,在迭代影响范围分析和合成测试数据等领域提高效率是很有前景的。当然,我们才刚刚起步,这还需要更多的学习和研究。
我们想在许多不同的主题上改进和努力,但我们也必须接受这样一个事实,即我们不能一次做完所有事情。我们需要选择我们的努力方向,快速获胜有助于快速取得成果,推动变革,并赚取预算,继续投资于后续的改进。为此,制定愿景和战略,制定路线图和优先事项,是推动持续改进的有效方法。这将为确保我们能够继续推进效能提升提供“喘息的空间”。
AI和ML在测试中的未来将如何
随着人工智能算法越来越多地集成到我们的产品中,用于训练和验证算法的足够数据的质量和可用性变得至关重要。在这种情况下,预计其他行业也会如此,我们坚信合成数据的需求将成为一个重要的推动力量。当我们处理患者数据时,一些隐私保护条例使处理用户真实图像数据变得越来越困难。从这个角度来看,综合的合成数据会更有帮助。
我们应该相信,越来越多的行业将采用AI/ML技术。例如,解锁集成和验证数据的历史记录,可以使更改的影响范围评估更加自动化,从而精准定义需要回归测试的内容。人工智能还可以支持适当水平(回归)测试的自动化规划,分析和处理客户基础数据,以了解客户如何使用我们的产品,这对于提高测试覆盖率也至关重要。设计我们的客户如何使用我们的产品的可检测性,以及能够连接到运营数据库以检索这些信息,这一点也至关重要。