测试数据管理:什么是测试数据以及如何设计它

在当前信息和技术革命性增长的史诗中,测试人员通常在软件测试生命周期中体验大量的测试数据消耗。

测试人员不仅从现有的源收集/维护数据,而且还生成大量的测试数据,以确保它们在为实际使用的产品交付方面做出了巨大的贡献。

因此,作为测试人员,我们必须不断探索、学习和应用最有效的数据收集、生成、维护、自动化和全面数据管理方法,用于任何类型的功能测试和非功能测试。

Test data tutorial

在本教程中,我将提供提示如何准备测试数据,这样任何重要的测试用例都不会被不正确的数据和不完整的测试环境设置所遗漏。

什么是测试数据?为什么它是重要的?
参照IBM在2016年进行的一项研究,搜索、管理、维护和生成测试数据的时间占测试人员时间的30%-60%。数据准备是软件测试的一个耗时阶段,这是一个不可否认的证据。

测试数据管理:什么是测试数据以及如何设计它

图1:测试人员平均花费在TDM上的时间

尽管如此,大多数数据科学家将其模型开发时间的50%-80%用于组织数据,这是许多不同学科的事实。现在,考虑到立法以及个人可识别信息(PII),测试人员在测试过程中的参与度是相当不错的。

今天,测试数据的可信度和可靠性被认为是企业主不可妥协的因素。产品所有者将测试数据的幽灵副本视为最大的挑战,这降低了在客户对质量保证的需求/要求的独特时刻任何应用程序的可靠性。

考虑到测试数据的重要性,大多数软件所有者在安全措施方面不接受假数据或更少的测试应用程序。

在这一点上,我们为什么不回忆一下什么是测试数据?当我们开始编写测试用例来验证和验证测试下的应用程序的给定特性和开发场景时,我们需要用于执行测试以识别和定位缺陷的信息。

我们知道,这些信息必须是精确和完整的,以消除错误。这就是我们所说的测试数据。为了使它准确,它可以是名称、国家等…,不敏感,涉及联系信息、SSN、病史和信用卡信息的数据在本质上是敏感的。

数据可以是任何形式,如:

系统测试数据
SQL测试数据
性能测试数据
XML测试数据
如果您正在编写测试用例,那么您需要为任何类型的测试输入数据。测试人员可以在执行测试用例时提供此输入数据,或者应用程序可以从预定义的数据位置选择所需的输入数据。

数据可以是对应用程序的任何类型的输入,也可以是由应用程序加载的任何类型的文件,也可以是从数据库表中读取的条目。

准备适当的输入数据是测试设置的一部分。一般来说,测试人员称它为试验台准备。在测试平台上,所有的软硬件需求都是使用预定义的数据值来设置的。

如果您没有系统的方法来构建数据编写和执行测试用例然后就有可能错过一些重要的测试用例。测试人员可以根据测试需求创建自己的数据。

不要依赖其他测试人员创建的数据或标准生产数据。始终根据您的需求创建一组新的数据。

有时,不可能为每个构建创建一个全新的数据集。在这种情况下,您可以使用标准生产数据。但是,请记住在这个现有的数据库中添加/插入您自己的数据集。创建数据的一种最佳方法是使用现有的示例数据或测试床,并在每次获得用于测试的相同模块时追加新的测试用例数据。这样,您就可以在此期间构建全面的数据集。

测试数据来源挑战
测试人员考虑的测试数据生成领域之一是子集的数据来源需求。例如,你有超过一百万的客户,你需要他们中的一千人进行测试。这些样本数据应该是一致的,并且在统计上代表目标群体的适当分布。换句话说,我们应该找到合适的测试对象,这是测试用例最有用的方法之一。

这些样本数据应该是一致的,并且在统计上代表目标群体的适当分布。换句话说,我们应该找到合适的测试对象,这是测试用例最有用的方法之一。

此外,在这一过程中还存在一些环境制约因素。其中之一是映射PII策略。由于隐私是一个重要的障碍,测试人员需要对PII数据进行分类。

测试数据管理工具都是为解决上述问题而设计的。这些工具根据它们所拥有的标准/目录来建议策略。不过,这并不是很安全的锻炼。它仍然提供了对一个人正在做的事情进行审计的机会。

为了跟上当前甚至未来的挑战,我们应该总是问这样的问题:我们应该从什么时候/从哪里开始进行TDM?什么应该是自动化的?公司应该在人力资源、持续技能开发和使用较新的TDM工具等领域投入多少资金用于测试?我们应该开始使用功能性测试还是非功能性测试?更有可能像他们一样提出问题。

下面介绍了测试数据来源中最常见的一些挑战:

团队可能没有足够的测试数据生成器工具、知识和技能。
测试数据覆盖率通常是不完整的。
在收集阶段,涵盖卷规格的数据要求不那么清晰
测试团队无法访问数据源。
开发人员延迟向测试人员提供生产数据访问
基于开发的业务场景,生产环境数据可能不能完全用于测试。
在给定的时间内,可能需要大量的数据。
测试某些业务场景的数据依赖关系/组合
测试人员花更多的时间与架构师、数据库管理员进行通信,并在收集数据方面花费更多的时间。
大多数数据是在测试执行过程中创建或准备的。
多个应用程序和数据版本
跨几个应用程序的连续发布周期
照顾个人身分证明资料的法例(PII)
在数据测试的白盒端,开发人员准备生产数据。这就是QA需要与开发人员接触的地方,以进一步扩大AUT的测试覆盖范围。最大的挑战之一是将所有可能的场景(100%的测试用例)与每一个可能的负面案例结合起来。

在本节中,我们讨论了测试数据挑战。您可以添加更多的挑战,因为您已经相应地解决了它们。随后,让我们探讨处理测试数据设计和管理的不同方法。

测试数据准备策略
通过日常实践我们知道,测试行业的参与者不断地经历着不同的方式和方法来加强测试工作,最重要的是它的成本效益。在信息和技术发展的短短的过程中,我们已经看到,当工具被整合到生产/测试环境中时,产出的水平就有了很大的提高。

当我们谈到测试的完整性和覆盖度时,主要取决于数据的质量。测试是软件质量的支柱,测试数据是测试过程中的核心要素。

测试数据管理:什么是测试数据以及如何设计它

图2:测试数据管理策略

基于映射规则创建平面文件。从开发人员设计和编码应用程序的生产环境中创建所需数据的子集总是切实可行的。实际上,这种方法减少了测试人员编制数据的努力,最大限度地利用现有资源避免进一步支出。

通常,我们需要创建数据,或者至少根据每个项目刚开始时的需求类型来确定它。

我们可以应用以下策略来处理TDM过程:

来自生产环境的数据
检索从客户端现有数据库提取数据的SQL查询
自动数据生成工具
测试人员应该通过考虑图3所示的元素来用完整的数据备份他们的测试,敏捷开发团队中的测试人员为执行他们的测试用例生成必要的数据。当我们谈到测试用例时,我们指的是各种类型测试的用例,如白盒、黑匣子、性能和安全性。

在这一点上,我们知道用于性能测试的数据应该能够确定系统在给定工作负载下的响应速度,以非常接近真实的或实时的、覆盖范围很大的大量数据。

对于白盒测试,开发人员准备所需的数据,以覆盖尽可能多的分支、程序源代码中的所有路径和负应用程序接口(API)。
测试数据管理:什么是测试数据以及如何设计它

图3:测试数据生成活动

最后,我们可以说,在软件开发生命周期中工作的每个人(SDLC)和BAS一样,开发人员和产品所有者应该很好地参与测试数据的准备过程。这可以是一种共同努力。现在让我们来讨论一下测试数据损坏的问题。

损坏测试数据
在对现有数据执行任何测试用例之前,我们应该确保数据没有损坏/过时,并且测试下的应用程序可以读取数据源。通常,当测试人员同时在测试环境中处理AUT的不同模块时,数据损坏的几率很高。

在同一环境中,测试人员根据测试用例的需要/需求修改现有数据。大多数情况下,当测试人员完成数据处理时,他们会保留数据的原样。一旦下一个测试人员获得修改后的数据,并执行另一次测试,就有可能发生特定的测试失败,而不是代码错误或缺陷。

在大多数情况下,这会导致数据损坏和/或过时,从而导致失败。为了避免和尽量减少数据不一致的可能性,我们可以按下面的方式应用解决方案。当然,您可以在本教程的末尾在注释部分添加更多的解决方案。

备份数据
将修改后的数据返回到原始状态。
测试人员之间的数据划分
让数据仓库管理员随时更新数据更改/修改。
如何在任何测试环境中保持数据完整?

大多数情况下,许多测试人员负责测试相同的构建。在这种情况下,不止一个测试人员将能够访问公共数据,并且他们将根据自己的需要尝试操作公共数据集。

如果您已经为某些特定模块准备了数据,那么保持数据集完整的最佳方法是保留数据集的备份副本。

性能测试用例的测试数据
性能测试需要非常大的数据集。有时候,手动创建数据不会检测到一些微妙的错误,这些漏洞可能只会被测试的应用程序创建的实际数据捕获。如果您想要实时数据,这是不可能手动创建的,那么请您的领导/经理将其从活动环境中提供。

这些数据将有助于确保所有有效输入的应用程序的顺利运行。

什么是理想的测试数据?

数据可以说是理想的,如果对数据集的最小大小,所有的应用程序错误得到识别。尝试准备包含所有应用程序功能的数据,但不要超过准备数据和运行测试的成本和时间限制。

如何准备数据以确保最大限度的测试覆盖率?
设计数据时考虑以下类别:

1)无数据:在空白或默认数据上运行测试用例。查看是否生成了正确的错误消息。

2)有效数据集:创建它以检查应用程序是否按照要求工作,并且有效的输入数据是否正确地保存在数据库或文件中。

3)无效数据集:准备无效的数据集以检查应用程序的负值、字母数字字符串输入的行为。

4)非法数据格式:制作一个非法数据格式的数据集。系统不应接受无效或非法格式的数据。此外,检查正确的错误消息是生成的。

5)边界条件数据集:包含范围以外数据的数据集。识别应用程序边界案例,并准备涵盖较低和较高边界条件的数据集。

6)性能、载荷和压力测试数据集:这个数据集的容量应该很大。

这样,为每个测试条件创建单独的数据集将确保完整的测试覆盖率。

黑箱测试数据
质量保证测试人员执行集成测试、系统测试和验收测试,这称为黑箱测试。在这种测试方法中,测试人员在测试下的应用程序的内部结构、设计和代码方面没有任何工作。

测试人员的主要目的是识别和定位错误。通过这样做,我们使用不同的黑匣子测试技术,应用功能测试或非功能测试。

测试数据管理:什么是测试数据以及如何设计它

图4:黑匣子数据设计方法

此时,测试人员需要测试数据作为执行和实现黑匣子测试技术的输入。测试人员应该准备数据,以便在不超过给定成本和时间的情况下检查所有应用程序功能。

我们可以为我们的测试用例设计数据,考虑数据集类别,如无数据、有效数据、无效数据、非法数据格式、边界条件数据、等价划分、决策数据表、状态转换数据和用例数据。在进入数据集类别之前,测试人员开始在测试人员(AUT)下对应用程序的现有资源进行数据收集和分析。

根据前面提到的保持数据仓库始终更新的要点,您应该在测试用例级别记录数据需求,并在编写测试用例脚本时标记它们可使用或不可重用。它帮助您测试所需的数据从一开始就得到了很好的澄清和记录,您可以在以后的进一步使用中参考这些数据。

结语
根据行业标准、法规和项目的基准文件创建完整的软件测试数据是测试人员的核心职责之一。我们越有效地管理测试数据,我们就越能为现实世界的用户部署合理的无bug产品。

测试数据管理(TDM)是基于对挑战的分析和引入,并应用最好的工具和方法来很好地解决已确定的问题,同时又不影响最终输出(产品)的可靠性和覆盖范围的过程。

在分析和选择测试方法时,我们总是需要提出一些问题,以寻找创新的、更符合成本效益的方法,包括使用生成数据的工具。被广泛证明的是,设计良好的数据使我们能够在多阶段SDLC的每个阶段识别测试下的应用程序的缺陷。

我们需要与敏捷团队内外的所有成员一起创新和参与,请分享您的反馈、经验、问题和意见,以便我们能够继续我们的技术讨论-通过管理数据来最大限度地发挥我们对AUT的积极影响。

准备合适的测试数据是“项目测试环境设置”的核心部分。我们不能简单地错过测试用例,说没有完整的数据可供测试。测试人员应该在现有标准生产数据之外创建自己的测试数据。您的数据集在成本和时间方面应该是理想的。

要有创造力,用自己的技能和判断来创建不同的数据集,而不是依赖标准的生产数据。

猜你喜欢

转载自blog.51cto.com/13879140/2152892
今日推荐