首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保测试数据是正确的?

如何确保测试数据是正确的?
EN

Stack Exchange QA用户
提问于 2012-10-21 11:20:14
回答 3查看 1.2K关注 0票数 9

我们正在进行集成测试,手动模拟来自外部系统和应用程序的数据。我们的集成测试已经成为我们过程中的瓶颈,因为由于测试数据的复杂格式,准备测试数据是很困难的:

  • 很难学。开发人员处理已经解析过的数据,因此他们不关心格式。但是在集成级别上,我必须了解格式的所有细微差别。理解这种格式比编写测试本身需要更多的时间。
  • 容易出错。最后,你不知道为什么你的测试失败。是因为系统被测试还是测试数据不正确?

对于长期参与该项目的测试人员来说,这些并不是重大的问题,但对于像我这样的新手来说,它们是重大的障碍。所以我们要做的是:

  1. 我们正在创建测试数据生成器。我们正在将来自业务分析师、其他测试人员和开发人员的文档和答案的知识编码到生成器中。测试数据生成器包含预定义的数据块,测试人员可以将这些数据组合在一起创建完整的测试数据。显然,测试人员必须学习DSL (基于Java),但我希望它比最终的格式更容易。
  2. 我们正在创建测试数据验证器。生成器创建的测试数据在序列化为特定XML格式之前,会根据一些基本约束(例如,强制字段,测试数据的不同部分的值正确)进行验证。这就消除了基本的错误。

我们还能做些什么来简化测试数据的创建过程?

我们如何确保测试数据是正确的?

EN

回答 3

Stack Exchange QA用户

回答已采纳

发布于 2012-10-21 19:34:28

生成测试数据是一个困难的问题,因为如果您不了解数据的系统,那么很可能会生成测试数据,这些测试数据将在测试中抛出假阳性(测试失败是由于错误的数据,而不是产品中的错误)。

我成功使用的方法是从等效分区生成参数化测试数据。我将这种方法用于各种数据,如Unicode字符串、设备上的联系人信息(例如名称、电话#'s等)和用于阳性和阴性(fuzz)测试的JSON小泡。

本质上,这需要对数据进行建模,将数据分解成等价的子集,然后生成满足模型约束的测试数据。(听起来你走在正确的道路上)。

要了解这种方法,请看我的白皮书参数化随机测试数据生成这个白皮书来自MS研究。我也有一个帖子这里。

当然,模型是对现实的抽象,所以生成的数据只能与模型、等效集以及如何在生成器中参数化使用这些集合的数据一样好。数据生成可能变得相当复杂,还可以包括加权特定值、排序等。

关于验证生成的数据,所有的预言本质上都是启发式的。因此,在本例中,您验证生成的数据满足模型。它不是防弹的,但它比粗野的随机,或猜测要好。

最后,也不要忘记使用真实的数据。

如果你有更多的问题或者我可以帮忙,请告诉我。

票数 10
EN

Stack Exchange QA用户

发布于 2012-10-29 06:38:49

因为不正确的预言(和比较器)或不正确的测试输入数据(也称为测试步骤),测试可以返回假阳性或假阴性。为了解决这些问题,我在文献中找到了以下方法。

错误的甲骨文和比较器

Binder在他的书“面向对象的测试系统”中提出了以下建议,以限制设计不正确的预言的问题:

  • 如果可能的话,向系统用户回顾一下您的预言和假设产生的一些预期结果。开发人员或测试人员可能认为正确的值可能由于某些特殊约束而微妙地不正确。
  • 神谕越复杂,伪造测试结果的可能性就越大。尝试最简单的解决方案。
  • 如果oracle是基于规范的,请不要忘记验证规范。仔细检查规范中的遗漏、矛盾。
  • 尝试用于具有明显预期结果的测试用例-例如,所有的零在,所有的零出。这样的测试用例检查oracle和比较器。
  • 如果实际可行,尝试使用几个独立的来源。例如,如果要从引用工作中的表中选择值,请尝试查找其他几个提供相同信息的引用作品。从这些源中交错值。如果您使用现有系统作为oracle,请尝试在不同的配置或平台中运行系统,更改一天中的时间,更改后台负载,等等。
  • 虽然编写一个程序来生成数百万个测试用例输入通常并不困难,但生成它们的预期结果通常等同于开发SUT。两种甲骨文模式可以部分地克服这一限制。内置测试Oracle将检测到来自任何输入的一些(但不是全部)不正确的输出。您可以使用现有的系统作为金本位甲骨文。使用测试输入运行现有系统。它将自动产生部分或全部预期结果(可信系统Oracle模式)。
  • 可测试性设计技巧:如果测试策略或测试用例需要非常困难或代价高昂的oracle,请考虑放弃它。尽量使用现有代码、文件或测试套件。
  • 可测试性设计提示:如果应用程序规范或需求的开发非常困难或代价高昂,请考虑对其进行重新加工。
  • 考虑一个部分或近似的神谕。不要假设您的oracle必须为每个可能的输入和状态生成完整的预期结果。集中精力生成必须正确的或难以手工检查的和/或耗时的输出。
  • 考虑使用几种预言来抵消弱点。例如,可以使用现有系统为新系统生成大约一半的关键输出。您可以实现内置的测试断言来检查新输出上的关系。

不正确的测试输入数据

测试数据无效的一个原因可能是用于测试输入数据的be生成器。因此,软件测试中的经验教训建议单元测试并检查它们,就像在任何其他软件中一样。

测试测试框架似乎会导致无限的测试。实际上,根据定义,单元测试必须比被测试的系统更简单,因此不需要进行测试。其次,与其每次编写新的测试数据时验证新的测试数据,不如只对生成器进行一次验证。最后,通过对生成器的测试,您也更加确信修复生成器不会引入任何新的bug。

票数 2
EN

Stack Exchange QA用户

发布于 2021-09-03 06:32:37

由于测试人员完全集中于创建可以被认为是完整的测试数据,并且为测试人员提供了完整的覆盖范围,因此数据的正确性和质量很大程度上定义了测试结果。行业专业人员通常采用的流程包括从生产环境中获取数据,然后使用映射规则创建平面文件。

此外,QA服务只是从现有数据库中检索SQL查询,同时依靠自动测试数据生成工具来处理这些信息。

如果您需要详细了解如何准备测试数据以获得最大的准确性或正确性,请考虑遵循此链接。

www.softwaretestinghelp.com/tips-to-design-test-data-before-executing-your-test-cases/

票数 0
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/5027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档