根据测试阶段,我们使用这些模型来阐明有关超出系统边界的数据流和引用完整性的问题,或者在开始推出之前我们试验复杂的数据结构以实现技术突破。
理想情况下,在项目开始时就对测试数据结构有一个统一的理解,这使我们能够识别知识载体并开始具体的开发。如果团队从一开始就全面合作,这将极大地改善测试数据的提供。
当人们通常在项目中谈论“测试数据”时,它可能(不幸地)意味着很多东西,例如保险机构或佣金率等测试数据对象,每个对象都有不同的属性(例如“机构所有者”或“成交佣金”)。这些属性又具有几个特征 - 例如,“结算佣金”根据保险额度具有不同的百分比值。根据我的经验,当我的同事使用术语“测试数据”时,他们通常指的是测试数据对象的几个非常具体的版本。
为了让每个人重新加入并建立共同语言,以下细分对我来说非常有用:
基础数据(例如,每个新业务都至少需要一些资费、代理商和佣 贷款人员电子邮件列表 金数据,即使这些不是测试用例的重点)
配置数据(例如测试用户和授权)
环境数据(例如软件版本)
元数据(它们更详细地描述测试数据 - 例如版本控制)
有一件事是明确的:如果没有人推动,项目通常会太晚处理测试数据。重点更多地关注具体的技术特征,而不是抽象的技术对象。然而,如果提供技术对象的工具缺失或只能提供零件,则可能会产生严重后果 - 从昂贵的改造和错过交付日期到软件质量不足,再到客户不满意或合同处罚。这通常会导致以下问题:管理层可能听说有一个工具,但没有处理该工具未涵盖的内容以及需要计划哪些额外的手动工作。然而,如果使用正确的测试数据管理工具,测试数据提供的效率可以大大提高。但是,此时建议谨慎,因为仅选择工具和必要的数据字段映射有时可能比实际项目花费更多时间。我的建议:尽早确定要交付的物品,了解交付流程并检查您是否可以使用船上资源。
测试数据管理对我们所有人来说都是新领域,对吧?
当我询问测试人员他们需要什么测试数据时,我经常听到“我的测试用例应该运行”,然后我会问:
数据应该“做什么”?
您何时、何地以及多长时间需要这些数据?
数据是否应该恢复到原始状态(如果是,哪些系统仍然受到影响)?
这些问题的每一个答案都会引发进一步的关键问题:如果清楚数据在技术上应该能够做什么,那么仍然需要澄清整个事情将如何在技术上实施。即使是搜索需要保护的单个属性,例如出现在无数应用程序和代码表中并以不同方式修改的“名字”,也会很快变成一场(耗时的)冒险。
无论您扮演什么角色,测试数据都会给您带来挑战:如果测试数据仅被执行测试的人员理解为简单的操作输入数据,并且用户不会注意他们在后台的输入触发了哪些流程和检查,问题很快就会出现。这些问题的原因很少是实际的软件错误,而是通常与预期结果的所谓“偏差”。这意味着该软件按预期工作,但由于不正确的使用而导致实际结果与预期结果不同。良好的测试数据管理可以减少此类偏差的发生。
根据我的经验,许多测试用例设计者无法自己充分阐明他们的需求。除了缺乏系统知识之外,通常还缺乏对测试数据的实际含义及其使用意义的理解。因此,提供测试数据不再是一个简单的迁移任务——而且从来都不是。这不仅仅是一个富有成效的部分打印输出是否足以用于测试或者数据是否需要综合丰富的问题。关键问题既不关注技术测试也不关注专业测试,而是关注确保复杂应用环境中的数据完整性、测试数据的成本敏感管理、遵守法律要求以及保护机密客户数据:
谁(项目/小组中)可以查看和使用数据?
需要正确保护的部分数据如何匿名化?
如何确保可审计性?
获得帮助
虽然各部门仍然非常熟悉自己的系统,但外部项目员工尤其面临着必须定期适应不熟悉的IT系统的挑战。测试人员随后将自己限制为“完成测试用例”并使用经过验证的测试数据组合,这一事实是可以理解的,但也是危险的。我曾多次经历过测试数据未经批准就被使用,直到它不再“起作用”,而没有人知道为什么。 (错误的)偏差会越来越多地发生。因此,昂贵的专家必须费力地分析报告的偏差是否是编程、设计或用户错误,而不是集中精力纠正真正的关键错误。
为了解决这个问题,我建议您: 谈论(尤其是在项目业务中)您的具体需求、假设和期望,并处理测试数据提供的方法和流程。任何人都可以毫不费力地学习如何为自己和他人节省大量时间和压力。因此,我只能建议每个公司从一开始就决定系统化的测试数据管理,以避免缺陷经理、分析师、开发人员和架构师付出不必要的努力。
如果您想了解更多有关保险领域令人兴奋的话题,请查看迄今为止已发布的博客文章。
如果您想了解我们目前在保险领域正在研究哪些主题,请访问我们的网站。