【51CTO.com快译】随着对丰富且合规的数据的需求不断增加,测试数据供应的压力必须变得更加自动化、自给自足,并对变化作出反应。
如今,任何测试数据解决方案都必须能够以前所未有的速度满足更大容量、更多种类和更复杂的数据需求。通常这种紧迫的需求并不总是得到企业的充分理解,可能会产生负面后果,其中包括:
(1)不断增长的测试瓶颈。
(2)测试失败的增加。
(3)整体软件开发生命周期 (SDLC)的生产力损失。
(4)不断增加的基础设施成本。
(5)持续不断的合规风险。
有许多因素导致本已紧张的测试数据服务压力增加。本文考虑了增加当今测试数据需求的频率、数量和复杂性的相关趋势。这些新的和持续的趋势可以分为五种,而企业在设计强大的测试数据解决方案时必须考虑以下这些因素:
(1)相互关联的数据类型的复杂性。
(2)系统、环境和生产数据变化的速度和幅度。
(3)测试和开发之间更大程度的并行化。
(4)在测试中采用自动化以及“数据请求者”的性质不断变化。
(5)不断变化的合规要求。
这些相关因素对软件交付速度和质量构成的潜在风险要求超越过时的测试数据“供应”实践。它需要采用一个自动化的解决方案,能够即时满足新的和不断发展的测试数据请求。这种并行团队、测试和框架按需自备数据的能力是测试数据管理(TDM)和测试数据自动化(TDA)之间的主要区别。
首先,需要了解一些给已经很紧张的测试数据供应服务增加压力的因素。
1.相关数据源的复杂性
如今的测试数据解决方案无法将孤立的数据填充到数量有限的数据库和文件类型中。与其相反,测试和开发需要丰富且合规的数据,这些数据始终涵盖众多传统技术和尖端技术。
这种集成的、相互关联的数据是集成和端到端测试所必需的,但会显著地增加测试所需数据的复杂性。企业软件和IT的一系列趋势导致当今企业使用的数据类型激增。它们包括:
(1)正在从传统基础设施转向基于网络和云计算的基础设施。
(2)大数据和人工智能的出现,以及相关的数据存储、分析和处理技术。这通常包括开源技术,如Apache Hadoop、Spark、Kafka和Solr。
(3)采用新的数据库和文件类型。这包括像Neo4j这样的图形数据库,以及采用近年来出现的数据库,例如MariaDB和Firebird。
(4)API和消息层在当今至关重要。这导致需要创建消息数据,例如XML文件,以及行业特定的格式和标准。
(5)商业智能技术的不断演进。
(6)微服务的采用。
虽然企业不断采用新技术,但这些新兴数据类型并不能完全替代现有的遗留组件。迁移需要时间,很少有企业能够一次性替换其技术堆栈的所有元素。
因此,在企业的不同部分中发现混合使用的新旧数据类型是很常见的。例如,企业的不同部分可能使用现代的、基于云计算的技术,而其他部分则使用存储在大型机和中端系统上的专有数据类型。新旧数据通常必须使用当今可用的接口范围进行交互和集成:当今的测试需要跨越多种技术的数据的集成组合。
因此,任何测试数据解决方案通常都必须能够为比以往更加多样化的技术分析、操作和创建集成数据。它应该配备广泛且可扩展的连接器,并且必须能够在不同的文件、数据库和应用程序之间协同创建集成数据。
数据类型的多样性和复杂性增加了当今数据请求的复杂性,因为测试人员和开发人员需要跨各种技术无缝链接的集成数据。与此同时,数据请求的速度和演变正在增长,提高了当今数据请求的速度和多样性。
2.迭代交付、敏捷软件开发和持续集成(CI)/持续交付(CD)
软件交付的几个趋势增加了测试和开发所需数据的变化率,这增加了测试数据供应的压力。这些趋势加快了系统、环境和生产行为变化的速度和幅度,需要新的和日益多样化的测试数据。这些措施包括:
(1)迭代交付的兴起,新版本和更新在几天或几周内获得,而不是几个月或几年。
(2)采用敏捷软件开发实践,强调增量更改和并行化。
(3)在DevOps管道和持续集成(CI)/持续交付(CD)中增加自动化和新技术,使快速变化能够持续开发并集成到现有系统中。
每次快速更改都会使现有数据经常变得过时。现有数据可能与最新的系统逻辑和数据结构不匹配。与此同时,由于历史数据缺乏测试新逻辑或更新逻辑所需的数据组合,因此覆盖范围出现了差距。虽然测试覆盖率的差距会导致错误,但不一致或无效的组合会导致测试失败和出现瓶颈。
上面列出的三个措施也增加了数据请求的速度和数量,因为每个措施都强调并行工作方式。测试数据解决方案不能再为有限数量的团队提供相对静态的数据集。与其相反,必须向众多跨职能团队和自动化框架提供最新数据:如今,测试数据通常必须同时提供给众多团队和框架。
当今的任何测试数据解决方案通常都必须能够以并行化开发团队开发复杂系统的速度提供最新和完整的数据。而测试和开发需要不断变化的数据集,这些数据集可以并行和动态地使用。此外,按需数据必须完全版本化,能够测试版本化系统组件的不同组合。
3.容器化、源代码控制和易于重用的代码
如今对复杂系统改变的幅度可能比以往任何时候都大。这对缓慢和过度的数据供应提出了挑战,因为大量数据可能需要根据快速的系统变化进行更新或替换。
开发中的一系列实践增加了系统更改的速度和规模。容器化、源代码控制和易于重用的代码库的采用使开发人员能够以闪电般的速度翻录和替换代码。他们可以轻松部署新的工具和技术,开发出由快速变化的组件构成的错综复杂的系统。
当今的测试数据解决方案必须能够根据这些变化对相关系统组件的巨大影响提供一致的测试数据的旅程。数据分配必须按照开发人员对可重用和容器化组件进行细分和更改的速度进行。
这通常需要更紧密地耦合系统需求、测试和代码,根据整个软件开发生命周期 (SDLC)的变化快速确定需要哪些数据。否则,由于测试人员和开发人员缺乏在迭代中交付的经过严格测试软件所需的最新数据,就会出现测试瓶颈和错误。
4.测试自动化
测试自动化是另一个关键发展,它增加了测试和开发中对最新数据的持续需求。
测试执行自动化和持续集成(CI)/持续交付(CD)显著地提高了数据请求的速度和数量。数据处理的框架比测试人员更快地读取数据,通常在夜间和周末运行大型测试套件。此外,相同的测试通常是并行化的,从而增加了对数据的需求。
除了提高需要测试数据的速度之外,自动化测试进一步加剧了与不准确数据供应相关的挑战。而脚本测试不如测试人员宽容,如果数据不完整、无效或丢失,他们可以调整测试。如果数据无效、过时或丢失,自动化测试可能会终止。这增加了测试和开发的瓶颈,因为在自动化测试期间bug识别的错误需要调查。
测试自动化已经改变了当今测试数据请求者的性质。当今有效的测试数据解决方案通常应该为测试人员和开发人员以及测试自动化框架和持续集成(CI)/持续交付(CD)管道等技术提供按需访问的功能。人员和程序都应该能够即时参数化和触发测试数据作业。这是传统测试数据管理和测试数据自动化之间的另一个主要区别。
5.不断发展的数据隐私要求
使测试数据“最佳实践”变得复杂并要求修订的发展在于数据隐私要求和法规。
欧盟GDPR法规已经引导企业禁止在测试中使用原始生产数据,因为他们必须遵守更严格的数据处理规则。这些规则通常会限制数据的使用方式、使用对象以及使用时间。
欧盟GDPR等立法也对传统测试数据优秀实践提出了特殊的挑战。如今的企业可能需要立即定位、复制和删除个人数据的每个副本。这通常需要对数据在测试和开发中的使用方式进行更严格的控制和监督,以及实施在非生产环境中定位数据的快速可靠机制。通常情况下,一种更安全、更简单的方法是避免将敏感信息复制到安全性较低、控制较少的测试和开发环境中。
虽然欧盟GDPR法规在许多方面是数据隐私的分水岭,但它并不是孤立的发展。它反映了更广泛的全球法规发展方向,许多国家已经批准了与欧盟GDPR类似的法规。这些国家的法规可能会对测试中的数据使用产生类似的影响。其中包括英国GDPR、加拿大CCPA、印度PDPB和巴西LGPD等法规。
不断变化的数据隐私要求会增加管理测试数据的复杂性,以及对非生产环境中数据所需的总体控制程度。已经在努力向测试人员和开发人员提供足够种类和数量的数据的企业可能并不会接受无法提供数据的想法,更不用说必须删除和限制现有测试数据。然而,违规的后果可能非常严重。
测试数据自动化和人工智能的前景
许多新的和持续的趋势意味着当今在测试和开发中需要更多数量和更多种类的数据。本文只确定了其中一些因素,其中包括:
(1)相互关联的数据源和目标的出现,需要一致且错综复杂的数据。
(2)系统、环境和生产变化的速度和幅度加大,需要新的和不断发展的数据用于测试和开发。
(3)跨测试和开发的更大程度的并行化,需要按需和并行地提供大量数据。
(4)在测试中采用自动化技术,改变了“数据请求者”的性质,需要更多数量和种类的准确数据。
(5)不断发展的数据隐私法规,要求加强对敏感数据在非生产环境中使用的方式和时间进行管理。
这些趋势增加了本已紧张的测试数据供应服务的压力,增加了延迟,并降低了测试和开发的质量。因此,这需要修订测试数据的优秀实践。
原文标题:5 Trends Increasing the Pressure on Test Data Provisioning,作者:Thomas Pryce
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】