测试数据管理:什么是测试数据,如何设计测试数据

发表于:2017-7-19 13:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小布丁Brave 译    来源:51Testing软件测试网原创

  复杂测试数据设计和管理指南(第一部分):
  在当前的信息和技术革命的发展中,测试人员通常在软件测试的生命周期中广泛的使用测试数据.
  测试人员不仅从现有的数据源中收集/维护数据,而且还生成大量的测试数据,以确保他们在产品交付时的质量不会出现问题。
  因此,作为测试人员,我们必须不断地探索、学习和应用最有效的方法来进行数据收集、生成、维护、自动化和全面的数据管理,以实现任何类型的功能和非功能测试
  在本教程中,我将提供如何准备测试数据的技巧,以便任何重要的测试用例都不会被不正确的数据和不完整的测试环境设置所遗漏。
  什么是测试数据,为什么它那么重要
  根据IBM在2016年进行的一项研究,搜索、管理、维护和生成测试数据包含了测试人员30%-60%的时间。这是一个不可否认的证据,数据准备是软件测试的一个耗时的阶段。
  
  尽管如此,在许多不同的学科中,大多数数据科学家花费50%-80%的模型开发时间来组织数据。现在,考虑到立法以及个人可识别的信息(PII)使得测试人员在测试过程中需要考虑这方面的因素。
  如今,测试数据的可靠性和可靠性被认为是在企业所有者看来的不妥协因素。产品所有者将测试数据的幽灵副本视为最大的挑战,这降低了在客户对质量保证的需求/需求时,任何应用程序的可靠性。
  考虑到测试数据的重要性,绝大多数的软件拥有者不会接受带有虚假数据的或者更少的安全措施测试应用程序。
  在这一点上,我们为什么不研究测试数据是什么呢?当我们开始编写测试用例来验证和验证给定的特性和在测试下的应用程序的开发场景时,我们需要信息作为输入来执行测试,以识别和定位缺陷。
  我们知道,这些信息需要精确和完整,才能让这些错误消失。这就是我们所说的测试数据。为了使其准确,可以是姓名、国家等不敏感的数据,涉及到联系信息的数据、SSN、医疗史和信用卡信息在本质上是敏感的。
  数据可以以任何形式出现:
  "系统测试数据
  "Sql测试数据
  "性能测试数据
  "XML测试数据
  如果您正在编写测试用例,那么您需要输入数据来进行任何类型的测试。测试人员可以在执行测试用例的时候提供这些输入数据,或者应用程序可以从预定义的数据位置中选择所需的输入数据。
  数据可能是应用程序输入的任何类型的数据,任何由应用程序装载的文件或从数据库表中读取的条目。
  准备适当的输入数据是测试准备的一部分。 一般来说,测试人员称它为"测试预备准备"。在测试预备中,所有的软件和硬件需求都是使用预定义的数据值来设置的。
  如果在编写和执行测试用例时没有系统地构建数据的方法,那么就有可能丢失一些重要的测试用例。测试人员可以根据测试需求创建自己的数据。不要依赖于其他测试人员或标准生产数据所创建的数据。总是根据您的需求创建一组新的数据。
  有时,为每个构建创建一个全新的数据集是不可能的。在这种情况下,您可以使用标准的生产数据。但是请记住在这个现有的数据库中添加/插入您自己的数据集。创建数据的最佳方法是使用现有的样例数据或测试预备,并在每次获得相同的模块进行测试时附加新的测试用例数据。通过这种方式,您可以在此期间构建全面的数据集。
  测试数据采集的挑战
  测试数据生成的一个领域是,测试人员考虑的是子集的数据采购需求。例如,您有超过100万的客户,您需要1000个客户来进行测试。这个样例数据应该是一致的,并且在统计上表示目标组的适当分布。换句话说,我们应该找到合适的人进行测试,这是测试用例最有用的方法之一。
  此外,在这个过程中还存在一些环境约束。其中一个是映射PII策略。由于隐私是一个重要的障碍,测试人员需要对PII数据进行分类。
  测试数据管理工具是为了解决上述问题而设计的。这些工具建议基于它们所拥有的标准/目录的策略。不过,这并不是很安全的锻炼。它仍然为人们提供审计的机会。
  为了跟上当前乃至未来的挑战,我们应该经常问这样的问题:我们应该何时开始实施TDM的行为?应该是自动化吗?在人员扩充和使用新的TDM工具方面,公司应该投入多少资金进行测试?我们应该开始测试功能还是非功能性测试?还有更多这样的问题。
  以下是测试数据来源的一些最常见的挑战:
  "团队可能没有足够的测试数据生成工具的知识和技能
  "测试数据覆盖通常是不完整的
  "在收集阶段的数据需求中不太清晰的数据需求
  "测试团队没有访问数据源的权限
  "开发人员延迟向测试人员提供生产数据访问
  "根据开发的业务场景,生产环境数据可能无法完全用于测试
  "在给定的有限时间内,可能需要大量的数据
  "用于测试某些业务场景的数据有依赖性/组合的特性
  "测试人员花费的时间超过了与架构师、数据库管理员和Bas预估进行数据收集的时间。
  "大多数数据是在测试执行过程中创建或准备的
  "多个应用程序和数据版本
  "连续发布周期跨多个应用程序
  "关于个人识别信息(PII)的立法
  在白盒测试的数据方面,开发人员准备生产数据。这就是QA需要与开发人员进行接触的地方,以便进一步测试AUT的测试覆盖率。最大的挑战之一是将所有可能的场景(100%的测试用例)与所有可能的负面情况合并在一起。
  在本节中,我们讨论了测试数据的挑战。当您已经解决了这些问题时,您可以添加更多的挑战。接下来,让我们探索处理测试数据设计和管理的不同方法。
  测试数据准备的策略
  我们通过日常实践知道,测试行业的参与者不断地体验不同的方法和方式来提高测试工作的效率,最重要的是它的成本效率。在信息技术的发展过程中,我们已经看到,当工具被整合到产品/测试环境中时,产出的水平会大大提高。
  当我们谈到测试的完整性和完整的覆盖率时,它主要取决于数据的质量。由于测试是获得软件质量的支柱,测试数据是测试过程中的核心元素。
  
  基于映射规则创建平面文件。从开发人员设计和编写应用程序的生产环境中创建所需数据的子集是很实际的。实际上,这种方法减少了测试人员的数据准备工作,并且使现有资源的使用最大化,以避免进一步的开销。
  通常,我们需要创建数据,或者至少根据每个项目在一开始时的需求类型来确定它。
  我们可以运用以下策略来处理TDM的过程:
  1.来自生产环境的数据
  2.用SQL查询检索从客户现有数据库中提取数据
  3.自动数据生成工具
  测试人员应该通过考虑如图3所示的元素来支持完整的数据。敏捷开发团队中的测试人员为执行他们的测试用例生成必要的数据。当我们讨论测试用例时,我们指的是各种类型的测试,比如白盒、黑盒、性能和安全性。
  在这一点上,我们知道性能测试的数据应该能够保证在给定的工作负载下,系统响应的速度非常快,非常接近真实的或大量的数据,并具有显著的覆盖率。
  在白盒测试方面,开发人员准备他们所需的数据,以覆盖尽可能多的分支,程序源代码中的所有路径,以及无效的应用程序接口(API)。
  
  最终,我们可以说,在软件开发生命周期(SDLC)中工作的每个人,如BAs、开发人员和产品所有者,都应该充分参与到测试数据准备的过程中。这可能是一项共同努力的工作。现在让我们带您讨论无效的测试数据。
  无效的测试数据
  在对现有数据执行任何测试用例之前,我们应该确保数据没有被损坏/过时,并且在测试下的应用程序可以读取数据源。通常,当不止一位测试人员在测试环境中对一个AUT的不同模块进行测试时,数据被破坏的几率非常高
  在相同的环境中,测试人员根据测试用例的需求/需求修改现有的数据。大多数情况下,当测试人员完成数据时,他们就会保留数据。当下一个测试人员拿起修改过的数据,并且他/她执行了另一个测试的执行时,就有可能出现这种特殊的测试失败,而不是代码错误或缺陷。
  在大多数情况下,这就是数据如何被破坏或过时的,这将导致失败。为了避免和减小数据差异影响的可能性,我们可以将解决方案应用于下面。当然,您可以在本教程的末尾添加更多的解决方案。
  ------------
  1.有数据备份
  2.回复修改的数据至原有的状态
  3.测试数据分配给测试人员
  保持数据仓库管理员对任何数据更改/修改的更新
  如何在任何测试环境中保持数据完整?
  大多数时候,许多测试人员负责测试相同的构建。在这种情况下,超过一个测试人员将访问公共数据,他们将尝试根据他们的需要操作公共数据集。
  如果您已经准备好了一些特定模块的数据,那么保持数据集完整的最好方法就是保留相同的备份副本。
  性能测试用例的测试数据
  性能测试需要非常大的数据集,有时手工创建数据不会检测到一些细微的bug,这些bug可能只会被应用程序在测试中创建的实际数据所捕获。如果您想要手动创建实时数据,而这些实时数据是手动创建不了的,那么请您的领导/管理人员从现场环境中获取信息。
  这些数据将有助于确保所有应用程序的有效输入的顺利运行。
  什么是理想的测试数据?
  数据可以被认为是理想的,如果数据的刚好设置了所有的应用程序错误以得到识别。尝试准备包含所有应用程序功能的数据,但是不超过用于准备数据和运行测试的成本和时间限制。
  如何准备测试数据保证最大程度的覆盖到所有的测试?
  根据以下类别设计你的数据:
  1)没有数据:在空白或默认数据上运行您的测试用例。查看是否生成了正确的错误消息。
  2)有效数据集:创建它以检查应用程序是否按每个需求运行,有效的输入数据是否正确地保存在数据库或文件中。
  3)无效的数据集:准备无效的数据集,检查应用程序的负面值,字母数字字符串输入。
  4)非法数据格式:制作一套非法数据格式。系统不应以无效或非法的格式接收数据。此外,还要检查是否生成了正确的错误消息。
  5)边界条件数据集:包含范围数据的数据集。识别应用程序边界情况,并准备数据集,这些数据集将覆盖较低的边界条件。
  6)性能、负载和压力测试的数据集:这个数据集应该是大数量级的。
  这种方式为每个测试条件创建单独的数据集,将确保完整的测试覆盖率。
版权声明:本文出自《51测试天地》原创测试文章系列(四十六)投稿。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
相关推荐:
《51测试天地》原创测试文章系列(四十六)
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号