在软件测试中使用真实数据是有益的,但团队必须小心,不要损害安全性和隐私。金融行业测试的六个核心策略可以帮助我们避免这些问题
在金融行业,真实的客户数据提供了最强大、最真实的软件测试场景。然而,法规和标准——或者公司的安全团队——可能会坚持控制或限制权限,使使用真实数据成为不可能。
安全团队没有错。该公司有义务对客户的社会安全号码、出生日期和全名保密。任何拥有个人身份信息(PII)的人都可以利用它进行身份盗窃或欺诈。对于个人身份信息敏感的数据,包含实时信用卡号的测试可能会助长欺诈和滥用行为。
测试者也没有错。最好的测试包括实际生产条件。使用实时数据,软件更有可能在测试和生产环境中保持一致。
幸运的是,有一些方法可以平衡安全性和优秀的测试实践。这些策略中的大多数都适用于事务性系统——例如用于保险索赔处理、每月账单和利息计算的系统——但它们也适用于任何使用PII的系统,因为这些系统需要使用生产数据。
金融科技测试的6大核心策略
这六种策略可以帮助软件团队平衡准确的金融科技测试和数据安全。
使用黄金大师
大多数系统都可以导出和导入数据,至少可以用于备份。黄金大师将这个想法进一步推进了一步,创建了一个简单的示例测试数据集。该数据集有已知的案例,例如信用不良的用户,信用良好的用户,未满18岁无法合法签订合同的用户等等。
有了一致的已知良好数据,团队可以编写静态测试用例,在每次运行时检查相同的用户以获得相同的预期结果。最简单的选择是将导出存储在版本控制或测试数据管理工具中。请注意,在某些情况下,导出将包含日期,例如保险索赔的日期,并且程序可能需要更新导入的日期。
掩码可识别信息
为了最大限度地降低身份盗窃的风险,生产数据屏蔽获取信息并更改姓名、生日或社会安全号码等方面,以便对其进行加密,但仍保持有效形式。这使团队能够在保护敏感数据的同时执行真实、准确的软件测试。
这仍然留下了访问原始的、预先转换的数据的问题。有些工具可以通过安全控制自动屏蔽数据,因此测试人员或程序员无法访问“上游”预加密数据。
遵循许可原则
当我在一家保险公司工作时,我编写了一个简单的代码库来确定任何个人在当前日期是否有保险。单元测试使用了我自己的个人信息。这并没有违反HIPAA,因为我给了公司许可。当我离开公司时,其他人接管了这个策略并维护代码。
这种方法可以很好地工作,但是在同一数据库中同时运行大量测试时就不太理想了。因此,在等待合成用户时,可以使用具有权限的个人id。
使用合成用户进行测试
使用这种方法,有一个代码库,测试人员可以从中请求特定类型的用户——例如,基于年龄或信用评分——并获得唯一的用户ID。如果每个测试都请求一个新的合成用户,那么当为测试重用同一用户时,就不会在数据库中发生“冲突”。例如,如果一个测试反复申请一笔贷款,那么合成用户可能会遇到信贷过度扩张的新场景。
与客户服务部门合作
访问一些生产数据对于客户服务通常是必不可少的。当客户服务在生产中出现问题时,他们可以提供信息来调试、隔离和修复生产中的问题。这是测试的一个基本方面。形式化这个过程可以允许团队在某些时候访问一些生产数据。
使用大量的自动化测试
曾经工作过的一家公司每天要处理几千个用户,产生一个文本文件,这个文件后来变成了一个邮件合并。对于每一次构建,他们都选取了以前生产数据的两个黄金大师,运行软件的生产版本和新构建,并比较输出。这使得测试用例的数量从几天几十个增加到几个小时几千个。
在受监管的市场中,团队可能需要将这种自动化测试方法与数据屏蔽或随机化相结合。例如,根据年龄或信用评分对生产用户进行分析,可以创建与生产用户匹配的合成用户的“黄金大师”。